formation yolov3

Référence: https://github.com/AlexeyAB/darknet#how-to-train-tiny-yolo-to-detect-your-custom-objects

Comment s'entraîner (pour détecter vos objets personnalisés)

(pour former vieux Yolo v2  yolov2-voc.cfgyolov2-tiny-voc.cfgyolo-voc.cfgyolo-voc.2.0.cfg, ...  cliquer par le lien )

Formation Yolo v4 (et v3):

  1. Pour la formation,  cfg/yolov4-custom.cfg téléchargez le fichier de poids pré-entraîné (162 Mo):  yolov4.conv.137  (Google Drive  Mirror yolov4.conv.137  )

  2. Créez un fichier  yolo-obj.cfg avec le même contenu que dans  yolov4-custom.cfg (ou copiez  yolov4-custom.cfg vers  yolo-obj.cfg) et:

Alors si cela  classes=1 devrait être  filters=18. Si  classes=2 alors écrivez  filters=21.

(N'écrivez pas dans le fichier cfg: filters = (classes + 5) x3)

( filters Dépend généralement  du  classescoords et du nombre de  masks, c.-à-d. Filters = (classes + coords + 1)*<number of mask>, où  mask est les indices des ancres. Si  mask est l'absence, alors filters = (classes + coords + 1)*num)

Ainsi, par exemple, pour 2 objets, votre fichier  yolo-obj.cfg doit différer de  yolov4-custom.cfg ces lignes dans chacune des  3  couches [yolo]:

[convolutional]
filters=21

[region]
classes=2
  1. Créer un fichier  obj.names dans le répertoire  build\darknet\x64\data\, avec les noms des objets - chacun dans une nouvelle ligne

  2. Créez un fichier  obj.data dans le répertoire  build\darknet\x64\data\, contenant (où  classes = nombre d'objets ):

classes = 2
train  = data/train.txt
valid  = data/test.txt
names = data/obj.names
backup = backup/
  1. Mettez les fichiers image (.jpg) de vos objets dans le répertoire build\darknet\x64\data\obj\

  2. Vous devez étiqueter chaque objet sur les images de votre ensemble de données. Utilisez ce logiciel d'interface graphique visuelle pour marquer des boîtes délimitées d'objets et générer des fichiers d'annotation pour Yolo v2 et v3:  https://github.com/AlexeyAB/Yolo_mark

Il créera  .txt-file pour chaque  .jpg-image-file - dans le même répertoire et avec le même nom, mais avec  .txt-extension, et mettra dans le fichier: numéro d'objet et coordonnées de l'objet sur cette image, pour chaque objet en nouvelle ligne:

<object-class> <x_center> <y_center> <width> <height>

Où:

  • <object-class> - numéro d'objet entier de  0 à (classes-1)
  • <x_center> <y_center> <width> <height> - valeurs flottantes  relatives  à la largeur et à la hauteur de l'image, elles peuvent être égales à (0.0 to 1.0]
  • par exemple:  <x> = <absolute_x> / <image_width> ou <height> = <absolute_height> / <image_height>
  • atention:  <x_center> <y_center> - sont au centre du rectangle (ne sont pas le coin supérieur gauche)

Par exemple pour  img1.jpg vous sera créé  img1.txt contenant:

1 0.716797 0.395833 0.216406 0.147222
0 0.687109 0.379167 0.255469 0.158333
1 0.420312 0.395833 0.140625 0.166667
  1. Créez un fichier  train.txt dans le répertoire  build\darknet\x64\data\, avec les noms de fichiers de vos images, chaque nom de fichier en nouvelle ligne, avec le chemin relatif à  darknet.exe, contenant par exemple:
data/obj/img1.jpg
data/obj/img2.jpg
data/obj/img3.jpg
  1. Téléchargez les poids pré-entraînés pour les couches convolutives et mettez-les dans le répertoire build\darknet\x64

  2. Commencez la formation en utilisant la ligne de commande: darknet.exe detector train data/obj.data yolo-obj.cfg yolov4.conv.137

    Pour s'entraîner sur Linux, utilisez la commande:  ./darknet detector train data/obj.data yolo-obj.cfg yolov4.conv.137 (utilisez simplement à la  ./darknet place de  darknet.exe)

    • (le fichier  yolo-obj_last.weights sera enregistré dans le  build\darknet\x64\backup\ pour chaque 100 itérations)
    • (le fichier  yolo-obj_xxxx.weights sera enregistré dans le  build\darknet\x64\backup\ pour chaque 1000 itérations)
    • (pour désactiver l'utilisation de la fenêtre de perte  darknet.exe detector train data/obj.data yolo-obj.cfg yolov4.conv.137 -dont_show, si vous vous entraînez sur un ordinateur sans moniteur comme un cloud Amazon EC2)
    • (pour voir le graphique mAP & Loss pendant la formation sur un serveur distant sans interface graphique, utilisez la commande  darknet.exe detector train data/obj.data yolo-obj.cfg yolov4.conv.137 -dont_show -mjpeg_port 8090 -map puis ouvrez l'URL  http://ip-address:8090 dans le navigateur Chrome / Firefox)

8.1. Pour l'entraînement avec le calcul mAP (moyenne des précisions moyennes) pour chaque 4 époques (ensemble  valid=valid.txt ou  train.txt dans le  obj.data fichier) et exécutez: darknet.exe detector train data/obj.data yolo-obj.cfg yolov4.conv.137 -map

  1. Une fois la formation terminée - obtenir le résultat  yolo-obj_final.weights du chemin build\darknet\x64\backup\
  • Après chaque 100 itérations, vous pouvez arrêter et commencer plus tard l'entraînement à partir de ce point. Par exemple, après 2000 itérations, vous pouvez arrêter l'entraînement, puis commencer simplement l'entraînement en utilisant: darknet.exe detector train data/obj.data yolo-obj.cfg backup\yolo-obj_2000.weights

    (dans le référentiel d'origine  https://github.com/pjreddie/darknet,  le fichier de poids n'est enregistré qu'une fois toutes les 10 000 itérations  if(iterations > 1000))

  • Vous pouvez également obtenir un résultat avant les 45000 itérations.

Remarque:  si pendant l'entraînement vous voyez des  nan valeurs pour le  avg champ (perte) - alors l'entraînement se passe mal, mais s'il se  nan trouve dans d'autres lignes - alors l'entraînement se passe bien.

Remarque:  Si vous avez modifié width = ou height = dans votre fichier cfg, les nouvelles largeur et hauteur doivent être divisibles par 32.

Remarque:  après l'entraînement, utilisez cette commande pour la détection: darknet.exe detector test data/obj.data yolo-obj.cfg yolo-obj_8000.weights

Remarque:  si une erreur  Out of memory se produit, dans  .cfg-file, vous devez augmenter  subdivisions=16, 32 ou 64:  lien

Comment entraîner tiny-yolo (pour détecter vos objets personnalisés):

Faites toutes les mêmes étapes que pour le modèle yolo complet comme décrit ci-dessus. À l'exception de:

  • Téléchargez le fichier avec les 29 premières couches convolutives de yolov4-tiny:  https://github.com/AlexeyAB/darknet/releases/download/darknet_yolo_v4_pre/yolov4-tiny.conv.29  (Ou obtenez ce fichier de yolov4-tiny.weights fichier en utilisant la commande: darknet.exe partial cfg/yolov4-tiny-custom.cfg yolov4-tiny.weights yolov4-tiny.conv.29 29
  • Créez votre modèle personnalisé  yolov4-tiny-obj.cfg basé sur  cfg/yolov4-tiny-custom.cfg au lieu de yolov4.cfg
  • Commence l'entraînement: darknet.exe detector train data/obj.data yolov4-tiny-obj.cfg yolov4-tiny.conv.29

Pour l'entraînement de Yolo basé sur d'autres modèles ( DenseNet201-Yolo  ou  ResNet50-Yolo ), vous pouvez télécharger et obtenir des poids pré-entraînés comme indiqué dans ce fichier:  https://github.com/AlexeyAB/darknet/blob/master/build/ darknet / x64 / partial.cmd  Si vous avez créé votre modèle personnalisé qui n'est pas basé sur d'autres modèles, vous pouvez l'entraîner sans poids pré-entraînés, alors seront utilisés des poids initiaux aléatoires.

Pour résumer

Outre la configuration des fichiers associés, les informations pouvant être obtenues à partir du didacticiel officiel du site Web comprennent des scripts de formation, des scripts de test et des scripts de formation continue.

Script de formation:

darknet.exe detector train data/obj.data yolo-obj.cfg yolov4.conv.137

Entraînement avec affichage de la carte:

darknet.exe detector train data/obj.data yolo-obj.cfg yolov4.conv.137 -map

Utilisez ctrl + c pour terminer la formation

Script de test (en supposant que le test de formation se termine à 2000 fois):

darknet.exe detector test data/obj.data yolo-obj.cfg yolo-obj_2000.weights

(En supposant que la formation est arrêtée à partir de 2000 fois, elle est générée à ce moment yolo-obj_2000.weights) Continuez le script de formation:

darknet.exe detector train data/obj.data yolo-obj.cfg backup\yolo-obj_2000.weights

 

Je suppose que tu aimes

Origine blog.csdn.net/juluwangriyue/article/details/109164083
conseillé
Classement