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-06-02
Autoren: glenn-jocher (4), RizwanMunawar (1)

Kommentare