Skip to content

Comet

YOLOv5 avec Comet

Ce guide explique comment utiliser YOLOv5 avec Comet

À propos de Comet

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

Suis et visualise les mesures du modèle en temps réel, enregistre tes hyperparamètres, tes ensembles de données et les points de contrôle du modèle, et visualise les prédictions de ton modèle avec Comet Custom Panels! Comet t'assure de ne jamais perdre le fil de ton 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

Configure Comet Credentials

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

Tu peux soit définir tes 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ée un .comet.config dans ton répertoire de travail et y définir tes 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écute 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 tes hyperparamètres, les arguments de la ligne de commande, les mesures d'entraînement et de validation. Tu peux visualiser et analyser tes résultats dans l'interface utilisateur de Comet .

yolo-ui

Essaie un exemple !

Regarde ici un exemple d'exécution terminée.

Ou mieux encore, essaie-le toi-même dans ce carnet Colab.

Open In Colab

Enregistre-toi 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 d'entraînement 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 passés 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

Configure 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

Enregistrer les points de contrôle avec Comet

L'enregistrement des modèles sur Comet est désactivé par défaut. Pour l'activer, passe le paramètre save-period dans le script de formation. Cela permettra de sauvegarder les points de contrôle enregistrés sur Comet en fonction de la valeur de l'intervalle fournie par 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) seront enregistrées sur Comet.

Tu peux 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 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 dataloader de validation YOLOv5 aura par défaut une taille de lot de 32, tu devras donc régler la fréquence de journalisation 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ôler le nombre d'images de prédiction connecté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é. Tu peux augmenter ou diminuer ce nombre à l'aide de la fonction 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

Utilise 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écharger un ensemble de données sur Comet Artifacts

Si tu souhaites stocker tes données en utilisant Comet Artefactstu peux le faire en utilisant le upload_dataset drapeau.

L'ensemble des données doit être organisé de la manière décrite dans la rubrique YOLOv5 documentation. La configuration du jeu de données yaml doit suivre 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

Tu trouveras le jeu de données téléchargé dans l'onglet Artifacts de ton espace de travail Comet . artefact-1

Tu peux 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 ton ensemble de données. yaml fichier artefact-3

Utiliser un artefact sauvegardé

Si tu souhaites utiliser un jeu de données provenant de Comet Artifacts, définis les paramètres suivants path dans ton 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>"

Passe ensuite ce fichier à ton 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 te permettent également de suivre le cheminement des données au fur et à mesure qu'elles circulent dans ton flux de travail d'expérimentation. Ici, tu peux voir un graphique qui te montre toutes les expériences qui ont utilisé ton jeu de données téléchargé. artefact-4

Reprendre une course d'entraînement

Si ton parcours d'entraînement est interrompu pour une raison quelconque, par exemple une connexion Internet perturbée, tu peux 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://<your workspace name>/<your project name>/<experiment id>.

Cela rétablira 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 lors de l'exécution initiale. 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 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 , tu devras 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"

Le hpo.py Le script accepte les mêmes arguments que train.py. Si tu souhaites passer 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 1

Exécuter un balayage en parallèle

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

Visualiser les résultats

Comet offre plusieurs façons de visualiser les résultats de ton balayage. Jette un coup d'œil à un projet dont le balayage a été effectué ici.

hyperparamètre-yolo



Créé le 2023-11-12, Mis à jour le 2024-01-07
Auteurs : glenn-jocher (3), RizwanMunawar (1)

Commentaires