Meet YOLO26: next-gen vision AI.

Logo di Comet ML per il monitoraggio degli esperimenti di machine learning

Link to this sectionYOLOv5 con Comet#

Questa guida illustra come utilizzare YOLOv5 con Comet, uno strumento potente per tracciare, confrontare e ottimizzare gli esperimenti di machine learning.

Link to this sectionInformazioni su Comet#

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

Monitora e visualizza le metriche dei modelli in tempo reale, salva i tuoi iperparametri, i dataset e i checkpoint dei modelli, e visualizza le predizioni dei tuoi modelli con i Pannelli Personalizzati Comet! 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!

Link to this sectionIniziare#

Link to this sectionInstalla Comet#

pip install comet_ml

Link to this sectionConfigura le credenziali di Comet#

Ci sono 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 Comet

[comet]
api_key=YOUR_API_KEY
project_name=YOUR_COMET_PROJECT_NAME # This will default to 'yolov5'

Link to this sectionEsegui 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 addestramento e di validazione. Puoi visualizzare e analizzare le tue esecuzioni nell'interfaccia utente di Comet.

Dashboard di Comet che mostra le metriche di addestramento e il monitoraggio degli esperimenti di YOLOv5

Link to this sectionProva un esempio!#

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

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

Open In Colab

Link to this sectionRegistrazione automatica#

Per impostazione predefinita, Comet registrerà i seguenti elementi:

Link to this sectionMetriche#

  • Box Loss, Object Loss, Classification Loss per 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

Link to this sectionParametri#

  • Iperparametri del modello
  • Tutti i parametri passati tramite le opzioni della riga di comando

Link to this sectionVisualizzazioni#

  • Matrice di confusione delle predizioni del modello sui dati di validazione
  • Grafici per le curve PR e F1 su tutte le classi
  • Correlogramma delle etichette di classe

Link to this sectionConfigura 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 predictions

Link to this sectionRegistrazione 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 al valore di intervallo fornito da save-period:

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

Link to this sectionRegistrazione delle predizioni del modello#

Per impostazione predefinita, le predizioni del modello (immagini, etichette di ground truth e bounding box) verranno registrate su Comet.

Puoi controllare la frequenza delle predizioni registrate e le immagini associate passando l'argomento della riga di comando bbox_interval. Le predizioni possono essere visualizzate utilizzando il Pannello Personalizzato Object Detection di Comet. Questa frequenza corrisponde a ogni N-esimo batch di dati per epoca. Nell'esempio seguente, registriamo ogni 2° batch di dati per ogni epoca.

Nota: Il dataloader di validazione di YOLOv5 utilizzerà per impostazione predefinita una dimensione del batch di 32, quindi dovrai impostare la frequenza di registrazione di conseguenza.

Ecco un progetto di esempio che utilizza il Pannello

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

Link to this sectionControllo del numero di immagini di predizione registrate su Comet#

Quando registri le predizioni da YOLOv5, Comet registrerà le immagini associate a ciascun set di predizioni. 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 1

Link to this sectionRegistrazione 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.pt

Link to this sectionCaricamento di un dataset su Comet Artifacts#

Se desideri archiviare i tuoi dati utilizzando Comet Artifacts, puoi farlo utilizzando il flag upload_dataset.

Il dataset deve essere organizzato come descritto nella documentazione di YOLOv5. Il file di configurazione yaml 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_dataset

Puoi trovare il dataset caricato nella scheda Artifacts nel tuo Workspace Comet:

Pannello degli artifact di Comet per il versionamento dei dataset

Puoi visualizzare in anteprima i dati direttamente nell'interfaccia utente di Comet:

Anteprima del dataset Comet e cronologia delle versioni

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

Metadati dell'artifact Comet

Link to this sectionUtilizzo di un Artifact salvato#

Se desideri utilizzare un dataset da Comet Artifacts, imposta la variabile path nel tuo file yaml del dataset in modo che 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 seguente modo:

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

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

Grafico di discendenza degli artifact di Comet

Link to this sectionRipresa 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 di esecuzione Comet (Run Path).

Il Run Path ha il seguente formato comet://WORKSPACE_NAME/PROJECT_NAME/EXPERIMENT_ID.

Ciò 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 addestramento, e il download degli Artifact di dataset 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"

Link to this sectionRicerca degli 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.

Link to this sectionConfigurazione di uno sweep dell'ottimizzatore#

Per configurare l'Ottimizzatore Comet, 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"

Lo script hpo.py 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

Link to this sectionVisualizzazione dei risultati#

Comet fornisce diversi modi per visualizzare i risultati del tuo sweep. Dai un'occhiata a un progetto con uno sweep completato qui.

Visualizzazione degli iperparametri di Comet

Collaboratori

Commenti