Darknet Object Detection Framework und YOLO
!Darknet- und Hank.ai-Logos
Darknet ist ein Open-Source-Framework für neuronale Netzwerke, das in C, C++ und CUDA geschrieben ist. YOLO (You Only Look Once) ist ein hochmodernes Echtzeit-Objekterkennungssystem, das im Darknet-Framework läuft.
Entdecken Sie, wie Hank.ai die Darknet/YOLO-Community unterstützt
Entdecken Sie die offizielle Darknet/YOLO-Website
Konsultieren Sie die umfassenden Darknet/YOLO-FAQ
Treten Sie dem lebhaften Darknet/YOLO Discord-Server bei
Papiere
1. YOLOv7-Papier
2. Scaled-YOLOv4-Papier
3. YOlov4-Papier
4. YOlov3-Papier
Allgemeine Informationen
Das Darknet/YOLO-Framework verschiebt weiterhin die Leistungsgrenzen und liefert durchweg Geschwindigkeit und Genauigkeit, die andere Frameworks und YOLO-Versionen übertreffen. Dieses Framework ist völlig kostenlos und Open Source und ermöglicht Ihnen die nahtlose Integration von Darknet/YOLO in bestehende Projekte und Produkte, einschließlich kommerzieller Anwendungen, ohne dass Lizenzen oder Gebühren erforderlich sind.
Darknet V3 („Jazz“), veröffentlicht im Oktober 2024, erreicht eine bemerkenswerte Leistung und ist in der Lage, LEGO-Datensatzvideos mit bis zu 1000 FPS mithilfe einer NVIDIA RTX 3090-GPU präzise zu verarbeiten. Dies bedeutet, dass Darknet/YOLO jedes Videobild, einschließlich Größenänderung und Verarbeitung, innerhalb von nur 1 Millisekunde oder weniger verarbeitet.
Treten Sie dem lebendigen Darknet/YOLO Discord-Server unter https://discord.gg/zSq8rtW bei, um Hilfe zu erhalten, Diskussionen zu führen und mit anderen Benutzern in Kontakt zu treten.
Die CPU-Version von Darknet/YOLO kann auf verschiedenen Geräten ausgeführt werden, darunter Raspberry Pi, Cloud- und Colab-Server, Desktops, Laptops und High-End-Trainingsgeräte. Die GPU-Version von Darknet/YOLO erfordert eine CUDA-fähige GPU von NVIDIA.
Darknet/YOLO funktioniert bekanntermaßen nahtlos unter Linux, Windows und Mac. Detaillierte Anweisungen finden Sie in den Bauabschnitten unten.
Darknet-Version
1. Version 0.x: Dies bezieht sich auf das ursprüngliche Darknet-Tool, das von Joseph Redmon von 2013 bis 2017 entwickelt wurde und dem eine Versionsnummer fehlte.
2. Version 1.x: Dies umfasst das beliebte Darknet-Repository, das zwischen 2017 und 2021 von Alexey Bochkovskiy verwaltet wurde, ebenfalls ohne offizielle Versionsnummer.
3. Version 2.x „OAK“: Diese Version wurde 2023 eingeführt, von Hank.ai gesponsert und von Stéphane Charette gepflegt. Es war das erste Mal, dass das Darknet-Repository einen Versionsbefehl enthielt.
- Ziel war es, Störungen der vorhandenen Funktionalität zu minimieren und sich gleichzeitig mit der Codebasis vertraut zu machen.
- Zu den wichtigsten Änderungen gehören:
- Einheitliches CMake-Build-System für Windows und Linux
- Codebasiskonvertierung zum C++-Compiler
- Verbessertes chart.png während des Trainings
- Fehlerbehebungen und Leistungsoptimierungen, insbesondere zur Reduzierung der Trainingszeit
– Der letzte Zweig dieser Codebasis war Version 2.1 im v2-Zweig.
4. Version 3.x „JAZZ“: Diese Entwicklungsphase begann Mitte 2024 und startete im Oktober 2024. Der Versionsbefehl gibt nun 3.x zurück.
- Zu den Änderungen in dieser Version gehören:
– Entfernung mehrerer veralteter und nicht unterstützter Befehle.
- Umfassende Leistungsoptimierungen sowohl für Training als auch für Inferenz.
– Änderungen an der alten C-API, die geringfügige Anpassungen für Anwendungen erfordern, die die ursprüngliche Darknet-API verwenden. Die aktualisierte Dokumentation für die Darknet V3 C- und C++-API finden Sie unter https://darknetcv.ai/api/api.html.
– Einführung neuer Anwendungen und Beispielcode im Verzeichnis src-examples, zugänglich unter https://darknetcv.ai/api/files.html.
Hinweis: Aus Kompatibilitätsgründen können Sie jederzeit auf den vorherigen v2-Zweig zugreifen, wenn Sie einen dieser spezifischen Befehle ausführen müssen. Bitte wenden Sie sich an uns, wenn Sie auf fehlende Befehle stoßen. Wir werden dann deren Wiedereingliederung untersuchen.
Vortrainierte MSCOCO-Gewichte
Der Einfachheit halber wurden mehrere beliebte YOLO-Versionen auf dem MSCOCO-Datensatz vorab trainiert. Dieser Datensatz enthält 80 Klassen, die in der Textdatei cfg/coco.names angezeigt werden können.
Über MSCOCO hinaus finden Sie weitere vorab trainierte Gewichte und einfachere Datensätze zum Testen von Darknet/YOLO, wie z. B. LEGO Gears und Rolodex. Detaillierte Informationen finden Sie in den Darknet/YOLO-FAQ.
Auf die vorab trainierten MSCOCO-Gewichte kann von verschiedenen Orten aus zugegriffen werden, unter anderem in diesem Repository:
1. YOLOv2 (November 2016)
- yolov2-tiny.weights
- yolov2-full.weights
2. YOLOv3 (Mai 2018)
- yolov3-tiny.weights
- yolov3-full.weights
3. YOLOv4 (Mai 2020)
- yolov4-tiny.weights
- yolov4-full.weights
4. YOLOv7 (August 2022)
- yolov7-tiny.weights
- yolov7-full.weights
Die vortrainierten MSCOCO-Gewichte werden hauptsächlich zu Demonstrationszwecken bereitgestellt. 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
`
Es ist wichtig zu verstehen, dass die Schulung Ihrer eigenen Netzwerke die empfohlene Vorgehensweise ist. MSCOCO wird hauptsächlich zur Überprüfung des korrekten Betriebs von Darknet/YOLO verwendet.
Gebäude
Die verschiedenen in der Vergangenheit (vor 2023) verwendeten Build-Methoden wurden zu einer einheitlichen Lösung zusammengefasst. Darknet erfordert C++17 oder neuer, OpenCV und nutzt CMake für die Generierung von Projektdateien.
Denken Sie daran, dass für den Aufbau, die Installation und den Betrieb von Darknet/YOLO keine C++-Kenntnisse erforderlich sind. Es ist so, als würde man ein Auto fahren, ohne Mechaniker zu sein.
Bitte beachten Sie: Wenn Sie sich auf ältere Tutorials mit komplexeren Build-Schritten beziehen oder auf solche, die nicht mit dieser Readme-Datei übereinstimmen, gehen Sie mit Vorsicht vor. Die unten aufgeführten neuen Bauanweisungen wurden im August 2023 eingeführt.
Um Einblicke in das Innenleben des Darknet/YOLO-Objekterkennungs-Frameworks zu erhalten, sollten Softwareentwickler https://darknetcv.ai/ besuchen.
Google Colab
Die Google Colab-Anweisungen sind identisch mit den Linux-Anweisungen. Es stehen mehrere Jupyter-Notebooks zur Verfügung, die demonstrieren, wie bestimmte Aufgaben wie das Training eines neuen Netzwerks ausgeführt werden.
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
1. Abhängigkeiten installieren:
`Bash
sudo apt-get install build-essential git libopencv-dev cmake
`
2. Darknet-Repository klonen:
`Bash
mkdir ~/srccd ~/src
Git-Klon https://github.com/hank-ai/darknet
CD Darknet
`
3. Erstellen Sie ein Build-Verzeichnis:
`Bash
mkdir buildcd build
`
4. Konfigurieren Sie mit CMake:
`Bash
cmake -DCMAKEBUILDTYPE=Release ..
`
5. Darknet aufbauen:
`Bash
mache -j4
`
6. Paket und Installation:
`Bash
Paket
sudo dpkg -i darknet-VERSION.deb
`
Optional: CUDA- und cuDNN-Installation
Für eine beschleunigte Bild- und Videoverarbeitung können Sie optional entweder CUDA oder CUDA+cuDNN installieren. Darknet nutzt Ihre GPU, sofern verfügbar.
1. CUDA installieren:
- Laden Sie CUDA von https://developer.nvidia.com/cuda-downloads herunter und installieren Sie es.
– Stellen Sie sicher, dass Sie nvcc und nvidia-smi ausführen können. Möglicherweise müssen Sie Ihre PATH-Variable ändern.
2. cuDNN installieren:
- Laden Sie cuDNN von https://developer.nvidia.com/rdp/cudnn-download oder https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#cudnn-package-manager herunter und installieren Sie es. Installationsübersicht.
Wenn Sie CUDA oder CUDA+cuDNN nach der Ersteinrichtung installieren oder die NVIDIA-Software aktualisieren:
1. CMakeCache.txt löschen:
– Entfernen Sie die Datei CMakeCache.txt aus Ihrem Darknet-Build-Verzeichnis, um CMake zu zwingen, alle Abhängigkeiten neu zu erkennen.
2. Darknet neu aufbauen:
- Wiederholen Sie den Befehl cmake und führen Sie die oben genannten Schritte aus.
Hinweis: Diese Anleitung setzt Ubuntu 22.04 voraus, kann aber für andere Distributionen angepasst werden.
Fortgeschrittene Benutzer:
Um eine RPM-Installationsdatei anstelle einer DEB-Datei zu erstellen, ändern Sie die relevanten Zeilen in CM_package.cmake. Aktualisieren Sie diese beiden Zeilen, bevor Sie das Paket make -j4 ausführen:
„cmake
SET (CPACK_GENERATOR „DEB“)
SET (CPACK_GENERATOR „RPM“)
`
Passen Sie die Zeilen für Distributionen wie Centos und OpenSUSE an:
„cmake
SET (CPACK_GENERATOR „DEB“)
SET (CPACK_GENERATOR „RPM“)
`
Installieren Sie das Paket nach dem Erstellen mit dem Paketmanager Ihrer Distribution. Beispielsweise auf Debian-basierten Systemen:
`Bash
sudo dpkg -i darknet-2.0.1-Linux.deb
`
Installationsergebnis:
/usr/bin/darknet: Die standardmäßige ausführbare Darknet-Datei. Führen Sie die Darknet-Version aus, um die korrekte Installation zu überprüfen.
/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: Bibliothek zum Verknüpfen von C-, C++- und Python-Projekten.
/opt/darknet/cfg/...: Speicherort für alle .cfg-Vorlagen.
Bestätigung: Führen Sie die Darknet-Version in Ihrem Terminal aus, um die erfolgreiche Darknet-Installation zu bestätigen.
Windows CMake-Methode
Windows-Build-Anweisungen (setzt Windows 11 22H2 voraus)
1. Abhängigkeiten installieren:
`Bash
Winget installiert Git.Git
Winget installiert Kitware.CMake
Winget installiert nsis.nsis
Winget installiert Microsoft.VisualStudio.2022.Community
`
2. Ändern Sie die Visual Studio-Installation:
- Öffnen Sie das „Windows-Start“-Menü und führen Sie „Visual Studio Installer“ aus.
- Klicken Sie auf „Ändern“.
- Wählen Sie „Desktop-Entwicklung mit C++“.
- Klicken Sie unten rechts auf „Ändern“ und dann auf „Ja“.
3. Öffnen Sie die Entwickler-Eingabeaufforderung:
- Öffnen Sie das „Windows-Start“-Menü und wählen Sie „Entwickler-Eingabeaufforderung für VS 2022“. Verwenden Sie für diese Schritte nicht PowerShell.
4. Installieren Sie Microsoft VCPKG:
`Bash
CDC:
mkdir c:srccd 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
`
5. Optional: CUDA- und cuDNN-Installation:
– Installieren Sie entweder CUDA oder CUDA+cuDNN für GPU-Beschleunigung.
- Befolgen Sie die gleichen Schritte wie in der Linux-Anleitung.
6. Darknet klonen und erstellen:
`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 Fehler bezüglich fehlender CUDA- oder cuDNN-DLLs stoßen (z. B. cublas64_12.dll):
1. CUDA-DLLs kopieren:
- 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
`
2. Führen Sie msbuild.exe erneut aus:
– Führen Sie den letzten msbuild.exe-Befehl erneut aus, um das NSIS-Installationspaket zu generieren.
Fortgeschrittene Benutzer:
Anstelle der Developer-Eingabeaufforderung können Sie eine normale Eingabeaufforderung oder SSH verwenden und „Program FilesMicrosoft Visual Studio2022CommunityCommon7ToolsVsDevCmd.bat“ ausführen.
Der Befehl cmake generiert eine Visual Studio-Lösungsdatei (Darknet.sln). Wenn Sie lieber die Visual Studio-GUI verwenden möchten, laden Sie das Projekt, anstatt sich auf Befehlszeilentools zu verlassen.
Bestätigung: Führen Sie die Version C:srcDarknetbuildsrc-cliReleasedarknet.exe aus, um die Installation zu überprüfen.
Installation mit dem NSIS-Assistenten:
Führen Sie den NSIS-Installationsassistenten aus, der sich im Build-Verzeichnis befindet (z. B. darknet-VERSION.exe). Dies wird:
- Erstellen Sie ein Darknet-Verzeichnis (z. B. C:ProgrammeDarknet).
- Installieren Sie die CLI-Anwendung darknet.exe und andere Beispiel-Apps.
- Installieren Sie die erforderlichen DLL-Dateien von Drittanbietern (z. B. von OpenCV).
- Installieren Sie Darknet-DLL-, .lib- und .h-Dateien zur Verwendung in anderen Anwendungen.
- Installieren Sie die .cfg-Vorlagendateien.
Bestätigung: Führen Sie nach der Installation die Version C:Program FilesDarknetbindarknet.exe aus, um zu bestätigen, dass Darknet bereit ist.
Nutzung von Darknet
CLI
Im Folgenden finden Sie eine unvollständige Liste der von Darknet unterstützten Befehle.
Erwägen Sie zusätzlich zur Darknet-CLI die DarkHelp-Projekt-CLI, die eine alternative CLI mit erweiterten Funktionen bietet, die im Darknet nicht direkt verfügbar sind. Sie können beide CLIs zusammen verwenden.
Für die meisten 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 vorab trainierte Netzwerke herunterladen, die kostenlos online verfügbar sind. Beispiele hierfür sind:
LEGO Gears (Objekterkennung in Bildern)
Rolodex (Texterkennung in Bildern)
MSCOCO (Standardobjekterkennung der 80er-Klasse)
Allgemeine Darknet-CLI-Befehle:
1. Holen Sie sich Hilfe:
`Bash
Darknet-Hilfe
`
2. Version prüfen:
`Bash
Darknet-Version
`
3. Bildvorhersage:
- 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“.
`
4. 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
`
5. Videoverarbeitung:
- 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
`
6. Webcam-Eingabe:
- V2:
`Bash
Darknet-Detektor-Demo Animals.data Animals.cfg Animals_best.weights -c 0
`
- V3:
`Bash
darknet08display_webcam Tiere
`
7. Videoergebnisse 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
`
8. JSON-Ausgabe:
- 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
`
9. GPU-Auswahl:
- V2:
`Bash
Darknet-Detektor-Demo Animals.data Animals.cfg Animals_best.weights -i 1 test.mp4
`
10. Bewertung der Netzwerkgenauigkeit:
- Karte berechnen:
`Bash
Darknet-Detektorkarte fahren.daten fahren.cfg fahren_best.gewichte ...
`
- Detaillierte Informationen zur Genauigkeit:
`Bash
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 Person 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
`
- Berechnen Sie mAP@IoU=75:
`Bash
Darknet-Detektorkarte Animals.data Animals.cfg Animalsbest.weights -iouthresh 0,75
`
- Anker berechnen:
`Bash
Darknet-Detektor calcanchors Animals.data -numof_clusters 6 -width 320 -height 256
`
11. Trainieren Sie ein neues Netzwerk:
`Bash
Darknet-Detektor -map -dont_show train Animals.data Animals.cfg
`
Ausbildung
Wichtige Links zu den Darknet/YOLO-FAQ:
Einrichten von Dateien und Verzeichnissen
Auswahl der richtigen Konfigurationsdatei
Trainieren eines benutzerdefinierten Netzwerkbefehls
Für eine nahtlose Annotation und Schulung vereinfacht DarkMark den Prozess durch die automatische Erstellung aller erforderlichen Darknet-Dateien. Für das Training eines neuen neuronalen Netzwerks wird die Verwendung von DarkMark dringend empfohlen.
Manuelle Trainingseinrichtung:
1. Erstellen Sie ein Projektverzeichnis:
- Erstellen Sie beispielsweise ein Verzeichnis mit dem Namen ~/nn/animals/ zum Erkennen von Tieren.
2. Konfigurationsdatei kopieren:
- Kopieren Sie eine passende Darknet-Konfigurationsdatei als Vorlage (z. B. cfg/yolov4-tiny.cfg) in Ihr Projektverzeichnis. Dadurch wird ~/nn/animals/animals.cfg erstellt.
3. Erstellen Sie die Datei „animals.names“:
- Erstellen Sie im selben Verzeichnis eine Textdatei mit dem Namen Animals.names.
- Listen Sie Ihre gewünschten Kurse auf, einen pro Zeile, ohne Leerzeilen oder Kommentare. Zum Beispiel:
`
Hund
Katze
Vogel
Pferd
`
4. Erstellen Sie die Datei „animals.data“:
- Erstellen Sie eine Textdatei mit dem Namen Animals.data. Der Inhalt sollte sein:
`
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
`
5. Datensatzverzeichnis erstellen:
- Erstellen Sie ein Verzeichnis (z. B. ~/nn/animals/dataset), um Bilder und Anmerkungen zu speichern. Für jedes Bild ist eine entsprechende TXT-Datei erforderlich, die seine Anmerkungen definiert. Das Format ist spezifisch und kann nicht manuell erstellt werden. Verwenden Sie DarkMark oder eine ähnliche Software, um Bilder mit Anmerkungen zu versehen. Das YOLO-Annotationsformat wird in den Darknet/YOLO-FAQ erläutert.
6. Erstellen Sie Schulungs- und Validierungsdateien:
- Erstellen Sie die in der .data-Datei genannten Dateien Animalstrain.txt und Animalsvalid.txt. In diesen Dateien werden alle Bilder für das Training und die Validierung aufgelistet, jeweils ein Bild pro Zeile. Pfade können relativ oder absolut sein.
7. Konfigurieren Sie die .cfg-Datei:
- Öffnen Sie Ihre .cfg-Datei mit einem Texteditor.
- Stellen Sie sicher, dass Batch=64 ist.
- Passen Sie Unterteilungen basierend auf Netzwerkabmessungen und GPU-Speicher an. Beginnen Sie mit Unterteilungen=1. Alternative Werte finden Sie in den Darknet/YOLO-FAQ.
- Setzen Sie max_batches auf 2000 * Anzahl der Klassen (z. B. 8000 für 4 Klassen).
- Stellen Sie die Schritte auf 80 % und 90 % von maxbatches ein (z. B. 6400,7200 für maxbatches=8000).
- Konfigurieren Sie Breite und Höhe (Netzwerkabmessungen) anhand der Richtlinien aus den Darknet/YOLO-FAQ.
- Ersetzen Sie „classes=...“ durch die Anzahl der Klassen aus Ihrer .names-Datei (z. B. „classes=4“).
- Ändern Sie filter=... im Abschnitt [convolutional] vor jedem Abschnitt [yolo]. Verwenden Sie die Formel (Anzahl der Klassen + 5) * 3 (z. B. Filter=27 für 4 Klassen).
8. Beginnen Sie mit dem Training:
- Navigieren Sie zu Ihrem Projektverzeichnis:
`Bash
cd ~/nn/animals/
`
- Führen Sie den Trainingsbefehl aus:
`Bash
Darknet-Detektor -map -dont_show train Animals.data Animals.cfg
`
9. Fortschritt überwachen:
- Die besten Gewichte werden als Animals_best.weights gespeichert.
- Verfolgen Sie den Trainingsfortschritt, indem Sie die Datei chart.png anzeigen.
- Weitere Trainingsparameter finden Sie in den Darknet/YOLO-FAQ.
10. Ausführliches Training:
– Für eine detailliertere Ausgabe während des Trainings schließen Sie den Parameter --verbose ein:
`Bash
Darknet-Detektor -map -dont_show --verbose train Animals.data Animals.cfg
`
Andere Tools und Links
DarkMark: Zum Verwalten von Darknet/YOLO-Projekten, zum Kommentieren von Bildern, zum Überprüfen von Anmerkungen und zum Generieren von Trainingsdateien.
DarkHelp: Bietet eine robuste alternative CLI für Darknet, Bildkacheln, Objektverfolgung in Videos und eine umfassende C++-API für kommerzielle Anwendungen.
Darknet/YOLO-FAQ: Eine wertvolle Ressource zur Beantwortung Ihrer Fragen.
Stéphanes YouTube-Kanal: Zahlreiche Tutorials und Beispielvideos.
Darknet/YOLO Discord Server: Treten Sie der Community für Support und Diskussionen bei.
Roadmap
Letzte Aktualisierung: 30.10.2024
Vollendet:
Während des Trainings wurde qsort() durch std::sort() ersetzt (mit Ausnahme einiger verbleibender Fälle).
check_mistakes, getchar() und system() entfernt.
Konvertierte Darknet zur Verwendung des C++-Compilers (g++ unter Linux, VisualStudio unter Windows).
Windows-Build korrigiert.
Python-Unterstützung aktiviert.
Erstellte die Darknet-Bibliothek.
Vorhersagebezeichnungen wurden wieder aktiviert (unter Verwendung des „Alphabet“-Codes).
CUDA/GPU-Code wieder aktiviert.
CUDNN und CUDNN-Hälfte wieder aktiviert.
Die hartcodierte CUDA-Architektur wurde entfernt.
Verbesserte CUDA-Versionsinformationen.
AVX wieder aktiviert.
Alte Lösungen und Makefile entfernt.
OpenCV nicht optional gemacht.
Abhängigkeit von der alten pthread-Bibliothek entfernt.
STB entfernt.
CMakeLists.txt für neue CUDA-Erkennung neu geschrieben.
Alter „Alphabet“-Code entfernt und über 700 Bilder in Daten/Beschriftungen gelöscht.
Out-of-Source-Building aktiviert.
Verbesserte Ausgabe der Versionsnummer.
Leistungsoptimierungen während des Trainings implementiert (laufend).
Leistungsoptimierungen während der Inferenz implementiert (laufend).
Sofern möglich, wird eine Pass-by-Referenz verwendet.
.hpp-Dateien bereinigt.
Darknet.h neu geschrieben.
Es wurde vermieden, cv::Mat in void* umzuwandeln und es als richtiges C++-Objekt zu verwenden.
Inkonsistente Verwendung der internen Bildstruktur behoben.
Build-Probleme für ARM-basierte Jetson-Geräte behoben (mit Ausnahme nicht unterstützter Original-Jetson-Modelle).
Jetson Orin-Geräte sind funktionsfähig.
Die Python-API in V3 wurde korrigiert.
Erweiterte Python-Unterstützung (Python-Entwickler werden gesucht, um einen Beitrag zu leisten).
Kurzfristige Ziele:
Ersetzen Sie printf() durch std::cout (in Bearbeitung).
Erneute Unterstützung für alte Zed-Kameras.
Verbessern und gewährleisten Sie Konsistenz bei der Befehlszeilenanalyse (in Bearbeitung).
Mittelfristige Ziele:
Entfernen Sie den gesamten char*-Code und ersetzen Sie ihn durch std::string.
Blenden Sie Warnungen ein und beheben Sie Compiler-Warnungen (in Bearbeitung).
Optimieren Sie die Verwendung von cv::Mat anstelle der benutzerdefinierten C-Bildstruktur (in Bearbeitung).
Ersetzen Sie die alte Listenfunktionalität durch std::vector oder std::list.
Unterstützung für 1-Kanal-Graustufenbilder behoben.
Unterstützung für N-Kanal-Bilder hinzufügen (N > 3).
Setzen Sie die laufende Codebereinigung fort (in Bearbeitung).
Langfristige Ziele:
Beheben Sie CUDA/CUDNN-Probleme auf allen GPUs.
Schreiben Sie den CUDA+cuDNN-Code neu.
Entdecken Sie die Unterstützung für Nicht-NVIDIA-GPUs.
Implementieren Sie gedrehte Begrenzungsrahmen oder „Winkel“-Unterstützung.
Fügen Sie Schlüsselpunkte/Skelette hinzu.
Heatmaps implementieren (in Bearbeitung).
Führen Sie die Segmentierungsfunktion ein.