Ansible
Ansible ist ein bemerkenswert einfaches IT-Automatisierungssystem. Es kümmert sich geschickt um Konfigurationsmanagement, Anwendungsbereitstellung, Cloud-Bereitstellung, Ad-hoc-Aufgabenausführung, Netzwerkautomatisierung und Multi-Knoten-Orchestrierung. Ansible ermöglicht Ihnen die mühelose Durchführung komplexer Änderungen, wie z. B. fortlaufende Updates ohne Ausfallzeiten mit Load Balancern. Tauchen Sie auf der offiziellen Website tiefer in die Fähigkeiten von Ansible ein.
Designprinzipien
1. Nutzen Sie Ansible
Sie können eine veröffentlichte Version von Ansible nahtlos mit pip oder Ihrem bevorzugten Paketmanager installieren. Umfassende Anweisungen für verschiedene Plattformen finden Sie in unserer ausführlichen Installationsanleitung.
2. Stärken Sie Power-User und Entwickler
Für fortgeschrittene Benutzer und Entwickler bietet der Entwicklungszweig Zugriff auf die neuesten Funktionen und Korrekturen. Obwohl dieser Zweig im Allgemeinen stabil ist, ist es wichtig, das Potenzial für bahnbrechende Änderungen zu berücksichtigen, wenn dieser Zweig verwendet wird. Wir empfehlen Ihnen dringend, mit der Ansible-Community zusammenzuarbeiten, wenn Sie sich für die Zusammenarbeit mit dem Entwicklungszweig entscheiden.
Kommunikation
Treten Sie dem lebendigen Ansible-Forum bei, um mit der Community in Kontakt zu treten, Hilfe zu suchen und Fragen zu stellen. Weitere Kommunikationskanäle finden Sie in unserem speziellen Leitfaden zur Verbindung mit der Ansible-Community.
Tragen Sie zu Ansible bei
Codierungsrichtlinien
Wir dokumentieren unsere Coding-Richtlinien sorgfältig im Entwicklerhandbuch. Wir empfehlen Ihnen dringend, die folgenden Abschnitte zu lesen:
1. Brancheninformationen
2. Roadmap
Basierend auf wertvollem Feedback des Teams und der Community wird für jede Haupt- oder Nebenversion (z. B. 2.7, 2.8) eine erste Roadmap veröffentlicht. Die Ansible-Roadmap-Seite beschreibt unsere Pläne und bietet Möglichkeiten, unsere Richtung zu beeinflussen.
Autoren
Ansible wurde ursprünglich von Michael DeHaan konzipiert und hat von den Beiträgen von über 5000 Benutzern (Tendenz steigend) profitiert. Vielen Dank an alle, die dazu beigetragen haben!
Ansible wird stolz von Red Hat, Inc. gesponsert.
Lizenz
GNU General Public License v3.0 oder höher. Den vollständigen Lizenztext finden Sie unter KOPIEREN.
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 entwickelt wurde.
YOLO (You Only Look Once) ist ein hochmodernes Echtzeit-Objekterkennungssystem, das im Darknet-Framework arbeitet.
Entdecken Sie, wie Hank.ai zur Darknet/YOLO-Community beiträgt: https://darknetcv.ai/
Entdecken Sie die offizielle Darknet/YOLO-Website: https://pjreddie.com/darknet/
Konsultieren Sie die umfassenden Darknet/YOLO-FAQ: https://pjreddie.com/darknet/yolo/
Treten Sie dem aktiven Darknet/YOLO Discord-Server bei: https://discord.gg/zSq8rtW
Papiere
1. YOLOv7-Papier: https://arxiv.org/abs/2207.02696
2. Scaled-YOLOv4-Papier: https://arxiv.org/abs/2102.12074
3. YOLOv4-Papier: https://arxiv.org/abs/2004.10934
4. YOLOv3-Papier: https://arxiv.org/abs/1804.02769
Allgemeine Informationen
Das Darknet/YOLO-Framework übertrifft weiterhin andere Frameworks und Versionen von YOLO in Bezug auf Geschwindigkeit und Genauigkeit.
Seine völlige Freiheit und sein Open-Source-Charakter ermöglichen Ihnen die nahtlose Integration von Darknet/YOLO in bestehende Projekte und Produkte, auch kommerzielle, ohne Lizenzbeschränkungen oder Gebühren.
Darknet V3 („Jazz“), veröffentlicht im Oktober 2024, demonstriert sein Können, indem es die LEGO-Datensatzvideos mit beeindruckenden 1000 FPS verarbeitet, wenn eine NVIDIA RTX 3090 GPU verwendet wird. Dies entspricht einer Verarbeitungszeit von 1 Millisekunde oder weniger für jedes Videobild, was eine außergewöhnliche Effizienz darstellt.
Wenn Sie Hilfe oder Diskussionen im Zusammenhang mit Darknet/YOLO benötigen, treten Sie dem dedizierten Discord-Server bei: https://discord.gg/zSq8rtW.
Die CPU-Version von Darknet/YOLO ist an verschiedene Geräte anpassbar, 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 wurde validiert, um nahtlos auf Linux-, Windows- und Mac-Betriebssystemen zu funktionieren. Beachten Sie die unten aufgeführte Bauanleitung.
Darknet-Version
Dem ursprünglichen Darknet-Tool, das Joseph Redmon zwischen 2013 und 2017 entwickelt hatte, fehlte eine Versionsnummer. Wir betrachten dies als Version 0.x.
Dem späteren beliebten Darknet-Repository, das von 2017 bis 2021 von Alexey Bochkovskiy gepflegt wurde, fehlte ebenfalls eine Versionsnummer. Wir kategorisieren dies als Version 1.x.
Das von Hank.ai gesponserte und ab 2023 von Stéphane Charette verwaltete Darknet-Repository führte erstmals einen Versionsbefehl ein. Von 2023 bis Ende 2024 gab es Version 2.x „OAK“ zurück.
Die Entwicklungsziele konzentrierten sich darauf, Störungen der vorhandenen Funktionalität zu minimieren und uns gleichzeitig mit der Codebasis vertraut zu machen.
Wichtige Verbesserungen in Version 2.x:
1. Einheitlicher Build-Prozess: Die Build-Schritte wurden für einen einheitlichen Ansatz mit CMake unter Windows und Linux neu geschrieben.
2. C++-Übergang: Die Codebasis wurde konvertiert, um den C++-Compiler zu nutzen.
3. Verbesserte Trainingsvisualisierung: Die chart.png-Visualisierung während des Trainings wurde verbessert.
4. Leistungsoptimierungen: Fehler behoben und leistungsbezogene Optimierungen implementiert, die sich hauptsächlich auf die Reduzierung der Trainingszeit konzentrieren.
Version 2.1 stellt den letzten Zweig dieser Codebasis dar und ist im v2-Zweig verfügbar.
Die nächste Entwicklungsstufe begann Mitte 2024 und gipfelte in der Veröffentlichung der Version 3.x „JAZZ“ im Oktober 2024.
Sie behalten die Option, den vorherigen v2-Zweig auszuchecken, wenn Sie Zugriff auf bestimmte Befehle dieser Version benötigen. Wenn Sie auf fehlende Befehle stoßen, benachrichtigen Sie uns bitte zur Untersuchung und möglichen Wiederintegration.
Wesentliche Änderungen in Version 3.x:
1. Befehlsbereinigung: Zahlreiche veraltete und nicht gepflegte Befehle wurden entfernt.
2. Verbesserte Leistung: Umfangreiche Leistungsoptimierungen wurden sowohl beim Training als auch bei der Inferenz implementiert.
3. API-Änderungen: Die alte C-API wurde geändert; Anwendungen, die auf der ursprünglichen Darknet-API basieren, erfordern geringfügige Anpassungen. Weitere Informationen finden Sie in der aktualisierten Dokumentation: https://darknetcv.ai/api/api.html
4. Neue API-Einführung: Einführung einer neuen Darknet V3 C- und C++-API: https://darknetcv.ai/api/api.html
5. Erweiterter Beispielcode: Neue Anwendungen und Beispielcode im Verzeichnis src-examples hinzugefügt: https://darknetcv.ai/api/files.html
Vortrainierte MSCOCO-Gewichte
Aus Gründen der Benutzerfreundlichkeit wurden mehrere beliebte YOLO-Versionen auf dem MSCOCO-Datensatz vorab trainiert. Dieser Datensatz umfasst 80 Klassen, die in der Textdatei cfg/coco.names zu finden sind.
Zum Testen von Darknet/YOLO stehen weitere einfachere Datensätze und vorab trainierte Gewichte zur Verfügung, darunter LEGO Gears und Rolodex. Ausführliche Informationen finden Sie in den Darknet/YOLO-FAQ.
Sie können die vorab trainierten MSCOCO-Gewichte an verschiedenen Orten erhalten, einschließlich dieses Repositorys:
YOLOv2 (November 2016):
yolov2-tiny
yolov2-full
YOLOv3 (Mai 2018):
yolov3-tiny
yolov3-full
YOLOv4 (Mai 2020):
yolov4-tiny
yolov4-full
YOLOv7 (August 2022):
yolov7-tiny
yolov7-voll
Die vortrainierten MSCOCO-Gewichte werden 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 wird dringend empfohlen, Ihre eigenen Netzwerke zu trainieren. MSCOCO wird normalerweise verwendet, um sicherzustellen, dass die Funktionalität des Frameworks wie erwartet funktioniert.
Gebäude
Frühere Build-Methoden (vor 2023) wurden in einer einheitlichen Lösung konsolidiert. Darknet erfordert C++17 oder neuer, OpenCV und nutzt CMake, um die notwendigen Projektdateien zu generieren.
Für den Aufbau von Darknet/YOLO sind keine C++-Kenntnisse erforderlich; Ähnlich wie beim Autofahren muss man kein Mechaniker sein, um es zu nutzen.
Softwareentwicklern wird empfohlen, https://darknetcv.ai/ zu besuchen, um Einblicke in das Innenleben des Darknet/YOLO-Objekterkennungs-Frameworks zu erhalten.
Google Colab
Die Google Colab-Anweisungen spiegeln die Linux-Anweisungen wider. Mehrere Jupyter-Notebooks demonstrieren bestimmte 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
1. Wesentliche Software:
Build-Essentials: sudo apt-get install build-essential git libopencv-dev cmake
2. Repository-Klonen:
Erstellen Sie ein Quellverzeichnis: mkdir ~/srccd ~/src
Klonen Sie das Repository: Git Clone https://github.com/hank-ai/darknetcd Darknet
3. Build-Verzeichnis:
Erstellen Sie ein Build-Verzeichnis: mkdir buildcd build
4. CMake-Konfiguration:
CMake konfigurieren: cmake -DCMAKEBUILDTYPE=Release ..
5. Darknet aufbauen:
Erstellen: make -j4
6. Paketinstallation:
Erstellen Sie das Paket: Paket
Installieren Sie das Paket: sudo dpkg -i darknet-VERSION.deb
Optional: CUDA- oder CUDA+cuDNN-Installation
Für eine beschleunigte Bild- und Videoverarbeitung können Sie optional entweder CUDA oder CUDA+cuDNN installieren.
CUDA-Installation:
Besuchen Sie https://developer.nvidia.com/cuda-downloads, um CUDA herunterzuladen und zu installieren.
cuDNN-Installation:
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 zum Herunterladen und cuDNN installieren.
Post-CUDA-Installation:
Stellen Sie sicher, dass Sie nvcc und nvidia-smi ausführen können. Möglicherweise müssen Sie Ihre PATH-Variable ändern.
CUDA oder CUDA+cuDNN aktualisieren:
Löschen Sie die Datei CMakeCache.txt aus Ihrem Darknet-Build-Verzeichnis, um CMake zu zwingen, die erforderlichen Dateien erneut zu finden.
Darknet neu aufbauen.
CMake-Versions-Upgrade (falls erforderlich):
Vorhandenes CMake bereinigen: sudo apt-get purge cmake
Installieren Sie das neueste CMake: sudo snap install cmake --classic
Starten Sie Ihre Shell neu (Bash) oder stellen Sie sicher, dass der neue Pfad erkannt wird (Fish).
Fortgeschrittene Benutzer:
Um eine RPM-Installationsdatei anstelle von DEB zu erstellen, ändern Sie die relevanten Zeilen in CM_package.cmake. Passen Sie vor dem Ausführen von make -j4 package die folgenden Zeilen an:
„cmake
SET (CPACK_GENERATOR „DEB“)
SET (CPACK_GENERATOR „RPM“)
`
Ändern Sie für Distributionen wie CentOS und OpenSUSE diese Zeilen:
„cmake
SET (CPACK_GENERATOR „DEB“)
SET (CPACK_GENERATOR „RPM“)
`
Sobald das Installationspaket erstellt ist, installieren Sie es mit dem Paketmanager Ihrer Distribution. Beispielsweise auf Debian-basierten Systemen wie Ubuntu:
`Bash
sudo dpkg -i darknet-2.0.1-Linux.deb
`
Nach der Installation:
Zu den installierten Dateien gehören:
- /usr/bin/darknet: Darknet-ausführbare Datei. Führen Sie die Darknet-Version aus, um die Installation zu bestätigen.
- /usr/include/darknet.h: Darknet-API für C-, C++- und Python-Entwickler.
- /usr/include/darknet_version.h: Versionsinformationen für Entwickler.
- /usr/lib/libdarknet.so: Bibliothek zum Verknüpfen in der C-, C++- und Python-Entwicklung.
- /opt/darknet/cfg/...: Speicherort aller .cfg-Vorlagen.
Darknet ist nun erfolgreich erstellt und in /usr/bin/ installiert. Führen Sie zur Überprüfung die Darknet-Version aus.
Windows CMake-Methode
1. Voraussetzungen:
Installieren Sie Folgendes mit Winget:
- Git: Winget installiert Git.Git
- CMake: Winget installiert Kitware.CMake
- NSIS: Winget installiert nsis.nsis
– Visual Studio 2022 Community: Winget installiert Microsoft.VisualStudio.2022.Community
2. Visual Studio-Konfiguration:
Öffnen Sie „Visual Studio Installer“ über das Windows-Startmenü.
Klicken Sie auf „Ändern“.
Wählen Sie „Desktop-Entwicklung mit C++“.
Klicken Sie unten rechts auf „Ändern“ und dann auf „Ja“.
3. Eingabeaufforderung für Entwickler:
Ö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. Microsoft VCPKG-Installation (für OpenCV):
Navigieren Sie zu C:: cd c:
Erstellen Sie ein src-Verzeichnis: mkdir c:src
VCPKG klonen: cd c:src git clone https://github.com/microsoft/vcpkg
Bootstrap VCPKG: cd vcpkg bootstrap-vcpkg.bat
VCPKG integrieren: .vcpkg.exe integrieren install
Installieren Sie OpenCV (einschließlich Abhängigkeiten): .vcpkg.exe install opencv[contrib,dnn,freetype,jpeg,openmp,png,webp,world]:x64-windows
5. Optional: CUDA- oder CUDA+cuDNN-Installation (Windows)
Für eine beschleunigte Bild- und Videoverarbeitung können Sie optional entweder CUDA oder CUDA+cuDNN installieren.
CUDA-Installation:
Besuchen Sie https://developer.nvidia.com/cuda-downloads, um CUDA herunterzuladen und zu installieren.
cuDNN-Installation:
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.
Post-CUDA-Installation:
Stellen Sie sicher, dass Sie nvcc.exe ausführen können. Möglicherweise müssen Sie Ihre PATH-Variable ändern.
Entpacken Sie das heruntergeladene cuDNN und kopieren Sie die Verzeichnisse bin, include und lib nach C:/Programme/NVIDIA GPU Computing Toolkit/CUDA/[Version]/. Möglicherweise müssen Sie einige Dateien überschreiben.
CUDA oder CUDA+cuDNN aktualisieren:
CUDA muss nach Visual Studio installiert werden. Installieren Sie CUDA erneut, wenn Sie Visual Studio aktualisieren.
6. Klonen und Aufbauen eines Darknets:
Navigieren Sie zu Ihrem Quellverzeichnis: cd c:src
Klonen Sie das Repository: Git-Klon https://github.com/hank-ai/darknet.git
Erstellen Sie ein Build-Verzeichnis: cd darknetmkdir build
Konfigurieren Sie CMake mit VCPKG: cd build cmake -DCMAKEBUILDTYPE=Release -DCMAKETOOLCHAINFILE=C:/src/vcpkg/scripts/buildsystems/vcpkg.cmake ..
Erstellen Sie die Lösung: msbuild.exe /property:Platform=x64;Configuration=Release /target:Build -maxCpuCount -verbosity:normal -detailedSummary darknet.sln
Generieren Sie das NSIS-Installationspaket: msbuild.exe /property:Platform=x64;Configuration=Release PACKAGE.vcxproj
7. Umgang mit fehlenden CUDA/cuDNN-DLLs:
Wenn Fehler bezüglich fehlender CUDA- oder cuDNN-DLLs (z. B. cublas64_12.dll) auftreten, kopieren Sie die relevanten CUDA-DLL-Dateien manuell in dasselbe Ausgabeverzeichnis wie Darknet.exe. Zum Beispiel:
`Bash
kopieren Sie „C:ProgrammeNVIDIA GPU Computing ToolkitCUDAv12.2bin*.dll“ src-cliRelease
`
Passen Sie die Versionsnummer im Befehl an Ihre Installation an.
Führen Sie den Befehl msbuild.exe erneut aus, um das NSIS-Installationspaket zu generieren.
Fortgeschrittene Benutzer:
Der Befehl cmake generiert eine Visual Studio-Lösungsdatei (Darknet.sln). Wenn Sie die Visual Studio-GUI bevorzugen, können Sie das Darknet-Projekt in Visual Studio laden, anstatt Befehlszeilentools zu verwenden.
Überprüfung nach dem Build:
Stellen Sie sicher, dass C:srcDarknetbuildsrc-cliReleasedarknet.exe vorhanden ist. Führen Sie zur Bestätigung die Version C:srcDarknetbuildsrc-cliReleasedarknet.exe aus.
Installation:
Führen Sie den NSIS-Installationsassistenten aus (z. B. darknet-VERSION.exe im Build-Verzeichnis), um Darknet, Bibliotheken, Include-Dateien und erforderliche DLLs zu installieren.
Überprüfung nach der Installation:
Stellen Sie sicher, dass C:/Program Files/darknet/bin/darknet.exe vorhanden ist. Führen Sie zur Bestätigung die Version C:/Program Files/darknet/bindarknet.exe aus.
Nutzung von Darknet
CLI
Diese Liste umfasst nicht alle Darknet-Befehle.
Erwägen Sie zusätzlich zur Darknet-CLI die Verwendung der DarkHelp-Projekt-CLI, die eine alternative und erweiterte Schnittstelle bietet. Beide CLIs können zusammen verwendet werden.
Für die meisten Befehle benötigen Sie eine .weights-Datei zusammen mit den entsprechenden .names- und .cfg-Dateien. Sie können Ihr eigenes Netzwerk trainieren oder vorab trainierte Netzwerke herunterladen.
Vorab trainierte Datensätze:
LEGO Gears: Objekterkennung in Bildern.
Rolodex: Texterkennung in Bildern.
MSCOCO: Standard-Objekterkennung der 80er-Klasse.
Allgemeine CLI-Befehle:
1. Hilfe: Darknet-Hilfe
2. Version: Darknet-Version
3. Bildvorhersage (V2):
Darknet-Detektortest car.data car.cfg car_best.weights image1.jpg
4. Bildvorhersage (V3):
darknet02displayannotatedimages cars.cfg image1.jpg
5. Bildvorhersage (DarkHelp):
DarkHelp „cars.cfg“ „cars.cfg“ „cars_best.weights image1.jpg“.
6. Ausgabekoordinaten (V2):
Darknet-Detektortest Animals.data Animals.cfg Animalsbest.weights -extoutput Dog.jpg
7. Ausgabekoordinaten (V3):
darknet01inference_images Tiere Hund.jpg
8. Ausgabekoordinaten (DarkHelp):
DarkHelp --json Animals.cfg Animals.names Animals_best.weights Hund.jpg
9. Videoverarbeitung (V2):
Darknet-Detektor-Demo Animals.data Animals.cfg Animalsbest.weights -extoutput test.mp4
10. Videoverarbeitung (V3):
darknet03display_videos Animals.cfg test.mp4
11. Videoverarbeitung (DarkHelp):
DarkHelp Animals.cfg Animals.Names Animals_Best.Weights Test.mp4
12. Webcam-Verarbeitung (V2):
Darknet-Detektor-Demo Animals.data Animals.cfg Animals_best.weights -c 0
13. Webcam-Verarbeitung (V3):
darknet08display_webcam Tiere
14. Videospeicherung (V2):
Darknet-Detektor-Demo Animals.data Animals.cfg Animalsbest.weights test.mp4 -outfilename res.avi
15. Videospeicherung (V3):
darknet05processvideosmultithreaded Animals.cfg Animals.Names Animals_Best.Weights Test.mp4
16. Videospeicherung (DarkHelp):
DarkHelp Animals.cfg Animals.Names Animals_Best.Weights Test.mp4
17. JSON-Ausgabe (V2):
Darknet-Detektor-Demo Animals.data Animals.cfg Animalsbest.weights test50.mp4 -jsonport 8070 -mjpegport 8090 -extoutput
18. JSON-Ausgabe (V3):
darknet06imagestojson Tiere image1.jpg
19. JSON-Ausgabe (DarkHelp):
DarkHelp --json Animals.names Animals.cfg Animals_best.weights image1.jpg
20. GPU-Auswahl (V2):
Darknet-Detektor-Demo Animals.data Animals.cfg Animals_best.weights -i 1 test.mp4
21. Überprüfung der Netzwerkgenauigkeit:
Darknet-Detektorkarte fahren.daten fahren.cfg fahren_best.gewichte ...
22. Genauigkeitsprüfung (mAP@IoU=75):
Darknet-Detektorkarte Animals.data Animals.cfg Animalsbest.weights -iouthresh 0,75
23. Anker-Neuberechnung (DarkMark empfohlen):
Darknet-Detektor Calcanchors Animals.data -numof_clusters 6 -width 320 -height 256
24. Ein neues Netzwerk trainieren:
Darknet Detector -map -dont_show train Animals.data Animals.cfg (siehe Schulungsabschnitt unten)
Ausbildung
Schnelle Links zu relevanten Abschnitten der Darknet/YOLO-FAQ:
Einrichtung: https://pjreddie.com/darknet/yolo/
Auswahl der Konfigurationsdatei: https://pjreddie.com/darknet/yolo/
Trainingsbefehl: https://pjreddie.com/darknet/yolo/
Der effizienteste Ansatz für Anmerkungen und Schulungen ist die Verwendung von DarkMark. Dies ist die empfohlene Methode zum Trainieren eines neuen neuronalen Netzwerks.
Manuelle Trainingseinrichtung:
1. Erstellen Sie einen Projektordner: Zum Beispiel ~/nn/animals/.
2. Kopieren Sie eine Konfigurationsvorlage:
Wählen Sie eine Konfigurationsdatei (z. B. cfg/yolov4-tiny.cfg).
Legen Sie es im Projektordner ab.
Jetzt haben Sie ~/nn/animals/animals.cfg.
3. Erstellen Sie die Datei Animals.names:
Erstellen Sie im Projektordner eine Textdatei mit dem Namen Animals.names.
Bearbeiten Sie diese Datei mit Ihren gewünschten Klassen.
Stellen Sie sicher, dass jede Klasse in einer separaten Zeile steht und keine Leerzeilen oder Kommentare enthält.
Zum Beispiel:
`
Hund
Katze
Vogel
Pferd
`
4. Erstellen Sie die Datei Animals.data:
Erstellen Sie im Projektordner eine Textdatei mit dem Namen Animals.data.
Der Inhalt sollte wie folgt aussehen:
`
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. Erstellen Sie den Datensatzordner:
Erstellen Sie einen Ordner zum Speichern Ihrer Bilder und Anmerkungen. Zum Beispiel ~/nn/animals/dataset.
Für jedes Bild ist eine entsprechende TXT-Datei erforderlich, die seine Anmerkungen definiert.
Sie können diese TXT-Dateien nicht manuell erstellen. DarkMark oder ähnliche Tools sind erforderlich, um Ihre Bilder mit Anmerkungen zu versehen und diese Dateien zu generieren.
Informationen zum YOLO-Annotationsformat finden Sie in den Darknet/YOLO-FAQ.
6. Erstellen Sie die Dateien Animalstrain.txt und Animalsvalid.txt:
Erstellen Sie diese Textdateien wie in der Datei Animals.data angegeben.
In diesen Dateien werden alle Bilder aufgelistet, die für das Training bzw. die Validierung verwendet werden sollen.
Ein Bild pro Zeile, entweder mit relativen oder absoluten Pfaden.
7. Ändern Sie die Konfigurationsdatei (animals.cfg):
Batch: Batch=64 festlegen.
Unterteilungen: Beginnen Sie mit Unterteilungen=1. Passen Sie es nach Bedarf basierend auf den Netzwerkabmessungen und dem GPU-Speicher an.
Max Batches: Ein guter Startwert ist maxbatches=2000 * numberofclasses. In diesem Beispiel ist maxbatches=8000 (4 Tiere).
Schritte: Auf 80 % und 90 % von max_batches festlegen. In diesem Beispiel sind Schritte=6400,7200.
Breite und Höhe: Definieren Sie die Netzwerkabmessungen. Weitere Informationen finden Sie in den Darknet/YOLO-FAQ.
Klassen: Legen Sie „classes=...“ fest, um der Anzahl der Klassen in Ihrer .names-Datei zu entsprechen (in diesem Beispiel 4).
Filter: Setzen Sie in jeder Faltungsschicht vor einer Yolo-Schicht filter=... auf (Anzahl der Klassen + 5) * 3. In diesem Beispiel ist filter=27.
8. Beginnen Sie mit dem Training:
Navigieren Sie zu Ihrem Projektordner: cd ~/nn/animals/
Training starten: Darknet Detector -map -dont_show train Animals.data Animals.cfg
Sei geduldig. Die besten Gewichte werden als Animals_best.weights gespeichert.
Beobachten Sie den Trainingsfortschritt, indem Sie die Datei chart.png anzeigen.
Weitere Trainingsparameter finden Sie in den Darknet/YOLO-FAQ.
Für eine detailliertere Trainingsausgabe fügen Sie das Flag --verbose hinzu:
`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. https://darknetcv.ai/darkmark/
DarkHelp: Für eine robuste alternative CLI zu Darknet, Bildkacheln, Objektverfolgung und eine kommerziell benutzerfreundliche C++-API. https://darknetcv.ai/darkhelp/
Darknet/YOLO-FAQ: Antworten auf häufig gestellte Fragen. https://pjreddie.com/darknet/yolo/
Stéphanes YouTube-Kanal: Für Tutorials und Beispielvideos. https://www.youtube.com/@stephane-charette
Darknet/YOLO Discord Server: Für Supportfragen und Community-Diskussionen. https://discord.gg/zSq8rtW
Roadmap
Letzte Aktualisierung: 30.10.2024
Vollendet
Während des Trainings wurde qsort() durch std::sort() ersetzt.
check_mistakes, getchar() und system() entfernt.
Darknet auf den C++-Compiler migriert (g++ unter Linux, VisualStudio unter Windows).
Windows-Build-Probleme behoben.
Python-Unterstützung wieder aktiviert.
Erstellte die Darknet-Bibliothek.
Vorhersagebezeichnungen („Alphabet“-Code) wieder aktiviert.
CUDA/GPU-Code wieder aktiviert.
CUDNN erneut aktiviert.
CUDNN-Hälfte wieder aktiviert.
Die hartcodierte CUDA-Architektur wurde entfernt.
Verbesserte CUDA-Versionsinformationen.
AVX wieder aktiviert.
Alte Lösungen und Makefile entfernt.
OpenCV zu einer nicht optionalen Abhängigkeit gemacht.
Abhängigkeit von der alten pthread-Bibliothek entfernt.
STB entfernt.
CMakeLists.txt wurde neu geschrieben, um die neue CUDA-Erkennung zu verwenden.
Alter „Alphabet“-Code entfernt und über 700 Bilder in Daten/Beschriftungen gelöscht.
Out-of-Source-Building aktiviert.
Verbesserte Ausgabe der Versionsnummer.
Implementierung von Leistungsoptimierungen im Zusammenhang mit Schulungen (laufend).
Leistungsoptimierungen im Zusammenhang mit Inferenz implementiert (fortlaufend).
Gegebenenfalls 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.
Inkonsistenzen bei der Verwendung der internen Bildstruktur wurden behoben.
Build für ARM-basierte Jetson-Geräte korrigiert.
Neue Jetson Orin-Geräte sind funktionsfähig.
Probleme mit der Python-API in V3 behoben.
Kurzfristige Ziele
Ersetzen Sie printf() durch std::cout (in Bearbeitung).
Untersuchen Sie die Unterstützung alter Zed-Kameras.
Verbesserung der Befehlszeilenanalyse zur Gewährleistung der Konsistenz (in Bearbeitung).
Mittelfristige Ziele
Entfernen Sie den gesamten char*-Code und ersetzen Sie ihn durch std::string.
Beseitigen Sie versteckte Warnungen und beheben Sie Compiler-Warnungen (in Bearbeitung).
Verbessern 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.
Fügen Sie Unterstützung für N-Kanal-Bilder hinzu, bei denen N > 3 ist (z. B. Bilder mit Tiefen- oder Wärmekanälen).
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 Winkelunterstützung.
Schlüsselpunkte/Skelette vorstellen.
Unterstützung für Heatmaps hinzufügen (in Bearbeitung).
Integrieren Sie die Segmentierung.