Gatling
Was ist Gatling?
Gatling ist ein leistungsstarkes Open-Source-Lasttest-Tool, das auf Leistung und Zuverlässigkeit ausgelegt ist. Es bietet eine umfassende Lösung zur Simulation des realen Benutzerverhaltens und zur Messung der Leistung Ihrer Anwendungen unter Stress.
Motivation
Gatling ermöglicht Ihnen:
1. Verstehen Sie die Grenzen Ihrer Anwendung: Identifizieren Sie Engpässe und Leistungsprobleme, bevor sie sich auf Ihre Benutzer auswirken.
2. Verbessern Sie das Benutzererlebnis: Stellen Sie sicher, dass Ihre Anwendung den Spitzenverkehr bewältigen kann und allen Benutzern eine reibungslose Leistung bietet.
3. Gewinnen Sie wertvolle Erkenntnisse: Analysieren Sie Testergebnisse, um die Leistung, Skalierbarkeit und Zuverlässigkeit Ihrer Anwendung zu optimieren.
Fragen, Hilfe?
Wenn Sie Hilfe und Unterstützung benötigen, können Sie:
1. Konsultieren Sie die offizielle Dokumentation: Entdecken Sie detaillierte Tutorials, Anleitungen und API-Referenzen.
2. Treten Sie dem Gatling Community Forum bei: Vernetzen Sie sich mit anderen Benutzern, tauschen Sie Erfahrungen aus und holen Sie sich Rat.
3. Probleme melden: Wenn Sie auf einen Fehler stoßen, melden Sie ein Problem im offiziellen Gatling GitHub-Repository.
Partner
Gatling arbeitet mit verschiedenen Partnern zusammen, um umfassende Lasttestlösungen bereitzustellen. Entdecken Sie das Partner-Ökosystem für spezialisierte Integrationen und Support-Services.
Darknet Object Detection Framework und YOLO
Darknet ist ein Open-Source-Framework für neuronale Netzwerke, das in C, C++ und CUDA geschrieben wurde und für seine Geschwindigkeit und Effizienz bekannt ist.
YOLO (You Only Look Once) ist ein hochmodernes Echtzeit-Objekterkennungssystem, das sich nahtlos in das Darknet-Framework integriert.
Entdecken Sie das Darknet/YOLO-Ökosystem:
1. Hank.ais Beitrag: Entdecken Sie, wie Hank.ai aktiv zur Darknet/YOLO-Community beiträgt.
2. Offizielle Website: Greifen Sie auf die neuesten Informationen, Ressourcen und Neuigkeiten auf der Darknet/YOLO-Website zu.
3. Umfassende FAQ: Finden Sie Antworten auf häufig gestellte Fragen zu Darknet/YOLO.
4. Treten Sie dem Discord-Server bei: Vernetzen Sie sich mit anderen Darknet-/YOLO-Enthusiasten, diskutieren Sie Ideen und erhalten Sie Unterstützung.
Papiere
1. YOLOv7: Entdecken Sie die neuesten Fortschritte in YOLOv7.
2. Scaled-YOLOv4: Tauchen Sie ein in die Scaled-YOLOv4-Architektur und ihre Leistungsverbesserungen.
3. YOLOv4: Verstehen Sie die wichtigsten Funktionen und Innovationen von YOLOv4.
4. YOLOv3: Erfahren Sie mehr über die Ursprünge von YOLO und die Grundprinzipien von YOLOv3.
Allgemeine Informationen
Das Darknet/YOLO-Framework übertrifft durchweg andere Frameworks und YOLO-Versionen in Bezug auf Geschwindigkeit und Genauigkeit.
Es ist völlig kostenlos und Open Source, sodass Sie es ohne Lizenzbeschränkungen in Ihre Projekte und Produkte integrieren können.
Darknet V3 „Jazz“, veröffentlicht im Oktober 2024, erreicht eine bemerkenswerte Leistung und verarbeitet LEGO-Datensatzvideos mit bis zu 1000 FPS unter Verwendung einer NVIDIA RTX 3090 GPU.
Darknet-Version
1. Version 0.x: Das ursprüngliche Darknet-Tool, das von Joseph Redmon von 2013 bis 2017 entwickelt wurde.
2. Version 1.x: Das beliebte Darknet-Repository, das zwischen 2017 und 2021 von Alexey Bochkovskiy verwaltet wird.
3. Version 2.x „OAK“: Das von Hank.ai gesponserte und ab 2023 von Stéphane Charette gepflegte Darknet-Repository. Es führte die Versionsnummerierung ein und brachte bedeutende Verbesserungen mit sich, darunter:
– Einheitlicher Build-Prozess mit CMake für Windows und Linux.
- Codebasiskonvertierung zum C++-Compiler.
- Verbesserte chart.png-Visualisierung während des Trainings.
- Fehlerbehebungen und Leistungsoptimierungen.
4. Version 2.1: Der letzte Zweig von Version 2.x, verfügbar im v2-Zweig.
5. Version 3.x „JAZZ“: Die neueste Version, die im Oktober 2024 veröffentlicht wurde, mit:
- Alte und nicht verwaltete Befehle entfernt.
- Umfangreiche Leistungsoptimierungen sowohl für Training als auch für Inferenz.
- Modifizierte Legacy-C-API.
- Neue Darknet V3 C- und C++-API.
- Erweiterter Beispielcode und Anwendungen in src-examples.
Vortrainierte MSCOCO-Gewichte
Mehrere beliebte YOLO-Versionen sind auf dem MSCOCO-Datensatz vorab trainiert und stellen 80 Objektklassen bereit, die in der Datei cfg/coco.names aufgeführt sind.
Zum Testen stehen weitere Datensätze und vorab trainierte Gewichte zur Verfügung, darunter:
LEGO-Zahnräder
Rolodex
Laden Sie die vorab trainierten MSCOCO-Gewichte von verschiedenen Orten herunter, einschließlich dieses Repositorys:
| Version | Winzig | Voll |
|---|---|---|
| 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 |
Beispiele für die Verwendung vorab trainierter MSCOCO-Gewichte:
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 Benutzer dazu ermutigt werden, ihre eigenen Netzwerke zu trainieren, und dass MSCOCO in erster Linie zum Testen dient.
Gebäude
Darknet erfordert C++17 oder neuer, OpenCV und verwendet CMake für die Build-Automatisierung.
Wichtiger Hinweis: Diese Anweisungen werden für den Aufbau von Darknet nach August 2023 aktualisiert. Wenn beim Befolgen älterer Tutorials Probleme auftreten, finden Sie in dieser README-Datei die neuesten Erstellungsschritte.
Google Colab
Befolgen Sie die nachstehenden Linux-Anweisungen. Durchsuchen Sie Jupyter-Notebooks im Unterverzeichnis „colab“ für bestimmte Aufgaben wie Schulungen.
Linux CMake-Methode
1. Installieren Sie die erforderlichen Abhängigkeiten:
- sudo apt-get install build-essential git libopencv-dev cmake
2. Klonen Sie das Darknet-Repository:
- mkdir ~/srccd ~/src git clone https://github.com/hank-ai/darknet
3. Erstellen Sie ein Build-Verzeichnis:
- cd darknet mkdir buildcd build
4. Darknet konfigurieren und aufbauen:
- cmake -DCMAKEBUILDTYPE=Release ..
- -j4-Paket erstellen
5. Installieren Sie das .deb-Paket:
- sudo dpkg -i darknet-VERSION.deb
6. Installation überprüfen:
- Darknet-Version
Optional: Installieren Sie CUDA oder CUDA+cuDNN für GPU-Beschleunigung:
1. Laden Sie CUDA herunter und installieren Sie es:
- https://developer.nvidia.com/cuda-downloads
2. Laden Sie cuDNN herunter und installieren Sie es:
- https://developer.nvidia.com/rdp/cudnn-download
- https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#cudnn-package-manager-installation-overview
3. Überprüfen Sie die CUDA-Installation:
- nvcc
- nvidia-smi
4. Darknet neu aufbauen:
- cmake -DCMAKEBUILDTYPE=Release ..
- -j4-Paket erstellen
5. Installieren Sie das aktualisierte .deb-Paket:
- sudo dpkg -i darknet-VERSION.deb
Windows CMake-Methode
1. Installieren Sie die erforderlichen Abhängigkeiten:
- 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“.
- Wählen Sie „Ändern“.
- Wählen Sie „Desktop-Entwicklung mit C++“.
- Klicken Sie auf „Ändern“ und „Ja“.
3. Installieren Sie Microsoft VCPKG:
– Öffnen Sie die Entwickler-Eingabeaufforderung für VS 2022 (nicht PowerShell).
- 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
4. Klonen Sie das Darknet-Repository:
- cd c:src git clone https://github.com/hank-ai/darknet.gitcd Darknet
5. Erstellen Sie ein Build-Verzeichnis:
- mkdir buildcd build
6. Darknet konfigurieren und aufbauen:
- 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
7. Kopieren Sie bei Bedarf CUDA-DLLs:
- Wenn Sie auf fehlende CUDA-DLL-Fehler stoßen, kopieren Sie diese in das Ausgabeverzeichnis:
- Kopieren Sie „C:ProgrammeNVIDIA GPU Computing ToolkitCUDAv12.2bin*.dll“ src-cliRelease
8. Führen Sie msbuild erneut aus, um das NSIS-Installationspaket zu generieren:
- msbuild.exe /property:Platform=x64;Configuration=Release PACKAGE.vcxproj
9. Führen Sie den NSIS-Installationsassistenten aus:
- Darknet-VERSION.exe
10. Installation überprüfen:
- C:ProgrammeDarknetbindarknet.exe-Version
Optional: Installieren Sie CUDA oder CUDA+cuDNN für GPU-Beschleunigung:
1. Laden Sie CUDA herunter und installieren Sie es:
- https://developer.nvidia.com/cuda-downloads
2. Laden Sie cuDNN herunter und installieren Sie es:
- https://developer.nvidia.com/rdp/cudnn-download
- https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#download-windows
3. cuDNN entpacken und Verzeichnisse kopieren:
- C:/Programme/NVIDIA GPU Computing Toolkit/CUDA/[Version]
4. Darknet neu aufbauen:
- Wiederholen Sie die Schritte 6–8 nach der Installation von CUDA.
Nutzung von Darknet
CLI
Befehle:
Darknet-Hilfe
Darknet-Version
Bildvorhersage:
V2: Darknet-Detektortest car.data car.cfg car_best.weights image1.jpg
V3: darknet02displayannotatedimages cars.cfg image1.jpg
DarkHelp: DarkHelp Cars.cfg Cars.cfg Cars_Best.weights Bild1.jpg
Ausgabekoordinaten:
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
Videoverarbeitung:
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
Webcam:
V2: Darknet-Detektor-Demo Animals.data Animals.cfg Animals_best.weights -c 0
V3: darknet08display_webcam Tiere
Ergebnisse als Video speichern:
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-Ausgabe:
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
Spezifische GPU:
V2: Darknet-Detektor-Demo Animals.data Animals.cfg Animals_best.weights -i 1 test.mp4
Genauigkeit:
Darknet-Detektorkarte fahren.daten fahren.cfg fahren_best.gewichte ...
Darknet-Detektorkarte Animals.data Animals.cfg Animalsbest.weights -iouthresh 0,75
Anker:
Darknet-Detektor calcanchors Animals.data -numof_clusters 6 -width 320 -height 256
Ausbildung
DarkMark: Nutzen Sie DarkMark für Anmerkungen und Schulungen. Dies ist der empfohlene Ansatz zum Training neuer neuronaler Netze.
Manuelle Einrichtung:
1. Erstellen Sie ein Projektverzeichnis: Zum Beispiel ~/nn/animals/.
2. Kopieren Sie eine Konfigurationsdatei: cfg/yolov4-tiny.cfg
3. Erstellen Sie eine Datei „animals.names“: Listen Sie Klassen auf (eine pro Zeile) wie:
- Hund
- Katze
- Vogel
- Pferd
4. Erstellen Sie eine Animals.data-Datei:
- Klassen = 4
- train = /home/username/nn/animals/animals_train.txt
- valid = /home/username/nn/animals/animals_valid.txt
- Namen = /home/username/nn/animals/animals.names
- backup = /home/username/nn/animals
5. Erstellen Sie einen Datensatzordner: Speichern Sie Bilder und entsprechende Anmerkungsdateien (.txt) im YOLO-Format.
6. Erstellen Sie Animalstrain.txt und Animalsvalid.txt: Listen Sie Bilder für Training und Validierung auf.
7. Ändern Sie Animals.cfg:
- Charge = 64
- Unterteilungen = 1
- max_batches = 8000 (4 Klassen * 2000)
- Schritte = 6400,7200
- Breite = ...
- Höhe = ...
- Klassen = 4
- Filterwerte aktualisieren (z. B. (4 + 5) * 3 = 27).
8. Starten Sie das Training: cd ~/nn/animals/ Darknet Detector -map -dont_show train Animals.data Animals.cfg
Trainingsparameter:
--verbose für detaillierte Ausgabe
Andere Tools und Links
DarkMark: Projektmanagement, Bildanmerkung und Dateigenerierung für Darknet.
DarkHelp: Alternative CLI, Bildkacheln, Objektverfolgung und robuste C++-API.
Darknet/YOLO-FAQ: Umfangreiche Ressource für häufige Fragen.
Stéphanes YouTube-Kanal: Tutorials und Beispielvideos.
Darknet/YOLO Discord-Server: Community-Unterstützung und Diskussionen.
Roadmap
Vollendet:
std::sort() für qsort() während des Trainings
Entfernung von check_mistakes, getchar() und system()
C++-Compiler-Unterstützung (g++ unter Linux, VisualStudio unter Windows)
Windows-Build-Fix
Fehlerbehebung für die Python-Unterstützung
Aufbau der Darknet-Bibliothek
Beschriftungen auf Vorhersagen („Alphabet“-Code)
CUDA/GPU-Code erneut aktiviert
CUDNN erneut aktivieren
CUDNN wird zur Hälfte wieder aktiviert
Nicht fest codierte CUDA-Architektur
Verbesserte CUDA-Versionsinformationen
AVX erneut aktivieren
Entfernung alter Lösungen und Makefile
OpenCV als nicht optionale Abhängigkeit
Entfernung der alten Abhängigkeit von der pthread-Bibliothek
Entfernung von STB
CMakeLists.txt wird für die neue CUDA-Erkennung neu geschrieben
Entfernung von „Alphabet“-Code und Daten-/Beschriftungsbildern
Out-of-Source-Build
Verbesserte Ausgabe der Versionsnummer
Leistungsoptimierungen für Training und Inferenz
Wenn möglich, als Referenz verwenden
Bereinigte .hpp-Dateien
Darknet.h neu geschrieben
cv::Mat-Nutzung statt void*-Casting
Behebt die Verwendung der internen Bildstruktur
Build-Fix für ARM-basierte Jetson-Geräte
Python-API-Korrektur in V3
Kurzfristige Ziele:
std::cout für printf()
Zed-Kameraunterstützung
Verbesserte Befehlszeilenanalyse
Mittelfristige Ziele:
Entfernung des char*-Codes zugunsten von std::string
Bereinigung der Compiler-Warnung
Verbesserte Verwendung von cv::Mat
Ersetzen der alten Listenfunktionalität durch std::vector oder std::list
Unterstützung für 1-Kanal-Graustufenbilder
Unterstützung für N-Kanal-Bilder (N > 3)
Laufende Codebereinigung
Langfristige Ziele:
CUDA/CUDNN-Korrekturen für alle GPUs
CUDA+cuDNN-Code neu schreiben
Unterstützung für Nicht-NVIDIA-GPUs
Gedrehte Begrenzungsrahmen und Winkelunterstützung
Schlüsselpunkte und Skelette
Heatmaps
Segmentierung