Data.gov-Hauptrepository
Dies ist das Haupt-Repository für die Data.gov-Plattform. Es wird in erster Linie dazu verwendet, die Arbeit des Teams zu verfolgen, aber auch zum Speichern von datagov-weitem Code (GitHub Actions-Vorlagen, Egress usw.).
Wenn Sie Dokumentation für cloud.gov-Umgebungen suchen, sehen Sie sich die Anwendungsrepositorys an.
GitHub-Aktionen und -Vorlagen
Mehrere GitHub-Aktionen wurden umgestaltet, um Vorlagen in diesem Repository zu verwenden. Sie finden diese Vorlagen hier und Beispiele für deren Aufruf in Inventar und Katalog.
Darknet Object Detection Framework und YOLO
Darknet ist ein Open-Source-Framework für neuronale Netzwerke, das mit C, C++ und CUDA erstellt wurde.
YOLO (You Only Look Once) ist ein hochmodernes Echtzeit-Objekterkennungssystem, das im Darknet-Framework arbeitet.
Lesen Sie, wie Hank.ai die Darknet/YOLO-Community unterstützt.
Entdecken Sie die Darknet/YOLO-Website.
Entdecken Sie die Darknet/YOLO-FAQ.
Treten Sie dem Darknet/YOLO Discord-Server bei.
Papiere
1. YOLOv7-Papier (Link zum Papier)
2. Scaled-YOLOv4-Papier (Link zum Papier)
3. YOLOv4-Papier (Link zum Papier)
4. YOLOv3-Papier (Link zum Papier)
Allgemeine Informationen
Das Darknet/YOLO-Framework ist weiterhin schneller und genauer als andere Frameworks und Versionen von YOLO. Es ist völlig kostenlos und Open Source, sodass Sie Darknet/YOLO ohne Lizenzbeschränkungen oder Gebühren in Ihre Projekte und Produkte integrieren können.
Darknet V3 („Jazz“), veröffentlicht im Oktober 2024, kann die LEGO-Datensatzvideos mit einer NVIDIA RTX 3090-GPU mit bis zu 1000 FPS verarbeiten. Das bedeutet, dass jedes Videobild in weniger als 1 Millisekunde verarbeitet wird.
Treten Sie dem Darknet/YOLO Discord-Server bei, um Hilfe und Diskussionen zu erhalten: https://discord.gg/zSq8rtW
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 erfordert eine CUDA-fähige NVIDIA-GPU.
Darknet/YOLO funktioniert bekanntermaßen unter Linux, Windows und Mac. Bauanleitungen finden Sie weiter unten.
Darknet-Version
Version 0.x: Das ursprüngliche Darknet-Tool, das zwischen 2013 und 2017 von Joseph Redmon erstellt wurde.
Version 1.x: Das beliebte Darknet-Repository, das von Alexey Bochkovskiy von 2017 bis 2021 verwaltet wurde.
Version 2.x („OAK“): Das von Hank.ai gesponserte und von Stéphane Charette verwaltete Darknet-Repository ab 2023. Mit dieser Version wurde ein Versionsbefehl eingeführt.
Version 2.1: Der letzte Zweig der Codebasis der Version 2, verfügbar im v2-Zweig.
Version 3.x („JAZZ“): Die neueste Entwicklungsphase, veröffentlicht im Oktober 2024.
Wichtige Änderungen in Version 3.x:
1. Viele alte und nicht gepflegte Befehle entfernt.
2. Signifikante Leistungsoptimierungen sowohl für Training als auch für Inferenz.
3. Modifizierte Legacy-C-API; Anwendungen, die die ursprüngliche Darknet-API verwenden, erfordern möglicherweise geringfügige Anpassungen.
4. Einführung der neuen 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
Der Einfachheit halber sind mehrere beliebte Versionen von YOLO vorab auf dem MSCOCO-Datensatz trainiert. Dieser Datensatz enthält 80 Klassen, die in der Textdatei cfg/coco.names aufgeführt sind.
Zum Testen von Darknet/YOLO stehen andere einfachere Datensätze und vorab trainierte Gewichte wie LEGO Gears und Rolodex zur Verfügung. Weitere Informationen finden Sie in den Darknet/YOLO-FAQ.
Sie können vorab trainierte MSCOCO-Gewichte von verschiedenen Orten herunterladen, einschließlich dieses Repositorys:
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
Beispielbefehle:
`
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 Sie ermutigt werden, Ihre eigenen Netzwerke zu trainieren. MSCOCO wird in erster Linie verwendet, um zu bestätigen, dass alles ordnungsgemäß funktioniert.
Gebäude
Die vor 2023 verfügbaren Build-Methoden wurden in einer einzigen, einheitlichen Lösung zusammengefasst. Darknet erfordert C++17 oder neuer, OpenCV und verwendet CMake zum Generieren von Projektdateien.
Sie müssen keine C++-Kenntnisse haben, 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 sind identisch mit den Linux-Anweisungen. Im Unterverzeichnis colab sind mehrere Jupyter-Notebooks verfügbar, die Aufgaben wie das Training eines neuen Netzwerks demonstrieren. Sie können auch den folgenden Linux-Anweisungen folgen.
Linux CMake-Methode
1. Optional: Wenn Sie über eine moderne NVIDIA-GPU verfügen, installieren Sie CUDA oder CUDA+cuDNN. Darknet nutzt Ihre GPU für eine schnellere Bild- und Videoverarbeitung.
2. Löschen Sie die Datei CMakeCache.txt aus Ihrem Darknet-Build-Verzeichnis, um CMake zu zwingen, alle erforderlichen Dateien erneut zu finden.
3. Darknet neu aufbauen.
4. Installieren Sie CUDA (optional): Besuchen Sie https://developer.nvidia.com/cuda-downloads, um CUDA herunterzuladen und zu installieren.
5. Installieren Sie cuDNN (optional): 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 Installieren von cuDNN.
6. Überprüfen Sie die CUDA-Installation: Stellen Sie sicher, dass Sie nvcc und nvidia-smi ausführen können. Möglicherweise müssen Sie Ihre PATH-Variable ändern.
7. Abhängigkeiten installieren und Darknet klonen:
`Bash
sudo apt-get install build-essential git libopencv-dev cmake
mkdir ~/srccd ~/src
Git-Klon https://github.com/hank-ai/darknetcd Darknet
mkdir-Build
CD-Build
`
8. CMake konfigurieren:
`Bash
cmake -DCMAKEBUILDTYPE=Release ..
`
9. Darknet aufbauen:
`Bash
Erstellen Sie ein -j4-Paket
`
10. Darknet installieren:
`Bash
sudo dpkg -i darknet-VERSION.deb
`
11. Testinstallation:
`Bash
Darknet-Version
`
Zusätzliche Hinweise:
Wenn Sie eine ältere Version von CMake verwenden, aktualisieren Sie diese, bevor Sie den Befehl cmake ausführen:
`Bash
sudo apt-get purge cmake
sudo snap install cmake --classic
`
Starten Sie Ihre Shell neu, wenn Sie Bash verwenden, sonst sollte Fish den Pfad automatisch aktualisieren.
Um eine RPM-Installationsdatei anstelle einer DEB-Datei zu erstellen, ändern Sie die Datei CM_package.cmake.
Sobald das Installationspaket erstellt ist, verwenden Sie den Paketmanager für Ihre Distribution, um es zu installieren (z. B. sudo dpkg -i darknet-2.0.1-Linux.deb auf Debian-basierten Systemen).
Windows CMake-Methode
1. Installieren Sie die erforderlichen Tools:
`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 „Visual Studio Installer“.
- 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 für VS 2022: Verwenden Sie PowerShell nicht.
4. Installieren Sie Microsoft VCPKG:
`Bash
cd c:mkdir c:srccd c:src
Git-Klon https://github.com/microsoft/vcpkgcd vcpkg
Bootstrap-vcpkg.bat
.vcpkg.exe integrieren
.vcpkg.exe installieren, powershell.vcpkg.exe integrieren, opencv[contrib,dnn,freetype,jpeg,openmp,png,webp,world]:x64-windows installieren
`
5. Optional: Installieren Sie CUDA oder CUDA+cuDNN (wie in der Linux-Anleitung).
6. Löschen Sie CMakeCache.txt (wie in den Linux-Anweisungen).
7. Erstellen Sie Darknet neu (wie in der Linux-Anleitung).
8. Installieren Sie CUDA (optional): Besuchen Sie https://developer.nvidia.com/cuda-downloads, um CUDA herunterzuladen und zu installieren.
9. Installieren Sie cuDNN (optional): 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.
10. Überprüfen Sie die CUDA-Installation: Stellen Sie sicher, dass Sie nvcc.exe ausführen können. Möglicherweise müssen Sie Ihre PATH-Variable ändern.
11. CuDNN-Dateien entpacken und kopieren: Nach dem Herunterladen entpacken 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.
12. Darknet klonen und erstellen:
`Bash
cd c:src
Git-Klon https://github.com/hank-ai/darknet.gitcd 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
`
13. CUDA-DLLs kopieren (optional): Wenn Fehler bezüglich fehlender CUDA- oder cuDNN-DLLs (z. B. cublas64_12.dll) auftreten, kopieren Sie die CUDA-DLLs manuell in das Ausgabeverzeichnis von Darknet.exe:
`Bash
kopieren Sie „C:ProgrammeNVIDIA GPU Computing ToolkitCUDAv12.2bin*.dll“ src-cliRelease
`
(Stellen Sie sicher, dass Sie die Versionsnummer durch die von Ihnen verwendete ersetzen.)
14. Führen Sie den Befehl msbuild.exe erneut aus, um das NSIS-Installationspaket zu generieren:
`Bash
msbuild.exe /property:Platform=x64;Configuration=Release PACKAGE.vcxproj
`
15. Testinstallation:
`Bash
C:srcDarknetbuildsrc-cliReleasedarknet.exe-Version
`
16. Führen Sie den NSIS-Installationsassistenten aus: Dadurch werden die CLI-Anwendung, erforderliche DLLs, Bibliotheken, Include-Dateien und Vorlagenkonfigurationsdateien installiert.
Zusätzliche Hinweise:
Der Befehl cmake generiert eine Visual Studio-Lösungsdatei (Darknet.sln). Sie können das Projekt mithilfe der Visual Studio-GUI anstelle von msbuild.exe erstellen.
Das NSIS-Installationspaket (z. B. darknet-VERSION.exe) finden Sie im Build-Verzeichnis.
Nutzung von Darknet
CLI
Die folgende Liste ist keine vollständige Liste aller Darknet-Befehle.
Darknet-Hilfe: Hilfeinformationen anzeigen.
Darknet-Version: Überprüfen Sie die Darknet-Version.
Vorhersagebefehle:
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
`
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
`
Webcam-Eingabe:
V2:
`Bash
Darknet-Detektor-Demo Animals.data Animals.cfg Animals_best.weights -c 0
`
V3:
`Bash
darknet08display_webcam Tiere
`
Ergebnisse als 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-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
`
GPU angeben:
V2:
`Bash
Darknet-Detektor-Demo Animals.data Animals.cfg Animals_best.weights -i 1 test.mp4
`
Genauigkeitsberechnung:
Karte:
`Bash
Darknet-Detektorkarte fahren.daten fahren.cfg fahren_best.gewichte ...
`
Karte@IoU=75:
`Bash
Darknet-Detektorkarte Animals.data Animals.cfg Animalsbest.weights -iouthresh 0,75
`
Anker neu berechnen:
DarkMark (empfohlen): Verwenden Sie DarkMark, um 100 aufeinanderfolgende Berechnungen durchzuführen und die besten Anker auszuwählen.
Darknet:
`Bash
Darknet-Detektor calcanchors Animals.data -numof_clusters 6 -width 320 -height 256
`
Trainieren Sie ein neues Netzwerk:
Verwendung von DarkMark (empfohlen): Verwenden Sie DarkMark, um alle für das Training erforderlichen Dateien zu erstellen.
Manuelle Einrichtung:
1. Erstellen Sie einen neuen Ordner für Ihr Projekt (z. B. ~/nn/animals/).
2. Kopieren Sie eine Konfigurationsdatei als Vorlage (z. B. cfg/yolov4-tiny.cfg) in den Ordner.
3. Erstellen Sie eine Animals.names-Textdatei mit Ihren Klassennamen, einen pro Zeile.
4. Erstellen Sie eine Animals.data-Textdatei mit dem folgenden Format:
`
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 einen Ordner für Bilder und Anmerkungen (z. B. ~/nn/animals/dataset).
6. Kommentieren Sie Ihre Bilder und generieren Sie entsprechende TXT-Anmerkungsdateien mit DarkMark oder einer ähnlichen Software.
7. Erstellen Sie die Dateien „animalstrain.txt“ und „animalsvalid.txt“ und listen Sie jeweils Bilder für das Training und die Validierung auf, eines pro Zeile.
8. Ändern Sie die Konfigurationsdatei:
- Setze Batch=64.
- Passen Sie die Unterteilungen nach Bedarf an.
- Setzen Sie max_batches=8000 (oder 2000 x Anzahl der Klassen).
- Stellen Sie Schritte=6400,7200 ein (80 % und 90 % von max_batches).
- Stellen Sie Breite und Höhe auf Ihre Netzwerkabmessungen ein.
- Aktualisieren Sie die Klassen mit der Anzahl der Klassen in Ihrer .names-Datei.
- Aktualisieren Sie die Filter in jedem [Faltungs]-Abschnitt vor den [Yolo]-Abschnitten: (Anzahl der Klassen + 5) * 3.
9. Beginnen Sie mit dem Training:
`Bash
cd ~/nn/animals/
Darknet-Detektor -map -dont_show train Animals.data Animals.cfg
`
Zusätzliche Trainingstipps:
Verwenden Sie den Parameter --verbose für detailliertere Trainingsinformationen:
`Bash
Darknet-Detektor -map -dont_show --verbose train Animals.data Animals.cfg
`
Andere Tools und Links
DarkMark: Verwalten Sie Darknet/YOLO-Projekte, kommentieren Sie Bilder, überprüfen Sie Anmerkungen und generieren Sie Trainingsdateien.
DarkHelp: Robuste alternative CLI zu Darknet, Unterstützung für Bildkacheln, Objektverfolgung und eine C++-API für kommerzielle Anwendungen.
Darknet/YOLO-FAQ: Umfassende Ressource für Antworten auf häufige Fragen.
Stéphanes YouTube-Kanal: Tutorials und Beispielvideos zum Darknet/YOLO.
Darknet/YOLO Discord-Server: Community-Forum für Support und Diskussion.
Roadmap
Abgeschlossene Aufgaben:
Zur Verbesserung der Effizienz wurde qsort() durch std::sort() ersetzt.
Veraltete Funktionen wie check_mistakes, getchar() und system() entfernt.
Konvertierte Darknet zur Verwendung des C++-Compilers (g++ unter Linux, VisualStudio unter Windows).
Probleme beim Windows-Build behoben.
Python-Unterstützung wiederhergestellt.
Erstellte die Darknet-Bibliothek.
Vorhersagebezeichnungen (Alphabetcode) wieder aktiviert.
CUDA/GPU, CUDNN und CUDNN-Halbunterstützung wurden wieder aktiviert.
Die hartcodierte CUDA-Architektur wurde entfernt.
Verbesserte CUDA-Versionsinformationen.
AVX-Unterstützung 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-Abhängigkeit entfernt.
CMakeLists.txt wurde neu geschrieben, um die neue CUDA-Erkennung zu verwenden.
Alter Alphabetcode entfernt und unnötige Bilder gelöscht.
Out-of-Source-Builds aktiviert.
Verbesserte Ausgabe der Versionsnummer.
Optimierte Trainings- und Inferenzleistung.
Gegebenenfalls wurde Pass-by-Reference implementiert.
.hpp-Dateien bereinigt.
Darknet.h neu geschrieben.
cv::Mat wurde als richtiges C++-Objekt verwendet, anstatt in void* umzuwandeln.
Inkonsistenzen bei der Verwendung der internen Bildstruktur behoben.
Build-Probleme für ARM-basierte Jetson-Geräte behoben (mit Ausnahme nicht unterstützter älterer Modelle).
Die Python-API in Version 3 wurde korrigiert.
Kurzfristige Ziele:
Ersetzen Sie printf() durch std::cout.
Untersuchen Sie die Unterstützung für ältere Zed-Kameras.
Verbessern und standardisieren Sie das Parsen der Befehlszeile.
Mittelfristige Ziele:
Entfernen Sie den gesamten char*-Code und ersetzen Sie ihn durch std::string.
Eliminieren Sie Compiler-Warnungen und stellen Sie einen konsistenten Codestil sicher.
Verbessern Sie die Verwendung von cv::Mat gegenüber der benutzerdefinierten C-Bildstruktur.
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 (z. B. mit zusätzlichen Tiefen- oder Wärmekanälen).
Laufende Codebereinigung.
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, Heatmaps und Segmentierungsunterstützung hinzu.