Grüner Scheck
Link in die Zwischenablage kopiert

How to Use Ultralytics YOLOv5 With Comet

Discover how Ultralytics partners with Comet for Ultralytics YOLOv5 model optimization: real-time tracking, streamlined collaboration, and enhanced reproducibility.

Auf Ultralytics gehen wir kommerzielle Partnerschaften mit anderen Start-ups ein, die uns dabei helfen, 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, Cometstellt Tools her, die Datenwissenschaftlern, Ingenieuren und Teamleitern dabei helfen, maschinelles Lernen und Deep-Learning-Modelle zu beschleunigen und zu optimieren.

Comet ist ein leistungsfähiges Tool, mit dem du deine Modelle, Datensätze und Metriken verfolgen kannst. Es protokolliert sogar deine System- und Umgebungsvariablen, um die Reproduzierbarkeit und eine reibungslose Fehlersuche bei jedem einzelnen Durchlauf zu gewährleisten. Es ist, als hättest du einen virtuellen Assistenten, der auf magische Weise weiß, welche Notizen du machen musst. Verfolge und visualisiere Modellmetriken in Echtzeit, speichere deine Hyperparameter, Datensätze und Modellprüfpunkte und visualisiere deine Modellvorhersagen mit Comet Custom Panels!

Außerdem stellt Comet sicher, dass du nie den Überblick über deine Arbeit verlierst und macht es einfach, Ergebnisse zu teilen und mit Teams jeder Größe zusammenzuarbeiten!

YOLOv5 ist ein guter Ausgangspunkt für deine Reise in die Computer Vision. Um die Leistung deines Modells zu verbessern und es produktionsreif zu machen, musst du die Ergebnisse in einem Experiment-Tracking-Tool wie Comet.

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
  • Organisiere deine Ansicht mit den benutzerdefinierten Panels von Comet


In diesem Leitfaden erfährst du, wie du YOLOv5 mit Comet nutzen kannst.

Bist du also bereit, deine Experimente in Echtzeit zu verfolgen? Dann lass uns loslegen!

Erste Schritte

1. Installiere Comet

Pip installieren comet_ml

2. Comet Anmeldeinformationen konfigurieren

Es gibt zwei Möglichkeiten, Comet mit YOLOv5.

Du kannst deine Anmeldedaten entweder über Umgebungsvariablen festlegen oder eine .comet.config-Datei in deinem Arbeitsverzeichnis erstellen und dort deine 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 deine Hyperparameter, Kommandozeilenargumente, Trainings- und Validierungsmetriken. Du kannst deine Läufe in der Benutzeroberfläche Comet visualisieren und analysieren.

Experimente mit YOLOv5 in Comet Dashboard

Probiere es selbst aus!

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

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

Automatisch protokollieren

In der Standardeinstellung protokolliert Comet 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

  • 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 durch Kommandozeilenflags, die dem Trainingsskript übergeben werden, oder durch Umgebungsvariablen aufgezeichnet werden.

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

Kontrollpunkte protokollieren mit Comet

Die Protokollierung der Modelle auf Comet ist standardmäßig deaktiviert. Um es zu aktivieren, gib das Argument save-period an das Trainingsskript an. Dadurch werden die protokollierten Checkpoints auf Comet gespeichert, basierend auf dem Intervallwert, der durch save-period angegeben wird.

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 Vorhersagen des Modells (Bilder, Ground-Truth-Labels und Bounding-Boxen) auf Comet protokolliert. Du kannst die Häufigkeit der protokollierten Vorhersagen und die dazugehörigen Bilder mit dem Befehlszeilenargument bbox_interval steuern. Die Vorhersagen können mit dem Object Detection Custom Panel von Comet visualisiert werden. Diese Häufigkeit entspricht jedem N-ten Datenstapel pro Epoche. Im folgenden Beispiel wird jeder 2. Datenstapel pro Epoche protokolliert.

Hinweis: Der YOLOv5 Validierungsdatenlader ist standardmäßig auf eine Stapelgröße von 32 eingestellt, daher musst du die Protokollierungshäufigkeit entsprechend anpassen.

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 eingeloggten Vorhersagebilder 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 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

Metriken auf Klassenebene protokollieren

Verwende 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 auf Comet Artefakte

Wenn du deine Daten mit Comet Artefakten speichern möchtest, kannst du das mit dem Flag upload_dataset tun.

Das Dataset ist so organisiert, wie es in der DokumentationYOLOv5 beschrieben ist. Die Dataset-Config-Yaml-Datei muss das gleiche Format wie die coco128.yaml-Datei haben.

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

Comet Registerkarte Artefakte, YOLOv5

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

Vorschau der Daten in Comet, YOLOv5

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

Log-Metadaten aus der YAML-Datei in Comet, YOLOv5

Ein gespeichertes Artefakt verwenden

Wenn du einen Datensatz aus Comet Artefakten verwenden möchtest, setze die Pfadvariable in deiner Dataset-Yaml-Datei so, dass sie auf die folgende URL der Artefakt-Ressource zeigt.

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

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.

Comet Experimentier-Workflow, YOLOv5

Einen Trainingslauf wieder aufnehmen

Wenn dein Trainingslauf aus irgendeinem Grund unterbrochen wird, z. B. bei einer gestörten Internetverbindung, kannst du den Lauf mit dem Resume-Flag und dem Comet Run Path 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 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://"

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"

Das Skript hpo.py akzeptiert die gleichen Argumente wie train.py. Wenn du deinem Sweep zusätzliche Argumente übergeben möchtest, füge sie einfach hinter 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 utils/loggers/comet/hpo.py \utils/loggers/comet/optimizer_config.json"

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

Visualisiere die Sweep-Ergebnisse in Comet, YOLOv5

In Kontakt bleiben

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

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

Facebook-LogoTwitter-LogoLinkedIn-LogoKopier-Link-Symbol

Lies mehr in dieser Kategorie

Lass uns gemeinsam die Zukunft
der KI gestalten!

Beginne deine Reise in die Zukunft des maschinellen Lernens