Skip to content

Former des données personnalisées

📚 Ce guide explique comment former ton propre ensemble de données personnalisé avec . YOLOv5 🚀.

Avant de commencer

Clone le repo et installe le fichier requirements.txt dans un fichier Python>=3.8.0 incluant PyTorch>=1.8. Les modèles et les ensembles de données se téléchargent automatiquement à partir de la dernièreversion de YOLOv5 .

git clone https://github.com/ultralytics/yolov5  # clone
cd yolov5
pip install -r requirements.txt  # install

Formation sur les données personnalisées

Ultralytics apprentissage actif

La création d'un modèle personnalisé pour détecter tes objets est un processus itératif de collecte et d'organisation d'images, d'étiquetage de tes objets d'intérêt, d'entraînement d'un modèle, de déploiement dans la nature pour faire des prédictions, puis d'utilisation de ce modèle déployé pour collecter des exemples de cas limites à répéter et à améliorer.

Licence

Ultralytics propose deux options de licence :

Pour plus de détails, voir Ultralytics Licences.

YOLOv5 doivent être formés sur des données étiquetées afin d'apprendre les classes d'objets dans ces données. Il existe deux options pour créer ton ensemble de données avant de commencer la formation :

Option 1 : Créer un Roboflow jeu de données

1.1 Collecte des images

Ton modèle apprendra par l'exemple. S'entraîner sur des images similaires à celles qu'il verra dans la nature est de la plus haute importance. Idéalement, tu recueilleras une grande variété d'images à partir de la même configuration (caméra, angle, éclairage, etc.) que celle dans laquelle tu déploieras finalement ton projet.

Si ce n'est pas possible, tu peux partir d'un ensemble de données publiques pour entraîner ton modèle initial, puis échantillonner des images de la nature pendant l'inférence pour améliorer ton ensemble de données et ton modèle de façon itérative.

1.2 Créer des étiquettes

Une fois que tu auras collecté des images, tu devras annoter les objets d'intérêt afin de créer une vérité de base à partir de laquelle ton modèle pourra apprendre.

YOLOv5 Précisions

Roboflow Annotate est un outil Web simple pour gérer et étiqueter tes images avec ton équipe et les exporter dans le format d'annotation deYOLOv5.

1.3 Préparer l'ensemble des données pour YOLOv5

Que tu étiquètes tes images avec Roboflow ou non, tu peux l'utiliser pour convertir ton jeu de données au format YOLO , créer un fichier de configuration YAML YOLOv5 et l'héberger pour l'importer dans ton script de formation.

Crée un compte gratuit sur Roboflow et télécharge ton jeu de données dans un Public étiquette toutes les images non annotées, puis génère et exporte une version de ton jeu de données dans YOLOv5 Pytorch format.

Remarque : YOLOv5 effectue une augmentation en ligne pendant la formation, il n'est donc pas recommandé d'appliquer les étapes d'augmentation de Roboflow pour la formation avec YOLOv5. Mais nous recommandons d'appliquer les étapes de prétraitement suivantes :

Étapes de prétraitement recommandées

  • Auto-Orient - pour supprimer l'orientation EXIF de tes images.
  • Redimensionner (étirer) - à la taille d'entrée carrée de ton modèle (640x640 est la valeur par défaut de YOLOv5 ).

La génération d'une version te donnera un instantané de ton jeu de données, de sorte que tu pourras toujours revenir en arrière et comparer tes futurs cycles d'apprentissage du modèle avec celui-ci, même si tu ajoutes d'autres images ou si tu modifies sa configuration ultérieurement.

Exporter au format YOLOv5

Exporter en YOLOv5 Pytorch puis copie l'extrait dans ton script d'entraînement ou dans ton carnet de notes pour télécharger ton jeu de données.

Roboflow téléchargement du jeu de données snippet

Option 2 : Créer un jeu de données manuel

2.1 Créer dataset.yaml

COCO128 est un exemple d'ensemble de données de petits tutoriels composé des 128 premières images de la page d'accueil. COCO train2017. Ces mêmes 128 images sont utilisées pour l'entraînement et la validation afin de vérifier que notre pipeline d'entraînement est capable de s'adapter de manière excessive. data/coco128.yamlLe fichier de configuration du jeu de données, illustré ci-dessous, définit 1) le répertoire racine du jeu de données. path et les chemins relatifs à train / val / test répertoires d'images (ou *.txt avec les chemins d'accès aux images) et 2) une classe names dictionnaire :

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: ../datasets/coco128  # dataset root dir
train: images/train2017  # train images (relative to 'path') 128 images
val: images/train2017  # val images (relative to 'path') 128 images
test:  # test images (optional)

# Classes (80 COCO classes)
names:
  0: person
  1: bicycle
  2: car
  # ...
  77: teddy bear
  78: hair drier
  79: toothbrush

2.2 Créer des étiquettes

Après avoir utilisé un outil d'annotation pour étiqueter tes images, exporte tes étiquettes vers YOLO formatavec un *.txt par image (s'il n'y a pas d'objets dans l'image, aucun fichier n'est nécessaire). *.txt est nécessaire). Les *.txt Les spécifications du fichier sont les suivantes :

  • Une ligne par objet
  • Chaque ligne est class x_center y_center width height format.
  • Les coordonnées de la boîte doivent être dans xywh normalisé (de 0 à 1). Si tes cases sont en pixels, divise x_center et width par la largeur de l'image, et y_center et height par la hauteur de l'image.
  • Les numéros de classe sont indexés par zéro (ils commencent à 0).

Roboflow annotations

Le fichier d'étiquettes correspondant à l'image ci-dessus contient 2 personnes (classe 0) et une égalité (classe 27) :

Roboflow prétraitement du jeu de données

2.3 Organiser les répertoires

Organise ton train et valide les images et les étiquettes selon l'exemple ci-dessous. YOLOv5 assume. /coco128 se trouve à l'intérieur d'un /datasets répertoire à côté de les /yolov5 répertoire. YOLOv5 localise automatiquement les étiquettes pour chaque image en remplaçant la dernière instance de /images/ dans chaque chemin d'image avec /labels/. Par exemple :

../datasets/coco128/images/im0.jpg  # image
../datasets/coco128/labels/im0.txt  # label

YOLOv5 structure du jeu de données

3. Sélectionne un modèle

Sélectionne un modèle pré-entraîné pour commencer l'entraînement. Ici, nous choisissons YOLOv5s, le deuxième modèle le plus petit et le plus rapide disponible. Voir notre tableau README pour une comparaison complète de tous les modèles.

YOLOv5 modèles

4. Train

Entraîne un modèle YOLOv5s sur COCO128 en spécifiant le jeu de données, la taille du lot, la taille de l'image et l'un ou l'autre des modèles pré-entraînés. --weights yolov5s.pt (recommandé), ou initialisé de façon aléatoire --weights '' --cfg yolov5s.yaml (non recommandé). Les poids pré-entraînés sont téléchargés automatiquement à partir de la base de données Dernière version de YOLOv5.

python train.py --img 640 --epochs 3 --data coco128.yaml --weights yolov5s.pt

Astuce

💡 Ajouter --cache ram ou --cache disk pour accélérer la formation (nécessite d'importantes ressources en mémoire vive et en disque).

Astuce

💡 Entraîne-toi toujours à partir d'un ensemble de données local. Les disques montés ou en réseau comme Google Drive seront très lents.

Tous les résultats de l'entraînement sont enregistrés dans runs/train/ avec des répertoires d'exécution incrémentés, c'est-à-dire runs/train/exp2, runs/train/exp3 etc. Pour plus de détails, consulte la section Formation de notre cahier de tutoriels. Open In Colab Ouvrir dans Kaggle

5. Visualise

Comet Journalisation et visualisation 🌟 NOUVEAU

Comet est maintenant entièrement intégré à YOLOv5. Suis et visualise les mesures du modèle en temps réel, enregistre tes hyperparamètres, tes ensembles de données et les points de contrôle du modèle, et visualise les prédictions de ton modèle avec Comet Custom Panels! Comet t'assure de ne jamais perdre le fil de ton travail et facilite le partage des résultats et la collaboration au sein d'équipes de toutes tailles !

Pour commencer, c'est facile :

pip install comet_ml  # 1. install
export COMET_API_KEY=<Your API Key>  # 2. paste API key
python train.py --img 640 --epochs 3 --data coco128.yaml --weights yolov5s.pt  # 3. train

Pour en savoir plus sur toutes les fonctionnalités de Comet prises en charge pour cette intégration, consulte la rubrique Comet Tutoriel. Si tu souhaites en savoir plus sur Comet, rends-toi sur notre site Web. documentation. Commence par essayer le carnet de notes Comet Colab : Open In Colab

YOLO UI

ClearML Journalisation et automatisation 🌟 NOUVEAU

ClearML est complètement intégré à YOLOv5 pour suivre tes expériences, gérer les versions des jeux de données et même exécuter à distance des séries d'entraînement. Pour activer ClearML:

  • pip install clearml
  • courir clearml-init pour se connecter à un serveur ClearML

Tu bénéficieras de toutes les fonctionnalités attendues d'un gestionnaire d'expériences : mises à jour en direct, téléchargement de modèles, comparaison d'expériences, etc. mais ClearML suit également les changements non validés et les paquets installés, par exemple. Grâce à cela, ClearML Tasks (c'est ainsi que nous appelons les expériences) est également reproductible sur différentes machines ! Avec seulement une ligne supplémentaire, nous pouvons programmer une tâche d'entraînement YOLOv5 sur une file d'attente qui sera exécutée par un nombre quelconque d'agents ClearML (travailleurs).

Tu peux utiliser ClearML Data pour versionner ton jeu de données, puis le transmettre à YOLOv5 en utilisant simplement son identifiant unique. Cela t'aidera à garder une trace de tes données sans te compliquer la vie. Explore le tutoriel ClearML pour plus de détails !

ClearML Interface utilisateur pour la gestion des expériences

Enregistrement local

Les résultats de l'entraînement sont automatiquement enregistrés avec Tensorboard et CSV des bûcherons à runs/trainUn nouveau répertoire d'expériences est créé pour chaque nouvelle formation. runs/train/exp2, runs/train/exp3, etc.

Ce répertoire contient des statistiques sur les trains et les val, des mosaïques, des étiquettes, des prédictions et des mosaïques augmentées, ainsi que des mesures et des graphiques comprenant des courbes de précision-rappel (PR) et des matrices de confusion.

Résultats de l'abattage local

Fichier de résultats results.csv est mis à jour après chaque époque, puis représenté sous la forme de results.png (ci-dessous) une fois la formation terminée. Tu peux aussi tracer n'importe quel results.csv manuellement :

from utils.plots import plot_results

plot_results('path/to/results.csv')  # plot 'results.csv' as 'results.png'

résultats.png

Prochaines étapes

Une fois que ton modèle est entraîné, tu peux utiliser ton meilleur point de contrôle. best.pt à :

  • Exécute CLI ou Python inférence sur de nouvelles images et vidéos
  • Valide la précision sur les splits de train, de val et de test.
  • Exporte vers les formats TensorFlow, Keras, ONNX, TFlite, TF.js, CoreML et TensorRT .
  • Faire évoluer les hyperparamètres pour améliorer les performances
  • Améliore ton modèle en échantillonnant des images du monde réel et en les ajoutant à ton ensemble de données.

Environnements pris en charge

Ultralytics fournit une gamme d'environnements prêts à l'emploi, chacun préinstallé avec des dépendances essentielles telles que CUDA, CUDNN, Pythonet PyTorchpour lancer tes projets.

Statut du projet

YOLOv5 CI

Ce badge indique que tous les tests d'intégration continue (CI) de YOLOv5 GitHub Actions sont passés avec succès. Ces tests CI vérifient rigoureusement la fonctionnalité et les performances de YOLOv5 sur différents aspects clés : entraînement, validation, inférence, exportation et benchmarks. Ils garantissent un fonctionnement cohérent et fiable sur macOS, Windows et Ubuntu, avec des tests effectués toutes les 24 heures et à chaque nouveau commit.



Créé le 2023-11-12, Mis à jour le 2024-01-21
Auteurs : glenn-jocher (11)

Commentaires