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
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.
Probeer een voorbeeld!
Bekijk hier een voorbeeld van een voltooide run
Of nog beter, probeer het zelf in dit Colab Notitieboek
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.
Je kunt de gegevens direct bekijken in de Comet UI.
Artefacten zijn onder versiebeheer en ondersteunen ook het toevoegen van metadata over de dataset. Comet logt automatisch de metadata van je dataset. yaml
bestand
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
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.
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.
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