VIAME ist eine Computer-Vision-Anwendung, die für künstliche Intelligenz zum Selbermachen entwickelt wurde, einschließlich Objekterkennung, Objektverfolgung, Bild-/Videoanmerkung, Bild-/Videosuche, Bildmosaikierung, Bildverbesserung, Größenmessung, Datenverarbeitung mit mehreren Kameras und schnelle Modellgenerierung und Tools zur Evaluierung verschiedener Algorithmen. VIAME war ursprünglich auf die Analyse mariner Arten ausgerichtet und enthält mittlerweile viele gängige Algorithmen und Bibliotheken. Darüber hinaus eignet es sich auch als generisches Computer-Vision-Toolkit. Es enthält eine Reihe eigenständiger Tools zur Erreichung der oben genannten Aufgaben, ein Pipeline-Framework, das C/C++-, Python- und Matlab-Knoten auf Multithread-Basis miteinander verbinden kann, sowie mehrere Algorithmen, die auf der Pipeline-Infrastruktur basieren. Schließlich wurde ein Teil der Algorithmen sowohl in Desktop- als auch Web-Benutzeroberflächen für den Einsatz in verschiedenen Umgebungstypen integriert. Ein offenes Anmerkungsarchiv und ein Beispiel der Webplattform sind unter viame.kitware.com verfügbar.
Die Kurzanleitung für Benutzer, die Tutorial-Videos und das Entwicklerhandbuch sind ausführlicher, aber ausgewählte Einträge werden unten auch nach einzelnen Funktionen aufgeschlüsselt aufgelistet:
Dokumentationsübersicht <> Installation <> Gebäude <> Alle Beispiele <> DIVE-Schnittstelle <> VIEW-Schnittstelle <> Suche und schnelle Modellgenerierung <> Objektdetektor-CLI <> Objekt-Tracker-CLI <> Detektorschulungs-CLI <> Bewertung von Detektoren <> Erkennung Dateiformate <> Kalibrierung und Bildverbesserung <> Registrierung und Mosaikierung <> Stereomessung und Tiefenkarten <> Pipelining-Übersicht <> Kernklassen- und Pipeline-Informationen <> Plugin-Integration <> Beispiel-Plugin-Vorlagen <> Einbetten von Algorithmen in C++
Eine vollständige Installationsanleitung und eine Beschreibung der verschiedenen Varianten von VIAME finden Sie in der Kurzanleitung oben. Die vollständige Desktop-Version wird entweder als .msi-, .zip- oder .tar-Datei bereitgestellt. Alternativ sind eigenständige Annotatoren (ohne Verarbeitungsalgorithmen) über kleinere Installationsprogramme verfügbar (siehe DIVE Standalone unten). Schließlich sind Docker-Dateien sowohl für VIAME Desktop als auch für Web verfügbar (unten). Extrahieren Sie für vollständige Desktop-Installationen die Binärdateien und legen Sie sie in einem Verzeichnis Ihrer Wahl ab, zum Beispiel /opt/noaa/viame unter Linux oder C:ProgrammeVIAME unter Windows. Wenn Sie Pakete verwenden, die mit GPU-Unterstützung erstellt wurden, stellen Sie sicher, dass ausreichend Grafiktreiber installiert sind, Version 465.19 oder höher. Der beste Weg, Treiber zu installieren, hängt von Ihrem Betriebssystem ab. Dies ist nicht erforderlich, wenn Sie nur manuelle Annotatoren (oder nur Frame-Klassifikatoren) verwenden. Die Binärdateien sind im Hinblick auf den Speicherplatz ziemlich groß, da mehrere Standardmodelldateien und -programme enthalten sind. Wenn Sie jedoch nur die gewünschten Funktionen aus dem Quellcode erstellen (z. B. für eingebettete Apps), sind sie viel kleiner.
Installationsanforderungen:
Installationsempfehlungen:
Vollständige Windows-Desktop-Binärdateien:
Linux Full Desktop-Binärdateien:
Webanwendungen :
Zusätzliche Pakete:
Docker-Images sind verfügbar unter: https://hub.docker.com. Einen Standardcontainer mit nur Kernalgorithmen, der über die Befehlszeile ausgeführt werden kann, finden Sie unter:
kitware/viame:gpu-algorithms-latest
Dieses Image ist kopflos (dh es enthält keine GUI) und enthält eine VIAME-Desktop-Installation (keine Web-Installation) im Ordner /opt/noaa/viame. Links zu den VIAME-Web-Docker-Containern finden Sie im obigen Abschnitt in der Installationsdokumentation. Die meisten Add-on-Modelle sind nicht in der Instanz enthalten, können aber durch Ausführen des Skripts download_viame_addons.sh im Ordner „bin“ heruntergeladen werden.
Diese Anweisungen richten sich an Entwickler oder diejenigen, die an der Erstellung des neuesten Release-Zweigs interessiert sind. Jeder, der daran interessiert ist, die Software einfach so auszuführen, wie sie ist, und sie nicht zu verändern, sollte die im vorherigen Abschnitt aufgeführten Installationsprogramme verwenden, ohne einen Software-Build durchführen zu müssen. Ausführlichere Build-Anweisungen finden Sie hier, aber die Software kann entweder als Super-Build, der die meisten seiner Abhängigkeiten parallel erstellt, oder eigenständig erstellt werden. Um VIAME zu erstellen, sind mindestens Git, CMake und ein C++-Compiler erforderlich. Die Installation von Python und CUDA wird ebenfalls empfohlen. Bei Verwendung von CUDA werden die Versionen 11.7 oder 11.6 mit CUDNN 8 bevorzugt. Andere CUDA- oder CUDNN-Versionen funktionieren möglicherweise, müssen aber nicht. Für Python-Distributionen ist neben der Installation von pip mindestens Python3.6 oder höher erforderlich.
Um auf der Befehlszeile in Linux zu erstellen, verwenden Sie die folgenden Befehle und ersetzen Sie dabei nur [Quellenverzeichnis] und [Build-Verzeichnis] durch Speicherorte Ihrer Wahl. Obwohl diese Verzeichnisse identisch sein können, empfiehlt es sich, ein „src“-Checkout und dann ein separates „build“-Verzeichnis daneben zu haben:
git clone https://github.com/VIAME/VIAME.git [source-directory]
cd [source-directory] && git submodule update --init --recursive
Erstellen Sie als Nächstes ein Build-Verzeichnis und führen Sie den folgenden cmake
-Befehl aus (oder verwenden Sie alternativ die cmake-GUI, wenn Sie nicht die Befehlszeilenschnittstelle verwenden):
mkdir [build-directory] && cd [build-directory]
cmake -DCMAKE_BUILD_TYPE:STRING=Release [source-directory]
Sobald Ihr cmake
-Befehl abgeschlossen ist, können Sie mit „ccmake“ oder der cmake-GUI alle gewünschten Build-Flags konfigurieren und dann mit dem folgenden Befehl unter Linux erstellen:
make -j8
Alternativ können Sie es auch in Visual Studio oder einem Compiler Ihrer Wahl unter Windows erstellen. Unter Linux weist „-j8“ den Build an, Multithread mit 8 Threads auszuführen. Dies ist nützlich für einen schnelleren Build. Wenn Sie jedoch einen Fehler erhalten, kann es schwierig sein, ihn zu erkennen. In diesem Fall kann es sinnvoll sein, nur „make“ auszuführen hilfreicher. Für Windows ist VS2019 derzeit der am häufigsten getestete Compiler.
Es gibt mehrere optionale Argumente für viame, die steuern, welche Plugins erstellt werden, wie zum Beispiel die unten aufgeführten. Wenn ein Plugin aktiviert ist, das von einer anderen Abhängigkeit (z. B. OpenCV) abhängt, wird das Abhängigkeitsflag aktiviert. Wenn Sie sich nicht sicher sind, was Sie aktivieren sollen, belassen Sie am besten einfach die standardmäßigen Aktivierungs- und Deaktivierungsflags, die die meisten (aber nicht alle) Funktionen ermöglichen. Dies sind die Kernkomponenten, die wir empfehlen, eingeschaltet zu lassen:
Flagge | Beschreibung |
---|---|
VIAME_ENABLE_OPENCV | Erstellt OpenCV und grundlegende OpenCV-Prozesse (Video-Reader, einfache GUIs) |
VIAME_ENABLE_VXL | Erstellt VXL und grundlegende VXL-Prozesse (Video-Reader, Bildfilter) |
VIAME_ENABLE_PYTHON | Aktiviert die Unterstützung für die Verwendung von Python-Prozessen (mehrere Algorithmen) |
VIAME_ENABLE_PYTORCH | Installiert alle Pytorch-Prozesse (Detektoren, Tracker, Klassifikatoren) |
Und eine Reihe von Flags, die steuern, welche Systemdienstprogramme und Optimierungen erstellt werden, z. B.:
Flagge | Beschreibung |
---|---|
VIAME_ENABLE_CUDA | Ermöglicht CUDA (GPU)-Optimierungen für alle Pakete |
VIAME_ENABLE_CUDNN | Ermöglicht CUDNN (GPU)-Optimierungen für alle Prozesse |
VIAME_ENABLE_DIVE | Ermöglicht DIVE GUI (Anmerkung und Training für mehrere Sequenzen) |
VIAME_ENABLE_VIVIA | Erstellt VIVIA-GUIs (ANSICHT und SUCHE für Anmerkungen und Videosuche) |
VIAME_ENABLE_DOCS | Erstellt eine Doxygen-Dokumentation auf Klassenebene (fügt den Installationsbaum ein) |
VIAME_BUILD_DEPENDENCIES | Erstellen Sie VIAME als Super-Build und erstellen Sie alle Abhängigkeiten (Standard). |
VIAME_INSTALL_EXAMPLES | Installiert Beispiele für die oben genannten Module im Installations-/Beispielbaum |
VIAME_DOWNLOAD_MODELS | Lädt vorab trainierte Modelle zur Verwendung mit den Beispielen und Schnittstellen herunter |
Und schließlich eine Reihe von Flags, die Algorithmen oder Schnittstellen mit spezialisierteren Funktionen erstellen:
Flagge | Beschreibung |
---|---|
VIAME_ENABLE_TENSORFLOW | Erstellt das TensorFlow-Objektdetektor-Plugin |
VIAME_ENABLE_DARKNET | Erstellt Darknet (YOLO) Objektdetektor-Plugin |
VIAME_ENABLE_TENSORRT | Erstellt das TensorRT-Objektdetektor-Plugin |
VIAME_ENABLE_BURNOUT | Erstellt ein Burn-Out-basiertes Pixelklassifizierungs-Plugin |
VIAME_ENABLE_SMQTK | Erstellt SMQTK-Plugins zur Unterstützung der Bild-/Videoindizierung und -suche |
VIAME_ENABLE_KWANT | Entwickelt KWANT-Erkennungs- und Track-Bewertungstools (Scoring). |
VIAME_ENABLE_LEARN | Entwickelt zusätzliche Methoden für Low-Shot-Lernen |
VIAME_ENABLE_SCALLOP_TK | Erstellt ein Scallop-TK-basiertes Objektdetektor-Plugin |
VIAME_ENABLE_SEAL | Erstellt die Multimodalitäts-GUI von Seal |
VIAME_ENABLE_ITK | Erstellt eine modalitätsübergreifende ITK-Bildregistrierung |
VIAME_ENABLE_UW_CLASSIFIER | Erstellt das UW-Fischklassifizierungs-Plugin |
VIAME_ENABLE_MATLAB | Aktiviert die Unterstützung für alle Matlab-Prozesse und installiert sie |
VIAME_ENABLE_LANL | Baut einen zusätzlichen (Matlab) Scallop-Detektor |
VIAME ├── cmake # CMake-Konfigurationsdateien für Unterpakete ├── docs # Dokumentationsdateien und Handbuch (Vorkompilierung) ├── configs # Alle vom System ausführbaren Konfigurationsdateien und Modelle │ ├── Pipelines # Alle Verarbeitungspipelinekonfigurationen │ │ └── Modelle # Alle Modelle, die nur auf Basis von Flags heruntergeladen werden │ ├── prj-linux # Standard-Linux-Projektdateien │ └── prj-windows # Standard-Windows-Projektdateien ├── Beispiele # Alle ausführbaren Beispiele und Beispiel-Tutorials ├── Pakete # Vom System verwendete externe Projekte │ ├── kwiver # Verarbeitung der Backend-Infrastruktur │ ├── fletch # Abhängigkeitsgenerator für Dinge, die sich nicht oft ändern │ ├── kwant # Scoring- und Detektorbewertungstools │ ├── vivia # Baseline-Desktop-GUIs (v1.0) │ └── ... # Verschiedene andere Pakete (typischerweise für Algorithmen) ├── Plugins # Integrierte Algorithmen oder Wrapper um externe Projekte │ └── ... # Verschiedene Plugins (Detektoren, Tiefenkarten, Filter usw.) ├── Tools # Eigenständige Tools oder Skripte, die oft auf den oben genannten aufbauen └── README.md # Projekteinführungsseite, die Sie gerade lesen └── RELEASE_NOTES.md # Eine Liste der neuesten Updates im System pro Version
Wenn Sie VIAME bereits ausgecheckt haben und den Zweig wechseln oder Ihren Code aktualisieren möchten, ist es wichtig, Folgendes erneut auszuführen:
git submodule update --init --recursive
Stellen Sie nach dem Wechseln der Zweige sicher, dass Sie über die richtigen Hashes der Unterpakete innerhalb des Builds verfügen. In sehr seltenen Fällen müssen Sie möglicherweise auch Folgendes ausführen:
git submodule sync
Nur für den Fall, dass sich die Adresse der Submodule geändert hat. Sie müssen diesen Befehl nur ausführen, wenn die Fehlermeldung „Hash #hashid kann nicht abgerufen werden“ angezeigt wird.
VIAME wird unter einer BSD-3-Lizenz veröffentlicht.
Eine nicht erschöpfende Liste relevanter Veröffentlichungen, die im Rahmen des Projekts zusammen mit Mitwirkenden verwendet wurden, finden Sie hier.
VIAME wurde mit Mitteln aus mehreren Quellen entwickelt. Besonderer Dank gilt den hier aufgeführten Quellen.