Overslaan naar inhoud

Comet

YOLOv5 met Comet

Deze handleiding beschrijft hoe je YOLOv5 kunt gebruiken met Comet

Over Comet

Comet bouwt tools die datawetenschappers, ingenieurs en teamleiders helpen om machine learning en deep learning modellen te versnellen en te optimaliseren.

Volg en visualiseer modelmetingen in realtime, sla je hyperparameters, datasets en modelcheckpoints op en visualiseer je modelvoorspellingen met Comet Custom Panels! Comet zorgt ervoor dat je nooit het overzicht over je werk verliest en maakt het eenvoudig om resultaten te delen en samen te werken met teams van elke grootte!

Aan de slag

Installeer Comet

pip install comet_ml

Comet referenties configureren

Er zijn twee manieren om Comet te configureren met YOLOv5.

Je kunt je referenties instellen via omgevingsvariabelen

Omgevingsvariabelen

export COMET_API_KEY=<Your Comet API Key>
export COMET_PROJECT_NAME=<Your Comet Project Name> # This will default to 'yolov5'

Of maak een .comet.config bestand in je werkmap en stel daar je referenties in.

Comet Configuratiebestand

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

Het trainingsscript uitvoeren

# Train YOLOv5s on COCO128 for 5 epochs
python train.py --img 640 --batch 16 --epochs 5 --data coco128.yaml --weights yolov5s.pt

Dat is het! Comet logt automatisch je hyperparameters, commandoregelargumenten en training- en validatiegegevens. Je kunt je runs visualiseren en analyseren in de Comet UI.

yolo-ui

Probeer een voorbeeld!

Bekijk hier een voorbeeld van een voltooide run

Of nog beter, probeer het zelf in dit Colab Notitieboek

Open in Colab

Log automatisch

Standaard logt Comet de volgende items

Metriek

  • Box Loss, Object Loss, Classificatieverlies voor de training- en validatiegegevens
  • mAP_0,5, mAP_0,5:0,95 metriek voor de validatiegegevens.
  • Precisie en Recall voor de validatiegegevens

Parameters

  • Hyperparameters model
  • Alle parameters die via de opdrachtregelopties worden doorgegeven

Visualisaties

  • Verwarringsmatrix van de modelvoorspellingen op de valideringsgegevens
  • Plots voor de PR- en F1-curves voor alle klassen
  • Correlogram van de klassenlabels

Comet loggen configureren

Comet kan geconfigureerd worden om extra gegevens te loggen via opdrachtregelvlaggen die aan het trainingsscript worden doorgegeven of via omgevingsvariabelen.

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

Checkpoints loggen met Comet

Het loggen van modellen naar Comet is standaard uitgeschakeld. Geef de save-period argument in het trainingsscript. Hierdoor worden de gelogde controlestations opgeslagen op Comet op basis van de intervalwaarde die is opgegeven door save-period

python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--save-period 1

Voorspellingen logboekmodel

Standaard worden modelvoorspellingen (afbeeldingen, ground truth labels en bounding boxes) gelogd op Comet.

Je kunt de frequentie van gelogde voorspellingen en de bijbehorende afbeeldingen regelen door de optie bbox_interval opdrachtregelargument. Voorspellingen kunnen worden gevisualiseerd met Comet's Object Detection Custom Panel. Deze frequentie komt overeen met elke N-de batch gegevens per tijdseenheid. In het onderstaande voorbeeld loggen we elke 2e batch gegevens voor elke tijdseenheid.

Opmerking: De YOLOv5 validatiedatalader zal standaard een batchgrootte van 32 gebruiken, dus je moet de logboekfrequentie overeenkomstig instellen.

Hier is een voorbeeldproject met het paneel

python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--bbox_interval 2

Het aantal gelogde voorspellingsbeelden regelen Comet

Bij het loggen van voorspellingen van YOLOv5 zal Comet de afbeeldingen loggen die bij elke set voorspellingen horen. Standaard worden er maximaal 100 validatieafbeeldingen gelogd. Je kunt dit aantal verhogen of verlagen met de COMET_MAX_IMAGE_UPLOADS omgevingsvariabele.

env COMET_MAX_IMAGE_UPLOADS=200 python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--bbox_interval 1

Metriek op klasseniveau loggen

Gebruik de COMET_LOG_PER_CLASS_METRICS omgevingsvariabele om mAP, precisie, recall, f1 voor elke klasse te loggen.

env COMET_LOG_PER_CLASS_METRICS=true python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt

Een dataset uploaden naar Comet Artefacten

Als je je gegevens wilt opslaan met Comet Artefactenkun je dit doen met de upload_dataset vlag.

De dataset moet worden georganiseerd zoals beschreven in de YOLOv5 documentatie. De dataset config yaml bestand moet hetzelfde formaat hebben als dat van het coco128.yaml bestand.

python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--upload_dataset

Je kunt de geüploade dataset vinden op het tabblad Artefacten in je Comet Werkruimte. artefact-1

Je kunt de gegevens direct bekijken in de Comet UI. artefact-2

Artefacten zijn onder versiebeheer en ondersteunen ook het toevoegen van metadata over de dataset. Comet logt automatisch de metadata van je dataset. yaml bestand artefact-3

Een opgeslagen artefact gebruiken

Als je een dataset van Comet Artifacts wilt gebruiken, stel dan de path variabele in je dataset yaml bestand om te verwijzen naar de volgende URL van de artefactbron.

# contents of artifact.yaml file
path: "comet://<workspace name>/<artifact name>:<artifact version or alias>"

Geef dit bestand dan op de volgende manier door aan je trainingsscript

python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data artifact.yaml \
--weights yolov5s.pt

Met artefacten kun je ook het verloop van gegevens volgen terwijl ze door je Experimentation workflow stromen. Hier zie je een grafiek met alle experimenten die gebruik hebben gemaakt van je geüploade dataset. artefact-4

Een trainingsloop hervatten

Als je trainingsrun om wat voor reden dan ook wordt onderbroken, bijvoorbeeld door een verbroken internetverbinding, kun je de run hervatten met behulp van de knop resume vlag en het Comet renpad.

Het renpad heeft het volgende formaat comet://<your workspace name>/<your project name>/<experiment id>.

Dit herstelt de run naar de toestand van voor de onderbreking, inclusief het herstellen van het model vanaf een controlepunt, het herstellen van alle hyperparameters en trainingsargumenten en het downloaden van Comet dataset Artefacten als die gebruikt werden in de oorspronkelijke run. De hervatte run zal blijven loggen naar het bestaande Experiment in de Comet UI.

python train.py \
--resume "comet://<your run path>"

Hyperparameter zoeken met de Comet Optimizer

YOLOv5 is ook geïntegreerd met Comet's Optimizer, waardoor het eenvoudig is om hyperparameter sweeps te visualiseren in de Comet UI.

Een Optimizer Sweep configureren

Om de Comet Optimizer te configureren, moet je een JSON bestand maken met de informatie over de sweep. Een voorbeeldbestand staat in utils/loggers/comet/optimizer_config.json

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

De hpo.py script accepteert dezelfde argumenten als train.py. Als je extra argumenten wilt doorgeven aan je sweep, voeg ze dan gewoon toe na het script.

python utils/loggers/comet/hpo.py \
  --comet_optimizer_config "utils/loggers/comet/optimizer_config.json" \
  --save-period 1 \
  --bbox_interval 1

Parallel een sweep uitvoeren

comet optimizer -j <set number of workers> utils/loggers/comet/hpo.py \
  utils/loggers/comet/optimizer_config.json"

Resultaten visualiseren

Comet biedt een aantal manieren om de resultaten van je sweep te visualiseren. Bekijk hier een project met een voltooide sweep

hyperparameter-yolo



Aangemaakt 2023-11-12, Bijgewerkt 2024-01-07
Auteurs: glenn-jocher (3), RizwanMunawar (1)

Reacties