
Link to this sectionYOLOv5 avec Comet#
Ce guide explique comment utiliser YOLOv5 avec Comet, un outil puissant pour le suivi, la comparaison et l'optimisation des expériences de machine learning.
Link to this sectionÀ propos de Comet#
Comet crée des outils qui aident les data scientists, les ingénieurs et les chefs d'équipe à accélérer et à optimiser leurs modèles de machine learning et de deep learning.
Suis et visualise les métriques de tes modèles en temps réel, enregistre tes hyperparamètres, tes jeux de données et tes points de contrôle de modèles, et visualise les prédictions de tes modèles avec les Comet Custom Panels ! Comet garantit que tu ne perdras jamais le fil de ton travail et facilite le partage des résultats et la collaboration au sein d'équipes de toutes tailles !
Link to this sectionPour commencer#
Link to this sectionInstaller Comet#
pip install comet_mlLink to this sectionConfigurer les identifiants Comet#
Il existe deux façons de configurer Comet avec YOLOv5.
Tu peux définir tes identifiants via des variables d'environnement :
Variables d'environnement
export COMET_API_KEY=YOUR_API_KEY
export COMET_PROJECT_NAME=YOUR_COMET_PROJECT_NAME # This will default to 'yolov5'Ou créer un fichier .comet.config dans ton répertoire de travail et y définir tes identifiants :
Fichier de configuration Comet
[comet]
api_key=YOUR_API_KEY
project_name=YOUR_COMET_PROJECT_NAME # This will default to 'yolov5'Link to this sectionExécuter le script d'entraînement#
# Train YOLOv5s on COCO128 for 5 epochs
python train.py --img 640 --batch 16 --epochs 5 --data coco128.yaml --weights yolov5s.ptC'est tout ! Comet enregistrera automatiquement tes hyperparamètres, tes arguments de ligne de commande ainsi que tes métriques d'entraînement et de validation. Tu peux visualiser et analyser tes exécutions dans l'interface Comet.

Link to this sectionEssaie un exemple !#
Découvre un exemple d'exécution terminée ici.
Ou mieux encore, essaie par toi-même dans ce Notebook Colab :
Link to this sectionEnregistrement automatique#
Par défaut, Comet enregistrera les éléments suivants :
Link to this sectionMétriques#
- Box Loss, Object Loss, Classification Loss pour les données d'entraînement et de validation
- Les métriques mAP_0.5, mAP_0.5:0.95 pour les données de validation
- Précision et Rappel pour les données de validation
Link to this sectionParamètres#
- Hyperparamètres du modèle
- Tous les paramètres transmis via les options de ligne de commande
Link to this sectionVisualisations#
- Matrice de confusion des prédictions du modèle sur les données de validation
- Graphiques des courbes PR et F1 pour toutes les classes
- Correlogramme des étiquettes de classe
Link to this sectionConfigurer la journalisation Comet#
Comet peut être configuré pour enregistrer des données supplémentaires, soit via des indicateurs de ligne de commande transmis au script d'entraînement, soit via des variables d'environnement :
export COMET_MODE=online # Set whether to run Comet in 'online' or 'offline' mode. Defaults to online
export COMET_MODEL_NAME="yolov5" # Set the name for the saved model. Defaults to yolov5
export COMET_LOG_CONFUSION_MATRIX=false # Set to disable logging a Comet Confusion Matrix. Defaults to true
export COMET_MAX_IMAGE_UPLOADS=30 # Controls how many total image predictions to log to Comet. Defaults to 100.
export COMET_LOG_PER_CLASS_METRICS=true # Set to log evaluation metrics for each detected class at the end of training. Defaults to false
export COMET_DEFAULT_CHECKPOINT_FILENAME="last.pt" # Set this if you would like to resume training from a different checkpoint. Defaults to 'last.pt'
export COMET_LOG_BATCH_LEVEL_METRICS=true # Set this if you would like to log training metrics at the batch level. Defaults to false.
export COMET_LOG_PREDICTIONS=true # Set this to false to disable logging model predictionsLink to this sectionEnregistrer les points de contrôle avec Comet#
L'enregistrement des modèles vers Comet est désactivé par défaut. Pour l'activer, transmets l'argument save-period au script d'entraînement. Cela enregistrera les points de contrôle journalisés dans Comet selon l'intervalle défini par save-period :
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--save-period 1Link to this sectionEnregistrer les prédictions du modèle#
Par défaut, les prédictions du modèle (images, étiquettes de vérité terrain et boîtes englobantes) seront enregistrées dans Comet.
Tu peux contrôler la fréquence des prédictions enregistrées et des images associées en transmettant l'argument de ligne de commande bbox_interval. Les prédictions peuvent être visualisées à l'aide du panneau personnalisé Object Detection 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.
Remarque : Le chargeur de données de validation YOLOv5 utilisera par défaut une taille de lot de 32, tu devras donc définir la fréquence d'enregistrement en conséquence.
Voici un exemple de projet utilisant le panneau
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--bbox_interval 2Link to this sectionContrôler le nombre d'images de prédiction enregistrées dans Comet#
Lors de l'enregistrement des prédictions de YOLOv5, Comet enregistrera les images associées à chaque ensemble de prédictions. Par défaut, un maximum de 100 images de validation est enregistré. Tu peux augmenter ou diminuer ce nombre à l'aide de la variable d'environnement COMET_MAX_IMAGE_UPLOADS :
env COMET_MAX_IMAGE_UPLOADS=200 python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--bbox_interval 1Link to this sectionEnregistrer les métriques par classe#
Utilise la variable d'environnement COMET_LOG_PER_CLASS_METRICS pour enregistrer la mAP, la précision, le rappel et la 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.ptLink to this sectionTélécharger un jeu de données vers les Artifacts de Comet#
Si tu souhaites stocker tes données en utilisant les Artifacts de Comet, tu peux le faire en utilisant l'indicateur upload_dataset.
Le jeu de données doit être organisé comme décrit dans la documentation YOLOv5. Le fichier de configuration yaml du jeu de données doit suivre le même format que celui du fichier coco128.yaml.
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--upload_datasetTu peux trouver le jeu de données téléchargé dans l'onglet Artifacts de ton espace de travail Comet :

Tu peux prévisualiser les données directement dans l'interface Comet :

Les artifacts sont versionnés et prennent également en charge l'ajout de métadonnées concernant le jeu de données. Comet enregistrera automatiquement les métadonnées de ton fichier yaml de jeu de données :

Link to this sectionUtiliser un Artifact enregistré#
Si tu souhaites utiliser un jeu de données à partir des Artifacts de Comet, définis la variable path dans ton fichier yaml de jeu de données pour pointer vers l'URL de ressource de l'Artifact suivante :
# Contents of artifact.yaml file
path: "comet://WORKSPACE_NAME/ARTIFACT_NAME:ARTIFACT_VERSION_OR_ALIAS"Ensuite, transmets ce fichier à ton script d'entraînement de la manière suivante :
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data artifact.yaml \
--weights yolov5s.ptLes artifacts te permettent également de suivre la lignée des données au fur et à mesure qu'elles circulent dans ton flux de travail expérimental. Ici, tu peux voir un graphique qui te montre toutes les expériences qui ont utilisé ton jeu de données téléchargé :

Link to this sectionReprendre une exécution d'entraînement#
Si ton exécution d'entraînement est interrompue pour une raison quelconque, par exemple une connexion Internet interrompue, tu peux reprendre l'exécution en utilisant l'indicateur resume et le chemin d'exécution (Run Path) de Comet.
Le chemin d'exécution a le format suivant : comet://WORKSPACE_NAME/PROJECT_NAME/EXPERIMENT_ID.
Cela restaurera l'exécution à son état 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 Artifacts du jeu de données Comet s'ils ont été utilisés lors de l'exécution initiale. L'exécution reprise continuera à se journaliser dans l'expérience existante de l'interface Comet :
python train.py \
--resume "comet://YOUR_RUN_PATH"Link to this sectionRecherche d'hyperparamètres avec l'Optimizer de Comet#
YOLOv5 est également intégré à l'Optimizer de Comet, ce qui facilite la visualisation des balayages d'hyperparamètres dans l'interface Comet.
Link to this sectionConfigurer un balayage d'Optimizer#
Pour configurer l'Optimizer de Comet, tu devras créer un fichier JSON avec les informations sur le balayage. Un exemple de fichier 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 tu souhaites transmettre des arguments supplémentaires à ton balayage, ajoute-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 1Link to this sectionVisualiser les résultats#
Comet propose plusieurs façons de visualiser les résultats de ton balayage. Jette un œil à un projet avec un balayage terminé ici.
