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
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 .
Provate un esempio!
Qui potete vedere un esempio di una corsa completata
O meglio ancora, provatelo voi stessi in questo Quaderno 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 .
È possibile visualizzare l'anteprima dei dati direttamente nell'interfaccia utente di Comet .
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
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
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.
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 .
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