Vai al contenuto

Comet

YOLOv5 con Comet

Questa guida spiega come utilizzare YOLOv5 con Comet

Informazioni su Comet

Comet costruisce strumenti che aiutano i data scientist, gli ingegneri e i team leader ad accelerare e ottimizzare i modelli di machine learning e deep learning.

Tieni traccia e visualizza le metriche del modello in tempo reale, salva gli iperparametri, i set di dati e i checkpoint del modello e visualizza le previsioni del modello con i pannelli personalizzati diComet ! Comet ti permette di non perdere mai di vista il tuo lavoro e rende facile la condivisione dei risultati e la collaborazione tra team di ogni dimensione!

Come iniziare

Installa Comet

pip install comet_ml

Configurare le credenziali di Comet

Ci sono due modi per configurare Comet con YOLOv5.

Puoi impostare le tue credenziali tramite le variabili d'ambiente

Variabili d'ambiente

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

Oppure crea un .comet.config nella tua directory di lavoro e imposta lì le tue credenziali.

Comet File di configurazione

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

Esegui lo script di formazione

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

Comet registrerà automaticamente gli iperparametri, gli argomenti della riga di comando e le metriche di formazione e convalida. Puoi visualizzare e analizzare le tue analisi nell'interfaccia utente di Comet .

yolo-ui

Prova un esempio!

Guarda qui un esempio di una corsa completata

Oppure, meglio ancora, provalo tu stesso con questo Quaderno Colab

Apri in Colab

Registra automaticamente

Per impostazione predefinita, Comet registra i seguenti elementi

Metriche

  • Perdita di scatola, perdita di oggetto, perdita di classificazione per i dati di formazione e di convalida
  • mAP_0,5, mAP_0,5:0,95 per i dati di convalida.
  • Precisione e richiamo 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 convalida
  • Grafici per le curve PR e F1 di tutte le classi
  • Correlogramma delle etichette di classe

Configurare la registrazione di Comet

Comet può essere configurato per registrare dati aggiuntivi attraverso i flag della riga di comando passati allo script di addestramento o attraverso le variabili d'ambiente.

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

Registrazione dei punti di controllo con Comet

La registrazione dei modelli su Comet è disabilitata per impostazione predefinita. Per abilitarlo, passa l'opzione save-period allo script di allenamento. 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

Previsioni del modello di registrazione

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

Puoi controllare la frequenza delle previsioni registrate e delle immagini associate passando il parametro bbox_interval argomento della riga di comando. Le previsioni possono essere visualizzate utilizzando il pannello personalizzato Object Detection di Comet. Questa frequenza corrisponde a un lotto di dati ogni N per epoca. Nell'esempio che segue, stiamo registrando ogni 2 batch di dati per ogni epoca.

Nota: il dataloader di convalida YOLOv5 ha come impostazione predefinita una dimensione di 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 2

Controllo del numero di immagini di predizione registrate su Comet

Quando si registrano le previsioni di YOLOv5, Comet registra le immagini associate a ogni serie di previsioni. Per impostazione predefinita, vengono registrate un massimo di 100 immagini di convalida. Puoi aumentare o diminuire questo numero utilizzando il comando 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

Registrazione delle metriche a livello di classe

Usa il tasto COMET_LOG_PER_CLASS_METRICS per registrare mAP, precisione, richiamo, 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

Caricare un set di dati su Comet Artifacts

Se vuoi archiviare i tuoi dati utilizzando Comet Artefattipuoi farlo utilizzando l'opzione upload_dataset bandiera.

Il set di dati deve essere organizzato secondo le modalità descritte nel documento YOLOv5 documentazione. La configurazione del set di dati yaml deve seguire lo stesso formato di quello 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 dataset caricato nella scheda Artefatti dell'area di lavoro Comet . artefatto-1

Puoi vedere l'anteprima dei dati direttamente nell'interfaccia utente di Comet . artefatto-2

Gli artefatti sono versionati e supportano anche l'aggiunta di metadati sul set di dati. Comet registrerà automaticamente i metadati del set di dati. yaml file artefatto-3

Utilizzo di un artefatto salvato

Se vuoi utilizzare un set di dati da Comet Artifacts, imposta il parametro path nel tuo set di dati yaml per puntare al seguente URL della risorsa Artefatto.

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

Quindi passa questo file al tuo script di allenamento nel modo seguente

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

Gli artefatti ti permettono anche di tracciare il percorso dei dati mentre attraversano il tuo flusso di lavoro di sperimentazione. Qui puoi vedere un grafico che mostra tutti gli esperimenti che hanno utilizzato il tuo set di dati caricato. artefatto-4

Riprendere una corsa di allenamento

Se la tua corsa di allenamento viene interrotta per qualsiasi motivo, ad esempio per un'interruzione della connessione a internet, puoi riprendere la corsa utilizzando il pulsante resume e il percorso di esecuzione Comet .

Il percorso di esecuzione ha il seguente formato comet://<your workspace name>/<your 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 formazione e il download degli artefatti del dataset Comet se sono stati utilizzati nell'esecuzione originale. L'esecuzione ripresa continuerà a registrare l'Esperimento esistente nell'interfaccia utente di Comet .

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

Ricerca degli iperparametri con l'ottimizzatore Comet

YOLOv5 è anche integrato con l'Ottimizzatore di Comet, rendendo più semplice la visualizzazione degli sweep degli iperparametri nell'interfaccia utente di Comet .

Configurare una sweep dell'ottimizzatore

Per configurare Comet Optimizer, dovrai creare un file JSON con le informazioni sullo sweep. 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 accetta gli stessi argomenti di train.py. Se vuoi passare altri argomenti 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

Eseguire uno sweep in parallelo

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

Visualizzazione dei risultati

Comet offre una serie di modi per visualizzare i risultati della tua indagine. Dai un'occhiata a un progetto con un'ispezione completata qui

iperparametroyolo



Creato 2023-11-12, Aggiornato 2024-01-07
Autori: glenn-jocher (3), chr043416@gmail.com (1)

Commenti