HmacManager
Zusammenfassung
Der Editor von Downcodes bringt Ihnen HmacManager, ein HMAC-Authentifizierungstool für ASP.NET Core-Anwendungen, das eine nahtlose Integration und starke Sicherheit für Ihre Anwendungen bietet.
Merkmale
HMAC-Authentifizierung: HmacManager bietet HMAC-Authentifizierung, sodass Sie Ihrer ASP.NET Core-API eine sichere Authentifizierungsebene hinzufügen können.
Einfache Konfiguration: Mit einfachen Konfigurationsoptionen können Sie die HMAC-Authentifizierung schnell in Ihre Anwendungen integrieren.
Anpassungsoptionen: HmacManager bietet Anpassungsoptionen, sodass Sie es entsprechend Ihren Anforderungen konfigurieren können.
Erhöhte Sicherheit: Die HMAC-Authentifizierung erhöht die Sicherheit Ihrer API, indem sie den HMAC-Hashing-Algorithmus zur Authentifizierung von Anforderungen verwendet.
Installation
HmacManager ist auf NuGet verfügbar.
`Bash
dotnet fügt das Paket HmacManager hinzu
`
Ressourcen
Weiterführende Literatur: Offizielle Dokumentation
Beispielcode: GitHub-Repository
Darknet Object Detection Framework und YOLO
!darknet- und hank.ai-Logos
Darknet ist ein Open-Source-Framework für neuronale Netzwerke, das in C, C++ und CUDA geschrieben ist.
YOLO (You Only Look Once) ist ein fortschrittliches Echtzeit-Zielerkennungssystem, das im Darknet-Framework läuft.
1. Papiere
YOLOv7: Papierlink
Scaled-YOLOv4: Papierlink
YOLOv4: Papierlink
YOLOv3: Papierlink
2. Allgemeine Informationen
Das Darknet/YOLO-Framework übertrifft weiterhin andere Frameworks und YOLO-Versionen in Bezug auf Geschwindigkeit und Genauigkeit.
Das Framework ist völlig kostenlos und Open Source. Sie können Darknet/YOLO ohne Lizenz oder Gebühren in bestehende Projekte und Produkte integrieren, auch in kommerzielle Produkte.
Darknet V3 („Jazz“), veröffentlicht im Oktober 2024, kann LEGO-Datensatzvideos bei Verwendung einer NVIDIA RTX 3090-GPU präzise ausführen, was bedeutet, dass jedes Videobild höchstens 1 Millisekunde benötigt, um von Darknet gelesen, in der Größe geändert und verarbeitet zu werden /YOLO in Sekunden.
Treten Sie dem Darknet/YOLO Discord-Server bei: https://discord.gg/zSq8rtW
Die CPU-Version von Darknet/YOLO kann auf einfachen Geräten wie Raspberry Pi, Cloud-Servern, Colab-Servern, Desktops, Laptops und High-End-Schulungsgeräten ausgeführt werden. Die GPU-Version von Darknet/YOLO erfordert eine GPU mit NVIDIA CUDA-Unterstützung.
Darknet/YOLO funktioniert bekanntermaßen gut unter Linux, Windows und Mac. Siehe Bauanleitung unten.
3. Darknet-Version
Version 0.x: Das ursprüngliche Darknet-Tool, das 2013–2017 von Joseph Redmon geschrieben wurde, hat keine Versionsnummer.
Version 1.x: Das nächste beliebte Darknet-Repository, das zwischen 2017 und 2021 von Alexey Bochkovskiy verwaltet wird, hat ebenfalls keine Versionsnummer.
Version 2.x („OAK“): Das von Hank.ai gesponserte und ab 2023 von Stéphane Charette gepflegte Darknet-Repository verfügt als erstes über einen Versionsbefehl. Von 2023 bis Ende 2024 erfolgt die Rückkehr zur Version 2.x „OAK“.
Version 3.x („JAZZ“): Nächste Entwicklungsphase ab Mitte 2024, Veröffentlichung im Oktober 2024. Der Versionsbefehl gibt jetzt 3.x „JAZZ“ zurück.
4. MSCOCO-Gewichte vor dem Training
Der Einfachheit halber sind mehrere beliebte Versionen von YOLO auf dem MSCOCO-Datensatz vorab trainiert. Dieser Datensatz enthält 80 Kategorien und kann in der Textdatei cfg/coco.names eingesehen werden.
Es stehen 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.
Vorab trainierte MSCOCO-Gewichte können von verschiedenen Orten oder aus diesem Repository heruntergeladen werden:
* 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 dienen nur zu Demonstrationszwecken. Die entsprechenden .cfg- und .names-Dateien befinden sich im cfg-Verzeichnis. Beispielbefehl:
`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 man sein eigenes Netzwerk trainieren sollte. MSCOCO wird oft verwendet, um zu bestätigen, dass alles in Ordnung ist.
5. Bauen
Verschiedene Bauweisen aus der Vergangenheit (vor 2023) wurden zu einer einheitlichen Lösung zusammengeführt. Darknet erfordert C++17 oder höher, OpenCV und die Verwendung von CMake zum Generieren der erforderlichen 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.
5.1 Google Colab
Die Anweisungen für Google Colab sind dieselben wie für Linux. Mehrere Jupyter-Notebooks zeigen, wie bestimmte Aufgaben ausgeführt werden, beispielsweise das Training eines neuen Netzwerks.
Sehen Sie sich das Notizbuch im Unterverzeichnis colab an oder befolgen Sie die nachstehenden Linux-Anweisungen.
5.2 Linux CMake-Methode
Darknet-Build-Tutorial unter Linux
`Bash
sudo apt-get install build-essential git libopencv-dev cmake mkdir ~/srccd ~/src git clone https://github.com/hank-ai/darknetcd darknet mkdir buildcd build cmake -DCMAKEBUILDTYPE=Release .. make -j4 Paket sudo dpkg -i darknet-VERSION.deb
`
5.3 Windows CMake-Methode
Diese Anweisungen gehen von einer Neuinstallation von Windows 11 22H2 aus.
`Bash
Winget-Installation Git.Git Winget-Installation Kitware.CMake Winget-Installation nsis.nsis Winget-Installation Microsoft.VisualStudio.2022.Community
`
Anschließend müssen wir die Visual Studio-Installation so ändern, dass sie Unterstützung für C++-Anwendungen enthält:
* Klicken Sie auf das Windows-Startmenü und führen Sie den Visual Studio Installer aus.
* Klicken Sie auf „Bearbeiten“.
* Wählen Sie „Desktop-Entwicklung mit C++“.
* Klicken Sie unten rechts auf „Bearbeiten“ und dann auf „Ja“.
Nachdem alles heruntergeladen und installiert wurde, klicken Sie erneut auf das „Windows-Start“-Menü und wählen Sie „Entwickler-Eingabeaufforderung für VS 2022“. Verwenden Sie PowerShell nicht, um diese Schritte auszuführen, da sonst Probleme auftreten!
Fortgeschrittene Benutzer:
* Zusätzlich zur Ausführung der Entwickler-Eingabeaufforderung können Sie auch eine normale Eingabeaufforderung oder SSH zum Gerät verwenden und „ProgrammeMicrosoft Visual Studio2022CommunityCommon7ToolsVsDevCmd.bat“ manuell ausführen.
Nachdem Sie die obigen Anweisungen befolgt und die Entwickler-Eingabeaufforderung (nicht PowerShell!) ausgeführt haben, führen Sie den folgenden Befehl aus, um Microsoft VCPKG zu installieren, das dann zum Erstellen von OpenCV verwendet wird:
`Bash
cd c:mkdir c:srccd c:src git clone https://github.com/microsoft/vcpkgcd vcpkg bootstrap-vcpkg.bat .vcpkg.exe integrieren install .vcpkg.exe integrieren powershell.vcpkg.exe installieren opencv[contrib, dnn,freetype,jpeg,openmp,png,webp,world]:x64-windows
`
Bitte haben Sie etwas Geduld mit diesem letzten Schritt, da die Ausführung lange dauert. Es erfordert das Herunterladen und Erstellen einer Menge Dinge.
Fortgeschrittene Benutzer:
* Bitte 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.
Optional: Wenn Sie über eine moderne NVIDIA-GPU verfügen, können Sie zu diesem Zeitpunkt 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 dem 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, benötigen Sie CUDA oder CUDA+cuDNN.
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 zum Herunterladen und cuDNN 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 die PATH-Variable ändern.
Nachdem Sie cuDNN heruntergeladen haben, entpacken Sie es 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.
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.
Nachdem alle vorherigen Schritte erfolgreich abgeschlossen wurden, müssen Sie Darknet klonen und erstellen. In diesem Schritt müssen wir CMake auch mitteilen, wo sich vcpkg befindet, damit es OpenCV und andere Abhängigkeiten finden kann:
`Bash
cd c:src git clone https://github.com/hank-ai/darknet.gitcd darknetmkdir buildcd 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 Fehler bezüglich einer fehlenden CUDA- oder cuDNN-DLL auftreten (z. B. cublas64_12.dll), kopieren Sie die CUDA-DLL-Datei manuell in dasselbe Ausgabeverzeichnis wie Darknet.exe. Zum Beispiel:
`Bash
kopieren Sie „C:ProgrammeNVIDIA GPU Computing ToolkitCUDAv12.2bin*.dll“ src-cliRelease
`
(Hier ist ein Beispiel! Überprüfen Sie, welche Version Sie verwenden, und führen Sie den entsprechenden Befehl für die von Ihnen installierte Version aus.)
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:
* Bitte beachten Sie, dass die Ausgabe des cmake-Befehls die normale Visual Studio-Lösungsdatei Darknet.sln ist. Wenn Sie ein Softwareentwickler sind, der zum Erstellen von Projekten häufig die Visual Studio-GUI anstelle von msbuild.exe verwendet, können Sie die Befehlszeile ignorieren und das Darknet-Projekt in Visual Studio laden.
Sie sollten jetzt diese Datei zur Ausführung bereit haben: C:srcDarknetbuildsrc-cliReleasedarknet.exe. Führen Sie zum Testen den folgenden Befehl aus: C:srcDarknetbuildsrc-cliReleasedarknet.exe-Version.
Um Darknet, Bibliotheken, Include-Dateien und erforderliche DLLs ordnungsgemäß zu installieren, führen Sie den im vorherigen Schritt erstellten NSIS-Installationsassistenten aus. 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:
* Erstellen Sie ein Verzeichnis mit dem Namen Darknet, zum Beispiel C:ProgrammeDarknet.
* Installieren Sie die CLI-Anwendung, darknet.exe und andere Beispielanwendungen.
* Installieren Sie die erforderlichen DLL-Dateien von Drittanbietern, z. B. die von OpenCV.
* Installieren Sie die erforderlichen Darknet-Dateien .dll, .lib und .h, um Darknet.dll aus anderen Anwendungen zu verwenden.
* Installieren Sie die .cfg-Vorlagendatei.
Jetzt sind Sie fertig! Nachdem der Installationsassistent abgeschlossen ist, wird Darknet in C:ProgrammeDarknet installiert. Führen Sie zum Testen den folgenden Befehl aus: C:ProgrammeDarknetbindarknet.exe-Version.
Wenn Sie C:/Program Files/darknet/bin/darknet.exe nicht haben, haben Sie es nicht installiert, sondern nur erstellt! Stellen Sie sicher, dass Sie im vorherigen Schritt alle Bereiche des NSIS-Installationsassistenten durchsuchen.
6. Nutzen Sie Darknet
6.1 CLI
Im Folgenden finden Sie keine vollständige Liste aller von Darknet unterstützten Befehle.
Beachten Sie neben der Darknet-CLI auch die DarkHelp-Projekt-CLI, die eine Alternative zur Darknet/YOLO-CLI bietet. Die DarkHelp-CLI verfügt außerdem über einige Verbesserungen, die es im Darknet nicht gibt. Sie können die Darknet-CLI und die DarkHelp-CLI zusammen verwenden, sie schließen sich nicht gegenseitig aus.
Für die meisten der unten gezeigten Befehle benötigen Sie eine .weights-Datei mit den entsprechenden .names- und .cfg-Dateien. Sie können das Netzwerk selbst trainieren (sehr empfehlenswert!), oder Sie können neuronale Netzwerke herunterladen, die von anderen trainiert wurden und im Internet frei verfügbar sind. Beispiele für Datensätze vor dem Training sind:
* LEGO Gears (Objekte in Bildern finden)
* Rolodex (Text im Bild finden)
* MSCOCO (Standard-Zielerkennung der Kategorie 80)
Zu den auszuführenden Befehlen gehören:
* Listen Sie einige mögliche Befehle und Optionen auf, die ausgeführt werden können:
`Bash
Darknet-Hilfe
`
* Version prüfen:
`Bash
Darknet-Version
`
* Verwenden Sie Bilder zur Vorhersage:
`Bash
V2: Darknet-Detektortest car.data car.cfg car_best.weights image1.jpg
V3: darknet02displayannotatedimages cars.cfg image1.jpg
DarkHelp: DarkHelp cars.cfg cars_best.weights image1.jpg
`
* Ausgabekoordinaten:
`Bash
V2: Darknet-Detektortest Animals.data Animals.cfg Animalsbest.weights -extoutput Dog.jpg
V3: Darknet01inference_images Tiere Hund.jpg
DarkHelp: DarkHelp --json Animals.cfg Animals.names Animals_best.weights Hund.jpg
`
*Video verwenden:
`Bash
V2: Darknet-Detektor-Demo Animals.data Animals.cfg Animalsbest.weights -extoutput test.mp4
V3: darknet03display_videos Animals.cfg test.mp4
DarkHelp: DarkHelp Animals.cfg Animals.Names Animals_Best.Weights Test.mp4
`
* Ablesen von der Webcam:
`Bash
V2: Darknet-Detektor-Demo Animals.data Animals.cfg Animals_best.weights -c 0
V3: darknet08display_webcam Tiere
`
* Ergebnisse als Video speichern:
`Bash
V2: Darknet-Detektor-Demo Animals.data Animals.cfg Animalsbest.weights test.mp4 -outfilename res.avi
V3: Darknet05processvideosmultithreaded Animals.cfg Animals.Names Animals_Best.Weights Test.mp4
DarkHelp: DarkHelp Animals.cfg Animals.Names Animals_Best.Weights Test.mp4
`
*JSON:
`Bash
V2: Darknet-Detektor-Demo Animals.data Animals.cfg Animalsbest.weights test50.mp4 -jsonport 8070 -mjpegport 8090 -extoutput
V3: darknet06imagestojson Animals image1.jpg
DarkHelp: DarkHelp --json Animals.names Animals.cfg Animals_best.weights image1.jpg
`
* Auf bestimmten GPUs ausführen:
`Bash
V2: Darknet-Detektor-Demo Animals.data Animals.cfg Animals_best.weights -i 1 test.mp4
`
* Überprüfen Sie die Genauigkeit des neuronalen Netzwerks:
`Bash
Darknet-Detektorkarte Driving.data Driving.cfg Driving_Best.weights ... 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. 53 93 0,8850 0,11 50 0,8377 0,8513 0,9046 0.0954 2 bicycle 89.0912 570 124 104 3548 0.9475 0.0525 0.8457 0.8213 0.9715 0.0285 3 person 76.7937 7072 1727 2574 27523 0.8894 0.1106 0.7332 0.8037 0.9145 0.0855 4 many vehicles 64.3089 1068 509 733 11288 0.9087 0.0913 0.5930 0.6772 0.9390 0.0610 5 green light 86.8118 1969 239 5 10 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 Licht 3449 2 17 451 4643 0,9237 0,0763 0,8844 0,9408 0,9115 0,0885
`
* Überprüfen Sie die Genauigkeit mAP@IoU=75:
`Bash
Darknet-Detektorkarte Animals.data Animals.cfg Animalsbest.weights -iouthresh 0,75
`
* Die Neuberechnung von Ankerpunkten erfolgt am besten in DarkMark, da es 100 Mal hintereinander ausgeführt wird und aus allen berechneten Ankerpunkten den besten Ankerpunkt auswählt. Wenn Sie jedoch eine ältere Version im Darknet ausführen möchten:
`Bash
Darknet-Detektor calcanchors Animals.data -numof_clusters 6 -width 320 -height 256
`
* Neues Netzwerk trainieren:
`Bash
cd ~/nn/animals/ Darknet Detector -map -dont_show train Animals.data Animals.cfg
`
6.2 Schulung
Schnelle Links zu relevanten Teilen der Darknet/YOLO-FAQ:
* Wie soll ich meine Dateien und Verzeichnisse einrichten?
* Welches Profil soll ich verwenden?
* Welchen Befehl sollte ich beim Training meines eigenen Netzwerks verwenden?
Erstellen Sie alle erforderlichen Darknet-Dateien mit DarkMark. Dies ist die einfachste Möglichkeit zum Kommentieren und Trainieren. Dies ist definitiv die empfohlene Methode zum Trainieren neuer neuronaler Netze.
Wenn Sie die verschiedenen Dateien manuell einrichten möchten, um ein benutzerdefiniertes Netzwerk zu trainieren:
* Erstellen Sie einen neuen Ordner zum Speichern der Dateien. In diesem Beispiel wird ein neuronales Netzwerk zur Erkennung von Tieren erstellt, daher wird das folgende Verzeichnis erstellt: ~/nn/animals/.
* Kopieren Sie eine der Darknet-Konfigurationsdateien, die Sie als Vorlage verwenden möchten. Siehe beispielsweise cfg/yolov4-tiny.cfg. Platzieren Sie es in dem von Ihnen erstellten Ordner. Für dieses Beispiel haben wir jetzt ~/nn/animals/animals.cfg.
* Erstellen Sie eine Textdatei „animals.names“ im selben Ordner, in dem Sie die Konfigurationsdatei abgelegt haben. Für dieses Beispiel haben wir jetzt ~/nn/animals/animals.names.
* Verwenden Sie einen Texteditor, um die Datei Animals.names zu bearbeiten. Listen Sie die Kategorien auf, die Sie verwenden möchten. Sie benötigen genau einen Eintrag pro Zeile, keine Leerzeilen und keine Kommentare. In diesem Beispiel enthält die .names-Datei genau 4 Zeilen:
`
Hund
Katze
Vogel
Pferd
`
* Erstellen Sie eine Animals.data-Textdatei im selben Ordner. 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
`
* Erstellen Sie einen Ordner zum Speichern Ihrer 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 von TXT-Kommentardateien ist sehr spezifisch. Sie können diese Dateien nicht manuell erstellen, da jede Anmerkung die genauen Koordinaten der 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.
* Erstellen Sie „train“- und „valid“-Textdateien mit den Namen in der .data-Datei. Diese beiden Textdateien müssen alle Bilder separat auflisten, die Darknet zum Trainieren und Validieren bei der Berechnung von mAP% verwenden muss. Genau ein Bild pro Zeile. Pfade und Dateinamen können relativ oder absolut sein.
* Verwenden Sie einen Texteditor, um Ihre .cfg-Datei zu ändern.
* Stellen Sie sicher, dass Batch=64 ist.
* Auf Unterteilungen achten. Abhängig von der Netzwerkgröße und der auf der GPU verfügbaren Speichermenge müssen Sie möglicherweise die Unterteilungen erhöhen. Der beste Wert ist 1, also beginnen Sie damit. Wenn Sie 1 nicht verwenden können, lesen Sie bitte die Darknet/YOLO-FAQ.
Beachten Sie, dass maxbatches=…. Ein guter Anfangswert ist die 2000-fache Anzahl der Kategorien. Für dieses Beispiel haben wir 4 Tiere, also 4 2000 = 8000. Das bedeutet, dass wir maxbatches=8000 verwenden werden.
* Schritte beachten=.... Dies sollte auf 80 % und 90 % der maxbatches eingestellt werden. Für dieses Beispiel verwenden wir „steps=6400,7200“, da „maxbatches“ auf 8000 festgelegt ist.
* Beachten Sie width=... und height=.... Dies sind Netzwerkdimensionen. Die Darknet/YOLO-FAQ erklärt, wie man die optimale Größe berechnet.
* Suchen Sie nach allen Instanzen der Zeilen „classes=...“ und ändern Sie sie mit der Anzahl der Klassen in der .names-Datei. Für dieses Beispiel verwenden wir „classes=4“.
Sucht nach Instanzen aller Filter=...-Zeilen im Abschnitt [convolutional] vor jedem Abschnitt [yolo]. Der zu verwendende Wert ist (Anzahl der Kategorien + 5) 3. Das bedeutet, dass für dieses Beispiel (4 + 5) * 3 = 27 ist. Daher werden wir in der entsprechenden Zeile filter=27 verwenden.
* Beginnen Sie mit dem Training! Führen Sie den folgenden Befehl aus:
`Bash
cd ~/nn/animals/ Darknet Detector -map -dont_show train Animals.data Animals.cfg
`
* Bitte warten. Die besten Gewichte werden als Animals_best.weights gespeichert. Und Sie können den Trainingsfortschritt verfolgen, indem Sie die Datei chart.png ansehen. 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
`
7. Andere Tools und Links
Informationen zum Verwalten Ihres Darknet/YOLO-Projekts, zum Kommentieren von Bildern, zum Validieren Ihrer Anmerkungen und zum Generieren der erforderlichen Dateien für das Training mit Darknet finden Sie unter DarkMark.
Eine leistungsstarke Alternative zur Darknet-CLI, um Bildkacheln und Objektverfolgung in Videos zu verwenden oder eine leistungsstarke C++-API zu erhalten, die problemlos in kommerziellen Anwendungen verwendet werden kann, finden Sie unter DarkHelp.
Bitte lesen Sie die Darknet/YOLO-FAQ, um Hilfe bei der Beantwortung Ihrer Fragen zu erhalten.
Schauen Sie sich die vielen Tutorials und Beispielvideos auf Stéphanes YouTube-Kanal an.
Wenn Sie Supportfragen haben oder mit anderen Darknet/YOLO-Benutzern chatten möchten, treten Sie bitte dem Darknet/YOLO Discord-Server bei.
8. Roadmap
Zuletzt aktualisiert am 30.10.2024:
* Vollendet
* Während des Trainings wurde qsort() durch std::sort() ersetzt (ein anderer obskurer Code existiert noch)
* Check_mistakes, getchar() und system() entfernen
* Konvertieren Sie Darknet, um einen C++-Compiler zu verwenden (g++ unter Linux, VisualStudio unter Windows)
* Windows-Build reparieren
* Korrigieren Sie die Python-Unterstützung
* Erstellen Sie eine Darknet-Bibliothek
* Beschriftungen in Vorhersagen wieder aktivieren („Alphabet“-Code)
* CUDA/GPU-Code erneut aktivieren
* CUDNN erneut aktivieren
* CUDNN-Hälfte erneut aktivieren
* Codieren Sie die CUDA-Architektur nicht fest
* Bessere CUDA-Versionsinformationen
* AVX erneut aktivieren
* Entfernen Sie die alte Lösung und das Makefile
* Machen Sie OpenCV nicht optional
* Abhängigkeit von der alten pthread-Bibliothek entfernen
* STB löschen
* Schreiben Sie CMakeLists.txt neu, um die neue CUDA-Erkennung zu verwenden
* Alter „Alphabet“-Code entfernt und über 700 Bilder in Daten/Beschriftungen gelöscht
*Erstellen Sie außerhalb des Quellcodes
* Hat eine bessere Ausgabe der Versionsnummer
* Leistungsoptimierung im Zusammenhang mit dem Training (laufende Aufgabe)
* Leistungsoptimierung im Zusammenhang mit Inferenz (laufende Aufgabe)
* Verwenden Sie nach Möglichkeit Pass-by-Value-Referenzen
* Bereinigen Sie .hpp-Dateien
* Darknet.h neu schreiben
Wandeln Sie cv::Mat nicht in void um, sondern verwenden Sie es als richtiges C++-Objekt
* Korrigieren oder behalten Sie die konsistente Verwendung interner Bildstrukturen bei
* Korrigieren Sie den Build des Jetson-Geräts mit ARM-Architektur
*Es ist unwahrscheinlich, dass Original-Jetson-Geräte repariert werden, da sie von NVIDIA nicht mehr unterstützt werden (kein C++17-Compiler).
* Neues Jetson Orin-Gerät jetzt in Betrieb
* Korrigieren Sie die Python-API in V3
* Benötigen Sie eine bessere Python-Unterstützung (möchten Python-Entwickler helfen?)
* Kurzfristige Ziele
* Ersetzen Sie printf() durch std::cout (in Arbeit)
* Schauen Sie sich die Unterstützung für alte Zed-Kameras an
* Bessere, konsistentere Befehlszeilenanalyse (in Arbeit)
* Mittelfristige Ziele
Entfernen Sie alle Zeichencodes und ersetzen Sie sie durch std::string
* Warnungen nicht ausblenden und Compiler-Warnungen bereinigen (in Arbeit)
* Bessere Verwendung von cv::Mat anstelle von benutzerdefinierten Bildstrukturen in C (in Arbeit)
* Ersetzen Sie die alte Listenfunktionalität durch std::vector oder std::list
* Die Unterstützung für 1-Kanal-Graustufenbilder wurde behoben
* Unterstützung für N-Kanal-Bilder hinzufügen, bei denen N > 3 (z. B. Bilder mit zusätzlicher Tiefe oder Hot-Kanäle)
* Kontinuierliche Codebereinigung (in Bearbeitung)
* Langfristige Ziele
* Beheben Sie CUDA/CUDNN-Probleme auf allen GPUs
* CUDA+cuDNN-Code neu schreiben
* Erwägen Sie die Hinzufügung von Unterstützung für Nicht-NVIDIA-GPUs
* Gedrehter Begrenzungsrahmen oder irgendeine Form von „Winkel“-Unterstützung
*Schlüsselpunkte/Skelett
* Heatmap (in Arbeit)
* Teilt