VIAME est une application de vision par ordinateur conçue pour l'intelligence artificielle à faire soi-même, notamment la détection d'objets, le suivi d'objets, l'annotation d'images/vidéos, la recherche d'images/vidéos, le mosaïquage d'images, l'amélioration d'images, la mesure de taille, le traitement de données multi-caméras, la génération rapide de modèles. , et des outils pour l'évaluation de différents algorithmes. Ciblant à l'origine l'analyse des espèces marines, VIAME contient désormais de nombreux algorithmes et bibliothèques courants, et est également utile en tant que boîte à outils générique de vision par ordinateur. Il contient un certain nombre d'outils autonomes pour réaliser ce qui précède, un cadre de pipeline qui peut connecter des nœuds C/C++, python et matlab entre eux de manière multithread, et plusieurs algorithmes reposant sur l'infrastructure du pipeline. Enfin, une partie des algorithmes a été intégrée dans les interfaces utilisateur de bureau et Web pour des déploiements dans différents types d'environnements, avec une archive d'annotations ouverte et un exemple de plate-forme Web disponible sur viame.kitware.com.
Le guide de démarrage rapide de l'utilisateur, les vidéos de didacticiel et le manuel du développeur sont plus complets, mais certaines entrées sont également répertoriées ci-dessous, ventilées par fonctionnalité individuelle :
Présentation de la documentation <> Installation <> Construction <> Tous les exemples <> Interface DIVE <> Interface VIEW <> Recherche et génération rapide de modèles <> CLI du détecteur d'objets <> CLI du suivi d'objets <> CLI de formation des détecteurs <> Évaluation des détecteurs <> Détection Formats de fichiers <> Calibrage et amélioration de l'image <> Enregistrement et mosaïquage <> Mesures stéréo et cartes de profondeur <> Présentation du pipeline <> Informations sur la classe de base et le pipeline <> Intégration de plug-in <> Exemples de modèles de plug-in <> Incorporation Algorithmes en C++
Pour un guide d'installation complet et une description des différentes versions de VIAME, consultez le guide de démarrage rapide ci-dessus. La version de bureau complète est fournie sous forme de fichier .msi, .zip ou .tar. Alternativement, des annotateurs autonomes (sans aucun algorithme de traitement) sont disponibles via des installateurs plus petits (voir DIVE autonome, ci-dessous). Enfin, les fichiers Docker sont disponibles pour VIAME Desktop et Web (ci-dessous). Pour les installations complètes du bureau, extrayez les binaires et placez-les dans un répertoire de votre choix, par exemple /opt/noaa/viame sous Linux ou C:Program FilesVIAME sous Windows. Si vous utilisez des packages construits avec la prise en charge du GPU, assurez-vous d'avoir suffisamment de pilotes vidéo installés, version 465.19 ou supérieure. La meilleure façon d'installer les pilotes dépend de votre système d'exploitation. Cela n'est pas obligatoire si vous utilisez uniquement des annotateurs manuels (ou des classificateurs de cadres uniquement). Les binaires sont assez volumineux, en termes d'espace disque, en raison de l'inclusion de plusieurs fichiers et programmes de modèles par défaut, mais si vous créez simplement les fonctionnalités souhaitées à partir de la source (par exemple pour les applications intégrées), ils sont beaucoup plus petits.
Exigences d'installation :
Recommandations d'installation :
Fichiers binaires du bureau complet Windows :
Binaires de bureau complets Linux :
Applications Web :
Forfaits supplémentaires :
Les images Docker sont disponibles sur : https://hub.docker.com. Pour un conteneur par défaut avec uniquement des algorithmes de base, exécutables via la ligne de commande, voir :
kitware/viame:gpu-algorithmes-derniers
Cette image est sans tête (c'est-à-dire qu'elle ne contient aucune interface graphique) et contient une installation de bureau VIAME (et non Web) dans le dossier /opt/noaa/viame. Pour les liens vers les conteneurs Docker VIAME-Web, consultez la section ci-dessus dans la documentation d'installation. La plupart des modèles de modules complémentaires ne sont pas inclus dans l'instance mais peuvent être téléchargés en exécutant le script download_viame_addons.sh dans le dossier bin.
Ces instructions sont destinées aux développeurs ou à ceux intéressés par la création de la dernière branche de version. Toute personne souhaitant simplement exécuter le logiciel tel quel et ne pas le modifier doit utiliser les programmes d'installation répertoriés dans la section précédente, sans avoir besoin de créer un logiciel. Des instructions de construction plus détaillées peuvent être trouvées ici, mais le logiciel peut être construit soit en tant que super-build, qui construit la plupart de ses dépendances conjointement, soit de manière autonome. Pour construire VIAME, il faut au minimum Git, CMake et un compilateur C++. L'installation de Python et CUDA est également recommandée. Si vous utilisez CUDA, les versions 11.7 ou 11.6 sont préférées, avec CUDNN 8. D'autres versions de CUDA ou CUDNN peuvent ou non fonctionner. Pour les distributions Python, au minimum Python3.6 ou supérieur est nécessaire, en plus d'avoir installé pip.
Pour construire sur la ligne de commande sous Linux, utilisez les commandes suivantes, en remplaçant uniquement [source-directory] et [build-directory] par les emplacements de votre choix. Bien que ces répertoires puissent être identiques, il est recommandé d'avoir une extraction 'src' puis un répertoire 'build' séparé à côté :
git clone https://github.com/VIAME/VIAME.git [source-directory]
cd [source-directory] && git submodule update --init --recursive
Ensuite, créez un répertoire de construction et exécutez la commande cmake
suivante (ou utilisez l'interface graphique cmake si vous n'utilisez pas l'interface de ligne de commande) :
mkdir [build-directory] && cd [build-directory]
cmake -DCMAKE_BUILD_TYPE:STRING=Release [source-directory]
Une fois votre commande cmake
terminée, vous pouvez configurer tous les indicateurs de build de votre choix à l'aide de 'ccmake' ou de l'interface graphique cmake, puis compiler avec la commande suivante sous Linux :
make -j8
Ou bien en le construisant dans Visual Studio ou le compilateur de votre choix sous Windows. Sous Linux, '-j8' indique à la construction de s'exécuter en multithread en utilisant 8 threads, ceci est utile pour une construction plus rapide, mais si vous obtenez une erreur, il peut être difficile de la voir, auquel cas exécuter simplement 'make' peut être plus utile. Pour Windows, VS2019 est actuellement le compilateur le plus testé.
Il existe plusieurs arguments facultatifs pour viame qui contrôlent quels plugins sont construits, tels que ceux répertoriés ci-dessous. Si un plugin est activé et qu'il dépend d'une autre dépendance telle qu'OpenCV), alors l'indicateur de dépendance sera activé de force. En cas de doute sur ce qu'il faut activer, il est préférable de simplement laisser les indicateurs d'activation et de désactivation par défaut qui créeront la plupart (mais pas la totalité) des fonctionnalités. Voici les composants essentiels que nous recommandons de laisser activés :
Drapeau | Description |
---|---|
VIAME_ENABLE_OPENCV | Construit OpenCV et les processus OpenCV de base (lecteurs vidéo, interfaces graphiques simples) |
VIAME_ENABLE_VXL | Construit des processus VXL et VXL de base (lecteurs vidéo, filtres d'images) |
VIAME_ENABLE_PYTHON | Active la prise en charge de l'utilisation des processus Python (plusieurs algorithmes) |
VIAME_ENABLE_PYTORCH | Installe tous les processus pytorch (détecteurs, trackers, classificateurs) |
Et un certain nombre d'indicateurs qui contrôlent quels utilitaires système et optimisations sont construits, par exemple :
Drapeau | Description |
---|---|
VIAME_ENABLE_CUDA | Permet les optimisations CUDA (GPU) sur tous les packages |
VIAME_ENABLE_CUDNN | Permet les optimisations CUDNN (GPU) dans tous les processus |
VIAME_ENABLE_DIVE | Active DIVE GUI (annotation et formation sur plusieurs séquences) |
VIAME_ENABLE_VIVIA | Construit des interfaces graphiques VIVIA (VIEW et SEARCH pour les annotations et la recherche vidéo) |
VIAME_ENABLE_DOCS | Construit la documentation au niveau de la classe Doxygen (place dans l'arborescence d'installation) |
VIAME_BUILD_DEPENDENCIES | Construisez VIAME en tant que super-build, en créant toutes les dépendances (par défaut) |
VIAME_INSTALL_EXAMPLES | Installe des exemples pour les modules ci-dessus dans l'arborescence d'installation/exemples |
VIAME_DOWNLOAD_MODELS | Télécharge des modèles pré-entraînés à utiliser avec les exemples et les interfaces |
Et enfin, un certain nombre de drapeaux qui construisent des algorithmes ou des interfaces avec des fonctionnalités plus spécialisées :
Drapeau | Description |
---|---|
VIAME_ENABLE_TENSORFLOW | Construit le plugin de détection d'objets TensorFlow |
VIAME_ENABLE_DARKNET | Construit le plugin de détection d'objets Darknet (YOLO) |
VIAME_ENABLE_TENSORRT | Construit le plugin de détection d'objets TensorRT |
VIAME_ENABLE_BURNOUT | Construit un plugin de classification de pixels basé sur Burn-Out |
VIAME_ENABLE_SMQTK | Construit des plugins SMQTK pour prendre en charge l'indexation et la recherche d'images/vidéos |
VIAME_ENABLE_KWANT | Construit des outils de détection et d'évaluation de suivi (notation) KWANT |
VIAME_ENABLE_LEARN | Crée des méthodes supplémentaires pour l'apprentissage à faible intensité |
VIAME_ENABLE_SCALLOP_TK | Construit un plugin de détection d'objets basé sur Scallop-TK |
VIAME_ENABLE_SEAL | Construit une interface graphique multimodalité Seal |
VIAME_ENABLE_ITK | Crée l'enregistrement d'images multimodalités ITK |
VIAME_ENABLE_UW_CLASSIFIER | Construit le plugin de classification de poissons UW |
VIAME_ENABLE_MATLAB | Active la prise en charge et installe tous les processus Matlab |
VIAME_ENABLE_LANL | Construit un détecteur de pétoncles supplémentaire (Matlab) |
VIAME ├── cmake # Fichiers de configuration CMake pour les sous-packages ├── docs # Fichiers de documentation et manuel (pré-compilation) ├── configs # Tous les fichiers de configuration et modèles exécutables par le système │ ├── pipelines # Toutes les configurations de pipeline de traitement │ │ └── modèles # Tous les modèles, qui ne sont téléchargés qu'en fonction des drapeaux │ ├── prj-linux # Fichiers de projet Linux par défaut │ └── prj-windows # Fichiers de projet Windows par défaut ├── exemples # Tous les exemples exécutables et exemples de didacticiels ├── packages # Projets externes utilisés par le système │ ├── kiver # Traitement de l'infrastructure backend │ ├── fletch # Générateur de dépendances pour les choses qui ne changent pas souvent │ ├── kwant # Outils de notation et d'évaluation des détecteurs │ ├── vivia # Interfaces graphiques de bureau de base (v1.0) │ └── ... # Autres packages assortis (généralement pour les algorithmes) ├── plugins # Algorithmes intégrés ou wrappers autour de projets externes │ └── ... # Plugins assortis (détecteurs, cartes de profondeur, filtres, etc.) ├── outils # Outils ou scripts autonomes, s'appuyant souvent sur ce qui précède └── README.md # Page d'introduction du projet que vous lisez └── RELEASE_NOTES.md # Une liste des dernières mises à jour du système par version
Si vous disposez déjà d'une extraction de VIAME et que vous souhaitez changer de branche ou mettre à jour votre code, il est important de réexécuter :
git submodule update --init --recursive
Après avoir changé de branche, assurez-vous que vous disposez des hachages corrects de sous-packages dans la build. Très rarement, vous devrez peut-être également exécuter :
git submodule sync
Juste au cas où l'adresse des sous-modules aurait changé. Vous ne devez exécuter cette commande que si vous obtenez une erreur « impossible de récupérer le hachage #hashid ».
VIAME est publié sous licence BSD-3.
Une liste non exhaustive des articles pertinents utilisés dans le projet aux côtés des contributeurs peut être trouvée ici.
VIAME a été développé grâce à un financement provenant de sources multiples, avec des remerciements particuliers à celles répertoriées ici.