Ce référentiel est la bibliothèque backend de notre application basée sur une interface graphique - MOTHE-GUI
Mothe est une bibliothèque PYPI permettant de détecter et de suivre plusieurs animaux dans un environnement hétérogène. MOTHe est un référentiel basé sur Python et utilise l'architecture de réseau neuronal convolutif (CNN) pour la tâche de détection d'objets. Il prend une image numérique en entrée et lit ses caractéristiques pour attribuer une catégorie. Ces algorithmes sont des algorithmes d'apprentissage, ce qui signifie qu'ils extraient des caractéristiques des images en utilisant d'énormes quantités de données d'entraînement étiquetées. Une fois les modèles CNN formés, ces modèles peuvent être utilisés pour classer de nouvelles données (images). MOTHe est conçu pour être générique, ce qui permet à l'utilisateur de suivre des objets d'intérêt même dans un environnement naturel.
MOTHe peut automatiser toutes les tâches associées à la classification des objets et se divise en 5 méthodes dédiées aux tâches suivantes :
Configuration du système : La configuration du système est utilisée pour configurer MOTHE sur le système de l'utilisateur. Détails de base tels que le chemin d'accès au référentiel local, le chemin d'accès à la vidéo à traiter, la taille de l'individu à recadrer, le nombre d'images à ignorer lors de l'exécution de la détection ou du suivi (pour réduire le temps de calcul/pour exécuter un scénario de test) et la taille de la boîte englobante à dessiner pendant la phase de détection.
Génération de jeux de données : La génération de jeux de données est une étape cruciale vers la détection et le suivi d'objets. L'effort manuel requis pour générer la quantité requise de données de formation est énorme. La classe de génération de données et l'exécutable automatisent fortement le processus en permettant à l'utilisateur de recadrer la région d'intérêt par de simples clics sur une interface graphique et enregistrent automatiquement les images dans les dossiers appropriés.
Entraînement du réseau neuronal convolutiftrain_model : Après avoir généré un nombre suffisant d'exemples de formation, les données sont utilisées pour entraîner le réseau neuronal. Le réseau neuronal produit un classificateur en sortie. La précision du classificateur dépend de la qualité de l'entraînement du réseau, qui à son tour dépend de la qualité et de la quantité des données d'entraînement (voir la section De quelle quantité de données d'entraînement ai-je besoin ? ). Les différents paramètres de réglage du réseau sont fixes pour faciliter le processus pour les utilisateurs. Ce réseau fonctionne bien pour la classification binaire – objet d'intérêt (animaux) et arrière-plan. La classification multiclasse n'est pas prise en charge sur ce pipeline.
Détection d'objets : Cette méthode effectue deux tâches clés : elle identifie d'abord les régions de l'image qui peuvent potentiellement contenir des animaux, c'est ce qu'on appelle la localisation ; puis il effectue une classification sur les régions recadrées. Cette classification se fait à l'aide d'un petit CNN (6 couches convolutives). La sortie se présente sous la forme de fichiers .csv qui contiennent les emplacements des animaux identifiés dans chaque image.
Suivi d'objets : Le suivi d'objets est l'objectif final du MOTHe. Ce module attribue des identifiants uniques aux individus détectés et génère leurs trajectoires. Nous avons séparé les modules de détection et de suivi, afin qu'ils puissent également être utilisés par une personne intéressée uniquement par les données de comptage (par exemple, des enquêtes). Cette modularisation offre également la flexibilité d'utiliser des algorithmes de suivi plus sophistiqués aux programmeurs expérimentés. Nous utilisons un code existant pour la tâche de suivi (de la page Github de la référence). Cet algorithme utilise des filtres de Kalman et l'algorithme hongrois. Ce script peut être exécuté une fois les détections générées à l'étape précédente. La sortie est un fichier text{.csv} qui contient des identifiants et des emplacements individuels pour chaque image. Une sortie vidéo avec les identifiants uniques de chaque individu est également générée.
MOHe est un package python qui utilise plusieurs autres bibliothèques python qui pourraient avoir été mises à jour. Par conséquent, il est important de connaître les versions que nous téléchargeons/installons. Les versions python recommandées sont les versions stables python3.6 à python3.7 (les dernières versions LTS de Linux (ex : Ubuntu 20.04 Focal Fossa) sont installées avec un python3.8 d'origine qui n'est pas compatible avec MOTHe). Python3.8 ne prend pas en charge les versions de Tensorflow inférieures aux versions 2.2 requises par MOTHE pour fonctionner. Attention aux versions de certaines librairies qui sont modifiées assez rapidement et qui servent à tester MOTHe très récemment :