Wie man Ultralytics YOLOv5 mit Comet verwendet

Ultralytics-Team

5 Minuten lesen

11. Oktober 2022

Entdecken Sie, wie Ultralytics mit Comet zusammenarbeitet, um das Ultralytics YOLOv5-Modell zu optimieren: Verfolgung in Echtzeit, optimierte Zusammenarbeit und verbesserte Reproduzierbarkeit.

Bei Ultralytics gehen wir kommerzielle Partnerschaften mit anderen Start-ups ein, um die Forschung und Entwicklung unserer großartigen Open-Source-Tools wie YOLOv5 zu finanzieren, damit sie für alle kostenlos bleiben. Dieser Artikel kann Affiliate-Links zu diesen Partnern enthalten.

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

Comet ist ein leistungsfähiges Tool zur Verfolgung Ihrer Modelle, Datensätze und Metriken. Es protokolliert sogar Ihre System- und Umgebungsvariablen, um die Reproduzierbarkeit und ein reibungsloses Debugging für jeden einzelnen Lauf zu gewährleisten. Es ist, als hätte man einen virtuellen Assistenten, der auf magische Weise weiß, welche Notizen zu machen sind. 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!

Außerdem sorgt Comet 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!

YOLOv5 ist ein großartiger Startpunkt für Ihre Reise in die Computer Vision. Um die Leistung Ihres Modells zu verbessern und es produktionsreif zu machen, müssen Sie die Ergebnisse in einem Experiment-Tracking-Tool wie Comet protokollieren.

Die Integration von Comet und YOLOv5 bietet 3 Hauptfunktionen:

  • Automatische Protokollierung und benutzerdefinierte Protokollierungsfunktionen
  • Speichern von Datensätzen und Modellen als Artefakte zur Fehlersuche und Reproduzierbarkeit
  • Organisieren Sie Ihre Ansicht mit den benutzerdefinierten Bedienfeldern von Comet


Dieser Leitfaden beschreibt, wie Sie YOLOv5 mit Comet verwenden können.

Sind Sie also bereit, Ihre Experimente in Echtzeit zu verfolgen? Legen wir los!

Erste Schritte

1. Comet installieren

Pip installieren comet_ml

2. Comet-Anmeldeinformationen konfigurieren

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

Sie können Ihre Anmeldedaten entweder über Umgebungsvariablen festlegen oder eine Datei .comet.config in Ihrem Arbeitsverzeichnis erstellen und dort Ihre Anmeldedaten festlegen.


Umgebungsvariablen

export COMET_API_KEY=export COMET_PROJECT_NAME= # Dies wird standardmäßig auf 'yolov5' gesetzt


Comet-Konfigurationsdatei

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

3. Das Trainingsskript ausführen

# Trainiere YOLOv5s auf COCO128 für 5 Epochenspython 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 in der Comet-Benutzeroberfläche visualisieren und analysieren.

Experimente mit YOLOv5 in Comet Dashboard

Probieren Sie es selbst aus!

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

Oder noch besser: Probieren Sie es selbst aus - mit diesem Colab Notebook.

Automatisch protokollieren

Comet protokolliert standardmäßig die folgenden Punkte:

Metriken

  • Box Loss, Object Loss und 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

Comet-Protokollierung konfigurieren

Comet kann so konfiguriert werden, dass zusätzliche Daten durch Befehlszeilenflags, die an das Trainingsskript übergeben werden, oder durch Umgebungsvariablen aufgezeichnet werden.

export COMET_MODE=online # Legen Sie fest, ob Comet im "Online"- oder "Offline"-Modus laufen soll. Standardwert ist onlineexport COMET_MODEL_NAME= #Legen Sie den Namen für das gespeicherte Modell fest. Standardwert ist yolov5export COMET_LOG_CONFUSION_MATRIX=false # Legt fest, ob die Protokollierung einer Comet-Konfusionsmatrix deaktiviert werden soll. Standardwert ist trueexport COMET_MAX_IMAGE_UPLOADS= # Legt fest, wie viele Bildvorhersagen insgesamt in Comet protokolliert werden sollen. Der Standardwert ist 100.export COMET_LOG_PER_CLASS_METRICS=true # Legt fest, dass am Ende des Trainings Bewertungsmetriken für jede erkannte Klasse protokolliert werden. Der Standardwert ist falseexport COMET_DEFAULT_CHECKPOINT_FILENAME= # Legen Sie dies fest, wenn Sie das Training von einem anderen Prüfpunkt aus fortsetzen möchten. Der Standardwert ist 'last.pt'export COMET_LOG_BATCH_LEVEL_METRICS=true # Legen Sie dies fest, wenn Sie Trainingsmetriken auf Batch-Ebene protokollieren möchten. Der Standardwert ist false. export COMET_LOG_PREDICTIONS=true # Setzen Sie dies auf false, um die Protokollierung von Modellvorhersagen zu deaktivieren.

Protokollierung von Kontrollpunkten mit Comet

Die Protokollierung von Modellen in Comet ist standardmäßig deaktiviert. Um es zu aktivieren, übergeben Sie das Argument save-period an das Trainingsskript. Dadurch werden die protokollierten Prüfpunkte auf der Grundlage des durch save-period angegebenen Intervallwertes in Comet gespeichert.

python train.py \

--img 640 \

--batch 16 \

--epochs 5 \

--data coco128.yaml \

--weights yolov5s.pt \

--save-period 1

Vorhersagen des Protokollierungsmodells

Standardmäßig werden Modellvorhersagen (Bilder, Grundwahrheitsbezeichnungen und Begrenzungsrahmen) in Comet protokolliert. Sie können die Häufigkeit der protokollierten Vorhersagen und der zugehörigen Bilder steuern, indem Sie das Befehlszeilenargument bbox_interval übergeben. Die Vorhersagen können mit Hilfe des benutzerdefinierten Comet-Panels für die Objekterkennung visualisiert werden. Diese Häufigkeit entspricht jedem N-ten Datenstapel pro Epoche. Im folgenden Beispiel wird jeder 2. Datenstapel für jede Epoche protokolliert.

Hinweis: Der YOLOv5 Validierungsdatenlader ist standardmäßig auf eine Stapelgröße von 32 eingestellt, so dass Sie die Protokollierungshäufigkeit entsprechend anpassen 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

Kontrolle der Anzahl der in Comet gespeicherten Vorhersagebilder

Bei der Protokollierung von Vorhersagen aus 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 mithilfe der Umgebungsvariablen COMET_MAX_IMAGE_UPLOADS erhöhen oder verringern.

env COMET_MAX_IMAGE_UPLOADS=200python 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 Umgebungsvariable COMET_LOG_PER_CLASS_METRICS, 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 in Comet Artifacts

Wenn Sie Ihre Daten mit Comet Artifacts speichern möchten, können Sie dies mit dem Flag upload_dataset tun.

Der Datensatz ist so organisiert, wie in der YOLOv5-Dokumentation beschrieben. Die Dataset-Config-Yaml-Datei muss das gleiche Format wie die Datei coco128.yaml haben.

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

Registerkarte "Kometen-Artefakte", YOLOv5

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

Datenvorschau in Comet, YOLOv5

Artefakte sind versioniert und unterstützen auch das Hinzufügen von Metadaten über den Datensatz. Comet protokolliert automatisch die Metadaten aus Ihrer Dataset-Yaml-Datei.

Log-Metadaten aus YAML-Datei in Comet, YOLOv5

Ein gespeichertes Artefakt verwenden

Wenn Sie einen Datensatz aus Comet Artifacts verwenden möchten, setzen Sie die Pfadvariable in Ihrer Dataset-Yaml-Datei so, dass sie auf die folgende Artefakt-Ressourcen-URL zeigt.

# Inhalt der Datei artifact.yaml Pfad: "comet:///:"

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

Arbeitsablauf bei Kometen-Experimenten, YOLOv5

Wiederaufnahme eines Trainingslaufs

Wenn Ihr Trainingslauf aus irgendeinem Grund unterbrochen wird, z.B. wegen einer gestörten Internetverbindung, können Sie den Lauf mit Hilfe der Wiederaufnahme-Flagge und dem Comet-Laufpfad wieder aufnehmen.

Der Laufpfad hat das folgende Format: comet:////.

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 Comet-Datensatz-Artefakte werden heruntergeladen, falls sie im ursprünglichen Lauf verwendet wurden. Der wiederaufgenommene Lauf setzt die Protokollierung des bestehenden Experiments in der Comet-Benutzeroberfläche fort.

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

Hyperparametersuche mit dem Comet-Optimierer

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

Konfigurieren eines Optimierungsdurchlaufs

Um den Comet Optimizer zu konfigurieren, müssen Sie eine JSON-Datei mit den Informationen über den Sweep erstellen.

Eine Beispieldatei finden Sie in:

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

Das Skript hpo.py akzeptiert die gleichen Argumente wie train.py. Wenn Sie zusätzliche Argumente an Ihren Sweep ü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 utils/loggers/comet/hpo.py \utils/loggers/comet/optimizer_config.json"

Comet bietet viele Möglichkeiten, die Ergebnisse Ihres Sweeps zu visualisieren. Werfen Sie hier einen Blick auf ein Projekt mit einem abgeschlossenen Sweep:

Visualisierung der Sweep-Ergebnisse in Comet, YOLOv5

In Kontakt bleiben

Nutzen Sie unsere Integration mit Comet, um Ihre YOLOv5-Modelle zu verwalten, zu visualisieren und zu optimieren - von Trainingsläufen bis zur Produktionsüberwachung.

Und natürlich können Sie der Ultralytics Community beitreten - ein Ort, an dem Sie Fragen stellen und Tipps zu YOLOv5-Schulung, -Validierung und -Einsatz austauschen können.

Lassen Sie uns gemeinsam die Zukunft
der KI gestalten!

Beginnen Sie Ihre Reise in die Zukunft des maschinellen Lernens

Kostenloser Start
Link in die Zwischenablage kopiert