Skip to content

Comet

YOLOv5 avec Comet

Ce guide explique comment utiliser YOLOv5 avec Comet

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 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 Comet Custom Panels! 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

pip install comet_ml

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 Comet 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

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

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

C'est tout ! Comet enregistrera automatiquement vos hyperparamètres, les arguments de la ligne de commande, les métriques d'entraînement et de validation. Vous pouvez visualiser et analyser vos exécutions dans l'interface utilisateur Comet .

yolo-ui

Essayez un exemple !

Cliquez ici pour voir un exemple d'exécution

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

Open In 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 de formation, 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=<your model name> #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=<number of allowed images to upload to Comet> # 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=<your checkpoint filename> # 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 pour enregistrer le mAP, précision, 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é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é de la manière décrite dans le document de référence. 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 . artefact-1

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

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 artefact-3

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

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 ensemble de données téléchargées. artefact-4

Reprise d'une course d'entraînement

Si votre parcours d'entraînement est interrompu pour une raison quelconque, par exemple en cas de connexion internet perturbée, vous pouvez reprendre le parcours en utilisant la fonction resume et le sentier de course Comet .

Le chemin d'exécution a le format suivant comet://<your workspace name>/<your project name>/<experiment id>.

Ceci 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 d'origine. L'exécution reprise continuera à se connecter à l'expérience existante dans l'interface utilisateur 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 permet de visualiser facilement les 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

Exécution d'un balayage en parallèle

comet optimizer -j <set number of workers> utils/loggers/comet/hpo.py \
  utils/loggers/comet/optimizer_config.json"

Visualisation des résultats

Comet offre 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

hyperparamètre-yolo

📅C réé il y a 1 an ✏️ Mis à jour il y a 2 mois

Commentaires