YOLOv5 avec Comet
Ce guide explique comment utiliser YOLOv5 avec Cometun outil puissant pour suivre, comparer et optimiser les expériences d'apprentissage automatique.
A propos de Comet
Comet construit 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 du modèle en temps réel, sauvegardez vos hyperparamètres, vos ensembles de données et les points de contrôle du modèle, et visualisez les prédictions de votre modèle avec les panneaux personnalisés deComet ! Comet vous permet de ne jamais perdre le fil de votre travail et facilite le partage des résultats et la collaboration au sein d'équipes de toutes tailles !
Pour commencer
Installer Comet
Configuration de Comet Credentials
Il y a deux façons de configurer Comet avec YOLOv5.
Vous pouvez définir vos informations d'identification à l'aide de 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
dans votre répertoire de travail et y définir vos informations d'identification :
Comet Fichier de configuration
Exécuter le script de formation
# Train YOLOv5s on COCO128 for 5 epochs
python train.py --img 640 --batch 16 --epochs 5 --data coco128.yaml --weights yolov5s.pt
Voilà, c'est fait ! 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 résultats dans l'interface utilisateur de Comet .
Essayez un exemple !
Cliquez ici pour voir un exemple d'exécution.
Ou mieux encore, essayez-le vous-même dans ce carnet Colab :
Enregistrer automatiquement
Par défaut, Comet enregistre les éléments suivants :
Métriques
- Perte de boîte, perte d'objet, 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
Configurer Comet Logging
Comet peut être configuré pour enregistrer des données supplémentaires, soit par le biais de drapeaux de ligne de commande transmis au script d'apprentissage, soit par le biais de 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'option save-period
dans le script de formation. Les points de contrôle enregistrés seront sauvegardés sur Comet en fonction de la valeur de l'intervalle fournie par l'argument save-period
:
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 sur Comet.
Vous pouvez contrôler la fréquence des prédictions enregistrées et des images associées en passant la commande bbox_interval
en ligne de commande. Les prédictions peuvent être visualisées à l'aide de Comet's Détection d'objets Panneau personnalisé. 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 dataloader 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 enregistrées dans la base de données 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é. Vous pouvez augmenter ou diminuer ce nombre à l'aide de la commande 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 mesures au niveau de la classe
Utiliser le COMET_LOG_PER_CLASS_METRICS
variable d'environnement pour enregistrer mAP, precision, recall, 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 sur Comet Artifacts
Si vous souhaitez stocker vos données en utilisant Comet Artéfactsvous pouvez le faire en utilisant la fonction upload_dataset
drapeau.
L'ensemble des données doit être organisé comme décrit dans le document YOLOv5 la documentation. La configuration de l'ensemble de données yaml
doit respecter le même format que celui du fichier coco128.yaml
fichier.
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 :
Vous pouvez prévisualiser les données directement dans l'interface utilisateur de Comet :
Les artefacts sont versionnés et permettent également d'ajouter des 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 sauvegardé
Si vous souhaitez utiliser un jeu de données provenant de Comet Artifacts, définissez le paramètre path
dans votre jeu de données yaml
pour qu'il pointe vers l'URL de ressource d'artefact suivante :
# Contents of artifact.yaml file
path: "comet://WORKSPACE_NAME>/ARTIFACT_NAME:ARTIFACT_VERSION_OR_ALIAS"
Transmettez ensuite ce fichier à votre script de formation de la manière suivante :
Les artefacts vous permettent également de suivre l'évolution des données tout au long de votre processus 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ées :
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 à l'aide de la fonction resume
et le sentier de course Comet .
Le chemin d'exécution a le format suivant comet://WORKSPACE_NAME/PROJECT_NAME/EXPERIMENT_ID
.
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 :
Recherche d'hyperparamètres avec l'optimiseur Comet
YOLOv5 est également intégré à l'Optimizer deComet, ce qui facilite la visualisation des balayages d'hyperparamètres dans l'interface utilisateur de Comet .
Configuration d'un balayage de l'optimiseur
Pour configurer l'Optimiseur Comet , vous devrez créer un fichier JSON contenant les informations relatives au 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 hpo.py
accepte les mêmes arguments que le script 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
Visualisation des résultats
Comet propose plusieurs façons de visualiser les résultats de votre balayage. Jetez un coup d'œil à un projet dont le balayage a été effectué ici.