
YOLOv5 con Comet
Questa guida spiega come utilizzare YOLOv5 con Comet, un potente strumento per tracciare, confrontare e ottimizzare gli esperimenti di machine learning.
Informazioni su Comet
Comet crea strumenti che aiutano data scientist, ingegneri e team leader ad accelerare e ottimizzare i modelli di machine learning e deep learning.
Traccia e visualizza le metriche del modello in tempo reale, salva i tuoi iperparametri, i dataset e i checkpoint del modello, e visualizza le previsioni del modello con i Comet Custom Panels! Comet ti assicura di non perdere mai traccia del tuo lavoro e facilita la condivisione dei risultati e la collaborazione tra team di ogni dimensione!
Introduzione
Installa Comet
pip install comet_mlConfigura le credenziali di Comet
Esistono due modi per configurare Comet con YOLOv5.
Puoi impostare le tue credenziali tramite variabili d'ambiente:
Variabili d'ambiente
export COMET_API_KEY=YOUR_API_KEY
export COMET_PROJECT_NAME=YOUR_COMET_PROJECT_NAME # This will default to 'yolov5'Oppure crea un file .comet.config nella tua directory di lavoro e imposta lì le tue credenziali:
File di configurazione di Comet
[comet]
api_key=YOUR_API_KEY
project_name=YOUR_COMET_PROJECT_NAME # This will default to 'yolov5'Esegui lo script di addestramento
# Train YOLOv5s on COCO128 for 5 epochs
python train.py --img 640 --batch 16 --epochs 5 --data coco128.yaml --weights yolov5s.ptEcco fatto! Comet registrerà automaticamente i tuoi iperparametri, gli argomenti della riga di comando, e le metriche di addestramento e validazione. Puoi visualizzare e analizzare le tue esecuzioni nell'interfaccia utente di Comet.

Prova un esempio!
Dai un'occhiata a un esempio di esecuzione completata qui.
O ancora meglio, provalo tu stesso in questo Notebook Colab:
Registrazione automatica
Per impostazione predefinita, Comet registrerà i seguenti elementi:
Metriche
- Loss della BBox, Loss dell'oggetto, Loss di classificazione per l'addestramento e i dati di validazione
- Metriche mAP_0.5, mAP_0.5:0.95 per i dati di validazione
- Precision e Recall per i dati di validazione
Parametri
- Iperparametri del modello
- Tutti i parametri passati tramite le opzioni della riga di comando
Visualizzazioni
- Matrice di confusione delle previsioni del modello sui dati di validazione
- Grafici per le curve PR e F1 su tutte le classi
- Correlogramma delle etichette di classe
Configura la registrazione di Comet
Comet può essere configurato per registrare dati aggiuntivi tramite flag della riga di comando passati allo script di addestramento o tramite variabili d'ambiente:
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 predictionsRegistrazione dei checkpoint con Comet
La registrazione dei modelli su Comet è disabilitata per impostazione predefinita. Per abilitarla, passa l'argomento save-period allo script di addestramento. Questo salverà i checkpoint registrati su Comet in base all'intervallo fornito da save-period:
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--save-period 1Registrazione delle previsioni del modello
Per impostazione predefinita, le previsioni del modello (immagini, etichette di verità di base e bounding box) verranno registrate su Comet.
Puoi controllare la frequenza delle previsioni registrate e le immagini associate passando l'argomento della riga di comando bbox_interval. Le previsioni possono essere visualizzate utilizzando il Pannello personalizzato per il Rilevamento oggetti di Comet. Questa frequenza corrisponde a ogni N-esimo batch di dati per epoca. Nell'esempio seguente, registriamo ogni secondo batch di dati per ogni epoca.
Nota: Il dataloader di validazione di YOLOv5 utilizzerà di default una dimensione del batch di 32, quindi dovrai impostare la frequenza di registrazione di conseguenza.
Ecco un esempio di progetto che utilizza il Pannello
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--bbox_interval 2Controllo del numero di immagini di previsione registrate su Comet
Durante la registrazione delle previsioni da YOLOv5, Comet registrerà le immagini associate a ciascun set di previsioni. Per impostazione predefinita, vengono registrate al massimo 100 immagini di validazione. Puoi aumentare o diminuire questo numero utilizzando la variabile d'ambiente COMET_MAX_IMAGE_UPLOADS:
env COMET_MAX_IMAGE_UPLOADS=200 python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--bbox_interval 1Registrazione delle metriche a livello di classe
Utilizza la variabile d'ambiente COMET_LOG_PER_CLASS_METRICS per registrare mAP, precision, recall, f1 per ogni classe:
env COMET_LOG_PER_CLASS_METRICS=true python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.ptCaricamento di un dataset negli Artifacts di Comet
Se desideri archiviare i tuoi dati utilizzando gli Artifacts di Comet, puoi farlo usando il flag upload_dataset.
Il dataset dovrebbe essere organizzato come descritto nella documentazione di YOLOv5. Il file yaml di configurazione del dataset deve seguire lo stesso formato del file coco128.yaml.
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--upload_datasetPuoi trovare il dataset caricato nella scheda Artifacts nel tuo spazio di lavoro Comet:

Puoi visualizzare l'anteprima dei dati direttamente nell'interfaccia utente di Comet:

Gli artifacts sono versionati e supportano anche l'aggiunta di metadati sul dataset. Comet registrerà automaticamente i metadati dal tuo file yaml del dataset:

Utilizzo di un Artifact salvato
Se desideri utilizzare un dataset dagli Artifacts di Comet, imposta la variabile path nel tuo file yaml del dataset affinché punti al seguente URL della risorsa Artifact:
# Contents of artifact.yaml file
path: "comet://WORKSPACE_NAME/ARTIFACT_NAME:ARTIFACT_VERSION_OR_ALIAS"Quindi passa questo file al tuo script di addestramento nel modo seguente:
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data artifact.yaml \
--weights yolov5s.ptGli artifacts ti consentono anche di tracciare la provenienza dei dati mentre fluiscono attraverso il tuo flusso di lavoro sperimentale. Qui puoi vedere un grafico che ti mostra tutti gli esperimenti che hanno utilizzato il tuo dataset caricato:

Ripresa di un'esecuzione di addestramento
Se la tua esecuzione di addestramento viene interrotta per qualsiasi motivo, ad esempio una connessione Internet interrotta, puoi riprendere l'esecuzione utilizzando il flag resume e il percorso dell'esecuzione (Run Path) di Comet.
Il percorso dell'esecuzione ha il seguente formato comet://WORKSPACE_NAME/PROJECT_NAME/EXPERIMENT_ID.
Questo ripristinerà l'esecuzione allo stato precedente all'interruzione, il che include il ripristino del modello da un checkpoint, il ripristino di tutti gli iperparametri e degli argomenti di addestramento, e il download degli Artifacts del dataset di Comet se sono stati utilizzati nell'esecuzione originale. L'esecuzione ripresa continuerà a registrare nell'esperimento esistente nell'interfaccia utente di Comet:
python train.py \
--resume "comet://YOUR_RUN_PATH"Ricerca degli iperparametri con l'ottimizzatore di Comet
YOLOv5 è anche integrato con l'Ottimizzatore di Comet, rendendo semplice visualizzare le scansioni degli iperparametri nell'interfaccia utente di Comet.
Configurazione di una scansione dell'ottimizzatore
Per configurare l'Ottimizzatore di Comet, dovrai creare un file JSON con le informazioni sulla scansione. Un file di esempio è stato fornito in utils/loggers/comet/optimizer_config.json:
python utils/loggers/comet/hpo.py \
--comet_optimizer_config "utils/loggers/comet/optimizer_config.json"Lo script hpo.py accetta gli stessi argomenti di train.py. Se desideri passare argomenti aggiuntivi alla tua scansione, aggiungili semplicemente dopo lo script:
python utils/loggers/comet/hpo.py \
--comet_optimizer_config "utils/loggers/comet/optimizer_config.json" \
--save-period 1 \
--bbox_interval 1Visualizzazione dei risultati
Comet offre diversi modi per visualizzare i risultati della tua scansione. Dai un'occhiata a un progetto con una scansione completata qui.
