Video2X: Hochwertiges Video-Upscaling- und Frame-Interpolations-Framework
Quellcode-Editor
Wichtig
Die Versionen 4 und 5 haben den End-of-Life-Status (EOL) erreicht. Aufgrund begrenzter Entwicklungsressourcen können Probleme im Zusammenhang mit Versionen unter 6 nicht mehr gelöst werden.
Version 6.0.0
Laden Sie das Windows-Installationsprogramm herunter
Kurz gesagt: Version 6.0.0 ist eine komplette Neufassung des Video2X-Projekts in C/C++, mit einer schnelleren und effizienteren Architektur, plattformübergreifender Unterstützung, deutlich verbesserter Ausgabequalität und neuen Funktionen für eine einfache Einrichtung auf der Windows-GUI und im Installationsprogramm .
Version 6.0.0 ist eine vollständige Neufassung des Projekts, implementiert in C/C++ und enthält die folgenden Funktionen:
1. Schnellere Architektur: Durch die Nutzung von Multithreading und GPU-Beschleunigung ist Video2X jetzt viel schneller als zuvor.
2. Plattformübergreifende Unterstützung: Video2X läuft jetzt auf Windows, Linux und macOS.
3. Verbesserte Ausgabequalität: Video2X bietet jetzt eine höhere Upscaling-Qualität, insbesondere für hochauflösende Videos.
4. Neue GUI: Video2X verfügt jetzt über eine benutzerfreundliche GUI, die den Einrichtungs- und Nutzungsprozess vereinfacht.
5. Neues Installationsprogramm: Video2X bietet jetzt ein benutzerfreundliches Installationsprogramm, mit dem Sie die Software schnell und einfach unter Windows installieren können.
Unterstützung für RealCUGAN und Frame-Interpolation mit RIFE ist in Kürze verfügbar.
Laden Sie die Windows-Version herunter
Sie können die neueste Windows-Version von der Release-Seite herunterladen. Informationen zur grundlegenden GUI-Nutzung finden Sie auf der GUI-Wiki-Seite. Wenn Sie nicht direkt von GitHub herunterladen können, versuchen Sie es mit einem Spiegel. Die GUI unterstützt derzeit die folgenden Sprachen:
1. Englisch
2. Vereinfachtes Chinesisch
3. Traditionelles Chinesisch
4. Japanisch
5. Koreanisch
6. Französisch
7. Deutsch
8. Italienisch
9. Spanisch
10. Portugiesisch
11. Russisch
Unter Linux installieren
Sie können Video2X unter Arch Linux mit dem video2x-git-Paket installieren oder die vorkompilierten Binärdateien von der Release-Seite herunterladen. Wenn Sie aus dem Quellcode erstellen möchten, finden Sie in der PKGBUILD-Datei einen Überblick über die erforderlichen Pakete und Befehle. Wenn Sie Ihr Programm nicht aus dem Quellcode kompilieren möchten, sollten Sie das Containerbild unten verwenden.
Containerbild
Video2X-Container-Images sind in der GitHub-Container-Registrierung für eine einfache Bereitstellung unter Linux und macOS verfügbar. Wenn Sie Docker/Podman installiert haben, können Sie die Videoverstärkung mit nur einem Befehl starten. Weitere Informationen zur Verwendung des Docker-Images von Video2X finden Sie in der Dokumentation.
Google Colab (veraltet: 5.0.0-beta7)
Wenn Sie nicht über eine eigene leistungsstarke GPU verfügen, können Sie Video2X kostenlos auf Google Colab nutzen. Sie können eine leistungsstarke GPU (NVIDIA T4, L4 oder A100) kostenlos für bis zu 12 Stunden pro Sitzung auf den Servern von Google ausleihen. Bitte nutzen Sie kostenlose Ressourcen fair und erstellen Sie keine kontinuierlichen Sitzungen und führen Sie Zoom nicht rund um die Uhr aus. Dies kann dazu führen, dass Sie gesperrt werden. Wenn Sie eine bessere GPU verwenden und längere Laufzeiten erzielen möchten, holen Sie sich Colab Pro/Pro+. Gebrauchsanweisungen sind im Colab-Notizbuch eingebettet.
Telegram-Diskussionsgruppe
Treten Sie unserer Telegram-Diskussionsgruppe bei, um Fragen zu Video2X zu stellen, direkt mit den Entwicklern zu chatten oder über Super-Resolution-Technologie und die Zukunft von Video2X zu diskutieren.
dokumentieren
Die Dokumentation für Video2X wird auf der Wiki-Seite dieses Repositorys gehostet. Es enthält umfassende Anweisungen zur Verwendung der GUI, CLI, Container-Images, Bibliotheken und mehr. Wikis können von der Community bearbeitet werden, sodass Sie, ja Sie, auch Fehler korrigieren oder neue Inhalte zur Dokumentation hinzufügen können.
einführen
Video2X ist ein auf maschinellem Lernen basierendes Video-Upscaling- und Frame-Interpolations-Framework, das auf drei Hauptkomponenten basiert:
1. Modelle: Video2X verwendet eine Vielzahl fortschrittlicher Deep-Learning-Modelle, um eine Hochskalierung und Frame-Interpolation durchzuführen.
2. Engine: Die Video2X-Engine ist für die Verarbeitung von Videodaten, die Durchführung von Modellinferenzen und die Generierung von Ausgabevideos verantwortlich.
3. Schnittstelle: Video2X bietet verschiedene Schnittstellen wie GUI, CLI und Container-Images, um Ihnen die einfache Nutzung des Frameworks zu ermöglichen.
Videodemonstration
Vergrößern: Trailer zum Film „Chihiros Reise ins Zauberland“.
Standard-Testausschnitt
Mit dem folgenden Snippet können Sie testen, ob Ihr Setup ordnungsgemäß funktioniert. Dies ist auch ein Standard-Snippet zum Ausführen von Leistungsbenchmarks.
Der Originalclip stammt aus dem Anime „The Pet Girl of Sakurasou“.
Das Urheberrecht dieses Clips liegt bei Amino Pulse Co., Ltd.
Lizenz
Dieses Projekt wird unter der GNU AGPL Version 3-Lizenz veröffentlicht.
Copyright (C) 2018-2024 K4YT3X und Mitwirkende.
Dieses Projekt umfasst oder hängt von den folgenden Projekten ab:
1. opencv: https://github.com/opencv/opencv
2. waifu2x-caffe: https://github.com/nagadomi/waifu2x-caffe
3. Real-ESRGAN: https://github.com/xinntao/Real-ESRGAN
4. BasicSR: https://github.com/xinntao/BasicSR
5. GFPGAN: https://github.com/TencentARC/GFPGAN
6. RIFE: https://github.com/hzwer/arXiv2021-RIFE
7. Anime4K: https://github.com/bloc97/Anime4K
Weitere Lizenzinformationen finden Sie in der NOTICE-Datei.
Besonderer Dank
Besonderer Dank geht an die folgenden Personen für ihre bedeutenden Beiträge zu diesem Projekt (in alphabetischer Reihenfolge):
1. K4YT3X: Projektersteller
2. Mitwirkende: Vielen Dank an alle, die zu diesem Projekt beigetragen haben.
Zum Beispiel:
Apache-2.0-Lizenz
Inhaltsverzeichnis
Darknet-Objekterkennungs-Framework und YOLO
1. Papier
2. Allgemeine Informationen
3. Darknet-Version
4. MSCOCO-Gewichte vor dem Training
5. Bauen
1. Google Colab
2. Linux CMake-Methode
3. Windows CMake-Methode
6. Nutzen Sie Darknet
1. CLI
2. Ausbildung
7. Andere Tools und Links
8. Roadmap
1. Kurzfristige Ziele
2. Mittelfristige Ziele
3. Langfristige Ziele
Darknet-Objekterkennungs-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.
Lesen Sie, wie Hank.ai der Darknet/YOLO-Community hilft
Ankündigung von Darknet V3 „Jazz“
Schauen Sie sich die Darknet/YOLO-Website an
Bitte lesen Sie die Darknet/YOLO-FAQ
Treten Sie dem Darknet/YOLO Discord-Server bei
Papier
1. YOLOv7-Papier
2. Scaled-YOLOv4-Papier
3. YOLOv4-Papier
4. YOlov3-Papier
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 ohne Lizenz oder Gebühren in bestehende Projekte und Produkte (einschließlich kommerzieller Produkte) integrieren.
Darknet V3 („Jazz“), veröffentlicht im Oktober 2024, kann LEGO-Datensatzvideos bei Verwendung einer NVIDIA RTX 3090-GPU präzise mit bis zu 1000 FPS ausführen, was bedeutet, dass jedes Videobild 1 Millisekunde oder weniger dauert. Intern gelesen, in der Größe geändert und verarbeitet von Darknet/ YOLO.
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-kompatible GPU von NVIDIA.
Darknet/YOLO läuft bekanntermaßen unter Linux, Windows und Mac. Siehe Bauanleitung unten.
Darknet-Version
Die ursprünglichen Darknet-Tools, die Joseph Redmon in den Jahren 2013–2017 geschrieben hatte, hatten keine Versionsnummern. Wir gehen davon aus, dass es sich hierbei um Version 0.x handelt.
Auch die nächste beliebte Darknet-Bibliothek, die von Alexey Bochkovskiy von 2017 bis 2021 gepflegt wird, hat keine Versionsnummer. Wir gehen davon aus, dass es sich hierbei um Version 1.x handelt.
Die von Hank.ai gesponserte und ab 2023 von Stéphane Charette gepflegte Darknet-Bibliothek ist die erste Bibliothek, die über einen Versionsbefehl verfügt. Von 2023 bis Ende 2024 erfolgt die Rückkehr zur Version 2.x „OAK“.
Ziel ist es, sich mit der Codebasis vertraut zu machen und dabei möglichst wenig vorhandene Funktionalität zu beeinträchtigen.
1. Die Build-Schritte wurden neu geschrieben, sodass wir jetzt mit CMake auf Windows und Linux bauen können.
2. Konvertieren Sie die Codebasis, um einen C++-Compiler zu verwenden.
3. Verbessertes chart.png während des Trainings.
4. Fehlerbehebungen und leistungsbezogene Optimierungen, hauptsächlich im Zusammenhang mit der Reduzierung der Zeit, die zum Trainieren des Netzwerks erforderlich ist.
Der letzte Zweig der Codebasis ist Version 2.1 im v2-Zweig.
Die nächste Entwicklungsphase beginnt Mitte 2024 und wird im Oktober 2024 veröffentlicht. 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. Teilen Sie uns dies bitte mit, damit wir das erneute Hinzufügen fehlender Befehle untersuchen können.
1. Viele alte und nicht gepflegte Befehle entfernt.
2. Viele Leistungsoptimierungen vorgenommen, sowohl während des Trainings als auch bei der Inferenz.
3. Die alte C-API wurde geändert. Bei Anwendungen, die die ursprüngliche Darknet-API verwenden, müssen geringfügige Änderungen vorgenommen werden: https://darknetcv.ai/api/api.html
4. Neue Darknet V3 C- und C++-API: https://darknetcv.ai/api/api.html
5. Neue Anwendungen und Beispielcode in src-examples: https://darknetcv.ai/api/files.html
Vortrainierte MSCOCO-Gewichte
Der Einfachheit halber sind mehrere beliebte Versionen von YOLO 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 heruntergeladen werden und können auch von diesem Repo heruntergeladen werden:
1. YOLOv2, November 2016
1. YOLOv2-tiny
2.YOLOv2-voll
2. YOlov3, Mai 2018
1. YOLOv3-tiny
2.YOLOv3-voll
3. YOlov4, Mai 2020
1.YOLOv4-tiny
2. YOLOv4-voll
4. YOLOv7, August 2022
1. YOLOv7-tiny
2. 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:
`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 normalerweise verwendet, um zu bestätigen, dass alles ordnungsgemäß funktioniert.
bauen
Die verschiedenen in der Vergangenheit (vor 2023) verfügbaren Build-Methoden 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.
Google Colab
Die Anweisungen für Google Colab sind dieselben 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 Notebook im Unterverzeichnis „colab“ an oder befolgen Sie die nachstehenden Linux-Anweisungen.
Linux CMake-Methode
Darknet-Build-Tutorial für Linux
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 und nvidia-smi ausführen können. Möglicherweise müssen Sie die PATH-Variable ändern.
Wenn Sie CUDA oder CUDA+cuDNN später installiert haben oder auf eine neuere Version der NVIDIA-Software aktualisiert haben:
Bei diesen Anweisungen wird davon ausgegangen (ist jedoch nicht erforderlich!), dass auf dem System Ubuntu 22.04 ausgeführt wird. Wenn Sie eine andere Distribution verwenden, passen Sie diese nach Bedarf an.
`Bash
sudo apt-get install build-essential git libopencv-dev cmake
mkdir ~/srccd ~/src
Git-Klon https://github.com/hank-ai/darknet
CD Darknet
mkdir-Build
CD-Build
cmake -DCMAKEBUILDTYPE=Release ..
Erstellen Sie ein -j4-Paket
sudo dpkg -i darknet-VERSION.deb
`
Wenn Sie eine ältere Version von CMake verwenden, müssen Sie CMake aktualisieren, um den oben genannten cmake-Befehl auszuführen. Das Upgrade von CMake unter Ubuntu kann mit dem folgenden Befehl durchgeführt werden:
`Bash
sudo apt-get purge cmake
sudo snap install cmake --classic
`
Wenn Sie Bash als Befehls-Shell verwenden, müssen Sie Ihre Shell zu diesem Zeitpunkt 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:
`Bash
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:
`Bash
SET (CPACK_GENERATOR „DEB“)
SET (CPACK_GENERATOR „RPM“)
`
Um ein Paket zu installieren, verwenden Sie den regulären Paketmanager Ihrer Distribution, nachdem die Erstellung abgeschlossen ist. Beispielsweise auf einem Debian-basierten System wie Ubuntu:
`Bash
sudo dpkg -i darknet-2.0.1-Linux.deb
`
Durch die Installation des .deb-Pakets werden die folgenden Dateien kopiert:
1. /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.
2. /usr/include/darknet.h ist die Darknet-API für C-, C++- und Python-Entwickler.
3. /usr/include/darknet_version.h enthält Versionsinformationen für Entwickler.
4. /usr/lib/libdarknet.so ist eine Bibliothek für C-, C++- und Python-Entwickler zum Verlinken.
5. /opt/darknet/cfg/... ist der Ort, an dem alle .cfg-Vorlagen gespeichert sind.
Jetzt sind Sie fertig! Darknet ist in /usr/bin/ eingebaut und installiert. Führen Sie zum Testen den folgenden Befehl aus: Darknet-Version.
Wenn Sie /usr/bin/darknet nicht haben, haben Sie es nicht installiert, sondern nur erstellt! Stellen Sie sicher, dass Sie die .deb- oder .rpm-Datei wie oben beschrieben installieren.
Windows CMake-Methoden
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:
`Bash
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:
1. Klicken Sie auf das Windows-Startmenü und führen Sie den Visual Studio-Installer aus.
2. Klicken Sie auf Bearbeiten.
3. Wählen Sie Desktop-Entwicklung mit C++.
4. Klicken Sie unten rechts auf Bearbeiten und dann auf Ja.
Sobald alles heruntergeladen und installiert ist, klicken Sie erneut auf das Windows-Startmenü und wählen Sie „Entwickler-Eingabeaufforderung für Visual Studio 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 sich über eine normale Eingabeaufforderung oder SSH am Gerät anmelden und „ProgrammeMicrosoft Visual Studio2022CommunityCommon7ToolsVsDevCmd.bat“ manuell ausführen.
Sobald Sie die Entwickler-Eingabeaufforderung wie oben beschrieben ausgeführt haben (nicht PowerShell!), führen Sie den folgenden Befehl aus, um Microsoft VCPKG zu installieren, das dann zum Erstellen von OpenCV verwendet wird:
`Bash
CDC:
mkdir c:srccd c:src
Git-Klon https://github.com/microsoft/vcpkg
cd vcpkg
Bootstrap-vcpkg.bat
.vcpkg.exe integrieren installieren
.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 dauern kann. Es erfordert das Herunterladen und Erstellen einer Menge Dinge.
Fortgeschrittene Benutzer:
Beachten Sie, dass Sie beim Erstellen von OpenCV möglicherweise viele andere optionale Module hinzufügen müssen. 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#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 die PATH-Variable ändern.
Nachdem 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 später installiert haben 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.
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-Klon https://github.com/hank-ai/darknet.git
CD Darknet
mkdir-Build
CD-Build
cmake -DCMAKEBUILDTYPE=Release -DCMAKETOOLCHAINFILE=C:/src/vcpkg/scripts/buildsystems/vcpkg.cmake ..
msbuild.exe /property:Platform=x64;Configuration=Release /target:Build -maxCpuCount -verbosity:normal -detailedSummary darknet.sln
msbuild.exe /property:Platform=x64;Configuration=Release PACKAGE.vcxproj
`
Wenn Sie eine Fehlermeldung über eine fehlende CUDA- oder cuDNN-DLL (z. B. cublas64_12.dll) erhalten, 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
`
(Dies ist ein Beispiel! Bitte überprüfen Sie, ob Sie die Version ausführen, und führen Sie den entsprechenden Befehl für die von Ihnen installierte Version aus.)
Führen Sie nach dem Kopieren der Dateien 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:
Beachten Sie, dass die Ausgabe des Befehls cmake 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. Überprüfen Sie die Datei darknet-VERSION.exe im Build-Verzeichnis. Zum Beispiel:
`Bash
darknet-2.0.31-win64.exe
`
Die Installation des NSIS-Installationspakets führt zu Folgendem:
1. Erstellen Sie ein Verzeichnis mit dem Namen Darknet, zum Beispiel C:ProgrammeDarknet.
2. Installieren Sie die CLI-Anwendung darknet.exe und andere Beispielanwendungen.
3. Installieren Sie die erforderlichen DLL-Dateien von Drittanbietern, beispielsweise die von OpenCV.
4. Installieren Sie die erforderlichen Darknet-Dateien .dll, .lib und .h, um Darknet.dll aus einer anderen Anwendung zu verwenden.
5. 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 jedes Fenster des NSIS-Installationsassistenten wie im vorherigen Schritt beschrieben abschließen.
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 Verbesserungen, die es im Darknet nicht gibt. 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 benötigen Sie eine .weights-Datei mit den entsprechenden .names- und .cfg-Dateien. Sie können Ihr eigenes Netzwerk trainieren (sehr empfehlenswert!) oder neuronale Netzwerke herunterladen, die andere trainiert haben und im Internet frei verfügbar sind. Beispiele für Datensätze vor dem Training sind:
1. LEGO Gears (Objekte in Bildern finden)
2. Rolodex (Text im Bild finden)
3. 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, um Vorhersagen zu treffen:
`Bash
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 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
`
Verarbeitungsvideo:
`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
`
Lesung per 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 Tiere image1.jpg
DarkHelp
DarkHelp --json Animals.names Animals.cfg Animals_best.weights image1.jpg
`
Auf einer bestimmten GPU ausführen:
`Bash
V2
Darknet-Detektor-Demo Animals.data Animals.cfg Animals_best.weights -i 1 test.mp4
`
So überprüfen Sie die Genauigkeit des neuronalen Netzwerks:
`Bash
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
`
So ü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
`
Trainieren Sie ein neues Netzwerk:
`Bash
Darknet-Detektor -map -dont_show train Animals.data Animals.cfg
`
(Siehe auch Schulungsabschnitt unten)
Zug
Schnelle Links zu relevanten Abschnitten der Darknet/YOLO-FAQ:
1. Wie richte ich meine Dateien und Verzeichnisse ein?
2. Welches Profil soll ich verwenden?
3. Welche Befehle sollte ich beim Training meines eigenen Netzwerks verwenden?
Der einfachste Weg, alle notwendigen Darknet-Dateien, Anmerkungen und Schulungen mit DarkMark zu erstellen. 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 erstellen Sie ein neuronales Netzwerk zur Erkennung von Tieren, sodass das folgende Verzeichnis erstellt wird: ~/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 eine Textdatei „animals.names“ in demselben Ordner, in dem Sie die Konfigurationsdatei abgelegt haben. In diesem Beispiel haben wir jetzt ~/nn/animals/animals.names.
4. Bearbeiten Sie die Datei Animals.names mit Ihrem Texteditor. Listen Sie die Kategorien auf, die Sie verwenden möchten. Sie benötigen genau einen Eintrag pro Zeile und keine Leerzeilen oder 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 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.
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. 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.
9. Stellen Sie sicher, dass Batch=64 ist.
10. Achten Sie auf Unterteilungen. 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 mit 1. Wenn 1 bei Ihnen nicht funktioniert, lesen Sie die Darknet/YOLO-FAQ.
11. Beachten Sie, dass maxbatches=.... Ein guter Wert für den Anfang ist 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.
12. Beachten Sie „steps=...“. Dies sollte auf 80 % und 90 % der maxbatches eingestellt werden. Da „maxbatches“ in diesem Beispiel auf 8000 eingestellt ist, verwenden wir „steps=6400,7200“.
13. Beachten Sie, dass width=... und height=... Dies sind Netzwerkabmessungen. Die Darknet/YOLO-FAQ erklärt, wie man die optimale Größe berechnet.
14. Durchsuchen Sie den Abschnitt [convolutional] nach allen Zeilen „classes=...“ vor dem Abschnitt [yolo] und ändern Sie sie mit der Anzahl der Klassen aus der .names-Datei. In diesem Beispiel verwenden wir „classes=4“.
15. Durchsuchen Sie alle Filter=...-Zeilen im Abschnitt [convolutional] vor jedem Abschnitt [yolo]. Der zu verwendende Wert ist (Anzahl der Kategorien + 5) 3. Das bedeutet, dass in diesem Beispiel (4 + 5) 3 = 27 ist. Daher verwenden wir filter=27 in den entsprechenden Zeilen.
Beginnen Sie mit dem Training! Führen Sie den folgenden Befehl aus:
`Bash
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:
`Bash
Darknet-Detektor -map -dont_show --verbose train Animals.data Animals.cfg
`
Weitere 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 CLI zu Darknet, um Bildkacheln und Objektverfolgung in Ihren Videos zu verwenden oder eine leistungsstarke C++-API, die problemlos in kommerziellen Anwendungen verwendet werden kann, finden Sie unter DarkHelp.
Sehen Sie nach, ob die Darknet/YOLO-FAQ Ihnen bei der Beantwortung Ihrer Frage helfen kann.
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.
Roadmap
Letzte Aktualisierung: 30.10.2024:
Vollendet
1. Ersetzen Sie qsort(), das während des Trainings verwendet wird, durch std::sort()