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
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.
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
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
Sie können eine Vorschau der Daten direkt in der Benutzeroberfläche Comet anzeigen.
Artefakte sind versioniert und unterstützen auch das Hinzufügen von Metadaten über den Datensatz. Comet protokolliert automatisch die Metadaten Ihres Datensatzes. yaml
Datei
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
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.
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.
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