Validazione del modello con 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
oppuremodel('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
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.