Comment utiliser Ultralytics YOLOv5 avec Comet

L'équipe Ultralytics

5 minutes de lecture

11 octobre 2022

Découvrez comment Ultralytics s'associe à Comet pour l'optimisation du modèle Ultralytics YOLOv5 : suivi en temps réel, collaboration rationalisée et reproductibilité améliorée.

Chez Ultralytics, nous avons des partenariats commerciaux avec d'autres startups pour nous aider à financer la recherche et le développement de nos formidables outils open-source, comme YOLOv5, afin qu'ils restent gratuits pour tout le monde. Cet article peut contenir des liens d'affiliation vers ces partenaires.

Notre nouveau partenaire, Comet, construit des outils qui aident les scientifiques des données, les ingénieurs et les chefs d'équipe à accélérer et à optimiser l'apprentissage automatique et les modèles d'apprentissage profond.

Comet est un outil puissant de suivi de vos modèles, ensembles de données et métriques. Il enregistre même votre système et vos variables d'environnement pour garantir la reproductibilité et un débogage en douceur pour chaque exécution. C'est comme si vous disposiez d'un assistant virtuel qui, comme par magie, sait quelles notes prendre. Suivez et visualisez les métriques de vos modèles en temps réel, sauvegardez vos hyperparamètres, vos jeux de données et les points de contrôle de vos modèles, et visualisez les prédictions de vos modèles avec les panneaux personnalisés de Comet!

De plus, Comet vous permet de ne jamais perdre la trace de votre travail et facilite le partage des résultats et la collaboration au sein d'équipes de toutes tailles !

YOLOv5 est un excellent point de départ pour votre voyage dans le domaine de la vision par ordinateur. Pour améliorer les performances de votre modèle et le rendre prêt pour la production, vous devrez enregistrer les résultats dans un outil de suivi des expériences tel que Comet.

L'intégration de Comet et de YOLOv5 offre 3 caractéristiques principales :

  • Fonctionnalités d'enregistrement automatique et d'enregistrement personnalisé
  • Sauvegarde des ensembles de données et des modèles en tant qu'artefacts pour le débogage et la reproductibilité
  • Organiser votre vue avec les panneaux personnalisés de Comet


Ce guide explique comment utiliser YOLOv5 avec Comet.

Alors, prêt à suivre vos expériences en temps réel ? C'est parti !

Pour commencer

1. Installer Comet

Pip install comet_ml

2. Configuration des informations d'identification Comet

Il y a deux façons de configurer Comet avec YOLOv5.

Vous pouvez définir vos informations d'identification par le biais de variables d'environnement ou créer un fichier .comet.config dans votre répertoire de travail et y définir vos informations d'identification.


Variables d'environnement

export COMET_API_KEY=export COMET_PROJECT_NAME= # La valeur par défaut est 'yolov5'.


Fichier de configuration Comet

[comet] api_key= project_name=<Your Comet API Key># This will default to 'yolov5'

3. Exécuter le script de formation

# Train YOLOv5s on COCO128 for 5 epochspython train.py --img 640 --batch 16 --epochs 5 --data coco128.yaml --weights yolov5s.pt

C'est tout !

Comet enregistre automatiquement vos hyperparamètres, les arguments de la ligne de commande, les mesures d'entraînement et de validation. Vous pouvez visualiser et analyser vos exécutions dans l'interface utilisateur de Comet.

Expériences avec YOLOv5 dans Comet Dashboard

Essayez-le vous-même !

Cliquez ici pour voir un exemple d'exécution.

Ou mieux encore, essayez-le vous-même dans ce carnet Colab.

Enregistrement automatique

Par défaut, Comet enregistre les éléments suivants :

Métriques

  • Perte de boîte, perte d'objet et perte de classification pour les données de formation et de validation
  • mAP_0.5, mAP_0.5:0.95 pour les données de validation
  • Précision et rappel pour les données de validation

Paramètres

  • Hyperparamètres du modèle
  • Tous les paramètres transmis par les options de la ligne de commande

Visualisations

  • Matrice de confusion des prédictions du modèle sur les données de validation
  • Tracés des courbes PR et F1 pour toutes les classes
  • Corrélogramme des étiquettes de classe

Configuration de la journalisation Comet

Comet peut être configuré pour enregistrer des données supplémentaires par le biais de drapeaux de ligne de commande transmis au script d'apprentissage ou de variables d'environnement.

export COMET_MODE=online # Indique si Comet doit être exécuté en mode "en ligne" ou "hors ligne". La valeur par défaut est onlineexport COMET_MODEL_NAME= #Définit le nom du modèle sauvegardé. La valeur par défaut est yolov5export COMET_LOG_CONFUSION_MATRIX=false # Permet de désactiver l'enregistrement d'une matrice de confusion Comet. La valeur par défaut est trueexport COMET_MAX_IMAGE_UPLOADS= # Contrôle le nombre total de prédictions d'images à enregistrer dans Comet. La valeur par défaut est 100.export COMET_LOG_PER_CLASS_METRICS=true # Définit l'enregistrement des mesures d'évaluation pour chaque classe détectée à la fin de l'apprentissage. La valeur par défaut est falseexport COMET_DEFAULT_CHECKPOINT_FILENAME= # Définissez ceci si vous souhaitez reprendre la formation à partir d'un point de contrôle différent. La valeur par défaut est 'last.pt'export COMET_LOG_BATCH_LEVEL_METRICS=true # Définissez ceci si vous souhaitez enregistrer les métriques de formation au niveau du lot. La valeur par défaut est false.export COMET_LOG_PREDICTIONS=true # Mettez cette valeur à false pour désactiver l'enregistrement des prédictions de modèle.

Enregistrement des points de contrôle avec Comet

L'enregistrement des modèles dans Comet est désactivé par défaut. Pour l'activer, passez l'argument save-period au script de formation. Les points de contrôle enregistrés seront alors sauvegardés dans Comet en fonction de la valeur de l'intervalle fournie par la période de sauvegarde.

python train.py \

--img 640 \

--batch 16 \

--epochs 5 \

--data coco128.yaml \

--weights yolov5s.pt \

--save-period 1

Prédictions du modèle d'exploitation forestière

Par défaut, les prédictions du modèle (images, étiquettes de vérité terrain et boîtes de délimitation) sont enregistrées dans Comet. Vous pouvez contrôler la fréquence d'enregistrement des prédictions et des images associées en passant l'argument de ligne de commande bbox_interval. Les prédictions peuvent être visualisées à l'aide du panneau personnalisé de détection d'objets de Comet. Cette fréquence correspond à chaque Nième lot de données par époque. Dans l'exemple ci-dessous, nous enregistrons un lot de données sur deux pour chaque époque.

Note : Le chargeur de données de validation YOLOv5 utilise par défaut une taille de lot de 32, vous devrez donc définir la fréquence d'enregistrement en conséquence.

Voici un exemple de projet utilisant le Panel.

python train.py \--img 640 \--batch 16 \--epochs 5 \--data coco128.yaml \--weights yolov5s.pt \--bbox_interval 2

Contrôle du nombre d'images de prédiction transmises à Comet

Lors de l'enregistrement des prédictions de YOLOv5, Comet enregistre les images associées à chaque série de prédictions. Par défaut, un maximum de 100 images de validation sont enregistrées. Vous pouvez augmenter ou diminuer ce nombre à l'aide de la variable d'environnement COMET_MAX_IMAGE_UPLOADS.

env COMET_MAX_IMAGE_UPLOADS=200python train.py \--img 640 \--batch 16 \--epochs 5 \--data coco128.yaml \--weights yolov5s.pt \--bbox_interval 1

Enregistrement des mesures au niveau de la classe

Utilisez la variable d'environnement COMET_LOG_PER_CLASS_METRICS pour enregistrer mAP, precision, recall et f1 pour chaque classe.

env COMET_LOG_PER_CLASS_METRICS=true python train.py \--img 640 \--batch 16 \--epochs 5 \--data coco128.yaml \--weights yolov5s.pt

Téléchargement d'un jeu de données dans Comet Artifacts

Si vous souhaitez stocker vos données à l'aide de Comet Artifacts, vous pouvez le faire en utilisant l'option upload_dataset.

Le jeu de données est organisé de la manière décrite dans la documentation YOLOv5. Le fichier dataset config yaml doit suivre le même format que le fichier coco128.yaml.

python train.py \--img 640 \--batch 16 \--epochs 5 \--data coco128.yaml \--weights yolov5s.pt \--upload_dataset

Vous trouverez le jeu de données téléchargé dans l'onglet Artifacts de votre espace de travail Comet.

Onglet Comet Artifacts, YOLOv5

Vous pouvez prévisualiser les données directement dans l'interface utilisateur de Comet.

Prévisualisation des données dans Comet, YOLOv5

Les artefacts sont versionnés et permettent également d'ajouter des métadonnées sur le jeu de données. Comet enregistrera automatiquement les métadonnées de votre fichier dataset yaml.

Journaliser les métadonnées d'un fichier YAML dans Comet, YOLOv5

Utilisation d'un artefact sauvegardé

Si vous souhaitez utiliser un jeu de données provenant de Comet Artifacts, définissez la variable path dans votre fichier dataset yaml de manière à ce qu'elle pointe vers l'URL suivante de la ressource Artifact.

# contenu du fichier artifact.yaml chemin : "comet:/// :"

Transmettez ensuite ce fichier à votre script de formation de la manière suivante :

python train.py \--img 640 \--batch 16 \--epochs 5 \--data artifact.yaml \--weights yolov5s.pt

Les artefacts vous permettent également de suivre l'évolution des données au fur et à mesure qu'elles circulent dans votre flux de travail d'expérimentation. Ici, vous pouvez voir un graphique qui vous montre toutes les expériences qui ont utilisé votre jeu de données téléchargé.

Flux de travail pour l'expérimentation des comètes, YOLOv5

Reprise d'une course d'entraînement

Si votre parcours d'entraînement est interrompu pour une raison quelconque, par exemple une connexion Internet perturbée, vous pouvez reprendre le parcours en utilisant le drapeau de reprise et le chemin d'exécution Comet.

Le chemin d'exécution a le format suivant comet:////.

Cela restaurera l'exécution dans l'état où elle se trouvait avant l'interruption, ce qui inclut la restauration du modèle à partir d'un point de contrôle, la restauration de tous les hyperparamètres et arguments d'entraînement, et le téléchargement des artefacts du jeu de données Comet s'ils ont été utilisés dans l'exécution d'origine. L'exécution reprise continuera à se connecter à l'expérience existante dans l'interface utilisateur de Comet.

python train.py \--resume "comet://"

Recherche d'hyperparamètres avec l'optimiseur Comet

YOLOv5 est également intégré à l'Optimizer de Comet, ce qui facilite la visualisation des balayages d'hyperparamètres dans l'interface utilisateur de Comet.

Configuration d'un balayage de l'Optimizer

Pour configurer l'optimiseur Comet, vous devez créer un fichier JSON contenant les informations relatives au balayage.

Un fichier d'exemple a été fourni dans :

utils/loggers/comet/optimizer_config.json python utils/loggers/comet/hpo.py \--comet_optimizer_config "utils/loggers/comet/optimizer_config.json"

Le script hpo.py accepte les mêmes arguments que train.py. Si vous souhaitez passer des arguments supplémentaires à votre balayage, ajoutez-les simplement après le script.

python utils/loggers/comet/hpo.py \--comet_optimizer_config "utils/loggers/comet/optimizer_config.json" \--save-period 1 \--bbox_interval 1

Exécution d'un balayage en parallèle

comet optimizer -j utils/loggers/comet/hpo.py \utils/loggers/comet/optimizer_config.json"

Comet offre de nombreuses possibilités de visualiser les résultats de votre balayage. Jetez un coup d'œil à un projet avec un balayage terminé ici:

Visualiser les résultats du balayage dans Comet, YOLOv5

Rester en contact

Commencez à utiliser notre intégration avec Comet pour gérer, visualiser et optimiser vos modèles YOLOv5, depuis les exercices d'entraînement jusqu'au suivi de la production.

Et, bien sûr, rejoignez la communauté Ultralytics - un endroit pour poser des questions et partager des conseils sur la formation, la validation et le déploiement de YOLOv5.

Construisons ensemble le futur
de l'IA !

Commencez votre voyage avec l'avenir de l'apprentissage automatique

Commencer gratuitement
Lien copié dans le presse-papiers