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 protokolliert.

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), chr043416@gmail.com (1)

Kommentare