Zum Inhalt springen

Comet

YOLOv5 mit Comet

Dieser Leitfaden beschreibt die Verwendung von YOLOv5 mit Comet

Über Comet

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

Verfolgen und visualisieren Sie Modellmetriken in Echtzeit, speichern Sie Ihre Hyperparameter, Datensätze und Modellprüfpunkte, und visualisieren Sie Ihre Modellvorhersagen mit Comet Custom Panels! Comet sorgt dafür, dass Sie nie den Überblick über Ihre Arbeit verlieren, und erleichtert die gemeinsame Nutzung von Ergebnissen und die Zusammenarbeit in Teams jeder Größe!

Erste Schritte

Installieren Sie Comet

pip install comet_ml

Konfigurieren Sie Comet Anmeldeinformationen

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

Sie können Ihre 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 in Ihrem Arbeitsverzeichnis und legen Sie dort Ihre 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 Ihre Hyperparameter, Befehlszeilenargumente, Trainings- und Validierungsmetriken. Sie können Ihre Läufe auf der Benutzeroberfläche Comet visualisieren und analysieren.

yolo-ui

Probieren Sie ein Beispiel aus!

Sehen Sie sich hier ein Beispiel für einen abgeschlossenen Lauf an

Oder noch besser: Probieren Sie es selbst in diesem Colab Notebook aus

In Colab öffnen

Automatisch protokollieren

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

  • Hyperparameter des Modells
  • Alle Parameter, die über die Kommandozeilenoptionen übergeben werden

Visualisierungen

  • Konfusionsmatrix der Modellvorhersagen auf den Validierungsdaten
  • Darstellungen der PR- und F1-Kurven für alle Klassen
  • Korrelogramm der Klassenbezeichnungen

Konfigurieren Sie Comet Logging

Comet kann so konfiguriert werden, dass zusätzliche Daten entweder über Befehlszeilenflags, 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=<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

Protokollierung von Checkpoints mit Comet

Die Protokollierung von Modellen auf Comet ist standardmäßig deaktiviert. Um es zu aktivieren, übergeben Sie die save-period Argument an das Trainingsskript. Dies speichert die protokollierten Checkpoints auf Comet 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 Protokollierungsmodells

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

Sie können die Häufigkeit der protokollierten Vorhersagen und der zugehörigen Bilder steuern, indem Sie die bbox_interval Befehlszeilenargument. Die Vorhersagen können mit Comet visualisiert werden. Objekt-Erkennung Benutzerdefiniertes Panel. Diese Häufigkeit entspricht jeder N-ten Charge von Daten pro Epoche. Im folgenden Beispiel wird jeder 2. Datenstapel für jede Epoche aufgezeichnet.

Hinweis: Der YOLOv5 validation dataloader ist standardmäßig auf eine Stapelgröße von 32 eingestellt, so dass Sie die Protokollierungshäufigkeit entsprechend einstellen müssen.

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

Steuerung der Anzahl von Vorhersagebildern, die auf Comet

Bei der Protokollierung von Vorhersagen von YOLOv5 protokolliert Comet die Bilder, die mit jedem Satz von Vorhersagen verbunden sind. Standardmäßig werden maximal 100 Validierungsbilder protokolliert. Sie können diese Zahl mit der Option 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

Protokollierung von Metriken auf Klassenebene

Verwenden Sie die COMET_LOG_PER_CLASS_METRICS Umgebungsvariable, um mAP zu protokollieren, Präzision, Rückruf, f1 für jede Klasse.

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 Sie Ihre Daten speichern möchten, indem Sie Comet Artefaktekönnen Sie dies mit der Option upload_dataset Flagge.

Der Datensatz ist so zu organisieren, wie es in der YOLOv5 Dokumentation. Die Datensatzkonfiguration yaml Datei muss das gleiche Format haben wie die Datei coco128.yaml Datei.

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

Sie finden den hochgeladenen Datensatz auf der Registerkarte Artefakte in Ihrem Comet Arbeitsbereich Artefakt-1

Sie können eine Vorschau der Daten direkt in der Benutzeroberfläche Comet anzeigen. Artefakt-2

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

Verwendung eines gespeicherten Artefakts

Wenn Sie einen Datensatz von Comet Artifacts verwenden möchten, setzen Sie die path Variable in Ihrem Datensatz yaml Datei auf die folgende URL der Artefaktressource verweisen.

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

Übergeben Sie diese Datei dann auf folgende Weise an Ihr Trainingsskript

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

Mithilfe von Artefakten können Sie auch den Verlauf der Daten verfolgen, die Ihren Experimentier-Workflow durchlaufen. Hier sehen Sie ein Diagramm, das Ihnen alle Experimente anzeigt, die Ihren hochgeladenen Datensatz verwendet haben. Artefakt-4

Wiederaufnahme eines Trainingslaufs

Wenn Ihr Trainingslauf aus irgendeinem Grund unterbrochen wird, z. B. bei einer gestörten Internetverbindung, können Sie 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 Prüfpunkt aus wiederhergestellt, alle Hyperparameter und Trainingsargumente werden wiederhergestellt und die Artefakte des Datensatzes Comet 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, was die Visualisierung von Hyperparameter-Sweeps in der Benutzeroberfläche von Comet erleichtert.

Konfigurieren eines Optimierungs-Sweeps

Um den Comet Optimizer zu konfigurieren, müssen Sie eine JSON-Datei mit den Informationen über den Sweep erstellen. Eine Beispieldatei finden Sie unter 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 Sie Ihrem Sweep zusätzliche Argumente übergeben möchten, fügen Sie diese 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 Suchlaufs

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 zur Visualisierung der Ergebnisse Ihrer Suche. Werfen Sie hier einen Blick auf ein Projekt mit einer abgeschlossenen Durchsuchung

Hyperparameter-yolo

📅 Erstellt vor 1 Jahr ✏️ Aktualisiert vor 2 Monaten

Kommentare