Cadre de détection d'objets Darknet et YOLO
Darknet est un framework de réseau neuronal open source écrit en C, C++ et CUDA. YOLO (You Only Look Once) est un système de détection de cible en temps réel de pointe qui fonctionne dans le framework Darknet.
Découvrez comment Hank.ai aide la communauté Darknet/YOLO
Annonce du Darknet V3 "Jazz"
Consultez le site Darknet/YOLO
Veuillez lire la FAQ Darknet/YOLO
Rejoignez le serveur Discord Darknet/YOLO
Papiers
1. Papier YOLOv7
2. Papier à l'échelle-YOLOv4
3. Papier YOLOv4
4. Papier YOLOv3
Informations générales
Le framework Darknet/YOLO est toujours plus rapide et plus précis que les autres frameworks et versions YOLO.
Ce framework est entièrement gratuit et open source. Vous pouvez intégrer Darknet/YOLO dans des projets et produits existants – y compris des produits commerciaux – sans licence ni frais.
Darknet V3 ("Jazz"), sorti en octobre 2024, peut exécuter avec précision des vidéos d'ensembles de données LEGO jusqu'à 1 000 FPS à l'aide des GPU NVIDIA RTX 3090, ce qui signifie que chaque image vidéo est capturée par Darknet en 1 milliseconde ou moins. /YOLO Lire, redimensionner et traiter .
Si vous avez besoin d'aide ou souhaitez discuter de Darknet/YOLO, veuillez rejoindre le serveur Discord Darknet/YOLO : https://discord.gg/zSq8rtW
La version CPU de Darknet/YOLO peut fonctionner sur des appareils simples tels que le Raspberry Pi, des serveurs cloud et de collaboration, des ordinateurs de bureau, des ordinateurs portables et des équipements de formation haut de gamme. La version GPU de Darknet/YOLO nécessite un GPU compatible CUDA de NVIDIA.
Darknet/YOLO est connu pour fonctionner correctement sous Linux, Windows et Mac. Voir les instructions de construction ci-dessous.
Version Darknet
Les outils Darknet originaux écrits par Joseph Redmon en 2013-2017 n'avaient pas de numéro de version. Nous considérons cette version comme étant 0.x.
Le prochain référentiel Darknet populaire maintenu par Alexey Bochkovskiy de 2017 à 2021 n'a pas non plus de numéro de version. Nous pensons que cette version est 1.x.
Le référentiel Darknet sponsorisé par Hank.ai et maintenu par Stéphane Charette à partir de 2023 est le premier à disposer d'une commande de version. De 2023 à fin 2024, il revient à la version 2.x « OAK ».
L’objectif est d’essayer de casser le moins possible les fonctionnalités existantes tout en se familiarisant avec la base de code.
1. Réécrivez les étapes de construction afin que nous disposions d'une manière unifiée de créer sous Windows et Linux à l'aide de CMake.
2. Convertissez la base de code pour utiliser un compilateur C++.
3. Chart.png amélioré pendant la formation.
4. Corrections de bugs et optimisations liées aux performances, principalement liées à la réduction du temps nécessaire à la formation du réseau.
La dernière branche de la base de code est la version 2.1 dans la branche v2.
La prochaine phase de développement commence mi-2024 et sortira en octobre 2024. La commande version renvoie désormais 3.x "JAZZ".
Vous pouvez toujours extraire la branche v2 précédente si vous devez exécuter la commande suivante. Veuillez nous le faire savoir afin que nous puissions étudier l'ajout de commandes manquantes.
1. Suppression de nombreuses commandes anciennes et non maintenues.
2. De nombreuses optimisations des performances, y compris les processus de formation et d'inférence.
3. L'API C traditionnelle a été modifiée ; les applications utilisant l'API Darknet d'origine devront apporter des modifications mineures : https://darknetcv.ai/api/api.html
4. Nouvelle API Darknet V3 C et C++ : https://darknetcv.ai/api/api.html
5. Nouvelles applications et exemples de code dans src-examples : https://darknetcv.ai/api/files.html
Poids pré-entraînés MSCOCO
Pour plus de commodité, plusieurs versions populaires de YOLO sont pré-entraînées sur l'ensemble de données MSCOCO. Cet ensemble de données comporte 80 catégories et peut être consulté dans le fichier texte cfg/coco.names.
Il existe plusieurs autres ensembles de données plus simples et poids pré-entraînés disponibles pour tester Darknet/YOLO, tels que LEGO Gears et Rolodex. Pour plus d’informations, consultez la FAQ Darknet/YOLO.
Les poids pré-entraînés MSCOCO peuvent être téléchargés à partir de plusieurs emplacements différents ou à partir de ce référentiel :
1. YOLOv2, novembre 2016
-YOLOv2-minuscule
-YOLOv2-complet
2. YOLOv3, mai 2018
- YOLOv3-minuscule
-YOLOv3-complet
3. YOLOv4, mai 2020
- YOLOv4-minuscule
-YOLOv4-complet
4. YOLOv7, août 2022
-YOLOv7-minuscule
-YOLOv7-complet
Les poids pré-entraînés MSCOCO sont uniquement destinés à des fins de démonstration. Les fichiers .cfg et .names correspondants pour MSCOCO se trouvent dans le répertoire cfg. Exemple de commande :
`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
`
Notez qu’il faut former son propre réseau. MSCOCO est souvent utilisé pour confirmer que tout va bien.
construire
Diverses méthodes de construction du passé (avant 2023) ont été fusionnées en une solution unifiée. Darknet nécessite C++ 17 ou supérieur, OpenCV et l'utilisation de CMake pour générer les fichiers de projet nécessaires.
Vous n'avez pas besoin de connaître le C++ pour créer, installer ou exécuter Darknet/YOLO, tout comme vous n'avez pas besoin d'être mécanicien pour conduire une voiture.
Google Colab
Les instructions de Google Colab sont les mêmes que celles de Linux. Il existe plusieurs notebooks Jupyter montrant comment effectuer certaines tâches, telles que la formation d'un nouveau réseau.
Consultez le notebook dans le sous-répertoire colab ou suivez les instructions Linux ci-dessous.
Méthode Linux CMake
Tutoriel de construction Darknet pour Linux
Facultatif : si vous disposez d'un GPU NVIDIA moderne, vous pouvez installer CUDA ou CUDA+cuDNN à ce stade. S'il est installé, Darknet utilisera votre GPU pour accélérer le traitement des images (et des vidéos).
Vous devez supprimer le fichier CMakeCache.txt dans le répertoire de construction Darknet pour forcer CMake à retrouver tous les fichiers nécessaires.
N'oubliez pas de reconstruire le Darknet.
Darknet peut être exécuté sans lui, mais si vous souhaitez former un réseau personnalisé, vous avez besoin de CUDA ou CUDA+cuDNN.
Visitez https://developer.nvidia.com/cuda-downloads pour télécharger et installer CUDA.
Visitez https://developer.nvidia.com/rdp/cudnn-download ou https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#cudnn-package-manager-installation-overview pour télécharger et installez cuDNN.
Après avoir installé CUDA, assurez-vous que vous pouvez exécuter nvcc et nvidia-smi. Vous devrez peut-être modifier la variable PATH.
Si vous installez CUDA ou CUDA+cuDNN ultérieurement, ou si vous effectuez une mise à niveau vers une version plus récente du logiciel NVIDIA, procédez comme suit :
Ces instructions supposent (mais ne nécessitent pas !) un système exécutant Ubuntu 22.04. Si vous utilisez une autre distribution, ajustez si nécessaire.
`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 package sudo dpkg -i darknet-VERSION.deb
`
Si vous utilisez une ancienne version de CMake, vous devrez mettre à niveau CMake avant d'exécuter la commande cmake ci-dessus. La mise à niveau de CMake sur Ubuntu peut être effectuée à l'aide de la commande suivante :
`bash
sudo apt-get purge cmake sudo snap install cmake --classic
`
Si vous utilisez bash comme shell de commande, vous devrez redémarrer le shell à ce moment. Si vous utilisez du poisson, il devrait immédiatement suivre le nouveau chemin.
Utilisateurs avancés :
Si vous souhaitez créer un fichier d'installation RPM au lieu d'un fichier DEB, consultez les lignes pertinentes dans CM_package.cmake. Avant d'exécuter le package make -j4, vous devez modifier ces deux lignes :
`bash
SET (CPACKGENERATOR "DEB")# SET (CPACKGENERATOR "RPM")
`
Pour les distributions telles que Centos et OpenSUSE, vous devez modifier ces deux lignes dans CM_package.cmake en :
`bash
SET (CPACKGENERATOR "DEB")SET (CPACKGENERATOR "RPM")
`
Pour installer le package d'installation, une fois celui-ci construit, utilisez le gestionnaire de packages habituel de votre distribution. Par exemple, sur un système basé sur Debian tel qu'Ubuntu :
`bash
sudo dpkg -i darknet-2.0.1-Linux.deb
`
L'installation du package .deb copiera les fichiers suivants :
1. /usr/bin/darknet est le fichier exécutable Darknet habituel. Exécutez la version darknet à partir de la CLI pour confirmer qu'elle est correctement installée.
2. /usr/include/darknet.h est l'API Darknet pour les développeurs C, C++ et Python.
3. /usr/include/darknet_version.h contient des informations de version pour les développeurs.
4. /usr/lib/libdarknet.so est une bibliothèque pour les développeurs C, C++ et Python.
5. /opt/darknet/cfg/... est l'emplacement où tous les modèles .cfg sont stockés.
Vous avez terminé maintenant ! Darknet est construit et installé dans /usr/bin/. Exécutez la commande suivante pour tester : version darknet.
Si vous n'avez pas /usr/bin/darknet, vous ne l'avez pas installé, vous venez de le construire ! Assurez-vous d'installer le fichier .deb ou .rpm comme décrit ci-dessus.
Méthodes Windows CMake
Ces instructions supposent une nouvelle installation de Windows 11 22H2.
Ouvrez une fenêtre d'invite de commande cmd.exe normale et exécutez la commande suivante :
`bash
Winget installe Git.Git Winget installe Kitware.CMake Winget installe nsis.nsis Winget installe Microsoft.VisualStudio.2022.Community
`
À ce stade, nous devons modifier l'installation de Visual Studio pour inclure la prise en charge des applications C++ :
1. Cliquez sur le menu Démarrer de Windows et exécutez le programme d'installation de Visual Studio.
2. Cliquez sur Modifier.
3. Choisissez le développement de bureau en utilisant C++.
4. Cliquez sur « Modifier » dans le coin inférieur droit, puis cliquez sur « Oui ».
Une fois que tout est téléchargé et installé, cliquez à nouveau sur le menu Démarrer de Windows et sélectionnez Invite de commandes du développeur pour VS 2022. N'utilisez pas PowerShell pour effectuer ces étapes, vous rencontrerez des problèmes !
Utilisateurs avancés :
Au lieu d'exécuter l'invite de commande du développeur, vous pouvez utiliser une invite de commande normale ou vous connecter à l'appareil à l'aide de ssh et exécuter manuellement « Program FilesMicrosoft Visual Studio2022CommunityCommon7ToolsVsDevCmd.bat ».
Une fois que l'invite de commande du développeur s'exécute comme décrit ci-dessus (pas PowerShell !), exécutez la commande suivante pour installer Microsoft VCPKG, puis utilisez-la pour créer OpenCV :
`bash
cd c: mkdir c: srccd c: src git clone https://github.com/microsoft/vcpkgcd vcpkg bootstrap-vcpkg.bat .vcpkg.exe intégrer l'installation .vcpkg.exe intégrer l'installation powershell.vcpkg.exe opencv[contrib,dnn,freetype,jpeg,openmp,png,webp,world]:x64-windows
`
Soyez patient avec cette dernière étape car son exécution peut prendre beaucoup de temps. Cela nécessite de télécharger et de créer beaucoup de choses.
Utilisateurs avancés :
Notez qu'il existe de nombreux autres modules facultatifs que vous souhaiterez peut-être ajouter lors de la création d'OpenCV. Exécutez la recherche .vcpkg.exe opencv pour voir la liste complète.
Facultatif : si vous disposez d'un GPU NVIDIA moderne, vous pouvez installer CUDA ou CUDA+cuDNN à ce stade. S'il est installé, Darknet utilisera votre GPU pour accélérer le traitement des images (et des vidéos).
Vous devez supprimer le fichier CMakeCache.txt dans le répertoire de construction Darknet pour forcer CMake à retrouver tous les fichiers nécessaires.
N'oubliez pas de reconstruire le Darknet.
Darknet peut être exécuté sans lui, mais si vous souhaitez former un réseau personnalisé, vous avez besoin de CUDA ou CUDA+cuDNN.
Visitez https://developer.nvidia.com/cuda-downloads pour télécharger et installer CUDA.
Visitez https://developer.nvidia.com/rdp/cudnn-download ou https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#download-windows pour télécharger et installer cuDNN.
Après avoir installé CUDA, assurez-vous de pouvoir exécuter nvcc.exe et nvidia-smi.exe. Vous devrez peut-être modifier la variable PATH.
Après avoir téléchargé cuDNN, décompressez et copiez les répertoires bin, include et lib dans C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/[version]/. Vous devrez peut-être écraser certains fichiers.
Si vous installez CUDA ou CUDA+cuDNN ultérieurement, ou si vous effectuez une mise à niveau vers une version plus récente du logiciel NVIDIA, procédez comme suit :
CUDA doit être installé après Visual Studio. Si vous mettez à niveau Visual Studio, n'oubliez pas de réinstaller CUDA.
Une fois toutes les étapes précédentes terminées avec succès, vous devez cloner Darknet et le créer. Dans cette étape, nous devons également indiquer à CMake où se trouve vcpkg afin qu'il puisse trouver OpenCV et d'autres dépendances :
`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
`
Si vous recevez une erreur concernant une DLL CUDA ou cuDNN manquante (telle que cublas64_12.dll), copiez manuellement le fichier CUDA .dll dans le même répertoire de sortie que Darknet.exe. Par exemple:
`bash
copier "C: Program FilesNVIDIA GPU Computing ToolkitCUDAv12.2bin*.dll" src-cliRelease
`
(Ceci est un exemple ! Veuillez vérifier la version que vous utilisez et exécutez la commande appropriée pour ce que vous avez installé.)
Après avoir copié les fichiers, réexécutez la dernière commande msbuild.exe pour générer le package d'installation NSIS :
`bash
msbuild.exe /property:Platform=x64;Configuration=Release PACKAGE.vcxproj
`
Utilisateurs avancés :
Notez que la sortie de la commande cmake est un fichier de solution Visual Studio normal, Darknet.sln. Si vous êtes un développeur de logiciels qui utilise fréquemment l'interface graphique de Visual Studio au lieu de msbuild.exe pour créer des projets, vous pouvez ignorer la ligne de commande et charger le projet Darknet dans Visual Studio.
Vous devriez maintenant avoir le fichier suivant que vous pouvez exécuter : C:srcDarknetbuildsrc-cliReleasedarknet.exe. Exécutez la commande suivante pour tester : version C:srcDarknetbuildsrc-cliReleasedarknet.exe.
Pour installer correctement Darknet, les bibliothèques, les fichiers d'inclusion et les DLL nécessaires, exécutez l'assistant d'installation NSIS créé à la dernière étape. Vérifiez le fichier darknet-VERSION.exe dans le répertoire de construction. Par exemple:
`bash
darknet-2.0.31-win64.exe
`
L'installation du package d'installation NSIS :
1. Créez un répertoire nommé Darknet, par exemple C:Program FilesDarknet.
2. Installez l'application CLI, darknet.exe et d'autres exemples d'applications.
3. Installez les fichiers .dll tiers requis, tels que ceux d'OpenCV.
4. Installez les fichiers Darknet .dll, .lib et .h nécessaires pour utiliser darknet.dll à partir d'une autre application.
5. Installez le fichier modèle .cfg.
Vous avez terminé maintenant ! Une fois l'assistant d'installation terminé, Darknet sera installé dans C:Program FilesDarknet. Exécutez la commande suivante pour tester : version C:Program FilesDarknetbindarknet.exe.
Si vous n'avez pas C:/Program Files/darknet/bin/darknet.exe, vous ne l'avez pas installé, vous venez de le construire ! Assurez-vous de remplir chaque panneau de l'assistant d'installation NSIS comme décrit dans les étapes précédentes.
Utiliser le Darknet
CLI
Ce qui suit n'est pas une liste complète de toutes les commandes prises en charge par Darknet.
En plus de la CLI Darknet, veuillez noter la CLI du projet DarkHelp, qui offre une alternative à la CLI Darknet/YOLO. DarkHelp CLI possède également plusieurs fonctionnalités avancées non directement disponibles dans Darknet. Vous pouvez utiliser Darknet CLI et DarkHelp CLI ensemble, ils ne s'excluent pas mutuellement.
Pour la plupart des commandes présentées ci-dessous, vous avez besoin d'un fichier .weights avec les fichiers .names et .cfg correspondants. Vous pouvez soit former votre propre réseau (fortement recommandé !), soit télécharger sur Internet un réseau neuronal formé par d’autres et disponible gratuitement. Voici des exemples d'ensembles de données de pré-formation :
1. LEGO Gears (trouver des objets dans les images)
2. Rolodex (trouver du texte dans l'image)
3. MSCOCO (détection de cible standard de catégorie 80)
Les commandes à exécuter incluent :
Répertoriez quelques commandes et options pouvant être exécutées :
`bash
aide sur le darknet
`
Vérifier la version :
`bash
version darknet
`
Utilisez des images pour faire des prédictions :
V2 :
`bash
Test du détecteur darknet cars.data cars.cfg cars_best.weights image1.jpg
`
V3 :
`bash
darknet02displayannotatedimages cars.cfg image1.jpg
`
Aide sombre :
`bash
DarkHelp cars.cfg cars.cfg cars_best.weights image1.jpg
`
Coordonnées de sortie :
V2 :
`bash
test du détecteur darknet animaux.data animaux.cfg animauxbest.weights -extoutput dog.jpg
`
V3 :
`bash
darknet01inference_images animaux chien.jpg
`
Aide sombre :
`bash
DarkHelp --json animaux.cfg animaux.names animaux_best.weights chien.jpg
`
Utiliser la vidéo :
V2 :
`bash
Démo du détecteur darknet animaux.data animaux.cfg animauxbest.weights -extoutput test.mp4
`
V3 :
`bash
darknet03display_videos animaux.cfg test.mp4
`
Aide sombre :
`bash
DarkHelp animaux.cfg animaux.names animaux_best.weights test.mp4
`
Lecture depuis la webcam :
V2 :
`bash
Démo du détecteur darknet animaux.data animaux.cfg animaux_best.weights -c 0
`
V3 :
`bash
darknet08display_webcam animaux
`
Enregistrer les résultats dans une vidéo :
V2 :
`bash
Démo du détecteur darknet animaux.data animaux.cfg animauxbest.weights test.mp4 -outfilename res.avi
`
V3 :
`bash
darknet05processvideosmultithreaded animaux.cfg animaux.noms animaux_best.weights test.mp4
`
Aide sombre :
`bash
DarkHelp animaux.cfg animaux.names animaux_best.weights test.mp4
`
JSON :
V2 :
`bash
Démo du détecteur darknet animaux.data animaux.cfg animauxbest.weights test50.mp4 -jsonport 8070 -mjpegport 8090 -extoutput
`
V3 :
`bash
darknet06imagestojson animaux image1.jpg
`
Aide sombre :
`bash
DarkHelp --json animaux.names animaux.cfg animaux_best.weights image1.jpg
`
Exécuter sur un GPU spécifique :
V2 :
`bash
Démo du détecteur darknet animaux.data animaux.cfg animaux_best.weights -i 1 test.mp4
`
Pour vérifier l'exactitude du réseau neuronal :
`bash
Carte du détecteur Darknet Driving.data Driving.cfg Driving_best.weights ... Id Nom AvgPrecision TP FN FP TN Précision ErrorRate Précision Rappel Spécificité FalsePosRate -- ---- ------------ ---- -- ------ ------ ------ -------- --------- --------- ---- -- ----------- ------- 0 véhicule 91.2495 32648 3903 5826 65129 0,9095 0,0905 0,8486 0,8932 0,9179 0,0821 1 moto 80,4499 2936 513 569 5393 0,8850 0,1150 0,8377 0,8513 0,9046 0,0954 2 vélo 89,0912 570 124 104 3548 0,9475 0,0525 0,8457 0,8213 0,9715 0,0285 3 personnes 76,7937 7072 1727 2574 27523 0,8894 0,1106 0,7332 0,8037 0,9145 0,0855 4 nombreux véhicules 64,3089 1068 509 733 11288 0,9087 0,0913 0,5930 0,6772 0,9390 0,0610 5 feu vert 86,8118 1969 239 510 4116 0,8904 0,1096 0,7943 0,8918 0,8898 0,1102 6 jaune clair 82,0390 126 38 30 1239 0,9525 0,0475 0,8077 0,7683 0,9764 0,0236 7 feu rouge 94,1033 3449 217 451 4643 0,9237 0,0763 0,8844 0,9408 0,9115 0,0885
`
Pour vérifier l'exactitude de mAP@IoU=75 :
`bash
carte du détecteur darknet animaux.data animaux.cfg animauxbest.weights -iouthresh 0,75
`
Il est préférable de recalculer les points d'ancrage dans DarkMark, car il s'exécutera 100 fois de suite et sélectionnera le meilleur point d'ancrage parmi tous les points d'ancrage calculés. Mais si vous souhaitez exécuter une ancienne version dans Darknet, procédez comme suit :
`bash
détecteur darknet calcanchors animaux.data -numof_clusters 6 -largeur 320 -hauteur 256
`
Former un nouveau réseau :
`bash
darknet detector -map -dont_show train cats.data cats.cfg (voir également la section formation ci-dessous)
`
former
Liens rapides vers les sections pertinentes de la FAQ Darknet/YOLO :
1. Comment dois-je configurer mes fichiers et répertoires ?
2. Quel profil dois-je utiliser ?
3. Quelle commande devez-vous utiliser lors de la formation de votre propre réseau ?
Utiliser DarkMark pour créer tous les fichiers Darknet nécessaires est le moyen le plus simple d'annoter et de former. C'est certainement la méthode recommandée pour former de nouveaux réseaux de neurones.
Si vous souhaitez configurer manuellement les différents fichiers pour entraîner un réseau personnalisé, procédez comme suit :
1. Créez un nouveau dossier pour stocker ces fichiers. Pour cet exemple, un réseau de neurones sera créé pour détecter les animaux, donc le répertoire suivant sera créé : ~/nn/animals/.
2. Copiez l'un des fichiers de configuration Darknet que vous souhaitez utiliser comme modèle. Par exemple, consultez cfg/yolov4-tiny.cfg. Placez-le dans le dossier que vous avez créé. Pour cet exemple, nous avons maintenant ~/nn/animals/animals.cfg.
3. Créez un fichier texte animaux.names dans le même dossier où vous avez placé le fichier de configuration. Pour cet exemple, nous avons maintenant ~/nn/animals/animals.names.
4. Utilisez votre éditeur de texte pour modifier le fichier animaux.names. Répertoriez les catégories que vous souhaitez utiliser. Vous avez besoin d'exactement une entrée par ligne, pas de lignes vides et pas de commentaires. Pour cet exemple, le fichier .names contiendra exactement 4 lignes :
`
chien
chat
oiseau
cheval
`
5. Créez un fichier texte animaux.data dans le même dossier. Pour cet exemple, le fichier .data contiendra :
`
cours = 4
train = /home/username/nn/animals/animals_train.txt
valide = /home/username/nn/animals/animals_valid.txt
noms = /home/username/nn/animaux/animaux.names
sauvegarde = /home/nom d'utilisateur/nn/animaux
`
6. Créez un dossier pour stocker vos images et annotations. Par exemple, cela pourrait être ~/nn/animals/dataset. Chaque image nécessite un fichier .txt correspondant décrivant les annotations de cette image. Le format des fichiers de commentaires .txt est très spécifique. Vous ne pouvez pas créer ces fichiers manuellement car chaque annotation doit contenir les coordonnées exactes de l'annotation. Consultez DarkMark ou un autre logiciel similaire pour annoter vos images. Le format d'annotation YOLO est décrit dans la FAQ Darknet/YOLO.
7. Créez les fichiers texte « train » et « valide » nommés dans le fichier .data. Ces deux fichiers texte doivent lister toutes les images que Darknet doit utiliser respectivement pour la formation et la validation mAP%. Il y a exactement une image par ligne. Les chemins et les noms de fichiers peuvent être relatifs ou absolus.
8. Utilisez un éditeur de texte pour modifier votre fichier .cfg.
- Assurez-vous que batch=64.
- Faites attention aux subdivisions. En fonction de la taille du réseau et de la quantité de mémoire disponible sur le GPU, vous devrez peut-être augmenter les subdivisions. La valeur optimale est 1, alors commencez par cela. Si 1 ne fonctionne pas pour vous, consultez la FAQ Darknet/YOLO.
- Notez maxbatches=.... Au début, une bonne valeur est 2000 pour le nombre de catégories. Pour cet exemple nous avons 4 animaux, donc 4 2000 = 8000. Cela signifie que nous utiliserons maxbatches=8000.
- Notez les étapes =.... Cela doit être défini sur 80 % et 90 % des lots maximum. Pour cet exemple, nous utiliserons steps=6400,7200 puisque maxbatches est défini sur 8000.
- Notez que width=... et height=.... ce sont des dimensions de réseau. La FAQ Darknet/YOLO explique comment calculer la taille optimale à utiliser.
- Dans chaque section [yolo] précédant la section [convolutionnelle], recherchez toutes les instances de lignes filters=.... La valeur à utiliser est (nombre de catégories + 5) 3. Cela signifie que pour cet exemple, (4 + 5) 3 = 27. Par conséquent, nous utilisons filters=27 sur les lignes appropriées.
9. Commencez la formation ! Exécutez la commande suivante :
`bash
cd ~/nn/animaux/
détecteur darknet -map -dont_show train animaux.data animaux.cfg
`
Sois patient. Les meilleurs poids seront enregistrés sous le nom animaux_best.weights. Vous pouvez observer la progression de la formation en consultant le fichier chart.png. Consultez la FAQ Darknet/YOLO pour connaître les paramètres supplémentaires que vous souhaiterez peut-être utiliser lors de la formation d'un nouveau réseau.
- Si vous souhaitez voir plus de détails pendant l'entraînement, ajoutez le paramètre --verbose. Par exemple:
`bash
détecteur darknet -map -dont_show --verbose train animaux.data animaux.cfg
`
Autres outils et liens
Pour gérer votre projet Darknet/YOLO, annoter des images, valider vos annotations et générer les fichiers nécessaires à la formation avec Darknet, voir DarkMark.
Pour une puissante CLI alternative au Darknet pour l'assemblage d'images, le suivi d'objets dans des vidéos ou une puissante API C++ qui peut être facilement utilisée dans des applications commerciales, consultez DarkHelp.
Consultez la FAQ Darknet/YOLO pour voir si elle peut vous aider à répondre à votre question.
Découvrez les nombreux tutoriels et exemples de vidéos sur la chaîne YouTube de Stéphane
Si vous avez des questions d'assistance ou souhaitez discuter avec d'autres utilisateurs de Darknet/YOLO, veuillez rejoindre le serveur Discord Darknet/YOLO.
feuille de route
Dernière mise à jour : 2024-10-30 :
Complété
1. Remplacez qsort() par std::sort() pendant la formation (un autre code obscur existe toujours)
2. Supprimez check_mistakes, getchar() et system()
3. Convertissez Darknet pour utiliser un compilateur C++ (g++ sous Linux, Visual Studio sous Windows)
4. Corriger la version de Windows
5. Correction de la prise en charge de Python
6. Créez une bibliothèque darknet
7. Réactiver les labels sur les prédictions (code "alphabet")
8. Réactivez le code CUDA/GPU
9. Réactivez CUDNN
10. Réactivez la moitié CUDNN
11. Ne codez pas en dur l'architecture CUDA
12. Meilleures informations sur la version CUDA
13. Réactivez AVX
14. Supprimez l'ancienne solution et le Makefile
15. Rendre OpenCV non facultatif
16. Supprimer la dépendance à l'ancienne bibliothèque pthread
17. Supprimer le STB
18. Réécrivez CMakeLists.txt pour utiliser la nouvelle instrumentation CUDA
19. Supprimez l'ancien code "alphabet" et supprimez plus de 700 images dans les données/étiquettes
20. Construire au-delà du code source
21. Avoir une meilleure sortie du numéro de version
22. Optimisation des performances liées à la formation (tâches continues)
23. Optimisation des performances liées à l'inférence (tâches en cours)
24. Utilisez des références par valeur autant que possible
25. Nettoyer les fichiers .hpp
26. Réécrire darknet.h
27. Ne convertissez pas cv::Mat en void*, utilisez-le plutôt comme un objet C++ correct
28. Corriger ou conserver les structures d'image internes utilisées de manière cohérente
29. Correction de la version pour les appareils Jetson basés sur ARM
- Il est peu probable que les appareils Jetson d'origine soient réparés car ils ne sont plus pris en charge par NVIDIA (pas de compilateur C++17)
- Nouvel appareil Jetson Orin en cours d'exécution
30. Correction de l'API Python dans la V3
31. Une meilleure prise en charge de Python est nécessaire (des développeurs Python veulent-ils de l'aide ?)
objectifs à court terme
1. Remplacez printf() par std::cout (travail en cours)
2. Enquêter sur l'ancien support de l'appareil photo Zed
3. Analyse de ligne de commande meilleure et plus cohérente (travail en cours)
objectifs à moyen terme
1. Supprimez tous les codes char* et remplacez-les par std :: string
2. Ne masquez pas les avertissements et nettoyez les avertissements du compilateur (en cours)
3. Meilleure utilisation de cv::Mat au lieu des structures d'images personnalisées en C (travail en cours)
4. Remplacez l'ancienne fonctionnalité de liste par std :: vector ou std :: list
5. Correction de la prise en charge des images en niveaux de gris à 1 canal
6. Ajoutez la prise en charge des images à canal N où N > 3 (par exemple, images avec une profondeur supplémentaire ou des canaux chauds)
7. Nettoyage du code en cours (en cours)
objectifs à long terme
1. Résoudre les problèmes CUDA/CUDNN sur tous les GPU
2. Réécrivez le code CUDA+cuDNN
3. Étudiez l'ajout de la prise en charge des GPU non NVIDIA
4. Boîte englobante pivotée, ou une sorte de support « d'angle »
5. Points clés/squelette
6. Carte thermique (en cours)
7. Diviser