
YOLOv5 mit Comet#
Dieser Leitfaden beschreibt, wie du YOLOv5 mit Comet, einem leistungsstarken Werkzeug zum Nachverfolgen, Vergleichen und Optimieren von Machine-Learning-Experimenten, verwendest.
Über Comet#
Comet entwickelt Werkzeuge, die Datenwissenschaftler, Ingenieure und Teamleiter dabei unterstützen, Modelle für maschinelles Lernen und Deep-Learning-Modelle schneller zu entwickeln und zu optimieren.
Verfolge Modellmetriken in Echtzeit und visualisiere sie, speichere deine Hyperparameter, Datensätze und Modellprüfpunkte und visualisiere deine Modellvorhersagen mit Comet Custom Panels! Comet sorgt dafür, dass du den Überblick über deine Arbeit behältst, und erleichtert das Teilen von Ergebnissen sowie die Zusammenarbeit in Teams jeder Größe.
Erste Schritte#
Comet installieren#
pip install comet_mlComet-Zugangsdaten konfigurieren#
Es gibt zwei Möglichkeiten, Comet mit YOLOv5 zu konfigurieren.
Du kannst deine Zugangsdaten entweder über Umgebungsvariablen festlegen:
Umgebungsvariablen
export COMET_API_KEY=YOUR_API_KEY
export COMET_PROJECT_NAME=YOUR_COMET_PROJECT_NAME # This will default to 'yolov5'Oder erstelle eine .comet.config-Datei in deinem Arbeitsverzeichnis und lege deine Zugangsdaten dort fest:
Comet-Konfigurationsdatei
[comet]
api_key=YOUR_API_KEY
project_name=YOUR_COMET_PROJECT_NAME # This will default to 'yolov5'Trainingsskript ausführen#
# Train YOLOv5s on COCO128 for 5 epochs
python train.py --img 640 --batch 16 --epochs 5 --data coco128.yaml --weights yolov5s.ptDas war's! Comet protokolliert automatisch deine Hyperparameter, Befehlszeilenargumente sowie Trainings- und Validierungsmetriken. In der Comet-Benutzeroberfläche kannst du deine Durchläufe visualisieren und analysieren.

Probiere ein Beispiel aus!#
Sieh dir hier ein Beispiel für einen abgeschlossenen Durchlauf an.
Oder noch besser: Probiere es selbst in diesem Colab-Notebook aus:
Automatisch protokollieren#
Standardmäßig protokolliert Comet die folgenden Elemente:
Metriken#
- Box Loss, Object Loss und Classification Loss für die Validierungsdaten
- mAP_0.5- und mAP_0.5:0.95-Metriken für die Validierungsdaten
- Precision und Recall für die Validierungsdaten
Parameter#
- Modellhyperparameter
- Alle über die Befehlszeilenoptionen übergebenen Parameter
Visualisierungen#
- Konfusionsmatrix der Modellvorhersagen für die Validierungsdaten
- Diagramme der PR- und F1-Kurven über alle Klassen hinweg
- Korrelationsdiagramm der Klassenbezeichnungen
Comet-Protokollierung konfigurieren#
Comet kann so konfiguriert werden, dass zusätzliche Daten entweder über Befehlszeilenoptionen, 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="yolov5" # 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=30 # 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="last.pt" # 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 predictionsPrüfpunkte mit Comet protokollieren#
Die Protokollierung von Modellen in Comet ist standardmäßig deaktiviert. Aktiviere sie, indem du das Argument save-period an das Trainingsskript übergibst. Dadurch werden die protokollierten Prüfpunkte basierend auf dem über save-period angegebenen Intervall in Comet gespeichert:
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--save-period 1Modellvorhersagen protokollieren#
Standardmäßig werden Modellvorhersagen (Bilder, Ground-Truth-Bezeichnungen und Begrenzungsrahmen) in Comet protokolliert.
Du kannst die Häufigkeit der protokollierten Vorhersagen und der zugehörigen Bilder über das Befehlszeilenargument bbox_interval steuern. Vorhersagen lassen sich über das Comet Custom Panel Object Detection visualisieren. Diese Häufigkeit entspricht jedem N-ten Daten-Batch pro Epoche. Im folgenden Beispiel protokollieren wir jeden zweiten Daten-Batch jeder Epoche.
Hinweis: Der YOLOv5-Validierungsdatenlader verwendet standardmäßig eine Batchgröße von 32. Daher musst du die Protokollierungshäufigkeit entsprechend festlegen.
Hier findest du ein Beispielprojekt, das dieses Panel verwendet.
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--bbox_interval 2Anzahl der in Comet protokollierten Vorhersagebilder steuern#
Beim Protokollieren von Vorhersagen aus YOLOv5 protokolliert Comet die mit jeder Vorhersagemenge verbundenen Bilder. Standardmäßig werden maximal 100 Validierungsbilder protokolliert. Du kannst diese Anzahl mithilfe der Umgebungsvariablen COMET_MAX_IMAGE_UPLOADS erhöhen oder verringern:
env COMET_MAX_IMAGE_UPLOADS=200 python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--bbox_interval 1Metriken 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.ptDatensatz in Comet Artifacts hochladen#
Wenn du deine Daten mit Comet Artifacts speichern möchtest, kannst du dazu das Flag upload_dataset verwenden.
Der Datensatz sollte wie in der YOLOv5-Dokumentation beschrieben organisiert sein. Die Datensatzkonfigurationsdatei yaml muss dasselbe Format wie die Datei coco128.yaml verwenden.
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--upload_datasetDen hochgeladenen Datensatz findest du im Tab „Artifacts“ deines Comet-Arbeitsbereichs:

Du kannst die Daten direkt in der Comet-Benutzeroberfläche in der Vorschau anzeigen:

Artifacts werden versioniert und unterstützen außerdem das Hinzufügen von Metadaten zum Datensatz. Comet protokolliert automatisch die Metadaten aus deiner Datensatzdatei yaml:

Gespeichertes Artifact verwenden#
Wenn du einen Datensatz aus Comet Artifacts verwenden möchtest, setze die Variable path in deiner Datensatzdatei yaml auf die folgende Artifact-Ressourcen-URL:
# Contents of artifact.yaml file
path: "comet://WORKSPACE_NAME/ARTIFACT_NAME:ARTIFACT_VERSION_OR_ALIAS"Übergebe diese Datei anschließend wie folgt an dein Trainingsskript:
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data artifact.yaml \
--weights yolov5s.ptArtifacts ermöglichen dir außerdem, die Herkunft der Daten zu verfolgen, während sie deinen Experimentierablauf durchlaufen. Hier siehst du ein Diagramm mit allen Experimenten, die deinen hochgeladenen Datensatz verwendet haben:

Trainingsdurchlauf fortsetzen#
Wenn dein Trainingsdurchlauf aus irgendeinem Grund unterbrochen wird, beispielsweise aufgrund einer unterbrochenen Internetverbindung, kannst du ihn mit dem Flag resume und dem Comet Run Path fortsetzen.
Der Run Path hat das folgende Format: comet://WORKSPACE_NAME/PROJECT_NAME/EXPERIMENT_ID.
Dadurch wird der Durchlauf in den Zustand vor der Unterbrechung zurückversetzt. Dazu gehören die Wiederherstellung des Modells aus einem Prüfpunkt, aller Hyperparameter und Trainingsargumente sowie das Herunterladen von Comet-Datensatz-Artifacts, falls diese im ursprünglichen Durchlauf verwendet wurden. Der fortgesetzte Durchlauf protokolliert weiterhin im bestehenden Experiment in der Comet-Benutzeroberfläche:
python train.py \
--resume "comet://YOUR_RUN_PATH"Hyperparametersuche mit dem Comet Optimizer#
YOLOv5 ist außerdem in Comet's Optimizer integriert, wodurch sich Hyperparametersuchen in der Comet-Benutzeroberfläche einfach visualisieren lassen.
Optimierungssuche konfigurieren#
Um den Comet Optimizer zu konfigurieren, musst du eine JSON-Datei mit den Informationen zur Suche erstellen. Eine Beispieldatei ist unter utils/loggers/comet/optimizer_config.json enthalten:
python utils/loggers/comet/hpo.py \
--comet_optimizer_config "utils/loggers/comet/optimizer_config.json"Das Skript hpo.py akzeptiert dieselben Argumente wie train.py. Wenn du deiner Suche 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 1Ergebnisse visualisieren#
Comet bietet verschiedene Möglichkeiten, die Ergebnisse deiner Suche zu visualisieren. Sieh dir hier ein Projekt mit einer abgeschlossenen Suche an.
