Citra „PabloMK7 Gabel“
Die Entwicklung dieses Forks wurde gestoppt. Ein neues, ernsteres Citra-Fortsetzungsprojekt wird bald folgen.
Lizenz: Apache-2.0-Lizenz
Inhaltsverzeichnis
1. Darknet Object Detection Framework und YOLO
2. Papiere
3. Allgemeine Informationen
4. Darknet-Version
5. Vortrainierte MSCOCO-Gewichte
6. Gebäude
* Google Colab
* Linux CMake-Methode
* Windows CMake-Methode
7. Nutzung des Darknets
* CLI
* Ausbildung
8. Andere Tools und Links
9. Roadmap
* Kurzfristige Ziele
* Mittelfristige Ziele
* Langfristige Ziele
Darknet Object Detection Framework und YOLO
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.
Lesen Sie, wie Hank.ai der Darknet/YOLO-Community hilft: https://hank-ai.com/
Ankündigung von Darknet V3 „Jazz“: https://darknetcv.ai/
Bitte lesen Sie die Darknet/YOLO-FAQ durch: https://darknetcv.ai/faq/
Treten Sie dem Darknet/YOLO Discord-Server bei: https://discord.gg/zSq8rtW
Papiere
1. Papier YOLOv7: https://arxiv.org/abs/2207.02696
2. Paper Scaled-YOLOv4: https://arxiv.org/abs/2102.05909
3. Papier YOLOv4: https://arxiv.org/abs/2004.10934
4. Papier YOLOv3: https://arxiv.org/abs/1804.02769
Allgemeine Informationen
Das Darknet/YOLO-Framework ist weiterhin schneller und genauer als andere Frameworks und Versionen von YOLO.
Dieses Framework ist völlig kostenlos und Open Source. Sie können Darknet/YOLO ohne Lizenz oder Zahlung einer Gebühr in bestehende Projekte und Produkte, auch kommerzielle, integrieren.
Darknet V3 („Jazz“), veröffentlicht im Oktober 2024, kann die LEGO-Datensatzvideos bei Verwendung einer NVIDIA RTX 3090-GPU präzise mit bis zu 1000 FPS ausführen, was bedeutet, dass jedes Videobild in einem Schritt von Darknet/YOLO gelesen, in der Größe geändert und verarbeitet wird Millisekunde oder weniger.
Bitte treten Sie dem Darknet/YOLO Discord-Server bei, wenn Sie Hilfe benötigen oder Darknet/YOLO diskutieren möchten: https://discord.gg/zSq8rtW
Die CPU-Version von Darknet/YOLO kann auf einfachen Geräten wie Raspberry Pi, Cloud- und Colab-Servern, Desktops, Laptops und High-End-Trainingsgeräten ausgeführt werden. Die GPU-Version von Darknet/YOLO erfordert eine CUDA-fähige GPU von NVIDIA.
Darknet/YOLO funktioniert bekanntermaßen unter Linux, Windows und Mac. Siehe die Bauanleitung unten.
Darknet-Version
Das ursprüngliche Darknet-Tool, das 2013–2017 von Joseph Redmon geschrieben wurde, hatte keine Versionsnummer. Wir betrachten diese Version als 0.x.
Auch das nächste beliebte Darknet-Repo, das zwischen 2017 und 2021 von Alexey Bochkovskiy gepflegt wurde, hatte keine Versionsnummer. Wir betrachten diese Version als 1.x.
Das von Hank.ai gesponserte und ab 2023 von Stéphane Charette gepflegte Darknet-Repo war das erste mit einem Versionsbefehl. Von 2023 bis Ende 2024 gab es Version 2.x „OAK“ zurück.
Ziele der Version 2.x „OAK“:
1. Unterbrechen Sie so wenig wie möglich von der vorhandenen Funktionalität, während Sie sich mit der Codebasis vertraut machen.
2. Schreiben Sie die Build-Schritte neu, um eine einheitliche Möglichkeit zum Erstellen mit CMake unter Windows und Linux zu haben.
3. Konvertieren Sie die Codebasis, um den C++-Compiler zu verwenden.
4. Verbessern Sie chart.png während des Trainings.
5. Fehlerbehebungen und leistungsbezogene Optimierungen, hauptsächlich im Zusammenhang mit der Verkürzung der Zeit, die zum Trainieren eines Netzwerks benötigt wird.
Der letzte Zweig dieser Codebasis ist Version 2.1 im v2-Zweig.
Die nächste Entwicklungsphase begann Mitte 2024 und wurde im Oktober 2024 veröffentlicht. Der Versionsbefehl gibt nun 3.x „JAZZ“ zurück.
Sie können jederzeit den vorherigen v2-Zweig auschecken, wenn Sie einen dieser Befehle ausführen müssen. Lassen Sie es uns wissen, damit wir prüfen können, ob fehlende Befehle wieder hinzugefügt werden können.
Änderungen in Version 3.x „JAZZ“:
1. Viele alte und nicht gepflegte Befehle entfernt.
2. Viele Leistungsoptimierungen, sowohl beim Training als auch bei der Inferenz.
3. Die Legacy-C-API wurde geändert; Anwendungen, die die ursprüngliche Darknet-API verwenden, benötigen geringfügige Änderungen: https://darknetcv.ai/api/api.html
4. Neue Darknet V3 C- und C++-API: https://darknetcv.ai/api/api.html
5. Neue Apps und Beispielcode in src-examples: https://darknetcv.ai/api/files.html
Vortrainierte MSCOCO-Gewichte
Mehrere beliebte Versionen von YOLO wurden zur Vereinfachung auf dem MSCOCO-Datensatz vorab trainiert. Dieser Datensatz verfügt über 80 Klassen, die in der Textdatei cfg/coco.names eingesehen werden können.
Es stehen mehrere 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 von verschiedenen Orten heruntergeladen werden und stehen auch in diesem Repo zum Download bereit:
YOLOv2, November 2016:
* yolov2-tiny.weights
* yolov2-full.weights
YOlov3, Mai 2018:
* yolov3-tiny.weights
* yolov3-full.weights
YOLOv4, Mai 2020:
* yolov4-tiny.weights
* yolov4-full.weights
YOLOv7, August 2022:
* yolov7-tiny.weights
* yolov7-full.weights
Die vortrainierten MSCOCO-Gewichte werden nur zu Demozwecken 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
`
Beachten Sie, dass von den Menschen erwartet wird, dass sie ihre eigenen Netzwerke trainieren. MSCOCO wird normalerweise verwendet, um zu bestätigen, dass alles ordnungsgemäß funktioniert.
Gebäude
Die verschiedenen in der Vergangenheit (vor 2023) verfügbaren Build-Methoden wurden zu einer einzigen einheitlichen Lösung zusammengeführt. Darknet erfordert C++17 oder neuer, OpenCV und verwendet CMake, um die notwendigen Projektdateien zu generieren.
Sie müssen weder C++ beherrschen, um Darknet/YOLO zu erstellen, zu installieren oder auszuführen, noch müssen Sie Mechaniker sein, um ein Auto zu fahren.
Google Colab
Die Google Colab-Anweisungen sind dieselben wie die Linux-Anweisungen. Es sind mehrere Jupyter-Notebooks verfügbar, die zeigen, wie bestimmte Aufgaben ausgeführt werden, beispielsweise das Training eines neuen Netzwerks.
Sehen Sie sich die Notizbücher im Unterverzeichnis colab an und/oder befolgen Sie die folgenden Linux-Anweisungen.
Linux CMake-Methode
Darknet-Build-Tutorial für Linux:
1. Voraussetzungen installieren:
`Bash
sudo apt-get install build-essential git libopencv-dev cmake
`
2. Klonen Sie das Darknet-Repository:
`Bash
mkdir ~/srccd ~/src
Git-Klon https://github.com/hank-ai/darknet
CD Darknet
mkdir-Build
CD-Build
`
3. Konfigurieren und erstellen:
`Bash
cmake -DCMAKEBUILDTYPE=Release ..
Erstellen Sie ein -j4-Paket
sudo dpkg -i darknet-VERSION.deb
`
4. Optional: CUDA/cuDNN installieren:
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#cudnn-package-manager-installation-overview Laden Sie cuDNN herunter und installieren Sie es.
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 zu einem späteren Zeitpunkt installieren oder auf eine neuere Version der NVIDIA-Software aktualisieren:
* Diese Anweisungen gehen von einem System aus, auf dem Ubuntu 22.04 läuft (aber erfordern es nicht!). Passen Sie es bei Bedarf an, wenn Sie eine andere Distribution verwenden.
* Löschen Sie die Datei CMakeCache.txt und führen Sie cmake und make erneut aus.
Fortgeschrittene Benutzer:
Wenn Sie eine RPM-Installationsdatei anstelle einer DEB-Datei erstellen möchten, sehen Sie sich die entsprechenden Zeilen in CM_package.cmake an. Bevor Sie make -j4 package ausführen, müssen Sie diese beiden Zeilen bearbeiten:
„cmake
# SET (CPACK_GENERATOR „DEB“)
SET (CPACK_GENERATOR „RPM“)
`
Für Distributionen wie Centos und OpenSUSE müssen Sie diese beiden Zeilen in CM_package.cmake wie folgt ändern:
„cmake
# SET (CPACK_GENERATOR „DEB“)
SET (CPACK_GENERATOR „RPM“)
`
Um das Installationspaket nach Abschluss der Erstellung zu installieren, verwenden Sie den für Ihre Distribution üblichen Paketmanager. Beispielsweise auf Debian-basierten Systemen wie 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 ist die übliche ausführbare Darknet-Datei. Führen Sie die Darknet-Version über die CLI aus, um zu bestätigen, dass sie korrekt installiert ist.
/usr/include/darknet.h ist 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 ist die Bibliothek zum Verlinken für C-, C++- und Python-Entwickler.
/opt/darknet/cfg/... ist der Ort, an dem alle .cfg-Vorlagen gespeichert sind.
Sie sind jetzt fertig! Darknet wurde in /usr/bin/ erstellt und installiert. Führen Sie dies zum Testen aus: Darknet-Version.
Wenn Sie /usr/bin/darknet nicht haben, bedeutet das, dass Sie es nicht installiert, sondern nur erstellt haben! Stellen Sie sicher, dass Sie die .deb- oder .rpm-Datei wie oben beschrieben installieren.
Windows CMake-Methode
Diese Anleitung geht von einer brandneuen Installation von Windows 11 22H2 aus:
1. Voraussetzungen 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:
* Klicken Sie auf 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. Installieren Sie Microsoft VCPKG:
Sobald alles heruntergeladen und installiert ist, klicken Sie erneut auf das „Windows-Start“-Menü und wählen Sie „Entwickler-Eingabeaufforderung für VS 2022“. Verwenden Sie für diese Schritte nicht PowerShell, da sonst Probleme auftreten!
Fortgeschrittene Benutzer:
Anstatt die Developer-Eingabeaufforderung auszuführen, können Sie eine normale Eingabeaufforderung oder SSH auf das Gerät verwenden und ProgrammeFilesMicrosoft Visual Studio2022CommunityCommon7ToolsVsDevCmd.bat manuell ausführen.
Sobald Sie die Developer-Eingabeaufforderung wie oben beschrieben ausgeführt haben (nicht PowerShell!), führen Sie die folgenden Befehle aus, um Microsoft VCPKG zu installieren, das dann zum Erstellen von OpenCV verwendet wird:
`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 Powershell integrieren
.vcpkg.exe installiere opencv[contrib,dnn,freetype,jpeg,openmp,png,webp,world]:x64-windows
`
Seien Sie bei diesem letzten Schritt geduldig, da die Ausführung lange dauern kann. Es müssen viele Dinge heruntergeladen und erstellt werden.
Fortgeschrittene Benutzer:
Beachten Sie, dass Sie beim Erstellen von OpenCV möglicherweise viele weitere optionale Module hinzufügen möchten. Führen Sie „.vcpkg.exe search opencv“ aus, um die vollständige Liste anzuzeigen.
4. Optional: CUDA/cuDNN installieren:
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 erstellen:
Nachdem alle vorherigen Schritte erfolgreich abgeschlossen wurden, müssen Sie Darknet klonen und erstellen. Während dieses Schritts müssen wir CMake auch mitteilen, wo sich vcpkg befindet, damit es OpenCV und andere Abhängigkeiten finden kann:
`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 eine Fehlermeldung über fehlende CUDA- oder cuDNN-DLLs wie cublas64_12.dll erhalten, 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
`
(Das ist ein Beispiel! Überprüfen Sie, welche Version Sie verwenden, und führen Sie den Befehl aus, der für das, was Sie installiert haben, geeignet ist.)
Nachdem die Dateien kopiert wurden, führen Sie 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 normale Visual Studio-Lösungsdatei, Darknet.sln, ist. Wenn Sie ein Softwareentwickler sind, der regelmäßig die Visual Studio-GUI anstelle von msbuild.exe zum Erstellen von Projekten verwendet, können Sie die Befehlszeile ignorieren und das Darknet-Projekt in Visual Studio laden.
Sie sollten jetzt diese Datei haben, die Sie ausführen können: C:srcDarknetbuildsrc-cliReleasedarknet.exe. Führen Sie dies zum Testen aus: C:srcDarknetbuildsrc-cliReleasedarknet.exe-Version.
Um Darknet, die Bibliotheken, die Include-Dateien und die erforderlichen DLLs korrekt zu installieren, führen Sie den NSIS-Installationsassistenten aus, der im letzten Schritt erstellt wurde. Sehen Sie sich die Datei darknet-VERSION.exe im Build-Verzeichnis an. Zum Beispiel:
`Bash
darknet-2.0.31-win64.exe
`
Die Installation des NSIS-Installationspakets führt zu Folgendem:
1. Erstellen Sie ein Verzeichnis mit dem Namen Darknet, z. B. C:ProgrammeDarknet.
2. Installieren Sie die CLI-Anwendung, darknet.exe und andere Beispiel-Apps.
3. Installieren Sie die erforderlichen DLL-Dateien von Drittanbietern, beispielsweise die von OpenCV.
4. Installieren Sie die erforderlichen Darknet-Dateien .dll, .lib und .h, um Darknet.dll aus einer anderen Anwendung zu verwenden.
5. Installieren Sie die .cfg-Vorlagendateien.
Sie sind jetzt fertig! Sobald der Installationsassistent abgeschlossen ist, ist Darknet in C:ProgrammeDarknet installiert. Führen Sie dies zum Testen aus: C:ProgrammeDarknetbindarknet.exe-Version.
Wenn Sie C:/Program Files/darknet/bin/darknet.exe nicht haben, bedeutet das, dass Sie es nicht installiert, sondern nur erstellt haben! Stellen Sie sicher, dass Sie im vorherigen Schritt alle Bereiche des NSIS-Installationsassistenten durchgehen.
Nutzung von Darknet
CLI
Im Folgenden finden Sie nicht die vollständige Liste aller von Darknet unterstützten Befehle.
Beachten Sie neben der Darknet-CLI auch die DarkHelp-Projekt-CLI, die eine alternative CLI zu Darknet/YOLO bietet. Die DarkHelp-CLI verfügt außerdem über mehrere erweiterte Funktionen, die im Darknet nicht direkt verfügbar sind. Sie können sowohl die Darknet-CLI als auch die DarkHelp-CLI zusammen verwenden, sie schließen sich nicht gegenseitig aus.
Für die meisten der unten gezeigten Befehle benötigen Sie die .weights-Datei mit den entsprechenden .names- und .cfg-Dateien. Sie können entweder Ihr eigenes Netzwerk trainieren (sehr empfehlenswert!) oder ein neuronales Netzwerk herunterladen, das bereits jemand trainiert und kostenlos im Internet zur Verfügung gestellt hat. Beispiele für vorab trainierte Datensätze sind:
1. LEGO Gears (Objekte in einem Bild finden)
2. Rolodex (Text in einem Bild finden)
3. MSCOCO (Standardobjekterkennung der 80er-Klasse)
Zu den auszuführenden Befehlen gehören:
1. Listen Sie einige mögliche auszuführende Befehle und Optionen auf:
`Bash
Darknet-Hilfe
`
2. Überprüfen Sie die Version:
`Bash
Darknet-Version
`
3. Vorhersagen 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“.
`
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. 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
`
6. Ablesen von einer Webcam:
* V2:
`Bash
Darknet-Detektor-Demo Animals.data Animals.cfg Animals_best.weights -c 0
`
* V3:
`Bash
darknet08display_webcam Tiere
`
7. 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
`
8. 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
`
9. Ausführung auf einer bestimmten GPU:
* V2:
`Bash
Darknet-Detektor-Demo Animals.data Animals.cfg Animals_best.weights -i 1 test.mp4
`
10. So überprüfen Sie die 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
`
11. So überprüfen Sie die Genauigkeit mAP@IoU=75:
`Bash
Darknet-Detektorkarte Animals.data Animals.cfg Animalsbest.weights -iouthresh 0,75
`
12. Die Neuberechnung der Anker erfolgt am besten in DarkMark, da es 100 Mal hintereinander ausgeführt wird und aus allen berechneten Ankern die besten auswählt. Wenn Sie jedoch die alte Version im Darknet ausführen möchten:
`Bash
Darknet-Detektor calcanchors Animals.data -numof_clusters 6 -width 320 -height 256
`
Ausbildung
Schnelle Links zu relevanten Abschnitten der Darknet/YOLO-FAQ:
Wie soll ich meine Dateien und Verzeichnisse einrichten?
Welche Konfigurationsdatei soll ich verwenden?
Welchen Befehl sollte ich beim Training meines eigenen Netzwerks verwenden?
Der einfachste Weg zum Kommentieren und Trainieren ist die Verwendung von DarkMark zum Erstellen aller erforderlichen Darknet-Dateien. Dies ist definitiv die empfohlene Methode, ein neues neuronales Netzwerk zu trainieren.
Wenn Sie die verschiedenen Dateien lieber manuell einrichten möchten, um ein benutzerdefiniertes Netzwerk zu trainieren:
1. Erstellen Sie einen neuen Ordner für Ihr Projekt:
In diesem Beispiel wird ein neuronales Netzwerk zur Erkennung von Tieren erstellt, daher wird das folgende Verzeichnis erstellt: ~/nn/animals/.
2. Kopieren Sie eine Darknet-Konfigurationsdatei als Vorlage:
Siehe beispielsweise cfg/yolov4-tiny.cfg. Platzieren Sie dies in dem von Ihnen erstellten Ordner. Für dieses Beispiel haben wir jetzt ~/nn/animals/animals.cfg.
3. Erstellen Sie eine Animals.names-Textdatei:
Erstellen Sie eine Textdatei „animals.names“ in demselben Ordner, in dem Sie die Konfigurationsdatei abgelegt haben. Für dieses Beispiel haben wir jetzt ~/nn/animals/animals.names.
4. Bearbeiten Sie die Datei Animals.names:
Bearbeiten Sie die Datei Animals.names mit Ihrem Texteditor. Listen Sie die Klassen auf, die Sie verwenden möchten. Sie benötigen genau 1 Eintrag pro Zeile, ohne Leerzeilen und ohne Kommentare. In diesem Beispiel enthält die .names-Datei genau 4 Zeilen:
`
Hund
Katze
Vogel
Pferd
`
5. Erstellen Sie eine Animals.data-Textdatei:
Erstellen Sie im selben Ordner eine Textdatei „animals.data“. 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. Erstellen Sie einen Ordner für Ihre Bilder und Anmerkungen:
Dies könnte beispielsweise ~/nn/animals/dataset sein. Für jedes Bild ist eine entsprechende TXT-Datei erforderlich, die die Anmerkungen für dieses Bild beschreibt. Das Format der TXT-Anmerkungsdateien ist sehr spezifisch. Sie können diese Dateien nicht manuell erstellen, da jede Anmerkung die genauen Koordinaten für die Anmerkung enthalten muss. Sehen Sie sich DarkMark oder eine andere ähnliche Software an, um Ihre Bilder mit Anmerkungen zu versehen. Das YOLO-Annotationsformat wird in den Darknet/YOLO-FAQ beschrieben.
7. Erstellen Sie die Textdateien „train“ und „valid“:
Erstellen Sie die in der .data-Datei genannten Textdateien „train“ und „valid“. Diese beiden Textdateien müssen alle Bilder einzeln auflisten, die Darknet zum Training und zur Validierung bei der Berechnung des mAP% verwenden muss. Genau ein Bild pro Zeile. Der Pfad und die Dateinamen können relativ oder absolut sein.
8. Ändern Sie Ihre .cfg-Datei:
* Stellen Sie sicher, dass Batch=64 ist.
* Beachten Sie die Unterteilungen. Abhängig von den Netzwerkabmessungen und der auf Ihrer GPU verfügbaren Speichermenge müssen Sie möglicherweise die Unterteilungen erhöhen. Der beste Wert ist 1, also beginnen Sie damit. Sehen Sie sich die Darknet/YOLO-FAQ an, wenn 1 für Sie nicht funktioniert.
Beachten Sie maxbatches=..... Ein guter Anfangswert ist 2000 x die Anzahl der Klassen. In diesem Beispiel haben wir 4 Tiere, also 4 2000 = 8000. Das heißt, wir verwenden maxbatches=8000.
* Beachten Sie Schritte=..... Dies sollte auf 80 % und 90 % der maximalen Batches eingestellt werden. Für dieses Beispiel würden wir „steps=6400,7200“ verwenden, da „maxbatches“ auf 8000 festgelegt war.
* Beachten Sie width=... und height=.... Dies sind die Netzwerkabmessungen. Die Darknet/YOLO-FAQ erklärt, wie man die beste Größe berechnet.
* Suchen Sie nach allen Instanzen der Zeile „classes=...“ und ändern Sie sie mit der Anzahl der Klassen in Ihrer .names-Datei. Für dieses Beispiel würden wir „classes=4“ verwenden.
Suchen Sie nach allen Instanzen der Zeile filter=... im Abschnitt [convolutional] vor jedem Abschnitt [yolo]. Der zu verwendende Wert ist (Anzahl der Klassen + 5) 3. Das bedeutet für dieses Beispiel (4 + 5) * 3 = 27. Wir würden also filter=27 in den entsprechenden Zeilen verwenden.
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. Und der Fortschritt des Trainings kann durch Betrachten der Datei chart.png beobachtet werden. Weitere Parameter, die Sie möglicherweise beim Training eines neuen Netzwerks verwenden möchten, finden Sie in den Darknet/YOLO-FAQ.
Wenn Sie während des Trainings weitere Details sehen möchten, 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
DarkMark: Um Ihre Darknet/YOLO-Projekte zu verwalten, Bilder zu kommentieren, Ihre Anmerkungen zu überprüfen und die notwendigen Dateien für das Training mit Darknet zu generieren.
DarkHelp: Für eine robuste alternative CLI zu Darknet, zur Verwendung von Bildkacheln, zur Objektverfolgung in Ihren Videos oder für eine robuste C++-API, die problemlos in kommerziellen Anwendungen verwendet werden kann.
Darknet/YOLO-FAQ: Sehen Sie, ob die Darknet/YOLO-FAQ Ihnen bei der Beantwortung Ihrer Fragen helfen kann.
Stéphanes YouTube-Kanal: Sehen Sie sich die vielen Tutorials und Beispielvideos auf Stéphanes YouTube-Kanal an.
Darknet/YOLO Discord-Server: Wenn Sie eine Supportfrage haben oder mit anderen Darknet/YOLO-Benutzern chatten möchten, treten Sie dem Darknet/YOLO Discord-Server bei.
Roadmap
Letzte Aktualisierung 30.10.2024:
Vollendet
1. Tauschen Sie qsort() gegen std::sort() aus, wenn es während des Trainings verwendet wurde (einige andere unklare bleiben bestehen).
2. Entfernen Sie check_mistakes, getchar() und system().
3. Konvertieren Sie Darknet zur Verwendung des C++-Compilers (g++ unter Linux, VisualStudio unter Windows).
4. Windows-Build reparieren.
5. Korrigieren Sie die Python-Unterstützung.
6. Erstellen Sie eine Darknet-Bibliothek.
7. Aktivieren Sie die Beschriftungen für Vorhersagen wieder („Alphabet“-Code).
8. Aktivieren Sie den CUDA/GPU-Code erneut.
9. Aktivieren Sie CUDNN erneut.
10. Aktivieren Sie die CUDNN-Hälfte erneut.