VIAME é um aplicativo de visão computacional projetado para inteligência artificial do tipo "faça você mesmo", incluindo detecção de objetos, rastreamento de objetos, anotação de imagem/vídeo, pesquisa de imagem/vídeo, mosaico de imagens, aprimoramento de imagem, medição de tamanho, processamento de dados multicâmera, geração rápida de modelo e ferramentas para avaliação de diferentes algoritmos. Originalmente direcionado à análise de espécies marinhas, o VIAME agora contém muitos algoritmos e bibliotecas comuns e também é útil como um kit de ferramentas genérico de visão computacional. Ele contém uma série de ferramentas independentes para realizar o que foi dito acima, uma estrutura de pipeline que pode conectar nós C/C++, python e matlab de maneira multithread e vários algoritmos baseados na infraestrutura de pipeline. Por fim, uma parte dos algoritmos foi integrada às interfaces de usuário desktop e web para implantações em diferentes tipos de ambientes, com um arquivo de anotações aberto e um exemplo da plataforma web disponível em viame.kitware.com.
O Guia de início rápido do usuário, os vídeos tutoriais e o Manual do desenvolvedor são mais abrangentes, mas as entradas selecionadas também estão listadas abaixo, divididas por funcionalidade individual:
Visão geral da documentação <> Instalação <> Construção <> Todos os exemplos <> Interface DIVE <> Interface VIEW <> Pesquisa e geração rápida de modelo <> CLI do detector de objetos <> CLI do rastreador de objetos <> CLI de treinamento do detector <> Avaliação de detectores <> Detecção Formatos de arquivo <> Calibração e aprimoramento de imagem <> Registro e mosaico <> Medição estéreo e mapas de profundidade <> Visão geral do pipeline <> Classe principal e informações do pipeline <> Integração de plug-ins <> Exemplos de modelos de plug-ins <> Incorporação Algoritmos em C++
Para obter um guia de instalação completo e uma descrição dos vários sabores do VIAME, consulte o guia de início rápido acima. A versão completa para desktop é fornecida como um arquivo .msi, .zip ou .tar. Alternativamente, anotadores autônomos (sem nenhum algoritmo de processamento) estão disponíveis através de instaladores menores (veja DIVE autônomo, abaixo). Por último, os arquivos docker estão disponíveis para VIAME Desktop e Web (abaixo). Para instalações completas em desktop, extraia os binários e coloque-os em um diretório de sua escolha, por exemplo /opt/noaa/viame no Linux ou C:Program FilesVIAME no Windows. Se estiver usando pacotes criados com suporte a GPU, certifique-se de ter drivers de vídeo suficientes instalados, versão 465.19 ou superior. A melhor maneira de instalar drivers depende do seu sistema operacional. Isso não é necessário se você usar apenas anotadores manuais (ou apenas classificadores de quadros). Os binários são bastante grandes, em termos de espaço em disco, devido à inclusão de vários arquivos e programas de modelo padrão, mas se você apenas construir os recursos desejados a partir do código-fonte (por exemplo, para aplicativos incorporados), eles serão muito menores.
Requisitos de instalação:
Recomendações de instalação:
Binários completos da área de trabalho do Windows:
Binários completos do Linux para desktop:
Aplicativos da Web :
Pacotes Adicionais:
As imagens do Docker estão disponíveis em: https://hub.docker.com. Para um contêiner padrão com apenas algoritmos principais, executáveis via linha de comando, consulte:
kitware/viame:gpu-algorithms-latest
Esta imagem é headless (ou seja, não contém GUI) e contém uma instalação via desktop VIAME (não web) na pasta /opt/noaa/viame. Para links para os contêineres docker VIAME-Web, consulte a seção acima na documentação de instalação. A maioria dos modelos complementares não estão incluídos na instância, mas podem ser baixados executando o script download_viame_addons.sh na pasta bin.
Estas instruções são destinadas a desenvolvedores ou interessados em construir o branch de lançamento mais recente. Qualquer pessoa interessada em apenas executar o software como está e não modificá-lo deve usar os instaladores listados na seção anterior, sem a necessidade de construir o software. Instruções de construção mais detalhadas podem ser encontradas aqui, mas o software pode ser construído como uma superconstrução, que constrói a maioria de suas dependências junto com ele mesmo, ou de forma independente. Para construir o VIAME é necessário, no mínimo, Git, CMake e um compilador C++. Instalar Python e CUDA também é recomendado. Se estiver usando CUDA, as versões 11.7 ou 11.6 são preferidas, com CUDNN 8. Outras versões CUDA ou CUDNN podem ou não funcionar. Para distribuições python, é necessário no mínimo Python3.6 ou superior, além de ter o pip instalado.
Para compilar na linha de comando no Linux, use os comandos a seguir, substituindo apenas [diretório de origem] e [diretório de compilação] por locais de sua escolha. Embora esses diretórios possam ser iguais, é uma boa prática ter um checkout 'src' e depois um diretório 'build' separado ao lado dele:
git clone https://github.com/VIAME/VIAME.git [source-directory]
cd [source-directory] && git submodule update --init --recursive
Em seguida, crie um diretório de construção e execute o seguinte comando cmake
(ou, alternativamente, use a GUI cmake se não estiver usando a interface de linha de comando):
mkdir [build-directory] && cd [build-directory]
cmake -DCMAKE_BUILD_TYPE:STRING=Release [source-directory]
Depois que o comando cmake
for concluído, você poderá configurar quaisquer sinalizadores de compilação desejados usando 'ccmake' ou a GUI cmake e, em seguida, compilar com o seguinte comando no Linux:
make -j8
Ou, alternativamente, compilando-o no Visual Studio ou no compilador de sua preferência no Windows. No Linux, '-j8' diz à compilação para executar multithread usando 8 threads, isso é útil para uma compilação mais rápida, embora se você receber um erro, pode ser difícil vê-lo; nesse caso, executar apenas 'make' pode ser mais útil. Para Windows, atualmente o VS2019 é o compilador mais testado.
Existem vários argumentos opcionais para viame que controlam quais plugins são construídos, como os listados abaixo. Se um plugin que depende de outra dependência, como OpenCV, estiver habilitado, o sinalizador de dependência será forçado a ser ativado. Se não tiver certeza do que ativar, é melhor deixar os sinalizadores padrão de ativação e desativação que criarão a maioria (embora não todas) das funcionalidades. Estes são os componentes principais que recomendamos deixar ativados:
Bandeira | Descrição |
---|---|
VIAME_ENABLE_OPENCV | Constrói processos OpenCV e OpenCV básicos (leitores de vídeo, GUIs simples) |
VIAME_ENABLE_VXL | Constrói processos VXL e VXL básicos (leitores de vídeo, filtros de imagem) |
VIAME_ENABLE_PYTHON | Ativa o suporte para usar processos python (múltiplos algoritmos) |
VIAME_ENABLE_PYTORCH | Instala todos os processos pytorch (detectores, rastreadores, classificadores) |
E uma série de sinalizadores que controlam quais utilitários e otimizações do sistema são construídos, por exemplo:
Bandeira | Descrição |
---|---|
VIAME_ENABLE_CUDA | Permite otimizações CUDA (GPU) em todos os pacotes |
VIAME_ENABLE_CUDNN | Permite otimizações CUDNN (GPU) em todos os processos |
VIAME_ENABLE_DIVE | Permite DIVE GUI (anotação e treinamento em múltiplas sequências) |
VIAME_ENABLE_VIVIA | Constrói GUIs VIVIA (VIEW e SEARCH para anotação e pesquisa de vídeo) |
VIAME_ENABLE_DOCS | Constrói documentação em nível de classe Doxygen (coloca na árvore de instalação) |
VIAME_BUILD_DEPENDENCIES | Construa VIAME como uma superconstrução, construindo todas as dependências (padrão) |
VIAME_INSTALL_EXAMPLES | Instala exemplos para os módulos acima na árvore de instalação/exemplos |
VIAME_DOWNLOAD_MODELS | Baixa modelos pré-treinados para uso com exemplos e interfaces |
E por último, uma série de sinalizadores que constroem algoritmos ou interfaces com funcionalidades mais especializadas:
Bandeira | Descrição |
---|---|
VIAME_ENABLE_TENSORFLOW | Cria plug-in de detector de objetos do TensorFlow |
VIAME_ENABLE_DARKNET | Constrói plugin de detector de objetos Darknet (YOLO) |
VIAME_ENABLE_TENSORRT | Cria plug-in de detector de objetos TensorRT |
VIAME_ENABLE_BURNOUT | Constrói plugin classificador de pixel baseado em Burn-Out |
VIAME_ENABLE_SMQTK | Cria plug-ins SMQTK para suportar indexação e pesquisa de imagens/vídeos |
VIAME_ENABLE_KWANT | Cria ferramentas de detecção KWANT e avaliação de rastreamento (pontuação) |
VIAME_ENABLE_LEARN | Cria métodos adicionais para aprendizagem de baixo custo |
VIAME_ENABLE_SCALLOP_TK | Constrói plugin de detector de objetos baseado em Scallop-TK |
VIAME_ENABLE_SEAL | Constrói GUI multimodalidade do Seal |
VIAME_ENABLE_ITK | Constrói registro de imagem multimodal ITK |
VIAME_ENABLE_UW_CLASSIFIER | Constrói plugin classificador de peixes UW |
VIAME_ENABLE_MATLAB | Ativa o suporte e instala todos os processos matlab |
VIAME_ENABLE_LANL | Constrói um detector de vieiras adicional (Matlab) |
VIAME ├── cmake # arquivos de configuração do CMake para subpacotes ├── docs # Arquivos de documentação e manual (pré-compilação) ├── configs # Todos os arquivos e modelos de configuração executáveis pelo sistema │ ├── pipelines # Todas as configurações do pipeline de processamento │ │ └── modelos # Todos os modelos, que só são baixados com base em flags │ ├── prj-linux # Arquivos de projeto Linux padrão │ └── prj-windows # Arquivos de projeto padrão do Windows ├── exemplos # Todos os exemplos executáveis e tutoriais de exemplo ├── pacotes # Projetos externos usados pelo sistema │ ├── kwiver # Processando infraestrutura de back-end │ ├── fletch # Construtor de dependência para coisas que não mudam com frequência │ ├── kwant # Ferramentas de pontuação e avaliação de detectores │ ├── vivia # GUIs de desktop de linha de base (v1.0) │ └── ... # Diversos outros pacotes (normalmente para algoritmos) ├── plugins # Algoritmos integrados ou wrappers em torno de projetos externos │ └── ... # Plugins variados (detectores, mapas de profundidade, filtros, etc.) ├── ferramentas # Ferramentas ou scripts independentes, muitas vezes baseados no acima └── README.md # Página de introdução do projeto que você está lendo └── RELEASE_NOTES.md # Uma lista das atualizações mais recentes do sistema por versão
Caso você já tenha um checkout do VIAME e queira trocar de branch ou atualizar seu código, é importante executar novamente:
git submodule update --init --recursive
Depois de alternar as ramificações para garantir que você tenha os hashes corretos dos subpacotes dentro da compilação. Muito raramente você também pode precisar executar:
git submodule sync
Apenas no caso de o endereço dos submódulos ter mudado. Você só precisa executar este comando se receber o erro “não é possível buscar o hash #hashid”.
VIAME é lançado sob uma licença BSD-3.
Uma lista não exaustiva de documentos relevantes usados no projeto junto com os colaboradores pode ser encontrada aqui.
VIAME foi desenvolvido com financiamento de diversas fontes, com agradecimentos especiais às listadas aqui.