VIAME es una aplicación de visión por computadora diseñada para inteligencia artificial que puede hacer usted mismo, incluida la detección de objetos, el seguimiento de objetos, la anotación de imágenes/videos, la búsqueda de imágenes/videos, el mosaico de imágenes, la mejora de imágenes, la medición de tamaños, el procesamiento de datos multicámara y la generación rápida de modelos. y herramientas para la evaluación de diferentes algoritmos. VIAME, que originalmente estaba dirigido al análisis de especies marinas, ahora contiene muchos algoritmos y bibliotecas comunes, y también es útil como un conjunto de herramientas genérico de visión por computadora. Contiene una serie de herramientas independientes para lograr lo anterior, un marco de canalización que puede conectar nodos C/C++, Python y Matlab entre sí en forma de subprocesos múltiples, y múltiples algoritmos que descansan sobre la infraestructura de canalización. Por último, una parte de los algoritmos se ha integrado en interfaces de usuario web y de escritorio para implementaciones en diferentes tipos de entornos, con un archivo de anotaciones abierto y un ejemplo de la plataforma web disponible en viame.kitware.com.
La Guía de inicio rápido del usuario, los vídeos tutoriales y el Manual del desarrollador son más completos, pero a continuación también se enumeran entradas seleccionadas desglosadas por funcionalidad individual:
Descripción general de la documentación <> Instalación <> Construcción <> Todos los ejemplos <> Interfaz DIVE <> Interfaz VIEW <> Búsqueda y generación rápida de modelos <> CLI de detector de objetos <> CLI de seguimiento de objetos <> CLI de capacitación de detectores <> Evaluación de detectores <> Detección Formatos de archivo <> Calibración y mejora de imagen <> Registro y creación de mosaicos <> Medición estéreo y mapas de profundidad <> Descripción general de canalización <> Clase principal e información de canalización <> Integración de complementos <> Plantillas de complementos de ejemplo <> Incrustación de algoritmos en C++
Para obtener una guía de instalación completa y una descripción de las distintas versiones de VIAME, consulte la guía de inicio rápido más arriba. La versión de escritorio completa se proporciona como archivo .msi, .zip o .tar. Alternativamente, los anotadores independientes (sin ningún algoritmo de procesamiento) están disponibles a través de instaladores más pequeños (consulte DIVE independiente, a continuación). Por último, los archivos Docker están disponibles tanto para VIAME Desktop como para Web (a continuación). Para instalaciones de escritorio completas, extraiga los archivos binarios y colóquelos en el directorio que elija, por ejemplo /opt/noaa/viame en Linux o C:Program FilesVIAME en Windows. Si utiliza paquetes creados con soporte para GPU, asegúrese de tener suficientes controladores de video instalados, versión 465.19 o superior. La mejor forma de instalar controladores depende de su sistema operativo. Esto no es necesario si solo se utilizan anotadores manuales (o clasificadores de cuadros únicamente). Los archivos binarios son bastante grandes, en términos de espacio en disco, debido a la inclusión de múltiples archivos y programas modelo predeterminados, pero si simplemente crea las funciones deseadas desde el código fuente (por ejemplo, para aplicaciones integradas), son mucho más pequeños.
Requisitos de instalación:
Recomendaciones de instalación:
Binarios de escritorio completo de Windows:
Binarios de escritorio completos de Linux:
Aplicaciones web :
Paquetes adicionales:
Las imágenes de Docker están disponibles en: https://hub.docker.com. Para obtener un contenedor predeterminado con solo algoritmos centrales, ejecutable a través de la línea de comandos, consulte:
kitware/viame:gpu-algoritmos-últimos
Esta imagen no tiene cabeza (es decir, no contiene GUI) y contiene una instalación de escritorio VIAME (no web) en la carpeta /opt/noaa/viame. Para obtener enlaces a los contenedores acoplables VIAME-Web, consulte la sección anterior en la documentación de instalación. La mayoría de los modelos complementarios no están incluidos en la instancia, pero se pueden descargar ejecutando el script download_viame_addons.sh en la carpeta bin.
Estas instrucciones están destinadas a desarrolladores o a aquellos interesados en crear la rama de versión más reciente. Cualquier persona interesada en ejecutar el software tal como está y no modificarlo debe usar los instaladores enumerados en la sección anterior, sin necesidad de compilar el software. Se pueden encontrar instrucciones de compilación más detalladas aquí, pero el software se puede compilar como una supercompilación, que construye la mayoría de sus dependencias junto con él mismo, o de forma independiente. Para construir VIAME se requiere, como mínimo, Git, CMake y un compilador de C++. También se recomienda instalar Python y CUDA. Si usa CUDA, se prefieren las versiones 11.7 o 11.6, con CUDNN 8. Otras versiones de CUDA o CUDNN pueden funcionar o no. Para distribuciones de Python, es necesario como mínimo Python3.6 o superior, además de tener instalado pip.
Para construir en la línea de comando en Linux, use los siguientes comandos, reemplazando solo [directorio-fuente] y [directorio-compilación] con las ubicaciones de su elección. Si bien estos directorios pueden ser los mismos, es una buena práctica tener un directorio 'src' y luego un directorio 'build' separado al lado:
git clone https://github.com/VIAME/VIAME.git [source-directory]
cd [source-directory] && git submodule update --init --recursive
A continuación, cree un directorio de compilación y ejecute el siguiente comando cmake
(o, alternativamente, utilice la GUI de cmake si no está utilizando la interfaz de línea de comandos):
mkdir [build-directory] && cd [build-directory]
cmake -DCMAKE_BUILD_TYPE:STRING=Release [source-directory]
Una vez que se haya completado el comando cmake
, puede configurar cualquier indicador de compilación que desee usando 'ccmake' o la GUI de cmake, y luego compilar con el siguiente comando en Linux:
make -j8
O, alternativamente, compilándolo en Visual Studio o el compilador de su elección en Windows. En Linux, '-j8' le indica a la compilación que ejecute múltiples subprocesos usando 8 subprocesos, esto es útil para una compilación más rápida, aunque si recibe un error puede ser difícil verlo, en cuyo caso ejecutar solo 'make' podría ser más útil. Para Windows, actualmente VS2019 es el compilador más probado.
Hay varios argumentos opcionales para viame que controlan qué complementos se crean, como los que se enumeran a continuación. Si se habilita un complemento que depende de otra dependencia, como OpenCV, entonces el indicador de dependencia se activará. Si no está seguro de qué activar, es mejor dejar los indicadores de activación y desactivación predeterminados que crearán la mayoría (aunque no todas) las funcionalidades. Estos son componentes principales que recomendamos dejar activados:
Bandera | Descripción |
---|---|
VIAME_ENABLE_OPENCV | Construye OpenCV y procesos OpenCV básicos (lectores de video, GUI simples) |
VIAME_ENABLE_VXL | Construye procesos VXL y VXL básicos (lectores de video, filtros de imágenes) |
VIAME_ENABLE_PYTHON | Activa la compatibilidad con el uso de procesos de Python (múltiples algoritmos) |
VIAME_ENABLE_PYTORCH | Instala todos los procesos de pytorch (detectores, rastreadores, clasificadores) |
Y una serie de indicadores que controlan qué utilidades y optimizaciones del sistema se crean, por ejemplo:
Bandera | Descripción |
---|---|
VIAME_ENABLE_CUDA | Permite optimizaciones CUDA (GPU) en todos los paquetes |
VIAME_ENABLE_CUDNN | Permite optimizaciones de CUDNN (GPU) en todos los procesos. |
VIAME_ENABLE_DIVE | Habilita DIVE GUI (anotación y entrenamiento en múltiples secuencias) |
VIAME_ENABLE_VIVIA | Construye GUI VIVIA (VER y BÚSQUEDA para anotaciones y búsqueda de videos) |
VIAME_ENABLE_DOCS | Crea documentación a nivel de clase de Doxygen (coloca en el árbol de instalación) |
VIAME_BUILD_DEPENDENCIAS | Construya VIAME como una supercompilación, creando todas las dependencias (predeterminado) |
VIAME_INSTALL_EXAMPLES | Instala ejemplos de los módulos anteriores en el árbol de instalación/ejemplos. |
VIAME_DOWNLOAD_MODELS | Descarga modelos previamente entrenados para usar con los ejemplos e interfaces. |
Y, por último, una serie de indicadores que crean algoritmos o interfaces con funcionalidades más especializadas:
Bandera | Descripción |
---|---|
VIAME_ENABLE_TENSORFLOW | Crea el complemento detector de objetos TensorFlow |
VIAME_ENABLE_DARKNET | Crea el complemento detector de objetos Darknet (YOLO) |
VIAME_ENABLE_TENSORRT | Crea el complemento detector de objetos TensorRT |
VIAME_ENABLE_BURNOUT | Crea un complemento clasificador de píxeles basado en Burn-Out |
VIAME_ENABLE_SMQTK | Crea complementos SMQTK para admitir la indexación y búsqueda de imágenes/videos |
VIAME_ENABLE_KWANT | Crea herramientas de detección de KWANT y evaluación de seguimiento (puntuación) |
VIAME_ENABLE_LEARN | Crea métodos adicionales para el aprendizaje de bajo nivel. |
VIAME_ENABLE_SCALLOP_TK | Crea un complemento detector de objetos basado en Scallop-TK |
VIAME_ENABLE_SEAL | Construye GUI multimodal de Seal |
VIAME_ENABLE_ITK | Crea registro de imágenes multimodal ITK |
VIAME_ENABLE_UW_CLASSIFIER | Crea un complemento clasificador de peces de UW |
VIAME_ENABLE_MATLAB | Activa el soporte e instala todos los procesos de Matlab. |
VIAME_ENABLE_LANL | Construye un detector de vieiras adicional (Matlab) |
VIAME ├── cmake # Archivos de configuración de CMake para subpaquetes ├── docs# Archivos de documentación y manual (precompilación) ├── configs # Todos los archivos y modelos de configuración ejecutables por el sistema │ ├── canalizaciones # Todas las configuraciones de canalización de procesamiento │ │ └── modelos # Todos los modelos, que solo se descargan según las banderas │ ├── prj-linux # Archivos de proyecto de Linux predeterminados │ └── prj-windows # Archivos de proyecto predeterminados de Windows ├── ejemplos # Todos los ejemplos ejecutables y tutoriales de ejemplo ├── paquetes # Proyectos externos utilizados por el sistema │ ├── kwiver # Procesamiento de infraestructura backend │ ├── fletch # Generador de dependencias para cosas que no cambian con frecuencia │ ├── kwant # Herramientas de puntuación y evaluación de detectores │ ├── vivia # GUI de escritorio de referencia (v1.0) │ └── ... # Otros paquetes variados (normalmente para algoritmos) ├── complementos # Algoritmos integrados o envoltorios alrededor de proyectos externos │ └── ... # Complementos variados (detectores, mapas de profundidad, filtros, etc.) ├── herramientas # Herramientas o scripts independientes, que a menudo se basan en lo anterior └── README.md # Página de introducción del proyecto que estás leyendo └── RELEASE_NOTES.md # Una lista de las últimas actualizaciones del sistema por versión
Si ya tiene una compra de VIAME y desea cambiar de rama o actualizar su código, es importante volver a ejecutar:
git submodule update --init --recursive
Después de cambiar de rama, asegúrese de tener los hashes correctos de los subpaquetes dentro de la compilación. En muy raras ocasiones, es posible que también necesites ejecutar:
git submodule sync
En caso de que la dirección de los submódulos haya cambiado. Solo necesita ejecutar este comando si recibe el error "no se puede recuperar el hash #hashid".
VIAME se publica bajo una licencia BSD-3.
Puede encontrar una lista no exhaustiva de los artículos relevantes utilizados en el proyecto junto con los contribuyentes aquí.
VIAME se desarrolló con financiación de múltiples fuentes, con un agradecimiento especial a los que se enumeran aquí.