Zum Inhalt springen

Comet

YOLOv5 mit Comet

In diesem Leitfaden wird beschrieben, wie du YOLOv5 mit Comet

Über Comet

Comet entwickelt Tools, die Datenwissenschaftlern, Ingenieuren und Teamleitern helfen, maschinelles Lernen und Deep-Learning-Modelle zu beschleunigen und zu optimieren.

Verfolge und visualisiere Modellmetriken in Echtzeit, speichere deine Hyperparameter, Datensätze und Modellprüfpunkte und visualisiere deine Modellvorhersagen mit Comet Custom Panels! Comet sorgt dafür, dass du nie den Überblick über deine Arbeit verlierst, und macht es dir leicht, Ergebnisse zu teilen und mit Teams jeder Größe zusammenzuarbeiten!

Erste Schritte

Installiere Comet

pip install comet_ml

Comet Anmeldeinformationen konfigurieren

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

Du kannst deine Anmeldedaten entweder über Umgebungsvariablen festlegen

Umgebungsvariablen

export COMET_API_KEY=<Your Comet API Key>
export COMET_PROJECT_NAME=<Your Comet Project Name> # This will default to 'yolov5'

Oder erstellen Sie eine .comet.config Datei in deinem Arbeitsverzeichnis und lege dort deine Anmeldedaten fest.

Comet Konfigurationsdatei

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

Das Trainingsskript ausführen

# 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, Kommandozeilenargumente, Trainings- und Validierungsmetriken. Du kannst deine Läufe in der Benutzeroberfläche Comet visualisieren und analysieren.

yolo-ui

Probiere ein Beispiel aus!

Schau dir hier ein Beispiel für einen abgeschlossenen Lauf an

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

In Colab öffnen

Automatisch loggen

Standardmäßig protokolliert Comet die folgenden Punkte

Metriken

  • 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

Parameter

  • Modell Hyperparameter
  • Alle Parameter, die über die Kommandozeilenoptionen übergeben werden

Visualisierungen

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

Comet Logging konfigurieren

Comet kann so konfiguriert werden, dass zusätzliche Daten entweder über Kommandozeilenflags, die dem Trainingsskript übergeben werden, oder über Umgebungsvariablen aufgezeichnet werden.

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

Kontrollpunkte protokollieren mit Comet

Die Protokollierung von Modellen auf Comet ist standardmäßig deaktiviert. Um es zu aktivieren, übergibst du die save-period Argument in das Trainingsskript ein. Dadurch werden die protokollierten Checkpoints auf Comet gespeichert, basierend auf dem Intervallwert, der durch save-period

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

Vorhersagen des Logging-Modells

Standardmäßig werden die Modellvorhersagen (Bilder, Ground-Truth-Labels und Bounding-Boxen) auf Comet gespeichert.

Du kannst die Häufigkeit der protokollierten Vorhersagen und die dazugehörigen Bilder steuern, indem du die bbox_interval Befehlszeilenargument. Die Vorhersagen können mit Comet im Object Detection Custom Panel visualisiert werden. Diese Häufigkeit entspricht jedem N-ten Datenstapel pro Epoche. Im folgenden Beispiel wird jeder 2. Datenstapel für jede Epoche aufgezeichnet.

Hinweis: Der YOLOv5 Validierungsdatenlader hat standardmäßig eine Stapelgröße von 32, daher musst du die Protokollierungshä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

Kontrolle der Anzahl von Vorhersagebildern, die auf Comet

Wenn du die Vorhersagen von YOLOv5 protokollierst, protokolliert Comet die Bilder, die zu jedem Vorhersagesatz gehören. Standardmäßig werden maximal 100 Vorhersagebilder protokolliert. Du kannst diese Zahl mit der Funktion COMET_MAX_IMAGE_UPLOADS Umgebungsvariable.

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

Metriken auf Klassenebene protokollieren

Verwenden Sie die COMET_LOG_PER_CLASS_METRICS Umgebungsvariable, um mAP, Precision, 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

Hochladen eines Datensatzes auf Comet Artefakte

Wenn du deine Daten speichern möchtest, indem du Comet Artefaktekannst du dies mit der Option upload_dataset Flagge.

Der Datensatz muss so organisiert werden, wie es im Abschnitt YOLOv5 Dokumentation. Die Konfiguration des Datensatzes yaml Datei muss das gleiche Format haben wie das der coco128.yaml Datei.

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

Du findest den hochgeladenen Datensatz auf der Registerkarte Artefakte in deinem Comet Arbeitsbereich Artefakt-1

Du kannst dir die Daten direkt in der Comet UI ansehen. Artefakt-2

Artefakte sind versioniert und unterstützen auch das Hinzufügen von Metadaten über den Datensatz. Comet protokolliert automatisch die Metadaten deines Datensatzes yaml Datei Artefakt-3

Verwendung eines gespeicherten Artefakts

Wenn du einen Datensatz von Comet Artifacts verwenden möchtest, setze die path Variable in deinem Datensatz yaml Datei, um auf die folgende URL der Artefakt-Ressource zu verweisen.

# contents of artifact.yaml file
path: "comet://<workspace name>/<artifact name>:<artifact version or alias>"

Dann übergibst du diese Datei auf folgende Weise an dein Trainingsskript

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

Mit Artefakten kannst du auch den Weg der Daten durch deinen Experimentier-Workflow verfolgen. Hier siehst du eine Grafik, die dir alle Experimente anzeigt, die deinen hochgeladenen Datensatz verwendet haben. Artefakt-4

Wiederaufnahme eines Trainingslaufs

Wenn dein Trainingslauf aus irgendeinem Grund unterbrochen wird, z. B. bei einer gestörten Internetverbindung, kannst du den Lauf mit der Funktion resume Flagge und den Comet Run Path.

Der Laufpfad hat das folgende Format comet://<your workspace name>/<your project name>/<experiment id>.

Dadurch wird der Lauf in den Zustand vor der Unterbrechung zurückversetzt, d.h. das Modell wird von einem Kontrollpunkt aus wiederhergestellt, alle Hyperparameter und Trainingsargumente werden wiederhergestellt und die Comet Datensatz-Artefakte werden heruntergeladen, wenn sie im ursprünglichen Lauf verwendet wurden. Der wiederaufgenommene Lauf setzt die Protokollierung des bestehenden Experiments in der Benutzeroberfläche Comet fort.

python train.py \
--resume "comet://<your run path>"

Hyperparametersuche mit dem Comet Optimierer

YOLOv5 ist auch in den Optimizer von Comet integriert, so dass Hyperparameter-Sweeps in der Benutzeroberfläche von Comet einfach visualisiert werden können.

Einen Optimierer-Sweep konfigurieren

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

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

Die hpo.py Skript akzeptiert die gleichen Argumente wie train.py. Wenn du deinem Sweep zusätzliche Argumente ü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

Parallele Durchführung eines Sweeps

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

Ergebnisse visualisieren

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

Hyperparameter-yolo



Erstellt am 2023-11-12, Aktualisiert am 2024-01-07
Autoren: glenn-jocher (3), RizwanMunawar (1)

Kommentare