YOLOv5 avec Comet
Ce guide expliquera comment utiliser YOLOv5 avec Comet, un outil puissant pour suivre, comparer et optimiser les expériences d'apprentissage automatique.
À 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 les modèles d'apprentissage automatique et d'apprentissage profond.
Suivez et visualisez les métriques de modèle en temps réel, enregistrez vos hyperparamètres, ensembles de données et points de contrôle de modèle, et visualisez vos prédictions de modèle avec les panneaux personnalisés Comet ! Comet vous assure de ne jamais perdre la trace de votre travail et facilite le partage des résultats et la collaboration entre des équipes de toutes tailles !
Démarrage
Installer Comet
pip install comet_ml
Configurer les informations d'identification Comet
Il existe deux façons de configurer Comet avec YOLOv5.
Vous pouvez également définir vos informations d'identification 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 .comet.config
fichier dans votre répertoire de travail et définissez vos informations d'identification à cet endroit :
Fichier de configuration Comet
[comet]
api_key=YOUR_API_KEY
project_name=YOUR_COMET_PROJECT_NAME # This will default to 'yolov5'
Exé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.pt
C'est tout ! Comet enregistrera automatiquement vos hyperparamètres, les arguments de ligne de commande, les métriques d'entraînement et de validation. Vous pouvez visualiser et analyser vos exécutions dans l'interface utilisateur de Comet.
Essayez un exemple !
Consultez un exemple d’exécution terminée ici.
Mieux encore, essayez-le vous-même dans ce notebook Colab :
Enregistrer automatiquement
Par défaut, Comet enregistre les éléments suivants :
Métriques
- Perte de la bounding box, perte de l'objet, perte de classification pour les données d'entraînement et de validation
- 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
Paramètres
- Hyperparamètres du modèle
- Tous les paramètres sont transmis via les options de la ligne de commande
Visualisations
- Matrice de confusion des prédictions du modèle sur les données de validation
- Graphiques pour les courbes PR et F1 pour toutes les classes
- Corrélogramme des étiquettes de classe
Configurer 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 predictions
Enregistrement des points de contrôle avec Comet
L'enregistrement des modèles sur Comet est désactivé par défaut. Pour l'activer, passez l' save-period
argument au script d'entraînement. Cela enregistrera les points de contrôle enregistrés sur Comet en fonction de la valeur d'intervalle fournie par save-period
:
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--save-period 1
Enregistrement des 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.
Vous pouvez contrôler la fréquence des prédictions enregistrées 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 Comet. Détection d'objets Ce paramètre de fréquence correspond à chaque Nième lot de données par époque. époque. Dans l'exemple ci-dessous, nous enregistrons chaque 2ème lot de données pour chaque époque.
Remarque : Le chargeur de données de validation YOLOv5 utilisera 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 panneau
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 enregistrées dans Comet
Lors de la journalisation 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 sont enregistrées. Vous pouvez augmenter ou diminuer ce nombre en utilisant le COMET_MAX_IMAGE_UPLOADS
variable d'environnement :
env COMET_MAX_IMAGE_UPLOADS=200 python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--bbox_interval 1
Enregistrement des métriques au niveau de la classe
Utilisez la COMET_LOG_PER_CLASS_METRICS
variable d'environnement pour enregistrer mAP, la précision, le rappel, 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éversement d'un ensemble de données vers les artefacts Comet
Si vous souhaitez stocker vos données en utilisant Comet Artifacts, vous pouvez le faire en utilisant l'indicateur upload_dataset
.
L'ensemble de données doit être organisé comme décrit dans le documentation YOLOv5. Le fichier de configuration de l'ensemble de données yaml
doit respecter 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_dataset
Vous pouvez trouver l'ensemble de données téléchargé dans l'onglet Artifacts de votre espace de travail Comet :
Vous pouvez prévisualiser les données directement dans l'interface utilisateur de Comet :
Les artefacts sont versionnés et prennent également en charge l'ajout de métadonnées sur l'ensemble de données. Comet enregistrera automatiquement les métadonnées de votre ensemble de données yaml
fichier :
Utilisation d'un artefact enregistré
Si vous souhaitez utiliser un ensemble de données de Comet Artifacts, définissez la path
variable dans votre ensemble de données yaml
fichier pour pointer vers l'URL de ressource Artifact suivante :
# Contents of artifact.yaml file
path: "comet://WORKSPACE_NAME>/ARTIFACT_NAME:ARTIFACT_VERSION_OR_ALIAS"
Passez ensuite ce fichier à votre script d'entraînement 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 la lignée 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 ensemble de données téléchargé :
Reprise d'une exécution d'entraînement
Si votre exécution d'entraînement est interrompue pour une raison quelconque, par exemple, une interruption de la connexion Internet, vous pouvez reprendre l'exécution en utilisant le resume
et le Comet Run Path.
Le Run Path 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 artefacts de l'ensemble de données Comet s'ils ont été utilisés dans l'exécution originale. L'exécution reprise continuera à se connecter à l'expérience existante dans l'interface utilisateur de Comet :
python train.py \
--resume "comet://YOUR_RUN_PATH"
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 d'optimiseur
Pour configurer l'Optimizer de Comet, vous devrez créer un fichier JSON contenant 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"
L'argument hpo.py
script accepte les mêmes arguments que train.py
. Si vous souhaitez transmettre des arguments supplémentaires à votre sweep, 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
Visualisation des résultats
Comet offre plusieurs façons de visualiser les résultats de votre sweep. Jetez un coup d'œil à un projet avec un sweep terminé ici.