Meet YOLO26: next-gen vision AI.

Comet ML Logo für das Tracking von Machine-Learning-Experimenten

Link to this sectionYOLOv5 mit Comet#

Diese Anleitung behandelt die Verwendung von YOLOv5 mit Comet, einem leistungsstarken Tool zum Tracken, Vergleichen und Optimieren von Machine-Learning-Experimenten.

Link to this sectionÜber Comet#

Comet entwickelt Tools, die Data Scientists, Ingenieuren und Teamleitern dabei helfen, Machine Learning und Deep Learning Modelle zu beschleunigen und zu optimieren.

Tracke und visualisiere Modellmetriken in Echtzeit, speichere deine Hyperparameter, Datensätze und Modell-Checkpoints und visualisiere deine Modellvorhersagen mit Comet Custom Panels! Comet stellt sicher, dass du nie den Überblick über deine Arbeit verlierst, und erleichtert das Teilen von Ergebnissen sowie die Zusammenarbeit in Teams jeder Größe!

Link to this sectionErste Schritte#

Link to this sectionInstalliere Comet#

pip install comet_ml

Link to this sectionKonfiguriere Comet-Anmeldedaten#

Es gibt zwei Möglichkeiten, Comet mit YOLOv5 zu konfigurieren.

Du kannst deine Anmeldedaten entweder über Umgebungsvariablen festlegen:

Umgebungsvariablen

export COMET_API_KEY=YOUR_API_KEY
export COMET_PROJECT_NAME=YOUR_COMET_PROJECT_NAME # This will default to 'yolov5'

Oder erstelle eine .comet.config-Datei in deinem Arbeitsverzeichnis und lege deine Anmeldedaten dort fest:

Comet-Konfigurationsdatei

[comet]
api_key=YOUR_API_KEY
project_name=YOUR_COMET_PROJECT_NAME # This will default to 'yolov5'

Link to this sectionFühre das Trainingsskript aus#

# Train YOLOv5s on COCO128 for 5 epochs
python train.py --img 640 --batch 16 --epochs 5 --data coco128.yaml --weights yolov5s.pt

Das war's! Comet protokolliert automatisch deine Hyperparameter, Befehlszeilenargumente sowie Trainings- und Validierungsmetriken. Du kannst deine Läufe im Comet UI visualisieren und analysieren.

Comet-Dashboard mit YOLOv5-Trainingsmetriken und Experiment-Tracking

Link to this sectionProbiere ein Beispiel aus!#

Sieh dir hier ein Beispiel für einen abgeschlossenen Lauf an.

Oder noch besser: Probiere es selbst in diesem Colab Notebook aus:

Open In Colab

Link to this sectionAutomatisch protokollieren#

Standardmäßig protokolliert Comet die folgenden Elemente:

Link to this sectionMetriken#

  • Box Loss, Object Loss, Classification Loss für die Trainings- und Validierungsdaten
  • mAP_0.5, mAP_0.5:0.95 Metriken für die Validierungsdaten
  • Präzision und Recall für die Validierungsdaten

Link to this sectionParameter#

  • Modell-Hyperparameter
  • Alle Parameter, die über die Befehlszeilenoptionen übergeben werden

Link to this sectionVisualisierungen#

  • Konfusionsmatrix der Modellvorhersagen auf den Validierungsdaten
  • Diagramme für die PR- und F1-Kurven über alle Klassen hinweg
  • Korrelogramm der Klassenbezeichnungen

Link to this sectionComet-Logging konfigurieren#

Comet kann so konfiguriert werden, dass zusätzliche Daten entweder über Befehlszeilen-Flags, die an das Trainingsskript übergeben werden, oder über Umgebungsvariablen protokolliert werden:

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

Link to this sectionCheckpoints mit Comet protokollieren#

Das Protokollieren von Modellen in Comet ist standardmäßig deaktiviert. Um es zu aktivieren, übergib das Argument save-period an das Trainingsskript. Dies speichert die protokollierten Checkpoints basierend auf dem durch save-period angegebenen Intervall in Comet:

python train.py \
  --img 640 \
  --batch 16 \
  --epochs 5 \
  --data coco128.yaml \
  --weights yolov5s.pt \
  --save-period 1

Link to this sectionModellvorhersagen protokollieren#

Standardmäßig werden Modellvorhersagen (Bilder, Ground-Truth-Labels und Bounding Boxes) in Comet protokolliert.

Du kannst die Häufigkeit der protokollierten Vorhersagen und die zugehörigen Bilder steuern, indem du das Befehlszeilenargument bbox_interval übergibst. Vorhersagen können mit dem Object Detection Custom Panel von Comet visualisiert werden. Diese Häufigkeit entspricht jedem N-ten Batch von Daten pro Epoche. Im folgenden Beispiel protokollieren wir jeden 2. Batch von Daten für jede Epoche.

Hinweis: Der YOLOv5-Validierungs-DataLoader verwendet standardmäßig eine Batch-Größe von 32, daher musst du die Logging-Häufigkeit entsprechend einstellen.

Hier ist ein Beispielprojekt, das das Panel verwendet

python train.py \
  --img 640 \
  --batch 16 \
  --epochs 5 \
  --data coco128.yaml \
  --weights yolov5s.pt \
  --bbox_interval 2

Link to this sectionSteuerung der Anzahl der in Comet protokollierten Vorhersagebilder#

Beim Protokollieren von Vorhersagen aus YOLOv5 protokolliert Comet die Bilder, die mit jedem Satz von Vorhersagen verknüpft sind. Standardmäßig werden maximal 100 Validierungsbilder protokolliert. Du kannst diese Anzahl mit der Umgebungsvariable COMET_MAX_IMAGE_UPLOADS erhöhen oder verringern:

env COMET_MAX_IMAGE_UPLOADS=200 python train.py \
  --img 640 \
  --batch 16 \
  --epochs 5 \
  --data coco128.yaml \
  --weights yolov5s.pt \
  --bbox_interval 1

Link to this sectionKlassenmetriken protokollieren#

Verwende die Umgebungsvariable COMET_LOG_PER_CLASS_METRICS, um mAP, Präzision, Recall und F1 für jede Klasse zu protokollieren:

env COMET_LOG_PER_CLASS_METRICS=true python train.py \
  --img 640 \
  --batch 16 \
  --epochs 5 \
  --data coco128.yaml \
  --weights yolov5s.pt

Link to this sectionEinen Datensatz zu Comet Artifacts hochladen#

Wenn du deine Daten mit Comet Artifacts speichern möchtest, kannst du dies mit dem Flag upload_dataset tun.

Der Datensatz sollte wie in der YOLOv5-Dokumentation beschrieben organisiert sein. Die yaml-Datei des Datensatzes muss demselben Format wie die Datei coco128.yaml folgen.

python train.py \
  --img 640 \
  --batch 16 \
  --epochs 5 \
  --data coco128.yaml \
  --weights yolov5s.pt \
  --upload_dataset

Du findest den hochgeladenen Datensatz im Tab „Artifacts“ in deinem Comet-Workspace:

Comet Artifacts Panel für Dataset-Versionierung

Du kannst die Daten direkt in der Comet UI in der Vorschau ansehen:

Comet Dataset-Vorschau und Versionsverlauf

Artifacts sind versioniert und unterstützen auch das Hinzufügen von Metadaten über den Datensatz. Comet protokolliert automatisch die Metadaten aus deiner Datensatz-yaml-Datei:

Comet Artifact Metadaten

Link to this sectionEin gespeichertes Artifact verwenden#

Wenn du einen Datensatz aus Comet Artifacts verwenden möchtest, setze die path-Variable in deiner Datensatz-yaml-Datei so, dass sie auf die folgende Artifact-Ressourcen-URL zeigt:

# Contents of artifact.yaml file
path: "comet://WORKSPACE_NAME/ARTIFACT_NAME:ARTIFACT_VERSION_OR_ALIAS"

Übergebe diese Datei dann auf folgende Weise an dein Trainingsskript:

python train.py \
  --img 640 \
  --batch 16 \
  --epochs 5 \
  --data artifact.yaml \
  --weights yolov5s.pt

Artifacts ermöglichen es dir außerdem, die Herkunft (Lineage) von Daten zu verfolgen, während sie durch deinen Experimentier-Workflow fließen. Hier siehst du ein Diagramm, das dir alle Experimente zeigt, die deinen hochgeladenen Datensatz verwendet haben:

Comet Artifact Lineage Diagramm

Link to this sectionEinen Trainingslauf fortsetzen#

Wenn dein Trainingslauf aus irgendeinem Grund unterbrochen wird, z. B. durch eine gestörte Internetverbindung, kannst du den Lauf mit dem resume-Flag und dem Comet Run Path fortsetzen.

Der Run Path hat folgendes Format: comet://WORKSPACE_NAME/PROJECT_NAME/EXPERIMENT_ID.

Dies stellt den Lauf auf seinen Zustand vor der Unterbrechung wieder her. Dazu gehört das Wiederherstellen des Modells aus einem Checkpoint, das Wiederherstellen aller Hyperparameter und Trainingsargumente sowie das Herunterladen von Comet-Datensatz-Artifacts, falls diese im ursprünglichen Lauf verwendet wurden. Der fortgesetzte Lauf wird das Logging im bestehenden Experiment im Comet UI fortsetzen:

python train.py \
  --resume "comet://YOUR_RUN_PATH"

Link to this sectionHyperparameter-Suche mit dem Comet Optimizer#

YOLOv5 ist auch in Comet's Optimizer integriert, was es einfach macht, Hyperparameter-Sweeps im Comet UI zu visualisieren.

Link to this sectionEinen Optimizer-Sweep konfigurieren#

Um den Comet Optimizer zu konfigurieren, musst du eine JSON-Datei mit den Informationen über den Sweep erstellen. Eine Beispieldatei wurde unter utils/loggers/comet/optimizer_config.json bereitgestellt:

python utils/loggers/comet/hpo.py \
  --comet_optimizer_config "utils/loggers/comet/optimizer_config.json"

Das hpo.py-Skript akzeptiert dieselben Argumente wie train.py. Wenn du zusätzliche Argumente an deinen Sweep übergeben möchtest, füge sie einfach nach dem Skript hinzu:

python utils/loggers/comet/hpo.py \
  --comet_optimizer_config "utils/loggers/comet/optimizer_config.json" \
  --save-period 1 \
  --bbox_interval 1

Link to this sectionErgebnisse visualisieren#

Comet bietet eine Reihe von Möglichkeiten, die Ergebnisse deines Sweeps zu visualisieren. Sieh dir hier ein Projekt mit einem abgeschlossenen Sweep an.

Comet Hyperparameter-Visualisierung

Mitwirkende

Kommentare