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.
Erfahren Sie, wie Hank.ai die Darknet/YOLO-Community stärkt!
Ankündigung von Darknet V3 „Jazz“
Besuchen Sie die Darknet/YOLO-Website
Entdecken Sie die Darknet/YOLO-FAQ
Treten Sie dem Darknet/YOLO Discord Server bei
Papiere
1. Paper YOLOv7: Link zum Paper
2. Paper Scaled-YOLOv4: Link zu Paper
3. Paper YOLOv4: Link zum Paper
4. Paper YOLOv3: Link zu Paper
Allgemeine Informationen
Das Darknet/YOLO-Framework übertrifft durchweg andere Frameworks und YOLO-Versionen in Bezug auf Geschwindigkeit und Genauigkeit.
Dieses Framework ist völlig kostenlos und Open Source. Sie können Darknet/YOLO nahtlos und ohne Lizenzgebühren in Ihre bestehenden Projekte und Produkte, auch kommerzielle, integrieren.
Darknet V3 („Jazz“), veröffentlicht im Oktober 2024, erreicht eine bemerkenswerte Leistung und führt die LEGO-Datensatzvideos mit bis zu 1000 FPS auf einer NVIDIA RTX 3090 GPU aus. Dies bedeutet, dass Darknet/YOLO jeden Videoframe, einschließlich Größenänderung und Verarbeitung, in weniger als 1 Millisekunde verarbeitet.
Treten Sie dem Darknet/YOLO Discord-Server für Support und Diskussion bei: https://discord.gg/zSq8rtW
Die CPU-Version von Darknet/YOLO läuft effizient auf verschiedenen Geräten, darunter Raspberry Pi, Cloud- und Colab-Servern, Desktops, Laptops und High-End-Trainingsgeräten. Allerdings erfordert die GPU-Version von Darknet/YOLO eine CUDA-fähige GPU von NVIDIA.
Darknet/YOLO ist mit den Betriebssystemen Linux, Windows und Mac kompatibel. Detaillierte Anleitungen finden Sie in der Bauanleitung unten.
Darknet-Version
Dem ursprünglichen Darknet-Tool, das Joseph Redmon zwischen 2013 und 2017 entwickelt hatte, fehlte eine Versionsnummer. Wir bezeichnen diese Version als 0.x.
Auch dem nachfolgenden beliebten Darknet-Repository, das von Alexey Bochkovskiy von 2017 bis 2021 gepflegt wurde, fehlte eine Versionsnummer. Wir betrachten diese Version als 1.x.
Das von Hank.ai gesponserte und von Stéphane Charette verwaltete Darknet-Repository führte ab 2023 erstmals einen Versionsbefehl ein. Von 2023 bis Ende 2024 gab es Version 2.x „OAK“ zurück.
Das Entwicklungsteam konzentrierte sich darauf, Störungen der vorhandenen Funktionalität zu minimieren und sich gleichzeitig mit der Codebasis vertraut zu machen.
Zu den wichtigsten Änderungen, die in diesem Zeitraum umgesetzt wurden, gehören:
1. Einheitlicher Build-Prozess: Neu geschriebene Build-Schritte, um den Prozess mit CMake für Windows und Linux zu optimieren.
2. C++-Konvertierung: Die Codebasis wurde konvertiert, um den C++-Compiler zu verwenden.
3. Diagrammverbesserung: Die chart.png-Visualisierung wurde während des Trainings verbessert.
4. Fehlerbehebungen und Optimierungen: Zahlreiche Fehlerbehebungen und leistungsbezogene Optimierungen wurden implementiert, die sich hauptsächlich auf die Reduzierung der Trainingszeit konzentrierten.
Der letzte Zweig dieser Codebasis ist Version 2.1 und befindet sich im v2-Zweig.
Die nächste Entwicklungsphase begann Mitte 2024 und gipfelte in der Veröffentlichung der Version 3.x „JAZZ“ im Oktober 2024. Der Versionsbefehl gibt nun 3.x zurück.
Sie können jederzeit zum vorherigen v2-Zweig zurückkehren, wenn Sie bestimmte Befehle dieser Version ausführen müssen. Bitte teilen Sie dem Entwicklungsteam mit, wenn Ihnen fehlende Befehle auffallen. Das Team wird dann prüfen, ob diese wieder hinzugefügt werden.
Wesentliche Änderungen in Version 3.x „JAZZ“:
1. Befehlsentfernung: Viele veraltete und nicht unterstützte Befehle wurden entfernt.
2. Leistungsoptimierungen: Zahlreiche Leistungsoptimierungen wurden sowohl für das Training als auch für die Inferenz angewendet.
3. API-Änderung: Die alte C-API wurde geändert. Bei Anwendungen, die die ursprüngliche Darknet-API verwenden, sind möglicherweise geringfügige Anpassungen erforderlich. https://darknetcv.ai/api/api.html
4. Neue C/C++-API: Darknet V3 führt eine neue C- und C++-API ein. https://darknetcv.ai/api/api.html
5. Erweiterter Beispielcode: Neue Anwendungen und Beispielcode sind in src-examples verfügbar. https://darknetcv.ai/api/files.html
Vortrainierte MSCOCO-Gewichte
Mehrere beliebte YOLO-Versionen wurden zur Vereinfachung des MSCOCO-Datensatzes vorab trainiert. Dieser Datensatz umfasst 80 Klassen, die in der Textdatei cfg/coco.names aufgeführt sind.
Zusätzlich zu MSCOCO stehen verschiedene einfachere Datensätze und vorab trainierte Gewichte zum Testen von Darknet/YOLO zur Verfügung, beispielsweise LEGO Gears und Rolodex. Weitere Informationen finden Sie in den Darknet/YOLO-FAQ.
Die vorab trainierten MSCOCO-Gewichte können aus verschiedenen Quellen heruntergeladen werden, einschließlich diesem Repository:
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 dienen nur zu Demonstrationszwecken. Die entsprechenden .cfg- und .names-Dateien für MSCOCO befinden sich im cfg-Verzeichnis.
Hier sind einige 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
`
Benutzer werden ermutigt, ihre eigenen Netzwerke zu trainieren. MSCOCO dient in erster Linie als Tool zur Überprüfung, ob alles korrekt funktioniert.
Gebäude
Die verschiedenen vor 2023 verwendeten Build-Methoden wurden in einer einheitlichen Lösung konsolidiert. Darknet erfordert C++17 oder eine neuere Version, OpenCV, und nutzt CMake, um die erforderlichen Projektdateien zu generieren.
Für den Aufbau von Darknet/YOLO sind keine C++-Kenntnisse erforderlich. Es ist vergleichbar mit dem Autofahren, ohne Mechaniker zu sein.
Google Colab
Die Google Colab-Anweisungen entsprechen denen für Linux. Zur Demonstration spezifischer Aufgaben, beispielsweise des Trainings eines neuen Netzwerks, stehen mehrere Jupyter-Notebooks zur Verfügung.
Erkunden Sie die Notizbücher im Unterverzeichnis „colab“ oder befolgen Sie die nachstehenden Linux-Anweisungen.
Linux CMake-Methode
Darknet-Build-Tutorial für Linux
1. Voraussetzungen: Stellen Sie sicher, dass die folgenden Pakete installiert sind:
`Bash
sudo apt-get install build-essential git libopencv-dev cmake
`
2. Darknet klonen: Das Darknet-Repository klonen:
`Bash
mkdir ~/srccd ~/src
Git-Klon https://github.com/hank-ai/darknet
CD Darknet
`
3. Build-Verzeichnis erstellen: Erstellen Sie ein Build-Verzeichnis:
`Bash
mkdir-Build
CD-Build
`
4. Mit CMake konfigurieren: Führen Sie CMake aus, um den Build zu konfigurieren:
`Bash
cmake -DCMAKEBUILDTYPE=Release ..
`
5. Erstellen: Erstellen Sie das Projekt:
`Bash
mache -j4
`
6. Paket: Erstellen Sie ein Debian-Paket:
`Bash
Paket machen
`
7. Installieren: Installieren Sie das Paket:
`Bash
sudo dpkg -i darknet-VERSION.deb
`
Optional: CUDA/cuDNN für GPU-Beschleunigung
1. CUDA installieren: Wenn Sie über eine moderne NVIDIA-GPU verfügen, können Sie CUDA zur GPU-Beschleunigung installieren. Laden Sie CUDA von https://developer.nvidia.com/cuda-downloads herunter und installieren Sie es.
2. Installieren Sie cuDNN: Laden Sie cuDNN von https://developer.nvidia.com/rdp/cudnn-download oder https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#cudnn- herunter und installieren Sie es. Paketmanager-Installationsübersicht.
3. Überprüfen Sie die CUDA-Installation: Stellen Sie sicher, dass Sie nvcc und nvidia-smi nach der Installation von CUDA ausführen können. Möglicherweise müssen Sie Ihre PATH-Variable anpassen.
4. CMake-Konfiguration (wenn CUDA nach CMake installiert wird): Wenn Sie CUDA oder CUDA+cuDNN nach der Konfiguration von CMake installieren, müssen Sie die Datei CMakeCache.txt im Darknet-Build-Verzeichnis löschen, um CMake zu zwingen, die erforderlichen Dateien erneut zu finden. Führen Sie dann CMake erneut aus und erstellen Sie Darknet neu.
Fortgeschrittene Benutzer
RPM-Paket: Um eine RPM-Installationsdatei anstelle einer DEB-Datei zu erstellen, ändern Sie die folgenden Zeilen in CM_package.cmake:
„cmake
# SET (CPACK_GENERATOR „DEB“)
SET (CPACK_GENERATOR „RPM“)
`
Distributionen wie Centos und OpenSUSE: Ändern Sie für Distributionen wie Centos und OpenSUSE die Zeilen in CM_package.cmake in:
„cmake
# SET (CPACK_GENERATOR „DEB“)
SET (CPACK_GENERATOR „RPM“)
`
Installationspaket: Um das Paket nach der Erstellung zu installieren, verwenden Sie den Paketmanager Ihrer Distribution. Verwenden Sie beispielsweise auf Debian-basierten Systemen wie Ubuntu sudo dpkg -i darknet-2.0.1-Linux.deb.
Installierte Schlüsseldateien:
/usr/bin/darknet: Die wichtigste ausführbare Darknet-Datei. Bestätigen Sie die Installation, indem Sie die Darknet-Version in der CLI ausführen.
/usr/include/darknet.h: Die Darknet-API für C-, C++- und Python-Entwickler.
/usr/include/darknet_version.h: Enthält Versionsinformationen für Entwickler.
/usr/lib/libdarknet.so: Die Bibliothek zum Verlinken für C-, C++- und Python-Entwickler.
/opt/darknet/cfg/...: Speichert alle .cfg-Vorlagen.
Windows CMake-Methode
Build-Tutorial für Windows (vorausgesetzt, es handelt sich um eine Neuinstallation von Windows 11 22H2)
1. Installationsvoraussetzungen: Installieren Sie die erforderlichen Komponenten mit Winget:
`Bash
Winget installiert Git.Git
Winget installiert Kitware.CMake
Winget installiert nsis.nsis
Winget installiert Microsoft.VisualStudio.2022.Community
`
2. Installieren Sie die Visual Studio C++-Unterstützung: Ändern Sie die Visual Studio-Installation so, dass sie C++-Unterstützung enthält:
* Ö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. Entwickler-Eingabeaufforderung: Starten Sie die „Entwickler-Eingabeaufforderung für VS 2022“ über das „Windows-Start“-Menü. Verwenden Sie für diese Schritte nicht PowerShell!
4. Installieren Sie Microsoft VCPKG: Installieren Sie VCPKG, um OpenCV zu erstellen:
`Bash
CDC:
mkdir c:src
cd c:src
Git-Klon https://github.com/microsoft/vcpkg
cd vcpkg
Bootstrap-vcpkg.bat
.vcpkg.exe integrieren installieren
.vcpkg.exe integriert Powershell
.vcpkg.exe installiere opencv[contrib,dnn,freetype,jpeg,openmp,png,webp,world]:x64-windows
`
* Seien Sie geduldig, dieser Schritt kann viel Zeit in Anspruch nehmen, da zahlreiche Komponenten heruntergeladen und erstellt werden müssen.
5. Optional: CUDA/cuDNN für GPU-Beschleunigung: Befolgen Sie die gleichen Schritte wie im Abschnitt „Linux“.
6. Darknet klonen: Das Darknet-Repository klonen:
`Bash
cd c:src
Git-Klon https://github.com/hank-ai/darknet.git
CD Darknet
mkdir-Build
CD-Build
`
7. Mit CMake konfigurieren: Konfigurieren Sie den Build mit CMake:
`Bash
cmake -DCMAKEBUILDTYPE=Release -DCMAKETOOLCHAINFILE=C:/src/vcpkg/scripts/buildsystems/vcpkg.cmake ..
`
8. Mit msbuild erstellen: Erstellen Sie das Projekt mit msbuild:
`Bash
msbuild.exe /property:Platform=x64;Configuration=Release /target:Build -maxCpuCount -verbosity:normal -detailedSummary darknet.sln
msbuild.exe /property:Platform=x64;Configuration=Release PACKAGE.vcxproj
`
Fehlerbehebung: Fehlende CUDA/cuDNN-DLLs
Wenn Fehler aufgrund fehlender CUDA- oder cuDNN-DLLs (z. B. cublas64_12.dll) auftreten, 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
`
* Denken Sie daran, den Befehl entsprechend Ihrer CUDA-Version anzupassen.
Führen Sie den Befehl msbuild.exe erneut aus, nachdem Sie die DLLs kopiert haben.
Fortgeschrittene Benutzer
Visual Studio-Lösung: CMake generiert eine Visual Studio-Lösungsdatei (Darknet.sln). Softwareentwickler, die lieber die grafische Benutzeroberfläche von Visual Studio verwenden, können das Darknet-Projekt in Visual Studio laden, anstatt die Befehlszeile zu verwenden.
Überprüfung und Installation
Überprüfung: Führen Sie den folgenden Befehl aus, um zu überprüfen, ob Darknet korrekt aufgebaut ist:
`Bash
C:srcDarknetbuildsrc-cliReleasedarknet.exe-Version
`
Installation: Führen Sie den im letzten Schritt generierten NSIS-Installationsassistenten aus, um Darknet, Bibliotheken, Include-Dateien und erforderliche DLLs korrekt zu installieren. Suchen Sie die Datei „darknet-VERSION.exe“ im Build-Verzeichnis. Beispiel: darknet-2.0.31-win64.exe.
Installierte Schlüsseldateien:
C:ProgrammeDarknetbin/darknet.exe: Die Darknet-CLI-Anwendung.
C:ProgrammeDarknet/bin: Enthält weitere Beispielanwendungen.
C:ProgrammeDarknet: Enthält erforderliche DLL-Dateien von Drittanbietern (OpenCV), Darknet-DLL-, .lib- und .h-Dateien sowie .cfg-Vorlagendateien.
Nutzung von Darknet
CLI
Die folgende Liste erhebt keinen Anspruch auf Vollständigkeit aller von Darknet unterstützten Befehle.
Erwägen Sie zusätzlich zur Darknet-CLI die DarkHelp-Projekt-CLI, die eine alternative CLI mit mehreren erweiterten Funktionen bietet, die in Darknet nicht direkt verfügbar sind. Sie können beide CLIs gleichzeitig verwenden.
Wesentliche Voraussetzungen:
Für die meisten Befehle benötigen Sie eine .weights-Datei zusammen mit den entsprechenden .names- und .cfg-Dateien.
Trainieren Sie Ihr eigenes Netzwerk (sehr empfehlenswert!) oder laden Sie ein vortrainiertes Netzwerk aus dem Internet herunter.
Beispiele für vorab trainierte Datensätze:
LEGO Gears: Objekterkennung in Bildern.
Rolodex: Texterkennung in Bildern.
MSCOCO: Standard-Objekterkennung der 80er-Klasse.
Beispielbefehle:
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-Verarbeitung:
V2:
`Bash
Darknet-Detektor-Demo Animals.data Animals.cfg Animals_best.weights -c 0
`
V3:
`Bash
darknet08display_webcam Tiere
`
7. Videoausgabe:
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. Spezifische GPU:
V2:
`Bash
Darknet-Detektor-Demo Animals.data Animals.cfg Animals_best.weights -i 1 test.mp4
`
10. Genauigkeitsbewertung:
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
`
11. Ankerberechnung:
DarkMark: Verwenden Sie DarkMark, um Anker für eine optimale Leistung neu zu berechnen.
Darknet (ältere Methode):
`Bash
Darknet-Detektor calcanchors Animals.data -numof_clusters 6 -width 320 -height 256
`
12. Ein neues Netzwerk trainieren:
DarkMark (empfohlen): Verwenden Sie DarkMark für Anmerkungen und Schulungen.
Manuelle Einrichtung:
1. Verzeichniserstellung: Erstellen Sie einen Ordner für Ihr Projekt (z. B. ~/nn/animals/).
2. Konfigurationsdatei: Kopieren Sie eine Darknet-Konfigurationsdatei als Vorlage (z. B. cfg/yolov4-tiny.cfg).
3. .names-Datei: Erstellen Sie eine .names-Textdatei, in der Ihre Klassen aufgeführt sind (z. B. ~/nn/animals/animals.names).
4. .data-Datei: Erstellen Sie eine .data-Textdatei im selben Ordner wie die Konfigurationsdatei (z. B. ~/nn/animals/animals.data).
5. Datensatzordner: Erstellen Sie einen Ordner für Ihre Bilder und Anmerkungen (z. B. ~/nn/animals/dataset).
6. TXT-Anmerkungen: Generieren Sie TXT-Dateien für jedes Bild, die Anmerkungskoordinaten enthalten. Verwenden Sie DarkMark oder andere Anmerkungstools.
7. train/valid-Dateien: Erstellen Sie die Dateien „animalstrain.txt“ und „animalsvalid.txt“, in denen Ihre Trainings- und Validierungsbilder aufgeführt sind.
8. .cfg-Datei ändern: Passen Sie die Konfigurationsdatei basierend auf Ihrem Datensatz an.
* Setze Batch=64.
* Passen Sie die Unterteilungen basierend auf Ihrem GPU-Speicher an.
Setzen Sie max_batches auf die Anzahl der Klassen von 2000.
* Stellen Sie die Schritte auf 80 % und 90 % von max_batches ein.
* Passen Sie Breite und Höhe basierend auf den Netzwerkabmessungen an.
* Setzen Sie „classes=...“ auf die Anzahl der Klassen in Ihrer .names-Datei.
Passen Sie filter=... in den [convolutional]-Abschnitten vor jedem [yolo]-Abschnitt auf (Anzahl der Klassen + 5) 3 an.
9. Training: Training starten:
`Bash
cd ~/nn/animals/
Darknet-Detektor -map -dont_show train Animals.data Animals.cfg
`
* Die besten Gewichte werden als Animals_best.weights gespeichert.
* Sehen Sie sich die Datei chart.png an, um den Trainingsfortschritt zu überwachen.
Andere Tools und Links
Wichtige Ressourcen:
DarkMark: Zum Verwalten von Darknet/YOLO-Projekten, zum Kommentieren von Bildern, zum Überprüfen von Anmerkungen und zum Generieren von Trainingsdateien.
DarkHelp: Eine robuste alternative CLI zu Darknet mit Funktionen wie Bildkacheln, Objektverfolgung in Videos und einer robusten C++-API, die für kommerzielle Anwendungen geeignet ist.
Darknet/YOLO-FAQ: Finden Sie Antworten auf häufige Fragen und Lösungen.
Stéphanes YouTube-Kanal: Entdecken Sie Tutorial- und Beispielvideos.
Darknet/YOLO Discord Server: Vernetzen Sie sich mit anderen Darknet/YOLO-Benutzern für Support und Diskussionen.
Roadmap
Letzte Aktualisierung 30.10.2024:
Abgeschlossene Aufgaben:
1. qsort() in relevanten Trainingsabschnitten durch std::sort() ersetzt.
2. check_mistakes, getchar() und system() entfernt.
3. Konvertierung von Darknet zur Verwendung des C++-Compilers (g++ unter Linux, VisualStudio unter Windows).
4. Windows-Build korrigiert.
5. Python-Unterstützung behoben.
6. Erstellte Darknet-Bibliothek.
7. Beschriftungen für Vorhersagen wieder aktiviert („Alphabet“-Code).
8. CUDA/GPU-Code wieder aktiviert.
9. CUDNN erneut aktiviert.
10. CUDNN-Hälfte wieder aktiviert.
11. Die hartcodierte CUDA-Architektur wurde entfernt.
12. Verbesserte CUDA-Versionsinformationen.
13. AVX erneut aktiviert.
14. Alte Lösungen und Makefile entfernt.
15. OpenCV nicht optional gemacht.
16. Abhängigkeit von der alten pthread-Bibliothek entfernt.
17. STB entfernt.
18. CMakeLists.txt umgeschrieben, um die neue CUDA-Erkennung zu verwenden.
19. Alter „Alphabet“-Code entfernt und Bilder in Daten/Beschriftungen gelöscht.
20. Out-of-Source-Build aktiviert.
21. Verbesserte Ausgabe der Versionsnummer.
22. Leistungsoptimierungen im Zusammenhang mit dem Training (laufend).
23. Leistungsoptimierungen im Zusammenhang mit Inferenz (laufend).
24. Gegebenenfalls Pass-by-Reference implementiert.
25. .hpp-Dateien bereinigt.
26. Darknet.h neu geschrieben.
27. Die Umwandlung von cv::Mat in void* wurde eliminiert und es wurde als richtiges C++-Objekt verwendet.
28. Verbesserte Konsistenz bei der Verwendung der internen Bildstruktur.
29. Build für ARM-basierte Jetson-Geräte korrigiert.
30. Python-API in V3 korrigiert.
Kurzfristige Ziele:
1. Ersetzen Sie printf() durch std::cout (in Bearbeitung).
2. Untersuchen Sie die Unterstützung alter Zed-Kameras.
3. Verbesserung und Standardisierung der Befehlszeilenanalyse (in Bearbeitung).
Mittelfristige Ziele:
1. Entfernen Sie den gesamten char*-Code und ersetzen Sie ihn durch std::string.
2. Beseitigen Sie Compiler-Warnungen (in Bearbeitung).
3. Verbessern Sie die Verwendung von cv::Mat anstelle der benutzerdefinierten Bildstruktur in C (in Bearbeitung).
4. Ersetzen Sie die alte Listenfunktionalität durch std::vector oder std::list.
5. Unterstützung für 1-Kanal-Graustufenbilder behoben.
6. Fügen Sie Unterstützung für N-Kanal-Bilder hinzu, bei denen N > 3 ist (z. B. Bilder mit zusätzlicher Tiefe oder Wärmekanäle).
7. Laufende Codebereinigung (in Bearbeitung).
Langfristige Ziele:
1. Beheben Sie CUDA/CUDNN-Probleme auf allen GPUs.
2. CUDA+cuDNN-Code neu schreiben.
3. Entdecken Sie die Unterstützung für Nicht-NVIDIA-GPUs.
4. Implementieren Sie gedrehte Begrenzungsrahmen oder „Winkel“-Unterstützung.
5. Unterstützung für Schlüsselpunkte/Skelette.
6. Unterstützung für Heatmaps (in Bearbeitung).
7. Segmentierung.