Darknet Object Detection Framework und YOLO
Downcodes小编 Aktualisierte Liste der öffentlichen BitTorrent-Tracker
Listen
Diese Listen werden jeden Tag automatisch aktualisiert. Letzte Aktualisierung 31.10.2024:
Haben Sie DNS-Probleme? Diese Listen enthalten dieselben Tracker, jedoch mit IP-Adressen anstelle von Domänen:
Notizen
Beitragen
Kontakt
ngosang [@] hotmail [.es]
Tools von Drittanbietern
Online-Tools von Drittanbietern
Beispiel:
Apache-2.0-Lizenz
Inhaltsverzeichnis
Darknet Object Detection Framework und YOLO
Papiere
Allgemeine Informationen
Darknet-Version
Vortrainierte MSCOCO-Gewichte
Gebäude
Google Colab
Linux CMake-Methode
Windows CMake-Methode
Nutzung von Darknet
CLI
Ausbildung
Andere Tools und Links
Roadmap
Kurzfristige Ziele
Mittelfristige Ziele
Langfristige Ziele
Darknet Object Detection Framework und YOLO
Darknet ist ein Open-Source-Framework für neuronale Netzwerke, das hauptsächlich in C, C++ und CUDA geschrieben ist.
YOLO (You Only Look Once) ist ein hochmodernes Echtzeit-Objekterkennungssystem, das im Darknet-Framework betrieben wird.
Lesen Sie, wie Hank.ai die Darknet/YOLO-Community unterstützt.
Entdecken Sie die Darknet/YOLO-Website.
Antworten auf häufig gestellte Fragen finden Sie in den Darknet/YOLO-FAQ.
Treten Sie dem Darknet/YOLO Discord-Server für Diskussionen und Unterstützung bei.
Papiere
1. Papier YOLOv7
2. Papierskalierung-YOLOv4
3. Papier YOlov4
4. Papier YOlov3
Allgemeine Informationen
Das Darknet/YOLO-Framework übertrifft durchweg andere Frameworks und YOLO-Versionen in Bezug auf Geschwindigkeit und Genauigkeit.
Dieses Framework ist völlig kostenlos und Open Source. Sie können Darknet/YOLO in Ihre Projekte und Produkte, auch kommerzielle, integrieren, ohne dass eine Lizenz erforderlich ist oder Gebühren anfallen.
Darknet V3 („Jazz“), veröffentlicht im Oktober 2024, kann die LEGO-Datensatzvideos mithilfe einer NVIDIA RTX 3090-GPU effizient mit bis zu 1000 FPS ausführen. Das bedeutet, dass Darknet/YOLO jeden Videoframe in 1 Millisekunde oder weniger verarbeiten (lesen, in der Größe ändern und verarbeiten) kann.
Treten Sie dem Darknet/YOLO Discord-Server bei, wenn Sie Hilfe benötigen oder über Darknet/YOLO diskutieren möchten: https://discord.gg/zSq8rtW
Die CPU-Version von Darknet/YOLO läuft auf verschiedenen Geräten, darunter Raspberry Pi, Cloud- und Colab-Servern, Desktops, Laptops und High-End-Trainingsgeräten. Die GPU-Version erfordert eine CUDA-fähige NVIDIA-GPU.
Darknet/YOLO ist bekanntermaßen mit Linux, Windows und Mac kompatibel. Einzelheiten finden Sie in der Bauanleitung unten.
Darknet-Version
Dem ursprünglichen Darknet-Tool, das Joseph Redmon zwischen 2013 und 2017 entwickelt hatte, fehlte eine Versionsnummer. Wir betrachten diese Version als 0.x.
Auch das nachfolgende beliebte Darknet-Repository, das von 2017 bis 2021 von Alexey Bochkovskiy gepflegt wurde, hatte keine Versionsnummer. Wir betrachten diese Version als 1.x.
Das von Hank.ai gesponserte und seit 2023 von Stéphane Charette gepflegte Darknet-Repository war das erste, das einen Versionsbefehl enthielt. Von 2023 bis Ende 2024 wurde Version 2.x „OAK“ zurückgegeben.
Das Hauptziel bestand darin, Störungen der vorhandenen Funktionalität zu minimieren und uns gleichzeitig mit der Codebasis vertraut zu machen.
Wichtige Änderungen:
Einheitlicher Build: Neu geschriebene Build-Schritte, um eine einzige, konsistente Methode mit CMake für Windows und Linux zu etablieren.
C++-Migration: Die Codebasis wurde konvertiert, um den C++-Compiler zu verwenden.
Verbessertes Diagramm: Die chart.png-Visualisierung während des Trainings wurde verbessert.
Fehlerbehebungen und Optimierungen: Zahlreiche Fehler wurden behoben und Leistungsoptimierungen implementiert, die sich hauptsächlich auf die Reduzierung der Trainingszeit konzentrierten.
Der letzte Zweig dieser Codebasis ist Version 2.1 und befindet sich im v2-Zweig.
Die nächste Entwicklungsstufe begann Mitte 2024 und gipfelte in der Veröffentlichung der Version 3.x „JAZZ“ im Oktober 2024.
Wichtige Verbesserungen von Darknet V3 („Jazz“):
Leistung: Erhebliche Leistungsoptimierungen sowohl beim Training als auch bei der Inferenz.
API-Änderungen: Die alte C-API wurde geändert. Für Anwendungen, die die ursprüngliche Darknet-API nutzen, sind geringfügige Anpassungen erforderlich. Siehe: https://darknetcv.ai/api/api.html
Neue API: Einführung einer neuen Darknet V3 C- und C++-API: https://darknetcv.ai/api/api.html
Aktualisierte Beispiele: Neue Anwendungen und Beispielcode im Verzeichnis src-examples hinzugefügt: https://darknetcv.ai/api/files.html
Sie können jederzeit zum vorherigen v2-Zweig zurückkehren, wenn Sie bestimmte Befehle ausführen müssen. Bitte informieren Sie uns, wenn Ihnen fehlende Befehle auffallen, damit wir prüfen können, ob diese wieder eingefügt werden können.
Darknet V3 („Jazz“)-Schlüsselentfernungen:
Veraltete Befehle: Viele veraltete und nicht gepflegte Befehle wurden entfernt.
Vortrainierte MSCOCO-Gewichte
Der Einfachheit halber wurden mehrere beliebte Versionen von YOLO auf dem MSCOCO-Datensatz vorab trainiert. Dieser Datensatz umfasst 80 Klassen, die in der Textdatei cfg/coco.names zu finden sind.
Über MSCOCO hinaus stehen verschiedene andere einfachere Datensätze und vorab trainierte Gewichte zum Testen von Darknet/YOLO zur Verfügung, beispielsweise LEGO Gears und Rolodex. Weitere Informationen finden Sie in den Darknet/YOLO-FAQ.
Die vorab trainierten MSCOCO-Gewichte können aus mehreren Quellen heruntergeladen werden, einschließlich diesem Repository:
YOLOv2, November 2016:
YOLOv2-tiny
YOLOv2-voll
YOlov3, Mai 2018:
YOLOv3-tiny
YOLOv3-voll
YOLOv4, Mai 2020:
YOLOv4-tiny
YOLOv4-voll
YOLOv7, August 2022:
YOLOv7-tiny
YOLOv7-voll
Die vortrainierten MSCOCO-Gewichte dienen ausschließlich Demonstrationszwecken. Die entsprechenden .cfg- und .names-Dateien für MSCOCO befinden sich im cfg-Verzeichnis. Beispielbefehle:
`Bash
wget --no-clobber https://github.com/hank-ai/darknet/releases/download/v2.0/yolov4-tiny.weights darknet02displayannotatedimages coco.names yolov4-tiny.cfg yolov4-tiny.weights image1.jpg
darknet03display_videos coco.names yolov4-tiny.cfg yolov4-tiny.weights video1.avi
DarkHelp coco.names yolov4-tiny.cfg yolov4-tiny.weights image1.jpg
DarkHelp coco.names yolov4-tiny.cfg yolov4-tiny.weights video1.avi
`
Denken Sie daran, dass Benutzer dazu ermutigt werden, ihre eigenen Netzwerke zu trainieren. MSCOCO wird hauptsächlich verwendet, um zu überprüfen, ob alles ordnungsgemäß funktioniert.
Gebäude
Die vielfältigen Build-Methoden, die vor 2023 eingesetzt wurden, wurden in einer einheitlichen Lösung konsolidiert. Darknet erfordert C++17 oder eine neuere Version, OpenCV, und nutzt CMake, um die notwendigen Projektdateien zu generieren.
Sie benötigen keine C++-Kenntnisse, um Darknet/YOLO zu erstellen, zu installieren oder auszuführen, genauso wie Sie kein Mechaniker sein müssen, um ein Auto zu fahren.
Google Colab
Die Google Colab-Anweisungen spiegeln die Linux-Anweisungen wider. Mehrere Jupyter-Notebooks demonstrieren verschiedene Aufgaben, beispielsweise das Training eines neuen Netzwerks.
Erkunden Sie die Notizbücher im Unterverzeichnis „colab“ oder befolgen Sie die unten aufgeführten Linux-Anweisungen.
Linux CMake-Methode
Darknet-Build-Tutorial für Linux
Optional: Wenn Sie über eine moderne NVIDIA-GPU verfügen, installieren Sie an dieser Stelle entweder CUDA oder CUDA+cuDNN. Wenn Darknet installiert ist, nutzt es Ihre GPU, um die Bild- (und Video-) Verarbeitung zu beschleunigen.
Sie müssen die Datei CMakeCache.txt aus Ihrem Darknet-Build-Verzeichnis löschen, um CMake zu zwingen, alle erforderlichen Dateien neu zu erkennen.
Denken Sie daran, Darknet neu aufzubauen.
Darknet kann ohne sie funktionieren, aber CUDA oder CUDA+cuDNN ist erforderlich, wenn Sie beabsichtigen, ein benutzerdefiniertes Netzwerk zu trainieren.
1. CUDA installieren: Besuchen Sie https://developer.nvidia.com/cuda-downloads, um CUDA herunterzuladen und zu installieren.
2. Installieren Sie cuDNN: Besuchen Sie https://developer.nvidia.com/rdp/cudnn-download oder https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#cudnn-package-manager- Installationsübersicht zum Herunterladen und Installieren von cuDNN.
Stellen Sie nach der Installation von CUDA sicher, dass Sie nvcc und nvidia-smi ausführen können. Möglicherweise müssen Sie Ihre PATH-Variable ändern.
Wenn Sie CUDA oder CUDA+cuDNN später installieren oder auf eine neuere NVIDIA-Softwareversion aktualisieren:
CMake aktualisieren: Wenn Ihre CMake-Version veraltet ist, aktualisieren Sie sie mit den folgenden Befehlen:
`Bash
sudo apt-get purge cmake
sudo snap install cmake --classic
`
Shell neu starten: Wenn Sie Bash als Befehls-Shell verwenden, starten Sie Ihre Shell neu. Bei Verwendung von Fisch sollte der Pfad automatisch aktualisiert werden.
Darknet aufbauen:
`Bash
sudo apt-get install build-essential git libopencv-dev cmake
mkdir ~/srccd ~/src
Git-Klon https://github.com/hank-ai/darknetcd Darknet
mkdir buildcd build
cmake -DCMAKEBUILDTYPE=Release ..
mache -j4
Paket
sudo dpkg -i darknet-VERSION.deb
`
Fortgeschrittene Benutzer:
RPM-Installation: Um eine RPM-Installationsdatei anstelle einer DEB-Datei zu erstellen, ändern Sie die relevanten Zeilen in CM_package.cmake. Bearbeiten Sie diese Zeilen, bevor Sie das Paket make -j4 ausführen:
„cmake
SET (CPACKGENERATOR „DEB“)# SET (CPACKGENERATOR „RPM“)
`
Passen Sie die Zeilen für Distributionen wie CentOS und OpenSUSE an:
„cmake
SET (CPACK_GENERATOR „DEB“)
SET (CPACK_GENERATOR „RPM“)
`
Installationspaket: Installieren Sie das Paket, nachdem es mit dem Paketmanager Ihrer Distribution fertig erstellt wurde. Für Debian-basierte Systeme (z. B. Ubuntu):
`Bash
sudo dpkg -i darknet-2.0.1-Linux.deb
`
Durch die Installation des .deb-Pakets werden die folgenden Dateien kopiert:
/usr/bin/darknet: Die standardmäßige ausführbare Darknet-Datei. Führen Sie die Darknet-Version über die CLI aus, um die korrekte Installation zu bestätigen.
/usr/include/darknet.h: Die Darknet-API für C-, C++- und Python-Entwickler.
/usr/include/darknet_version.h: Enthält Versionsinformationen für Entwickler.
/usr/lib/libdarknet.so: Die Bibliothek zum Verknüpfen in der C-, C++- und Python-Entwicklung.
/opt/darknet/cfg/...: Speichert alle .cfg-Vorlagen.
Glückwunsch! Darknet wurde in /usr/bin/ erstellt und installiert. Führen Sie zur Überprüfung die Darknet-Version aus.
Wenn Ihnen /usr/bin/darknet fehlt, haben Sie Darknet nur erstellt, nicht installiert. Stellen Sie sicher, dass Sie die .deb- oder .rpm-Datei wie oben beschrieben installieren.
Windows CMake-Methode
Diese Anweisungen gehen von einer Neuinstallation von Windows 11 22H2 aus.
1. Installationsvoraussetzungen: Öffnen Sie eine standardmäßige cmd.exe-Eingabeaufforderung und führen Sie diese Befehle aus:
`Bash
Winget installiert Git.Git
Winget installiert Kitware.CMake
Winget installiert nsis.nsis
Winget installiert Microsoft.VisualStudio.2022.Community
`
2. Ändern Sie Visual Studio: Konfigurieren Sie Visual Studio für die Unterstützung von C++-Anwendungen:
Klicken Sie auf das „Windows-Start“-Menü und führen Sie „Visual Studio Installer“ aus.
Wählen Sie „Ändern“.
Wählen Sie „Desktop-Entwicklung mit C++“.
Klicken Sie unten rechts auf „Ändern“ und dann auf „Ja“.
3. Entwickler-Eingabeaufforderung: Klicken Sie nach Abschluss der Installation auf das „Windows-Start“-Menü und wählen Sie „Entwickler-Eingabeaufforderung für VS 2022“. Verwenden Sie für diese Schritte nicht PowerShell, da dies zu Problemen führen kann!
Fortgeschrittene Benutzer:
Anstatt die Entwickler-Eingabeaufforderung zu verwenden, können Sie sich für eine normale Eingabeaufforderung entscheiden oder eine Verbindung über SSH herstellen und „ProgrammeMicrosoft Visual Studio2022CommunityCommon7ToolsVsDevCmd.bat“ manuell ausführen.
4. Installieren Sie Microsoft VCPKG: Führen Sie die folgenden Befehle in der Developer-Eingabeaufforderung (nicht PowerShell) aus, um Microsoft VCPKG zu installieren, das zum Erstellen von OpenCV verwendet wird:
`Bash
CDC:
mkdir c:src
cd c:src
Git-Klon https://github.com/microsoft/vcpkg
cd vcpkg
Bootstrap-vcpkg.bat
.vcpkg.exe integrieren installieren
.vcpkg.exe integrieren powershell.vcpkg.exe installieren opencv[contrib,dnn,freetype,jpeg,openmp,png,webp,world]:x64-windows
`
Seien Sie beim letzten Schritt geduldig, da die Fertigstellung einige Zeit in Anspruch nehmen kann. Es umfasst das Herunterladen und Erstellen zahlreicher Komponenten.
Fortgeschrittene Benutzer:
Beachten Sie, dass Sie beim Erstellen von OpenCV viele optionale Module einbinden können. Führen Sie „.vcpkg.exe search opencv“ aus, um die vollständige Liste anzuzeigen.
Optional: Wenn Sie über eine moderne NVIDIA-GPU verfügen, können Sie an dieser Stelle entweder CUDA oder CUDA+cuDNN installieren. Falls installiert, nutzt Darknet Ihre GPU, um die Bild- (und Video-)Verarbeitung zu beschleunigen.
Sie müssen die Datei CMakeCache.txt aus Ihrem Darknet-Build-Verzeichnis löschen, um CMake zu zwingen, alle erforderlichen Dateien erneut zu finden.
Denken Sie daran, Darknet neu aufzubauen.
Darknet kann ohne ausgeführt werden, aber wenn Sie ein benutzerdefiniertes Netzwerk trainieren möchten, ist entweder CUDA oder CUDA+cuDNN erforderlich.
Besuchen Sie https://developer.nvidia.com/cuda-downloads, um CUDA herunterzuladen und zu installieren.
Besuchen Sie https://developer.nvidia.com/rdp/cudnn-download oder https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#download-windows, um cuDNN herunterzuladen und zu installieren.
Stellen Sie nach der Installation von CUDA sicher, dass Sie nvcc.exe und nvidia-smi.exe ausführen können. Möglicherweise müssen Sie Ihre PATH-Variable ändern.
Sobald Sie cuDNN heruntergeladen haben, entpacken Sie die Verzeichnisse bin, include und lib und kopieren Sie sie nach C:/Programme/NVIDIA GPU Computing Toolkit/CUDA/[Version]/. Möglicherweise müssen Sie einige Dateien überschreiben.
Wenn Sie CUDA oder CUDA+cuDNN zu einem späteren Zeitpunkt installieren oder auf eine neuere Version der NVIDIA-Software aktualisieren:
CUDA muss nach Visual Studio installiert werden. Wenn Sie Visual Studio aktualisieren, denken Sie daran, CUDA neu zu installieren.
5. Darknet klonen und aufbauen: Sobald die vorherigen Schritte erfolgreich abgeschlossen wurden, klonen Sie Darknet und erstellen Sie es. Geben Sie in diesem Schritt den VCPKG-Speicherort für CMake an, um OpenCV und andere Abhängigkeiten zu finden:
`Bash
cd c:src
Git-Klon https://github.com/hank-ai/darknet.git
CD Darknet
mkdir-Build
CD-Build
cmake -DCMAKEBUILDTYPE=Release -DCMAKETOOLCHAINFILE=C:/src/vcpkg/scripts/buildsystems/vcpkg.cmake ..
msbuild.exe /property:Platform=x64;Configuration=Release /target:Build -maxCpuCount -verbosity:normal -detailedSummary darknet.sln
msbuild.exe /property:Platform=x64;Configuration=Release PACKAGE.vcxproj
`
Wenn Sie auf einen Fehler bezüglich fehlender CUDA- oder cuDNN-DLLs stoßen (z. B. cublas64_12.dll), kopieren Sie die CUDA-DLL-Dateien manuell in dasselbe Ausgabeverzeichnis wie darknet.exe. Zum Beispiel:
`Bash
kopieren Sie „C:ProgrammeNVIDIA GPU Computing ToolkitCUDAv12.2bin*.dll“ src-cliRelease
`
(Dies ist ein Beispiel! Überprüfen Sie Ihre laufende Version und verwenden Sie den für Ihre Installation geeigneten Befehl.)
Führen Sie nach dem Kopieren der Dateien den letzten msbuild.exe-Befehl erneut aus, um das NSIS-Installationspaket zu generieren:
`Bash
msbuild.exe /property:Platform=x64;Configuration=Release PACKAGE.vcxproj
`
Fortgeschrittene Benutzer:
Beachten Sie, dass die Ausgabe des Befehls cmake eine standardmäßige Visual Studio-Lösungsdatei (Darknet.sln) ist. Wenn Sie ein Softwareentwickler sind, der zum Erstellen von Projekten lieber die Visual Studio-GUI anstelle von msbuild.exe verwendet, können Sie die Befehlszeilenschritte überspringen und das Darknet-Projekt in Visual Studio laden.
Sie sollten jetzt über die ausführbare Datei C:srcDarknetbuildsrc-cliReleasedarknet.exe verfügen. Führen Sie es zum Testen aus: C:srcDarknetbuildsrc-cliReleasedarknet.exe-Version.
Um Darknet, seine Bibliotheken, Include-Dateien und erforderlichen DLLs ordnungsgemäß zu installieren, führen Sie den im letzten Schritt generierten NSIS-Installationsassistenten aus. Suchen Sie die Datei darknet-VERSION.exe im Build-Verzeichnis. Zum Beispiel:
`Bash
darknet-2.0.31-win64.exe
`
Die Installation des NSIS-Installationspakets führt zu Folgendem:
Erstellen Sie ein Verzeichnis namens Darknet, z. B. C:ProgrammeDarknet.
Installieren Sie die CLI-Anwendung (darknet.exe) und andere Beispiel-Apps.
Installieren Sie die erforderlichen DLL-Dateien von Drittanbietern, beispielsweise die von OpenCV.
Installieren Sie die erforderlichen Darknet-Dateien .dll, .lib und .h, um Darknet.dll aus einer anderen Anwendung zu verwenden.
Installieren Sie die .cfg-Vorlagendateien.
Sie sind jetzt fertig! Nach Abschluss des Installationsassistenten wird Darknet in C:ProgrammeDarknet installiert. Testen Sie es, indem Sie Folgendes ausführen: C:ProgrammeDarknetbindarknet.exe-Version.
Wenn C:/Program Files/darknet/bin/darknet.exe fehlt, wird Darknet nur erstellt, nicht installiert. Stellen Sie sicher, dass Sie alle Bereiche des NSIS-Installationsassistenten aus dem vorherigen Schritt abgeschlossen haben.
Nutzung von Darknet
CLI
Die folgende Liste ist keine umfassende Liste aller von Darknet unterstützten Befehle.
Denken Sie neben der Darknet-CLI an die DarkHelp-Projekt-CLI, die eine alternative CLI zu Darknet/YOLO bietet. Die DarkHelp-CLI umfasst verschiedene erweiterte Funktionen, auf die im Darknet nicht direkt zugegriffen werden kann. Sie können sowohl die Darknet-CLI als auch die DarkHelp-CLI gleichzeitig nutzen; sie schließen sich nicht gegenseitig aus.
Für die meisten der folgenden Befehle benötigen Sie die .weights-Datei zusammen mit den entsprechenden .names- und .cfg-Dateien. Sie können entweder Ihr eigenes Netzwerk trainieren (sehr empfehlenswert!) oder ein vorab trainiertes neuronales Netzwerk herunterladen, das jemand kostenlos online zur Verfügung gestellt hat. Einige vorab trainierte Datensätze umfassen:
LEGO Gears (Objekterkennung in einem Bild)
Rolodex (Texterkennung in einem Bild)
MSCOCO (Standardobjekterkennung der 80er-Klasse)
Befehle zum Ausführen:
Liste möglicher Befehle und Optionen:
`Bash
Darknet-Hilfe
`
Überprüfen Sie die Version:
`Bash
Darknet-Version
`
Vorhersage anhand eines Bildes:
V2:
`Bash
Darknet-Detektortest car.data car.cfg car_best.weights image1.jpg
`
V3:
`Bash
darknet02displayannotatedimages cars.cfg image1.jpg
`
DarkHelp:
`Bash
DarkHelp „cars.cfg“ „cars.cfg“ „cars_best.weights image1.jpg“.
`
Ausgabekoordinaten:
V2:
`Bash
Darknet-Detektortest Animals.data Animals.cfg Animalsbest.weights -extoutput Dog.jpg
`
V3:
`Bash
darknet01inference_images Tiere Hund.jpg
`
DarkHelp:
`Bash
DarkHelp --json Animals.cfg Animals.names Animals_best.weights Hund.jpg
`
Arbeiten mit Videos:
V2:
`Bash
Darknet-Detektor-Demo Animals.data Animals.cfg Animalsbest.weights -extoutput test.mp4
`
V3:
`Bash
darknet03display_videos Animals.cfg test.mp4
`
DarkHelp:
`Bash
DarkHelp Animals.cfg Animals.Names Animals_Best.Weights Test.mp4
`
Lesen von einer Webcam:
V2:
`Bash
Darknet-Detektor-Demo Animals.data Animals.cfg Animals_best.weights -c 0
`
V3:
`Bash
darknet08display_webcam Tiere
`
Ergebnisse in einem Video speichern:
V2:
`Bash
Darknet-Detektor-Demo Animals.data Animals.cfg Animalsbest.weights test.mp4 -outfilename res.avi
`
V3:
`Bash
darknet05processvideosmultithreaded Animals.cfg Animals.Names Animals_Best.Weights Test.mp4
`
DarkHelp:
`Bash
DarkHelp Animals.cfg Animals.Names Animals_Best.Weights Test.mp4
`
JSON:
V2:
`Bash
Darknet-Detektor-Demo Animals.data Animals.cfg Animalsbest.weights test50.mp4 -jsonport 8070 -mjpegport 8090 -extoutput
`
V3:
`Bash
darknet06imagestojson Tiere image1.jpg
`
DarkHelp:
`Bash
DarkHelp --json Animals.names Animals.cfg Animals_best.weights image1.jpg
`
Läuft auf einer bestimmten GPU:
V2:
`Bash
Darknet-Detektor-Demo Animals.data Animals.cfg Animals_best.weights -i 1 test.mp4
`
Überprüfung der Genauigkeit des neuronalen Netzwerks:
`Bash
Darknet-Detektorkarte fahren.daten fahren.cfg fahren_best.gewichte ...
ID-Name AvgPrecision TP FN FP TN Accuracy ErrorRate Precision Recall Specificity FalsePosRate
-- ---- ------------ ------ ------ ------ ------ -------- --------- --------- ------ ----------- ------------
0 Fahrzeug 91,2495 32648 3903 5826 65129 0,9095 0,0905 0,8486 0,8932 0,9179 0,0821
1 Motorrad 80,4499 2936 513 569 5393 0,8850 0,1150 0,8377 0,8513 0,9046 0,0954
2 Fahrrad 89,0912 570 124 104 3548 0,9475 0,0525 0,8457 0,8213 0,9715 0,0285
3 Personen 76,7937 7072 1727 2574 27523 0,8894 0,1106 0,7332 0,8037 0,9145 0,0855
4 viele Fahrzeuge 64,3089 1068 509 733 11288 0,9087 0,0913 0,5930 0,6772 0,9390 0,0610
5 grünes Licht 86,8118 1969 239 510 4116 0,8904 0,1096 0,7943 0,8918 0,8898 0,1102
6 gelbes Licht 82,0390 126 38 30 1239 0,9525 0,0475 0,8077 0,7683 0,9764 0,0236
7 rotes Licht 94,1033 3449 217 451 4643 0,9237 0,0763 0,8844 0,9408 0,9115 0,0885
`
So überprüfen Sie die Genauigkeit mAP@IoU=75:
`Bash
Darknet-Detektorkarte Animals.data Animals.cfg Animalsbest.weights -iouthresh 0,75
`
Neuberechnung der Anker: Die Neuberechnung der Anker erfolgt am besten in DarkMark, da es 100 Mal hintereinander ausgeführt wird und aus allen berechneten Optionen die besten Anker auswählt. Wenn Sie jedoch die ältere Darknet-Methode nutzen möchten:
`Bash
Darknet-Detektor calcanchors Animals.data -numof_clusters 6 -width 320 -height 256
`
Ein neues Netzwerk trainieren:
`Bash
cd ~/nn/animals/
Darknet-Detektor -map -dont_show train Animals.data Animals.cfg
`
(Weitere Einzelheiten finden Sie im Schulungsabschnitt unten.)
Ausbildung
Schnelle Links zu relevanten Abschnitten der Darknet/YOLO-FAQ:
Datei- und Verzeichniseinrichtung: Wie soll ich meine Dateien und Verzeichnisse einrichten?
Konfigurationsdateien: Welche Konfigurationsdatei sollte ich verwenden?
Trainingsbefehl: Welchen Befehl sollte ich beim Training meines eigenen Netzwerks verwenden?
Der einfachste Weg zum Kommentieren und Trainieren ist DarkMark. Es vereinfacht den Prozess der Erstellung aller notwendigen Darknet-Dateien. Für das Training neuer neuronaler Netze wird die Verwendung von DarkMark dringend empfohlen.
Wenn Sie die manuelle Einrichtung der Dateien für ein benutzerdefiniertes Netzwerktraining bevorzugen:
1. Ordner erstellen: Erstellen Sie einen neuen Ordner zum Speichern der Dateien. In diesem Beispiel erstellen wir ein neuronales Netzwerk zur Erkennung von Tieren. Daher wird das folgende Verzeichnis erstellt: ~/nn/animals/.
2. Konfigurationsdatei kopieren: Kopieren Sie eine Darknet-Konfigurationsdatei, die Sie als Vorlage verwenden möchten. Siehe beispielsweise cfg/yolov4-tiny.cfg. Platzieren Sie es im erstellten Ordner. In diesem Beispiel haben wir jetzt ~/nn/animals/animals.cfg.
3. Tiere.Namen erstellen: Erstellen Sie eine Textdatei mit dem Namen Tiere.Namen im selben Ordner wie die Konfigurationsdatei. Dieses Beispiel hat jetzt ~/nn/animals/animals.names.
4. Animals.names bearbeiten: Bearbeiten Sie die Datei Animals.names mit Ihrem Texteditor. Listen Sie die Klassen auf, die Sie verwenden möchten. Jede Klasse sollte eine separate Zeile ohne Leerzeilen oder Kommentare belegen. In diesem Beispiel enthält die .names-Datei vier Zeilen:
`
Hund
Katze
Vogel
Pferd
`
5. Animals.data erstellen: Erstellen Sie eine Animals.data-Textdatei im selben Ordner. In diesem Beispiel enthält die .data-Datei Folgendes:
`
Klassen = 4
train = /home/username/nn/animals/animals_train.txt
valid = /home/username/nn/animals/animals_valid.txt
Namen = /home/Benutzername/nn/animals/animals.names
backup = /home/username/nn/animals
`
6. Datensatzordner: Erstellen Sie einen Ordner zum Speichern Ihrer Bilder und Anmerkungen. Dies könnte beispielsweise ~/nn/animals/dataset sein. Für jedes Bild ist eine entsprechende TXT-Datei erforderlich, die seine Anmerkungen beschreibt. Das Format der TXT-Anmerkungsdateien ist sehr spezifisch. Sie können diese Dateien nicht manuell erstellen, da für jede Anmerkung genaue Koordinaten erforderlich sind. Verwenden Sie DarkMark oder eine ähnliche Software, um Ihre Bilder mit Anmerkungen zu versehen. Das YOLO-Annotationsformat wird in den Darknet/YOLO-FAQ beschrieben.
7. „train“- und „valid“-Dateien: Erstellen Sie die in der .data-Datei genannten „train“- und „valid“-Textdateien. In diesen beiden Dateien müssen alle Bilder einzeln aufgelistet werden, die Darknet zum Training und zur Validierung bei der Berechnung von mAP% verwendet. Fügen Sie ein Bild pro Zeile ein. Der Pfad und die Dateinamen können relativ oder absolut sein.
8. .cfg-Datei ändern: Verwenden Sie einen Texteditor, um Ihre .cfg-Datei zu ändern.
Stellen Sie sicher, dass Batch=64 ist.
Unterteilungen beachten. Basierend auf Ihren Netzwerkabmessungen und der GPU-Speicherkapazität müssen Sie möglicherweise die Unterteilungen erhöhen. Der ideale Wert ist 1, also beginnen Sie damit. Sehen Sie sich die Darknet/YOLO-FAQ an, wenn 1 für Sie nicht funktioniert.
Achten Sie auf maxbatches=.... Ein guter Startwert ist das 2000-fache der Anzahl der Klassen. In diesem Beispiel haben wir 4 Tiere, also 4 * 2000 = 8000, also maxbatches=8000.
Beachten Sie Schritte=..... Stellen Sie dies auf 80 % und 90 % der maximalen Batches ein. In diesem Beispiel, bei dem „maxbatches“ auf 8000 eingestellt ist, würden wir „steps=6400,7200“ verwenden.
Beachten Sie width=... und height=.... Dies sind die Netzwerkabmessungen. Die Darknet/YOLO-FAQ erklärt, wie man die beste Größe ermittelt.
Suchen Sie nach allen Vorkommen der Zeile „classes=...“ und ändern Sie sie mit der Anzahl der Klassen in Ihrer .names-Datei. In diesem Beispiel würden wir „classes=4“ verwenden.
Suchen Sie nach allen Vorkommen der Zeile filter=... im Abschnitt [convolutional] vor jedem Abschnitt [yolo]. Der Wert sollte (Anzahl der Klassen + 5) 3 sein. In diesem Beispiel ist (4 + 5) 3 = 27. Verwenden Sie daher filter=27 in den entsprechenden Zeilen.
9. Beginnen Sie mit dem Training: Führen Sie die folgenden Befehle aus:
`Bash
cd ~/nn/animals/
Darknet-Detektor -map -dont_show train Animals.data Animals.cfg
`
Sei geduldig. Die besten Gewichte werden als Animals_best.weights gespeichert. Der Trainingsfortschritt kann durch Anzeigen der Datei chart.png überwacht werden. Weitere Parameter, die beim Training eines neuen Netzwerks nützlich sein können, finden Sie in den Darknet/YOLO-FAQ.
Um weitere Trainingsdetails anzuzeigen, fügen Sie den Parameter --verbose hinzu. Zum Beispiel:
`Bash
Darknet-Detektor -map -dont_show --verbose train Animals.data Animals.cfg
`
Andere Tools und Links
Informationen zum Verwalten Ihrer Darknet/YOLO-Projekte, zum Kommentieren von Bildern, zum Überprüfen von Anmerkungen und zum Generieren der erforderlichen Dateien für das Training mit Darknet finden Sie unter DarkMark.
Entdecken Sie DarkHelp, um eine robuste alternative CLI zu Darknet für die Verwendung von Bildkacheln, Objektverfolgung in Videos oder eine robuste C++-API für kommerzielle Anwendungen zu finden.
Prüfen Sie, ob die Darknet/YOLO-FAQ Ihre Fragen beantworten kann.
Sehen Sie sich zahlreiche Tutorials und Beispielvideos auf Stéphanes YouTube-Kanal an.
Wenn Sie eine Supportanfrage haben oder mit anderen Darknet/YOLO-Benutzern interagieren möchten, treten Sie dem Darknet/YOLO Discord-Server bei.
Roadmap
Letzte Aktualisierung 30.10.2024:
Vollendet:
1. Während des Trainings wurde qsort() durch std::sort() ersetzt (einige unklare Instanzen bleiben bestehen).
2. check_mistakes, getchar() und system() entfernt.
3. Konvertierung von Darknet zur Verwendung des C++-Compilers (g++ unter Linux, VisualStudio unter Windows).
4. Der Windows-Build wurde korrigiert.
5. Python-Unterstützung behoben.
6. Die Darknet-Bibliothek erstellt.
7. Beschriftungen für Vorhersagen wieder aktiviert („Alphabet“-Code).
8. CUDA/GPU-Code wieder aktiviert.
9. CUDNN erneut aktiviert.
10. CUDNN-Hälfte wieder aktiviert.
11. Eine harte Codierung der CUDA-Architektur wurde vermieden.
12. Erweiterte CUDA-Versionsinformationen.
13. AVX erneut aktiviert.
14. Alte Lösungen und Makefile entfernt.
15. OpenCV obligatorisch gemacht.
16. Abhängigkeit von der alten pthread-Bibliothek entfernt.
17. STB entfernt.
18. CMakeLists.txt neu geschrieben, um die neue CUDA-Erkennung zu integrieren.
19. Alter „Alphabet“-Code entfernt und die über 700 Bilder in Daten/Beschriftungen gelöscht.
20. Out-of-Source erstellt.
21. Verbesserte Ausgabe der Versionsnummer.
22. Implementierung von Leistungsoptimierungen im Zusammenhang mit dem Training (laufende Aufgabe).
23. Implementierte Leistungsoptimierungen im Zusammenhang mit Inferenz (laufende Aufgabe).
24. Wo immer möglich, wird Pass-by-Reference verwendet.
25. .hpp-Dateien bereinigt.
26. Darknet.h neu geschrieben.
27. Es wurde vermieden, cv::Mat in void* umzuwandeln und es als richtiges C++-Objekt zu verwenden.
28. Feste oder sichergestellte Konsistenz bei der Verwendung der internen Bildstruktur.
29. Build für ARM-basierte Jetson-Geräte korrigiert.
30. Es ist unwahrscheinlich, dass Original-Jetson-Geräte repariert werden, da NVIDIA sie nicht mehr unterstützt (kein C++17-Compiler).
31. Neue Jetson Orin-Geräte sind funktionsfähig.
32. Die Python-API in V3 wurde korrigiert.
Kurzfristige Ziele:
1. Ersetzen Sie printf() durch std::cout (in Bearbeitung).
2. Besuchen Sie die alte ZED-Kameraunterstützung noch einmal.
3. Verbesserung und Verbesserung der Konsistenz des Befehlszeilen-Parsings (in Bearbeitung).
Mittelfristige Ziele:
1. Entfernen Sie den gesamten char*-Code und ersetzen Sie ihn durch std::string.
2. Beseitigen Sie versteckte Warnungen und bereinigen Sie Compiler-Warnungen (in Bearbeitung).
3. Bessere Nutzung von cv::Mat anstelle der benutzerdefinierten Bildstruktur in C (in Bearbeitung).
4. Ersetzen Sie die alte Listenfunktionalität durch std::vector oder std::list.
5. Unterstützung für 1-Kanal-Graustufenbilder behoben.
6. Fügen Sie Unterstützung für N-Kanal-Bilder hinzu, bei denen N > 3 ist (z. B. Bilder mit zusätzlicher Tiefe oder Wärmekanal).
7. Laufende Codebereinigung (in Bearbeitung).
Langfristige Ziele:
1. Beheben Sie CUDA/CUDNN-Probleme auf allen GPUs.
2. Schreiben Sie den CUDA+cuDNN-Code neu.
3. Untersuchen Sie, Unterstützung für Nicht-NVIDIA-GPUs hinzuzufügen.
4. Führen Sie gedrehte Begrenzungsrahmen oder eine Form der „Winkel“-Unterstützung ein.
5. Integrieren Sie Schlüsselpunkte/Skelette.
6. Heatmaps integrieren (in Bearbeitung).
7. Segmentierung implementieren.