Entdecke, wie Ultralytics mit Comet zusammenarbeitet, um Ultralytics YOLOv5 Modelle zu optimieren: Nachverfolgung in Echtzeit, optimierte Zusammenarbeit und verbesserte Reproduzierbarkeit.
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:
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!
Pip installieren comet_ml
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.
export COMET_API_KEY=export COMET_PROJECT_NAME= # Dies wird standardmäßig auf 'yolov5' gesetzt.
[comet] api_key= project_name=<Your Comet API Key># This will default to 'yolov5'
# 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.
Schau dir hier ein Beispiel für einen abgeschlossenen Lauf an.
Oder noch besser: Probiere es selbst in diesem Colab Notebook aus.
In der Standardeinstellung protokolliert Comet die folgenden Punkte:
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.
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
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
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
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
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
Du kannst dir die Daten direkt in der Comet UI ansehen.
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.
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.
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://"
YOLOv5 ist auch in den Optimizer von Comet integriert, so dass Hyperparameter-Sweeps in der Benutzeroberfläche von Comet einfach visualisiert werden können.
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
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:
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.
Beginne deine Reise in die Zukunft des maschinellen Lernens