Vai al contenuto

Validazione del modello con Ultralytics YOLO

Ecosistema e integrazioni Ultralytics YOLO

Introduzione

La validazione è un passaggio fondamentale nella pipeline di machine learning, che consente di valutare la qualità dei modelli addestrati. La modalità Val in Ultralytics YOLO11 fornisce una solida suite di strumenti e metriche per valutare le prestazioni dei tuoi modelli di object detection. Questa guida funge da risorsa completa per capire come utilizzare efficacemente la modalità Val per garantire che i tuoi modelli siano accurati e affidabili.



Guarda: Tutorial sulle modalità di Ultralytics: Validazione

Perché convalidare con Ultralytics YOLO?

Ecco perché l'utilizzo della modalità Val di YOLO11 è vantaggioso:

  • Precisione: Ottieni metriche accurate come mAP50, mAP75 e mAP50-95 per valutare in modo completo il tuo modello.
  • Convenienza: Utilizza le funzionalità integrate che memorizzano le impostazioni di training, semplificando il processo di convalida.
  • Flessibilità: Convalida il tuo modello con set di dati e dimensioni delle immagini uguali o diversi.
  • Ottimizzazione degli iperparametri: Utilizza le metriche di validazione per ottimizzare il tuo modello e ottenere prestazioni migliori.

Funzionalità chiave della modalità Val

Queste sono le funzionalità principali offerte dalla modalità Val di YOLO11:

  • Impostazioni automatizzate: I modelli memorizzano le proprie configurazioni di training per una validazione immediata.
  • Supporto multi-metrica: Valuta il tuo modello in base a una serie di metriche di accuratezza.
  • CLI e API Python: Scegli tra l'interfaccia a riga di comando o l'API Python in base alle tue preferenze per la validazione.
  • Compatibilità dei dati: Funziona perfettamente con i set di dati utilizzati durante la fase di training, nonché con set di dati personalizzati.

Suggerimento

  • I modelli YOLO11 memorizzano automaticamente le impostazioni di training, quindi puoi convalidare facilmente un modello con le stesse dimensioni dell'immagine e sullo stesso set di dati originale semplicemente con yolo val model=yolo11n.pt oppure model('yolo11n.pt').val()

Esempi di utilizzo

Convalida il modello YOLO11n addestrato accuratezza sul dataset COCO8. Non sono necessari argomenti poiché model mantiene il suo training data e argomenti come attributi del modello. Consulta la sezione Argomenti di seguito per un elenco completo degli argomenti di convalida.

Esempio

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Validate the model
metrics = model.val()  # no arguments needed, dataset and settings remembered
metrics.box.map  # map50-95
metrics.box.map50  # map50
metrics.box.map75  # map75
metrics.box.maps  # a list contains map50-95 of each category
yolo detect val model=yolo11n.pt      # val official model
yolo detect val model=path/to/best.pt # val custom model

Argomenti per la validazione del modello YOLO

Durante la validazione dei modelli YOLO, è possibile ottimizzare diversi argomenti per ottimizzare il processo di valutazione. Questi argomenti controllano aspetti quali la dimensione dell'immagine di input, l'elaborazione batch e le soglie di performance. Di seguito è riportata un'analisi dettagliata di ciascun argomento per aiutarti a personalizzare efficacemente le impostazioni di validazione.

Argomento Tipo Predefinito Descrizione
data str None Specifica il percorso del file di configurazione del dataset (ad es., coco8.yaml). Questo file include i percorsi a dati di validazione, i nomi delle classi e il numero di classi.
imgsz int 640 Definisce la dimensione delle immagini di input. Tutte le immagini vengono ridimensionate a questa dimensione prima dell'elaborazione. Dimensioni maggiori possono migliorare la precisione per gli oggetti piccoli, ma aumentano il tempo di calcolo.
batch int 16 Imposta il numero di immagini per batch. Valori più alti utilizzano la memoria della GPU in modo più efficiente ma richiedono più VRAM. Regola in base alle risorse hardware disponibili.
save_json bool False Se True, salva i risultati in un file JSON per ulteriori analisi, integrazione con altri strumenti o invio a server di valutazione come COCO.
conf float 0.001 Imposta la soglia minima di confidenza per le detection. Valori più bassi aumentano il recall ma possono introdurre più falsi positivi. Utilizzato durante la validation per calcolare le curve precision-recall.
iou float 0.7 Imposta la soglia di Intersection Over Union per la Non-Maximum Suppression. Controlla l'eliminazione delle detection duplicate.
max_det int 300 Limita il numero massimo di rilevamenti per immagine. Utile in scene dense per prevenire rilevamenti eccessivi e gestire le risorse computazionali.
half bool True Abilita il calcolo in half-precision (FP16), riducendo l'utilizzo della memoria e potenzialmente aumentando la velocità con un impatto minimo sull'accuratezza.
device str None Specifica il dispositivo per la validation (cpu, cuda:0, ecc.). Quando None, seleziona automaticamente il miglior dispositivo disponibile. È possibile specificare più dispositivi CUDA separandoli con una virgola.
dnn bool False Se True, utilizza il OpenCV modulo DNN per l'inferenza del modello ONNX, offrendo un'alternativa ai metodi di inferenza PyTorch .
plots bool False Quando impostato su True, genera e salva grafici di previsioni rispetto alla verità di base, matrici di confusione e curve PR per la valutazione visiva delle prestazioni del modello.
classes list[int] None Specifica un elenco di ID di classe su cui eseguire il training. Utile per filtrare e concentrarsi solo su determinate classi durante la valutazione.
rect bool True Se True, utilizza l'inferenza rettangolare per il batching, riducendo il padding e potenzialmente aumentando la velocità e l'efficienza elaborando le immagini nel loro rapporto d'aspetto originale.
split str 'val' Determina la divisione del dataset da utilizzare per la validation (val, test, oppure train). Consente flessibilità nella scelta del segmento di dati per la valutazione delle prestazioni.
project str None Nome della directory del progetto in cui vengono salvati gli output di validazione. Aiuta a organizzare i risultati di diversi esperimenti o modelli.
name str None Nome dell'esecuzione di convalida. Utilizzato per creare una sottodirectory all'interno della cartella del progetto, dove vengono archiviati i log e gli output di convalida.
verbose bool False Se True, visualizza informazioni dettagliate durante il processo di validazione, incluse metriche per classe, avanzamento del batch e informazioni di debug aggiuntive.
save_txt bool False Se True, salva i risultati del rilevamento in file di testo, con un file per immagine, utile per ulteriori analisi, post-elaborazione personalizzata o integrazione con altri sistemi.
save_conf bool False Se True, include i valori di confidenza nei file di testo salvati quando save_txt è abilitato, fornendo un output più dettagliato per l'analisi e il filtraggio.
workers int 8 Numero di thread di lavoro per il caricamento dei dati. Valori più alti possono accelerare la preelaborazione dei dati, ma possono aumentare l'utilizzo della CPU. Impostare a 0 utilizza il thread principale, che può essere più stabile in alcuni ambienti.
augment bool False Abilita l'aumento dei dati in fase di test (TTA) durante la convalida, migliorando potenzialmente l'accuratezza del rilevamento a costo della velocità di inferenza eseguendo l'inferenza su versioni trasformate dell'input.
agnostic_nms bool False Abilita la Non-Maximum Suppression class-agnostic, che unisce i riquadri sovrapposti indipendentemente dalla classe prevista. Utile per applicazioni incentrate sull'istanza.
single_cls bool False Considera tutte le classi come un'unica classe durante la convalida. Utile per valutare le prestazioni del modello su attività di rilevamento binario o quando le distinzioni di classe non sono importanti.
visualize bool False Visualizza le ground truth, i veri positivi, i falsi positivi e i falsi negativi per ogni immagine. Utile per il debug e l'interpretazione del modello.

Ciascuna di queste impostazioni svolge un ruolo fondamentale nel processo di validazione, consentendo una valutazione personalizzabile ed efficiente dei modelli YOLO. La regolazione di questi parametri in base alle proprie esigenze e risorse specifiche può aiutare a raggiungere il miglior equilibrio tra accuratezza e performance.

Esempio di convalida con argomenti



Guarda: Come esportare i risultati della convalida del modello in CSV, JSON, SQL, Polars DataFrame e altro ancora

Esplora la convalida del modello e diversi metodi di esportazione in Google Colab

Gli esempi seguenti mostrano la validazione del modello YOLO con argomenti personalizzati in Python e CLI.

Esempio

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.pt")

# Customize validation settings
metrics = model.val(data="coco8.yaml", imgsz=640, batch=16, conf=0.25, iou=0.6, device="0")
yolo val model=yolo11n.pt data=coco8.yaml imgsz=640 batch=16 conf=0.25 iou=0.6 device=0

Esporta ConfusionMatrix

Puoi anche salvare i risultati di ConfusionMatrix in diversi formati utilizzando il codice fornito.

from ultralytics import YOLO

model = YOLO("yolo11n.pt")

results = model.val(data="coco8.yaml", plots=True)
print(results.confusion_matrix.to_df())
Metodo Tipo di ritorno Descrizione
summary() List[Dict[str, Any]] Converte i risultati della convalida in un dizionario riassuntivo.
to_df() DataFrame Restituisce i risultati della convalida come un DataFrame Polars strutturato.
to_csv() str Esporta i risultati della validazione in formato CSV e restituisce la stringa CSV.
to_json() str Esporta i risultati della validazione in formato JSON e restituisce la stringa JSON.

Per maggiori dettagli, consultare la DataExportMixin documentazione della classe.

FAQ

Come posso convalidare il mio modello YOLO11 con Ultralytics?

Per convalidare il tuo modello YOLO11, puoi utilizzare la modalità Val fornita da Ultralytics. Ad esempio, utilizzando l'API Python, puoi caricare un modello ed eseguire la validazione con:

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.pt")

# Validate the model
metrics = model.val()
print(metrics.box.map)  # map50-95

In alternativa, puoi utilizzare l'interfaccia a riga di comando (CLI):

yolo val model=yolo11n.pt

Per un'ulteriore personalizzazione, puoi modificare vari argomenti come imgsz, batch, e conf sia in modalità Python che CLI. Consulta la sezione Argomenti per la validazione del modello YOLO per l'elenco completo dei parametri.

Quali metriche posso ottenere dalla validazione del modello YOLO11?

La validazione del modello YOLO11 fornisce diverse metriche chiave per valutare le prestazioni del modello. Queste includono:

  • mAP50 (precisione media media alla soglia IoU 0.5)
  • mAP75 (precisione media media alla soglia IoU 0.75)
  • mAP50-95 (precisione media media su più soglie IoU da 0.5 a 0.95)

Utilizzando l'API Python, puoi accedere a queste metriche come segue:

metrics = model.val()  # assumes `model` has been loaded
print(metrics.box.map)  # mAP50-95
print(metrics.box.map50)  # mAP50
print(metrics.box.map75)  # mAP75
print(metrics.box.maps)  # list of mAP50-95 for each category

Per una valutazione completa delle prestazioni, è fondamentale esaminare tutte queste metriche. Per maggiori dettagli, fare riferimento alle Caratteristiche principali della modalità Val.

Quali sono i vantaggi dell'utilizzo di Ultralytics YOLO per la convalida?

L'utilizzo di Ultralytics YOLO per la validazione offre diversi vantaggi:

  • Precisione: YOLO11 offre metriche di performance accurate tra cui mAP50, mAP75 e mAP50-95.
  • Convenienza: I modelli ricordano le proprie impostazioni di training, rendendo la validazione semplice.
  • Flessibilità: Puoi eseguire la validazione rispetto agli stessi set di dati e dimensioni delle immagini o a set di dati e dimensioni diversi.
  • Ottimizzazione degli iperparametri: Le metriche di validazione aiutano a mettere a punto i modelli per ottenere prestazioni migliori.

Questi vantaggi assicurano che i tuoi modelli siano valutati a fondo e possano essere ottimizzati per risultati superiori. Scopri di più su questi vantaggi nella sezione Perché convalidare con Ultralytics YOLO.

Posso convalidare il mio modello YOLO11 utilizzando un set di dati personalizzato?

Sì, puoi convalidare il tuo modello YOLO11 usando un dataset personalizzato. Specifica l'argomento data con il percorso del file di configurazione del tuo dataset. Questo file dovrebbe includere i percorsi dei dati di validazione, i nomi delle classi e altri dettagli rilevanti.

Esempio in python:

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.pt")

# Validate with a custom dataset
metrics = model.val(data="path/to/your/custom_dataset.yaml")
print(metrics.box.map)  # map50-95

Esempio usando la CLI:

yolo val model=yolo11n.pt data=path/to/your/custom_dataset.yaml

Per opzioni più personalizzabili durante la convalida, consulta la sezione Esempio di convalida con argomenti.

Come posso salvare i risultati della convalida in un file JSON in YOLO11?

Per salvare i risultati della convalida in un file JSON, puoi impostare il save_json a True durante l'esecuzione della convalida. Questo può essere fatto sia nell'API python che nella CLI.

Esempio in python:

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.pt")

# Save validation results to JSON
metrics = model.val(save_json=True)

Esempio usando la CLI:

yolo val model=yolo11n.pt save_json=True

Questa funzionalità è particolarmente utile per ulteriori analisi o integrazioni con altri strumenti. Consulta gli Argomenti per la convalida del modello YOLO per maggiori dettagli.



📅 Creato 1 anno fa ✏️ Aggiornato 5 giorni fa

Commenti