Vai al contenuto

Comet

YOLOv5 con Comet

Questa guida illustra come utilizzare YOLOv5 con Comet

Circa Comet

Comet costruisce strumenti che aiutano data scientist, ingegneri e team leader ad accelerare e ottimizzare l'apprendimento automatico e i modelli di deep learning.

Tracciate e visualizzate le metriche del modello in tempo reale, salvate gli iperparametri, i set di dati e i checkpoint del modello e visualizzate le previsioni del modello con i pannelli personalizzati diComet ! Comet vi permette di non perdere mai di vista il vostro lavoro e di condividere facilmente i risultati e collaborare con team di tutte le dimensioni.

Per iniziare

Installare Comet

pip install comet_ml

Configurare le credenziali di Comet

Esistono due modi per configurare Comet con YOLOv5.

È possibile impostare le credenziali attraverso 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 creare un .comet.config nella propria directory di lavoro e impostare lì le proprie credenziali.

Comet File di configurazione

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

Eseguire 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, le metriche di addestramento e di validazione. È possibile visualizzare e analizzare le esecuzioni nell'interfaccia utente di Comet .

yolo-ui

Provate un esempio!

Qui potete vedere un esempio di una corsa completata

O meglio ancora, provatelo voi stessi in questo Quaderno Colab

Aprire in Colab

Registro automatico

Per impostazione predefinita, Comet registra i seguenti elementi

Metriche

  • Perdita di scatola, perdita di oggetto, perdita di classificazione per i dati di addestramento 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 validazione
  • 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 abilitarla, passare l'opzione save-period allo script di addestramento. Questo salva i checkpoint registrati in 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 predizioni del modello (immagini, etichette di verità a terra e caselle di delimitazione) vengono registrate su Comet.

È possibile controllare la frequenza delle previsioni registrate e delle immagini associate passando l'opzione bbox_interval argomento della riga di comando. Le previsioni possono essere visualizzate usando Comet's Rilevamento degli oggetti Pannello personalizzato. Questa frequenza corrisponde a un lotto di dati ogni N per epoca. Nell'esempio seguente, si registra ogni secondo batch di dati per ogni epoca.

Nota: il dataloader di convalida YOLOv5 ha come impostazione predefinita una dimensione di batch di 32, quindi è 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 predizione registrate su Comet

Quando si registrano le previsioni di YOLOv5, Comet registra le immagini associate a ciascun set di previsioni. Per impostazione predefinita, viene registrato un massimo di 100 immagini di convalida. È possibile aumentare o diminuire questo numero utilizzando l'opzione 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

Utilizzare il 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

Caricamento di un set di dati su Comet Artifacts

Se si desidera memorizzare i dati utilizzando Comet Manufattiè possibile 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 del file coco128.yaml file.

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

Il dataset caricato si trova nella scheda Artefatti dell'area di lavoro Comet . artefatto-1

È possibile visualizzare 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 si desidera utilizzare un set di dati da Comet Artifacts, impostare il parametro path nel 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>"

Passare quindi questo file allo 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 il percorso dei dati nel flusso di lavoro della sperimentazione. Qui è possibile vedere un grafico che mostra tutti gli esperimenti che hanno utilizzato il set di dati caricato. manufatto-4

Riprendere una corsa di allenamento

Se la corsa di allenamento viene interrotta per qualsiasi motivo, ad esempio a causa di un'interruzione della connessione a Internet, è possibile 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>.

Questa operazione ripristina la corsa 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 artefatti del dataset Comet se sono stati utilizzati nella corsa originale. L'esecuzione ripresa continuerà a registrare l'Esperimento esistente nell'interfaccia utente di Comet .

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

Ricerca di iperparametri con l'ottimizzatore Comet

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

Configurazione di uno sweep dell'ottimizzatore

Per configurare Comet Optimizer, è necessario 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 si desidera passare altri argomenti allo sweep, è sufficiente aggiungerli dopo lo script.

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

Esecuzione di 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 dell'indagine. Date un'occhiata a un progetto con un'indagine completata qui

iperparametroyolo

📅C reato 1 anno fa ✏️ Aggiornato 2 mesi fa

Commenti