Vai al contenuto

Comet

YOLOv5 con Comet

Questa guida tratterà 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, dataset e checkpoint del modello e visualizza le previsioni del tuo modello con i Pannelli personalizzati Comet! Comet ti assicura di non perdere mai traccia del tuo lavoro e rende facile condividere i risultati e collaborare tra team di tutte le dimensioni!

Introduzione

Installa Comet

pip install comet_ml

Configura le credenziali di Comet

Esistono due modi per configurare Comet con YOLOv5.

Puoi anche 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 .comet.config file nella tua directory di lavoro e imposta lì le tue credenziali:

File di configurazione 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.pt

Ecco fatto! Comet registrerà automaticamente i tuoi iperparametri, gli argomenti della riga di comando, le metriche di training e di validazione. Puoi visualizzare e analizzare le tue esecuzioni nell'interfaccia utente di Comet.

Interfaccia utente di Comet con l'addestramento YOLOv5

Prova un esempio!

Dai un'occhiata a un esempio di esecuzione completata qui.

O meglio ancora, provalo tu stesso in questo Colab Notebook:

Apri in Colab

Registra automaticamente

Per impostazione predefinita, Comet registrerà i seguenti elementi:

Metriche

  • Perdita della box, perdita dell'oggetto, perdita della classificazione per i dati di addestramento e validazione
  • metriche mAP_0.5, mAP_0.5:0.95 per i dati di validazione
  • Precisione e Recall per i dati di convalida

Parametri

  • Iperparametri del modello
  • Tutti i parametri passati attraverso 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

Configurare il logging 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 predictions

Logging dei checkpoint con Comet

La registrazione dei modelli su Comet è disabilitata per impostazione predefinita. Per abilitarla, passa il save-period argomento allo script di addestramento. Questo salverà i checkpoint registrati su Comet in base al valore dell'intervallo fornito da save-period:

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

Logging delle predizioni del modello

Per impostazione predefinita, le previsioni del modello (immagini, etichette di verità di base e caselle di delimitazione) verranno registrate su Comet.

Puoi controllare la frequenza delle previsioni registrate e delle immagini associate passando il bbox_interval argomento della riga di comando. Le previsioni possono essere visualizzate utilizzando il Rilevamento di oggetti Pannello personalizzato. Questa frequenza corrisponde a ogni ennesimo batch di dati per epocaNell'esempio seguente, stiamo registrando ogni secondo batch di dati per ogni epoca.

Nota: Il dataloader di validazione di YOLOv5 utilizzerà di default una dimensione del batch pari a 32, pertanto sarà necessario 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 2

Controllo del numero di immagini di previsione registrate su Comet

Quando si registrano le previsioni da YOLOv5, Comet registrerà le immagini associate a ogni set di previsioni. Per impostazione predefinita, viene registrato un massimo di 100 immagini di convalida. È possibile aumentare o diminuire questo numero utilizzando il COMET_MAX_IMAGE_UPLOADS variabile d'ambiente:

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

Logging delle metriche a livello di classe

Utilizzare il COMET_LOG_PER_CLASS_METRICS variabile d'ambiente per registrare mAP, precisione, 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.pt

Caricamento di un dataset su Comet Artifacts

Se desideri archiviare i tuoi dati utilizzando Artefatti Cometpuoi farlo usando il flag upload_dataset flag.

Il dataset deve essere organizzato come descritto in documentazione di YOLOv5. Il file di configurazione del dataset yaml deve seguire lo stesso formato del file coco128.yaml file.

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

Puoi trovare il set di dati caricato nella scheda Artifacts nel tuo spazio di lavoro Comet:

Scheda Artefatti Comet

Puoi visualizzare l'anteprima dei dati direttamente nella UI di Comet:

Anteprima dei dati Comet

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

Metadati degli artefatti Comet

Utilizzo di un artefatto salvato

Se desideri utilizzare un dataset da Comet Artifacts, imposta la path variabile nel tuo dataset yaml file per puntare 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.pt

Gli artefatti consentono anche di tracciare la provenienza dei dati mentre fluiscono attraverso il flusso di lavoro di sperimentazione. Qui puoi vedere un grafico che mostra tutti gli esperimenti che hanno utilizzato il tuo set di dati caricato:

Grafico di lignaggio degli artefatti Comet

Riprendere un'esecuzione di addestramento

Se la tua esecuzione di training viene interrotta per qualsiasi motivo, ad esempio, interruzione della connessione Internet, puoi riprendere l'esecuzione utilizzando il resume flag e il Comet Run Path.

Il Run Path 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 gli argomenti di training e il download degli artefatti del set di dati Comet se sono stati utilizzati nell'esecuzione originale. L'esecuzione ripresa continuerà a essere registrata nell'esperimento esistente nell'interfaccia utente di Comet:

python train.py \
  --resume "comet://YOUR_RUN_PATH"

Ricerca di iperparametri con Comet Optimizer

YOLOv5 è anche integrato con l'Optimizer di Comet, rendendo semplice visualizzare gli sweep degli iperparametri nell'interfaccia utente di Comet.

Configurazione di uno Sweep dell'Ottimizzatore

Per configurare Comet Optimizer, 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"

Il hpo.py script accetta gli stessi argomenti di train.py. Se desideri passare argomenti aggiuntivi al tuo sweep, 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 1

Visualizzazione dei risultati

Comet offre diversi modi per visualizzare i risultati della tua sweep. Dai un'occhiata a un progetto con una sweep completata qui.

Visualizzazione degli iperparametri Comet



📅 Creato 1 anno fa ✏️ Aggiornato 2 mesi fa

Commenti