Dieses Repository ist die Backend-Bibliothek unserer GUI-basierten App – MOTHe-GUI
Mothe ist eine PYPI-Bibliothek zur Erkennung und Verfolgung mehrerer Tiere in einer heterogenen Umgebung. MOTHe ist ein Python-basiertes Repository und nutzt die Convolutional Neural Network (CNN)-Architektur für die Objekterkennungsaufgabe. Es nimmt ein digitales Bild als Eingabe und liest seine Merkmale, um eine Kategorie zuzuweisen. Bei diesen Algorithmen handelt es sich um Lernalgorithmen, das heißt, sie extrahieren mithilfe großer Mengen gekennzeichneter Trainingsdaten Merkmale aus den Bildern. Sobald die CNN-Modelle trainiert sind, können diese Modelle zur Klassifizierung neuartiger Daten (Bilder) verwendet werden. MOTHe ist generisch konzipiert und ermöglicht es dem Benutzer, interessante Objekte auch in einer natürlichen Umgebung zu verfolgen.
MOTHe kann alle mit der Objektklassifizierung verbundenen Aufgaben automatisieren und ist in 5 Methoden unterteilt, die den folgenden Aufgaben gewidmet sind:
Systemkonfiguration : Die Systemkonfiguration wird verwendet, um MOTHe auf dem System des Benutzers einzurichten. Grundlegende Details wie der Pfad zum lokalen Repository, der Pfad zum zu verarbeitenden Video, die Größe des zuzuschneidenden Individuums, die Anzahl der Bilder, die beim Ausführen der Erkennung oder Verfolgung übersprungen werden sollen (um die Rechenzeit zu reduzieren/um einen Testfall auszuführen) und die Größe des Begrenzungsrahmens, der während der Erkennungsphase gezeichnet werden soll.
Datensatzgenerierung : Die Datensatzgenerierung ist ein entscheidender Schritt zur Objekterkennung und -verfolgung. Der manuelle Aufwand zur Generierung der benötigten Menge an Trainingsdaten ist enorm. Die Datengenerierungsklasse und die ausführbare Datei automatisieren den Prozess in hohem Maße, indem sie es dem Benutzer ermöglichen, den interessierenden Bereich durch einfache Klicks über eine GUI zuzuschneiden und die Bilder automatisch in den entsprechenden Ordnern zu speichern.
Training des Faltungs-Neuronalen Netzwerkstrain_model : Nachdem eine ausreichende Anzahl von Trainingsbeispielen generiert wurde, werden die Daten zum Trainieren des Neuronalen Netzwerks verwendet. Das neuronale Netzwerk erzeugt als Ausgabe einen Klassifikator. Die Genauigkeit des Klassifikators hängt davon ab, wie gut das Netzwerk trainiert ist, was wiederum von der Qualität und Quantität der Trainingsdaten abhängt (siehe Abschnitt Wie viele Trainingsdaten benötige ich? ). Die verschiedenen Abstimmungsparameter des Netzwerks sind festgelegt, um den Vorgang für die Benutzer zu vereinfachen. Dieses Netzwerk eignet sich gut für die binäre Klassifizierung – interessierendes Objekt (Tiere) und Hintergrund. Die Klassifizierung mehrerer Klassen wird in dieser Pipeline nicht unterstützt.
Objekterkennung : Diese Methode erfüllt zwei Hauptaufgaben: Sie identifiziert zunächst die Bereiche im Bild, in denen möglicherweise Tiere vorkommen können. Dies wird als Lokalisierung bezeichnet. Anschließend führt es eine Klassifizierung der beschnittenen Regionen durch. Diese Klassifizierung erfolgt mithilfe eines kleinen CNN (6 Faltungsschichten). Die Ausgabe erfolgt in Form von CSV- Dateien, die die Standorte der identifizierten Tiere in jedem Frame enthalten.
Objektverfolgung : Die Objektverfolgung ist das Endziel von MOTHe. Dieses Modul weist den erkannten Personen eindeutige IDs zu und generiert ihre Flugbahnen. Wir haben Erkennungs- und Tracking-Module getrennt, so dass es auch von jemandem verwendet werden kann, der nur an den Zähldaten interessiert ist (z. B. Umfragen). Diese Modularisierung bietet erfahrenen Programmierern auch die Flexibilität, anspruchsvollere Tracking-Algorithmen zu verwenden. Wir verwenden einen vorhandenen Code für die Tracking-Aufgabe (von der Github-Seite von ref). Dieser Algorithmus verwendet Kalman-Filter und den ungarischen Algorithmus. Dieses Skript kann ausgeführt werden, sobald die Erkennungen im vorherigen Schritt generiert wurden. Die Ausgabe ist eine text{.csv}-Datei, die individuelle IDs und Speicherorte für jeden Frame enthält. Außerdem wird eine Videoausgabe mit den eindeutigen IDs jeder Person generiert.
MOTHe ist ein Python-Paket, das mehrere andere Python-Bibliotheken verwendet, die möglicherweise aktualisiert wurden. Daher ist es wichtig, die Versionen zu kennen, die wir herunterladen/installieren. Die empfohlenen Python-Versionen sind die stabilen Versionen Python3.6 bis Python3.7 (Die neuesten LTS-Versionen von Linux (z. B. Ubuntu 20.04 Focal Fossa) werden mit einem Standard-Python3.8 installiert, das nicht mit MOTHe kompatibel ist). Python3.8 unterstützt keine Tensorflow-Versionen unterhalb der 2.2-Versionen, die von MOTHe zum Funktionieren benötigt werden. Bitte beachten Sie die Versionen einiger Bibliotheken, die relativ schnell geändert werden und erst seit kurzem zum Testen von MOTHe verwendet werden: