Asp+Csv intelligentes adaptives universelles Score-Abfragesystem
Heute stellt Ihnen der Herausgeber von Downcodes ein auf ASP entwickeltes und veröffentlichtes Abfragesystem zur Abfrage von Daten im CSV-Format vor, das sich intelligent an das universelle Score-Abfragesystem anpasst.
Diese Software ist extrem einfach, aber ein sehr vielseitiges und praktisches Ergebnisabfragesystem, mit dem fast alle ein- und zweidimensionalen Excel-Datentabellen abgefragt werden können.
Zweck
Dieses System eignet sich für verschiedene präzise Anfragen wie Noten, Löhne, Immobilienrechnungen usw., die selten geändert werden und eine geringe Vertraulichkeit haben. Die spezifischen Nutzungsszenarien sind wie folgt:
1. Ergebnisabfragesystem: Anwendbar auf jede Schule, Bildungseinrichtung, öffentliche Prüfung usw.
2. Gehaltsabfragesystem: Anwendbar auf jede Schule, Bildungseinrichtung, öffentliche Prüfung usw.
3. System zur Erhebung von Immobiliengebühren: anwendbar auf jedes Unternehmen, jede Schule und alle Einheiten.
4. System zur Abfrage von Stromrechnungen: geeignet für Gemeinden, Immobilienunternehmen, Studentenwohnheime usw.
5. Andere Abfragesysteme: wie Klasseneinstufungsabfrage, Zulassungsabfrage, Zertifikatsabfrage und andere Abfragesysteme mit wenigen Änderungen.
Merkmale und Vorteile
1. Hohe Vielseitigkeit: Es kann in fast allen zweidimensionalen Tabellen verwendet werden und kann die meisten Ihrer Anforderungen erfüllen.
2. Einfach und praktisch: Der Code ist klein und einfach und kann schnell an verschiedene Szenarien angepasst werden, z. B. an gemeinsame Abfragen mit mehreren Tabellen.
3. Flexibel und einfach zu verwenden: Ändern Sie einfach einige Parameter, um die Abfrage anzupassen.
4. Schnelle Nutzung: Das Posten eines Punktestandes lässt sich am schnellsten in zwei bis drei Minuten lösen.
Einschränkungen
1. Nicht für häufige Änderungen geeignet: Ergebnisse, Löhne, Wasser- und Stromrechnungen usw. werden im Allgemeinen auf einmal ohne Änderungen veröffentlicht. Dieses System ist nicht für Szenarien geeignet, in denen häufig Änderungen vorgenommen werden.
2. Nur für zweidimensionale Tabellen geeignet: Im Allgemeinen verwenden Datenbanken eine zweidimensionale Struktur mit Überschriften in der ersten Zeile und den ersten Zeilen und einem Datenwert pro Zeile danach. Dieses System unterstützt derzeit keine Daten in anderen Strukturen.
3. Empfohlene Kontrolle der Anzahl der Datensätze in einer einzelnen Datenbank: Dieses System begrenzt die Anzahl der Datensätze in einer einzelnen Datenbank nicht, es wird jedoch empfohlen, dass die Anzahl der Datensätze in einer einzelnen Datenbank innerhalb von 30.000 kontrolliert wird, und die Datenbanken können dies tun in Datenbanken aufgeteilt werden, ohne dass sie sich gegenseitig beeinflussen.
4. Formeln, Bilder, URLs usw. werden derzeit nicht unterstützt: Dieses System unterstützt derzeit keine Formeln, Bilder, URLs usw.
Nutzungsvorschläge
Es kann direkt durch Hochladen per FTP verwendet werden. Es wird empfohlen, es zunächst direkt zum Abfragetest hochzuladen.
Front-End-Zugriff: http://website/directory/ (Hochladen zur direkten Verwendung ohne Unterstützung der MySQL-Datenbank usw.)
Verwenden Sie dann Notepad ++, um inc/conn.Asp zu öffnen, um die entsprechende Beziehung zwischen Parametern und Webseiten anzuzeigen, und öffnen Sie dann die standardmäßig integrierte Datenbank, um die Abfrageergebnisse zu vergleichen und die entsprechende Beziehung anzuzeigen.
Nutzungsschritte
Einzelheiten finden Sie in der HTML-Formatdatei im komprimierten Paket.
Beispiel
Im Folgenden wird anhand des Darknet Object Detection Framework und YOLO als Beispiel gezeigt, wie das Titel-Tag-Element von Markdown und einige Layoutanpassungen verwendet werden, um die Informationsanzeige übersichtlicher und für Benutzer lesbarer zu gestalten:
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 hochmodernes Echtzeit-Objekterkennungssystem, das im Darknet-Framework läuft.
Papiere
Papier YOLOv7
Papierskaliert-YOLOv4
Papier YOlov4
Papier YOlov3
Allgemeine Informationen
Das Darknet/YOLO-Framework ist weiterhin schneller und genauer als andere Frameworks und YOLO-Versionen.
Das Framework ist völlig kostenlos und Open Source. Sie können Darknet/YOLO in bestehenden Projekten und Produkten, auch kommerziellen Produkten, ohne Lizenz oder Gebühren nutzen.
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.
Wenn Sie Hilfe benötigen oder über Darknet/YOLO diskutieren möchten, treten Sie bitte 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- und Colab-Servern, Desktops, Laptops und High-End-Schulungsgeräten ausgeführt werden. Die GPU-Version von Darknet/YOLO erfordert die CUDA-fähige GPU von NVIDIA.
Darknet/YOLO läuft bekanntermaßen auf Linux, Windows und Mac. Bitte beachten Sie die Bauanleitung unten.
Darknet-Version
Die ursprünglichen Darknet-Tools, die 2013–2017 von Joseph Redmon geschrieben wurden, hatten keine Versionsnummern. Wir gehen davon aus, dass es sich hierbei um Version 0.x handelt.
Auch das nächste beliebte Darknet-Repository, das von Alexey Bochkovskiy von 2017 bis 2021 verwaltet wird, hat keine Versionsnummer. Wir gehen davon aus, dass es sich um Version 1.x handelt.
Das von Hank.ai gesponserte und ab 2023 von Stéphane Charette verwaltete Darknet-Repository ist das erste, das über einen Versionsbefehl verfügt. Von 2023 bis Ende 2024 erfolgt die Rückkehr zur Version 2.x „OAK“.
Das Ziel besteht darin, sich mit der Codebasis vertraut zu machen und gleichzeitig zu versuchen, so wenig vorhandene Funktionalität wie möglich zu beeinträchtigen.
Die Build-Schritte wurden neu geschrieben, sodass wir einen einheitlichen Ansatz zum Erstellen unter Windows und Linux mit CMake haben.
Konvertieren Sie die Codebasis, um einen C++-Compiler zu verwenden.
Verbessertes chart.png während des Trainings.
Fehlerbehebungen und leistungsbezogene Optimierungen, hauptsächlich im Zusammenhang mit der Reduzierung der Zeit, die zum Trainieren des Netzwerks erforderlich ist.
Der letzte Zweig dieser Codebasis ist Version 2.1 im v2-Zweig.
Die nächste Entwicklungsphase beginnt Mitte 2024, die Veröffentlichung erfolgt im Oktober 2024. Der Versionsbefehl gibt jetzt 3.x „JAZZ“ zurück.
Wenn Sie einen dieser Befehle ausführen müssen, können Sie jederzeit den vorherigen v2-Zweig auschecken. Wenn Sie Hilfe benötigen, lassen Sie es uns bitte wissen, damit wir das Hinzufügen fehlender Befehle untersuchen können.
Viele alte und nicht gepflegte Befehle wurden entfernt.
Es wurden viele Leistungsoptimierungen vorgenommen, auch während des Trainings und der Inferenz.
Die alte C-API wurde geändert; Anwendungen, die die ursprüngliche Darknet-API verwenden, erfordern geringfügige Änderungen: https://darknetcv.ai/api/api.html
Neue Darknet V3 C- und C++-API: https://darknetcv.ai/api/api.html
Neue Anwendungen und Beispielcode in src-examples: https://darknetcv.ai/api/files.html
Vortrainierte MSCOCO-Gewichte
Der Einfachheit halber sind mehrere beliebte YOLO-Versionen auf dem MSCOCO-Datensatz vorab trainiert. Der Datensatz enthält 80 Kategorien und ist in der Textdatei cfg/coco.names einsehbar.
Es stehen mehrere 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 für MSCOCO befinden sich im cfg-Verzeichnis. Beispielbefehl:
`
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 normalerweise verwendet, um zu bestätigen, dass alles ordnungsgemäß funktioniert.
Gebäude
Verschiedene in der Vergangenheit (vor 2023) bereitgestellte Build-Methoden wurden zu einer einheitlichen Lösung zusammengeführt. Darknet erfordert C++17 oder neuer, OpenCV und verwendet CMake, um die notwendigen Projektdateien zu generieren.
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 Anweisungen für Google Colab sind die gleichen wie für Linux. Es sind mehrere Jupyter-Notebooks verfügbar, die 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.
Linux CMake-Methode
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.
Erforderlich: Sie müssen die Datei CMakeCache.txt aus Ihrem Darknet-Build-Verzeichnis löschen, um CMake zu zwingen, alle erforderlichen Dateien erneut zu finden.
Erforderlich: Denken Sie daran, Darknet neu aufzubauen.
Darknet kann ohne ausgeführt werden, aber wenn Sie ein benutzerdefiniertes Netzwerk trainieren möchten, ist CUDA oder CUDA+cuDNN erforderlich.
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 und nvidia-smi ausführen können. Möglicherweise müssen Sie Ihre PATH-Variable ändern.
Wenn Sie CUDA oder CUDA+cuDNN zu einem späteren Zeitpunkt installiert oder auf eine neuere Version der NVIDIA-Software aktualisiert haben:
Diese Anweisungen gehen davon aus (aber erfordern nicht unbedingt!), dass auf dem System Ubuntu 22.04 ausgeführt wird. Wenn Sie eine andere Distribution verwenden, passen Sie diese bitte nach Bedarf an.
`
sudo apt-get install build-essential git libopencv-dev cmake
mkdir ~/srccd ~/src
Git-Klon https://github.com/hank-ai/darknetcd Darknet
mkdir buildcd build
cmake -DCMAKEBUILDTYPE=Release ..
mache -j4
Paket
sudo dpkg -i darknet-VERSION.deb
`
Wenn Sie eine ältere Version von CMake verwenden, müssen Sie CMake aktualisieren, bevor Sie den oben genannten Befehl cmake ausführen. Um CMake unter Ubuntu zu aktualisieren, können Sie den folgenden Befehl verwenden:
`
sudo apt-get purge cmake
sudo snap install cmake --classic
`
Wenn Sie Bash als Befehls-Shell verwenden, müssen Sie möglicherweise Ihre Shell neu starten. Wenn Sie Fisch verwenden, sollte dieser sofort den neuen Weg einschlagen.
Fortgeschrittene Benutzer:
Wenn Sie eine RPM-Installationsdatei anstelle einer DEB-Datei erstellen möchten, sehen Sie sich die entsprechenden Zeilen in CM_package.cmake an. Bevor Sie make -j4 package ausführen, müssen Sie diese beiden Zeilen bearbeiten:
`
SET (CPACKGENERATOR „DEB“)# SET (CPACKGENERATOR „RPM“)
`
Für Distributionen wie Centos und OpenSUSE müssen Sie diese beiden Zeilen in CM_package.cmake ändern in:
`
SET (CPACKGENERATOR „DEB“)SET (CPACKGENERATOR „RPM“)
`
Um das Installationspaket nach der Erstellung zu installieren, verwenden Sie den üblichen Paketmanager Ihrer Distribution. Zum Beispiel auf einem Debian-basierten System (wie Ubuntu):
`
sudo dpkg -i darknet-2.0.1-Linux.deb
`
Durch die Installation des .deb-Pakets werden die folgenden Dateien kopiert:
/usr/bin/darknet ist die übliche ausführbare Darknet-Datei. Führen Sie die Darknet-Version über die CLI aus, um zu bestätigen, dass sie korrekt installiert ist.
/usr/include/darknet.h ist 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 ist eine Bibliothek, mit der C-, C++- und Python-Entwickler verknüpfen können.
/opt/darknet/cfg/... ist der Ort, an dem alle .cfg-Vorlagen gespeichert sind.
Jetzt sind Sie fertig! Darknet wurde in /usr/bin/ erstellt und installiert. Führen Sie zum Testen den folgenden Befehl aus: Darknet-Version.
Wenn Sie /usr/bin/darknet nicht haben, bedeutet das, dass Sie es nicht installiert, sondern nur erstellt haben! Stellen Sie sicher, dass Sie die .deb- oder .rpm-Datei wie oben beschrieben installieren.
Windows CMake-Methode
Bei dieser Anleitung wird davon ausgegangen, dass Sie über eine Neuinstallation von Windows 11 22H2 verfügen.
Öffnen Sie ein normales cmd.exe-Eingabeaufforderungsfenster und führen Sie den folgenden Befehl aus:
`
Winget installiert Git.Git
Winget installiert Kitware.CMake
Winget installiert nsis.nsis
Winget installiert Microsoft.VisualStudio.2022.Community
`
An dieser Stelle müssen wir die Visual Studio-Installation ändern, um Unterstützung für C++-Anwendungen einzuschließen:
* Klicken Sie auf 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“.
Sobald alles heruntergeladen und installiert ist, 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 werden!
Fortgeschrittene Benutzer:
Anstatt die Entwickler-Eingabeaufforderung auszuführen, können Sie eine normale Eingabeaufforderung oder eine SSH-Verbindung 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 zum Erstellen von OpenCV verwendet wird:
`
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
installiere 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 dauern kann. Es erfordert das Herunterladen und Erstellen einer Menge Dinge.
Fortgeschrittene Benutzer:
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.
Erforderlich: Sie müssen die Datei CMakeCache.txt aus Ihrem Darknet-Build-Verzeichnis löschen, um CMake zu zwingen, alle erforderlichen Dateien erneut zu finden.
Erforderlich: Denken Sie daran, Darknet neu aufzubauen.
Darknet kann ohne ausgeführt werden, aber wenn Sie ein benutzerdefiniertes Netzwerk trainieren möchten, ist CUDA oder CUDA+cuDNN erforderlich.
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#download-windows, um cuDNN herunterzuladen und zu 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 Ihre PATH-Variable ändern.
Sobald Sie cuDNN heruntergeladen haben, entpacken Sie die Verzeichnisse bin, include und lib und kopieren Sie sie 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 installiert oder auf eine neuere Version der NVIDIA-Software aktualisiert haben:
CUDA muss nach Visual Studio installiert werden. Wenn Sie Visual Studio aktualisieren, denken Sie daran, CUDA neu zu installieren.
Sobald 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:
`
cd c:src
Git-Klon 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 Sie Fehlermeldungen zu einigen fehlenden CUDA- oder cuDNN-DLLs erhalten, z. B. cublas64_12.dll, kopieren Sie die CUDA-DLL-Datei manuell in dasselbe Ausgabeverzeichnis wie Darknet.exe. Zum Beispiel:
`
kopieren Sie „C:ProgrammeNVIDIA GPU Computing ToolkitCUDAv12.2bin*.dll“ src-cliRelease
`
(Dies ist ein Beispiel! Bitte überprüfen Sie, welche Version Sie verwenden, und führen Sie den entsprechenden Befehl für die von Ihnen installierte Version aus.)
Sobald die Dateien kopiert sind, führen Sie den letzten msbuild.exe-Befehl erneut aus, um das NSIS-Installationspaket zu generieren:
`
msbuild.exe /property:Platform=x64;Configuration=Release PACKAGE.vcxproj
`
Fortgeschrittene Benutzer:
Bitte beachten Sie, dass die Ausgabe des cmake-Befehls eine 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 über diese Datei verfügen, die Sie ausführen können: 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 letzten Schritt erstellten NSIS-Installationsassistenten aus. Sehen Sie sich die Datei darknet-VERSION.exe im Build-Verzeichnis an. Zum Beispiel:
`
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:Program FilesDarknet.
Installieren Sie die CLI-Anwendung, darknet.exe und andere Beispielanwendungen.
Installieren Sie erforderliche DLL-Dateien von Drittanbietern, z. B. die von OpenCV.
Installieren Sie die erforderlichen Darknet-Dateien .dll, .lib und .h, um Darknet.dll aus einer anderen Anwendung zu verwenden.
Installieren Sie die .cfg-Vorlagendatei.
Jetzt sind Sie fertig! Sobald 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, bedeutet das, dass Sie es nicht installiert, sondern nur erstellt haben! Stellen Sie sicher, dass Sie die einzelnen Bereiche des NSIS-Installationsassistenten wie im vorherigen Schritt beschrieben durchlaufen.
Nutzung von Darknet
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 CLI zu Darknet/YOLO bereitstellt. Die DarkHelp-CLI verfügt außerdem über einige erweiterte Funktionen, die im Darknet nicht direkt verfügbar sind. Sie können Darknet CLI und DarkHelp CLI zusammen verwenden, sie schließen sich nicht gegenseitig aus.
Für die meisten der unten gezeigten Befehle müssen Sie die .weights-Datei für die entsprechenden .names- und .cfg-Dateien verwenden. Sie können Ihr eigenes Netzwerk trainieren (sehr empfehlenswert!) oder neuronale Netze aus dem Internet herunterladen, die von anderen trainiert wurden und 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 mit 80 Kategorien)
Zu den auszuführenden Befehlen gehören:
Listen Sie einige Befehle und Optionen auf, die ausgeführt werden können:
`
Darknet-Hilfe
`
Version prüfen:
`
Darknet-Version
`
Verwenden Sie Bilder, um Vorhersagen zu treffen:
`
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
`
Video verwenden:
`
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
`
Lesung per 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:
`
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 einer bestimmten GPU ausführen:
`
V2: Darknet-Detektor-Demo Animals.data Animals.cfg Animals_best.weights -i 1 test.mp4
`
Überprüfen Sie die Genauigkeit des neuronalen Netzwerks:
`
Darknet-Detektorkarte fahren.daten fahren.cfg fahren_best.gewichte ...
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 5393 0,8850 0,1150 0,8377 0,8513 0,9046 0,0954
2 Fahrrad 89,0912 570 124 104 3548 0,9475 0,0525 0,8457 0,8213 0,9715 0,0285
3 Personen 76,7937 7072 1727 2574 27523 0,8894 0,1106 0,7332 0,8037 0,9145 0,0855
4 viele Fahrzeuge 64,3089 1068 509 733 11288 0,9087 0,0913 0,5930 0,6772 0,9390 0,0610
5 grünes Licht 86,8118 1969 239 510 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 rotes Licht 94,1033 3449 217 451 4643 0,9237 0,0763 0,8844 0,9408 0,9115 0,0885
`
Überprüfen Sie die Genauigkeit mAP@IoU=75:
`
Darknet-Detektorkarte Animals.data Animals.cfg Animalsbest.weights -iouthresh 0,75
`
Die Neuberechnung der Ankerpunkte erfolgt am besten in DarkMark, da es 100 Mal hintereinander ausgeführt wird und aus allen berechneten Ankerpunkten der beste Ankerpunkt ausgewählt wird. Wenn Sie jedoch eine ältere Version im Darknet ausführen möchten:
`
Darknet-Detektor calcanchors Animals.data -numof_clusters 6 -width 320 -height 256
`
Trainieren Sie ein neues Netzwerk:
`
Darknet Detector -map -dont_show train Animals.data Animals.cfg (siehe auch den Trainingsabschnitt unten)
`
Ausbildung
Schneller Link zum entsprechenden Abschnitt der Darknet/YOLO-FAQ:
* Wie richte ich meine Dateien und Verzeichnisse ein?
* Welches Profil soll ich verwenden?
* Welche Befehle sollte ich beim Training meines eigenen Netzwerks verwenden?
Verwenden Sie DarkMark, um alle erforderlichen Darknet-Dateien zu erstellen. 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:
1. 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/.
2. 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. In diesem Beispiel haben wir jetzt ~/nn/animals/animals.cfg.
3. Erstellen Sie im selben Ordner, in dem Sie die Konfigurationsdatei abgelegt haben, eine Textdatei „animals.names“. In diesem Fall haben wir jetzt ~/nn/animals/animals.names.
4. Bearbeiten Sie die Datei Animals.names mit einem Texteditor. 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
`
5. Erstellen Sie im selben Ordner eine Textdatei „animals.data“. 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
`
6. 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 mit Anmerkungen erforderlich, die das Bild beschreiben. 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. Bitte nutzen Sie DarkMark oder eine andere ähnliche Software, um Ihre Bilder mit Anmerkungen zu versehen. Das YOLO-Annotationsformat wird in den Darknet/YOLO-FAQ beschrieben.
7. Erstellen Sie „train“- und „valid“-Textdateien mit den Namen in der .data-Datei. Diese beiden Textdateien müssen alle Bilder auflisten, die Darknet für das Training bzw. die Validierung (bei der Berechnung von mAP%) verwenden muss. Es gibt genau ein Bild pro Zeile. Pfade und Dateinamen können relativ oder absolut sein.
8. Verwenden Sie einen Texteditor, um Ihre .cfg-Datei zu ändern.
* Stellen Sie sicher, dass Batch=64 ist.
* Auf Unterteilungen achten. Abhängig von den Netzwerkabmessungen und der auf Ihrer GPU verfügbaren Speichermenge müssen Sie möglicherweise die Unterteilungen erhöhen. Der beste Wert ist 1, also beginnen Sie damit. Wenn 1 bei Ihnen nicht funktioniert, lesen Sie die Darknet/YOLO-FAQ.
Beachten Sie, dass maxbatches=…. Am Anfang ist ein guter Wert das 2000-fache der Anzahl der Kategorien. In diesem 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. In diesem Beispiel verwenden wir „steps=6400,7200“, da „maxbatches“ auf 8000 festgelegt ist.
* Achten Sie auf width=... und height=..... Dies sind Netzwerkdimensionen. Die Darknet/YOLO-FAQ erklärt, wie man die optimale Größe berechnet.
* Suchen Sie nach allen Instanzen, die die Zeile „classes=...“ enthalten, und ändern Sie sie mit der Anzahl der Klassen in Ihrer .names-Datei. In diesem Beispiel verwenden wir „classes=4“.
Suchen Sie im Abschnitt [convolutional] vor jedem Abschnitt [yolo] nach allen Instanzen, die die Zeile filter=... enthalten. Der zu verwendende Wert ist (Anzahl der Kategorien + 5) 3. Das bedeutet in diesem Fall (4 + 5) * 3 = 27. Daher werden wir in den entsprechenden Zeilen filter=27 verwenden.
9. Beginnen Sie mit dem Training! Führen Sie den folgenden Befehl aus:
`
cd ~/nn/animals/
Darknet-Detektor -map -dont_show train Animals.data Animals.cfg
`
Bitte warten. Die besten Gewichte werden als Animals_best.weights gespeichert. Sie können den Trainingsfortschritt verfolgen, indem Sie die Datei chart.png anzeigen. 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:
`
Darknet-Detektor -map -dont_show --verbose train Animals.data Animals.cfg
`
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 robuste Darknet-Alternativ-CLI für die Verwendung von Bildkacheln zur Objektverfolgung in Videos oder eine robuste C++-API, die problemlos in kommerziellen Anwendungen verwendet werden kann, finden Sie unter DarkHelp.
Bitte schauen Sie sich die Darknet/YOLO-FAQ an und prüfen Sie, ob sie bei der Beantwortung Ihrer Frage hilfreich ist.
Bitte schauen Sie sich die zahlreichen 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.
Roadmap
Letzte Aktualisierung: 30.10.2024
Vollendet
qsort(), das während des Trainings verwendet wurde, wurde durch std::sort() ersetzt (einige andere, weniger verbreitete Methoden existieren noch).
Check_mistakes, getchar() und system() entfernen
Konvertieren Sie Darknet zur Verwendung eines C++-Compilers (g++ unter Linux, Visual Studio unter Windows)
Windows-Build reparieren
Korrigieren Sie die Python-Unterstützung
Erstellen Sie eine Darknet-Bibliothek
Labels in Vorhersagen wieder aktivieren („Alphabet“-Code)
CUDA/GPU-Code erneut aktivieren
Aktivieren Sie CUDNN erneut
Aktivieren Sie die CUDNN-Hälfte erneut
Codieren Sie die CUDA-Architektur nicht fest
Bessere Informationen zur CUDA-Version
Aktivieren Sie AVX erneut
Entfernen Sie die alte Lösung und das Makefile
Machen Sie OpenCV nicht optional
Entfernen Sie die Abhängigkeit von der alten Pthread-Bibliothek
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 über den Quellcode hinaus
Hat eine bessere Ausgabe der Versionsnummer
Trainingsbezogene Leistungsoptimierungen (laufende Aufgaben)
Leistungsoptimierungen im Zusammenhang mit Inferenz (laufende Aufgaben)
Verwenden Sie nach Möglichkeit Referenzen nach Wert
Bereinigen Sie .hpp-Dateien
Darknet.h neu schreiben
Wandeln Sie cv::Mat nicht in void um, sondern verwenden Sie es stattdessen als richtiges C++-Objekt
Korrigieren Sie die internen Bildstrukturen oder behalten Sie diese konsistent bei
Fix-Build für ARM-basierte Jetson-Geräte
* Da NVIDIA keine Original-Jetson-Geräte mehr unterstützt, ist es unwahrscheinlich, dass sie behoben werden (kein C++17-Compiler).
* Neues Jetson Orin-Gerät jetzt in Betrieb
Korrigieren Sie die Python-API in V3
Bessere Python-Unterstützung erforderlich (möchten Python-Entwickler dabei helfen?)
kurzfristige Ziele
Ersetzen Sie printf() durch std::cout (in Arbeit)
Sehen 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, Compiler-Warnungen bereinigen (in Arbeit)
Besser cv::Mat statt benutzerdefinierter Bildstrukturen in C verwenden (in Arbeit)
Ersetzen Sie alte Listenfunktionen durch std::vector oder std::list
Unterstützung für 1-Kanal-Graustufenbilder behoben
Unterstützung für N-Kanal-Bilder hinzufügen, bei denen N > 3 (z. B. Bilder mit zusätzlicher Tiefe oder Wärmekanäle)
Laufende Codebereinigung (in Bearbeitung)
langfristige Ziele
Beheben Sie CUDA/CUDNN-Probleme für alle GPUs
Schreiben Sie den CUDA+cuDNN-Code neu
Erwägen Sie, Unterstützung für Nicht-NVIDIA-GPUs hinzuzufügen
Gedrehter Begrenzungsrahmen oder eine Art „Winkel“-Unterstützung
Schlüsselpunkte/Skelett
Heatmap (in Arbeit)
Segmentierung
Im Beispiel wird das Markdown-Titel-Tag-Element verwendet und einige Inhalte werden logisch ergänzt, aufpoliert und der Schriftsatz angepasst. Beispielsweise kann das Hinzufügen von chinesischen Seriennummern, der Serialisierung arabischer Ziffern, Zeilenumbrüchen und anderen Formatierungen dazu führen, dass die Informationen ordentlicher angezeigt werden und die Überprüfung für Benutzer einfacher ist.
Ich hoffe, dieser Artikel kann für alle hilfreich sein!