Meet YOLO26: next-gen vision AI.

Link to this sectionValidazione del modello con Ultralytics YOLO#

Ultralytics YOLO ecosystem and integrations

Link to this sectionIntroduzione#

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



Watch: Ultralytics Modes Tutorial: Validation

Link to this sectionPerché effettuare la validazione con Ultralytics YOLO?#

Ecco perché utilizzare la modalità Val di YOLO26 è vantaggioso:

  • Precisione: Ottieni metriche accurate come mAP50, mAP75 e mAP50-95 per valutare in modo completo il tuo modello.
  • Convenienza: Utilizza funzionalità integrate che ricordano le impostazioni di addestramento, semplificando il processo di validazione.
  • Flessibilità: Valida il tuo modello con gli stessi dataset e dimensioni dell'immagine o con altri differenti.
  • Ottimizzazione degli iperparametri: Usa le metriche di validazione per perfezionare il tuo modello per prestazioni migliori.

Link to this sectionCaratteristiche principali della modalità Val#

Queste sono le funzionalità degne di nota offerte dalla modalità Val di YOLO26:

  • Impostazioni automatizzate: I modelli ricordano le loro configurazioni di addestramento per una validazione semplice.
  • Supporto per metriche multiple: Valuta il tuo modello basandoti su una serie di metriche di accuratezza.
  • CLI e Python API: Scegli tra l'interfaccia a riga di comando o l'API Python in base alla tua preferenza per la validazione.
  • Compatibilità dei dati: Funziona perfettamente con i dataset utilizzati durante la fase di addestramento e anche con dataset personalizzati.
Suggerimento
  • I modelli YOLO26 ricordano automaticamente le loro impostazioni di addestramento, quindi puoi validare facilmente un modello con la stessa dimensione dell'immagine e sul dataset originale semplicemente con yolo val model=yolo26n.pt o YOLO("yolo26n.pt").val()

Link to this sectionEsempi di Utilizzo#

Valida l' accuratezza di un modello YOLO26n addestrato sul dataset COCO8. Non sono necessari argomenti poiché il model conserva i suoi data di addestramento e gli argomenti come attributi del modello. Vedi la sezione Argomenti qui sotto per un elenco completo degli argomenti di validazione.

Errore di multi-elaborazione su Windows

Su Windows, potresti ricevere un RuntimeError quando avvii la validazione come script. Aggiungi un blocco if __name__ == "__main__": prima del tuo codice di validazione per risolverlo.

Esempio
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.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 containing mAP50-95 for each category
metrics.box.image_metrics  # per-image metrics dictionary with precision, recall, F1, TP, FP, and FN

Link to this sectionArgomenti per la validazione del modello YOLO#

Quando si validano i modelli YOLO, è possibile perfezionare diversi argomenti per ottimizzare il processo di valutazione. Questi argomenti controllano aspetti come la dimensione dell'immagine di input, l'elaborazione a lotti e le soglie di prestazione. Di seguito è riportata un'analisi dettagliata di ciascun argomento per aiutarti a personalizzare le tue impostazioni di validazione in modo efficace.

ArgomentoTipoPredefinitoDescrizione
datastrNoneSpecifica il percorso del file di configurazione del dataset (ad esempio, coco8.yaml). Questo file dovrebbe includere il percorso dei dati di validazione.
imgszint640Definisce la dimensione delle immagini in input. Tutte le immagini vengono ridimensionate a questa dimensione prima dell'elaborazione. Dimensioni maggiori possono migliorare l'accuratezza per oggetti piccoli ma aumentare il tempo di calcolo.
batchint16Imposta il numero di immagini per batch. Valori più alti utilizzano la memoria GPU in modo più efficiente ma richiedono più VRAM. Regola in base alle risorse hardware disponibili.
save_jsonboolFalseSe True, salva i risultati in un file JSON per ulteriori analisi, integrazione con altri strumenti o invio a server di valutazione come COCO.
conffloat0.001Imposta la soglia di confidenza minima per le rilevazioni. Valori inferiori aumentano il richiamo ma potrebbero introdurre più falsi positivi. Utilizzato durante la validazione per calcolare le curve precisione-richiamo. L'impostazione predefinita è 0.01 per la validazione OBB per ridurre l'utilizzo della memoria.
ioufloat0.7Imposta la soglia Intersection Over Union per la Non-Maximum Suppression. Controlla l'eliminazione della rilevazione duplicata.
max_detint300Limita il numero massimo di rilevazioni per immagine. Utile in scene dense per evitare rilevazioni eccessive e gestire le risorse computazionali.
quantizeint o strNonePrecisione della validazione: 16/"fp16" abilita la validazione FP16 sulle GPU supportate; 32/"fp32"/non impostato è FP32. La quantizzazione INT8/PTQ viene configurata durante l'export, quindi utilizzata validando il modello esportato. Sostituisce il flag deprecato half.
devicestrNoneSpecifica il dispositivo per la validazione (cpu, cuda:0, npu, npu:0, ecc.). Quando None, seleziona automaticamente il miglior dispositivo disponibile. È possibile specificare più dispositivi CUDA con la separazione tramite virgola.
dnnboolFalseSe True, utilizza il modulo DNN di OpenCV per l'inferenza del modello ONNX, offrendo un'alternativa ai metodi di inferenza di PyTorch.
plotsboolTrueSe impostato su True, genera e salva grafici delle predizioni rispetto alla ground truth, matrici di confusione e curve PR per la valutazione visiva delle prestazioni del modello.
classeslist[int]NoneSpecifica un elenco di ID di classe da valutare. Utile per filtrare e concentrarsi solo su determinate classi durante la valutazione.
rectboolTrueSe True, utilizza l'inferenza rettangolare per il batching, riducendo il padding e potenzialmente aumentando la velocità e l'efficienza elaborando le immagini nel loro aspect ratio originale.
splitstr'val'Determina lo split del dataset da utilizzare per la validazione (val, test o train). Consente flessibilità nella scelta del segmento di dati per la valutazione delle prestazioni.
projectstrNoneNome della directory di progetto in cui vengono salvati gli output di validazione. Aiuta a organizzare i risultati di diversi esperimenti o modelli.
namestrNoneNome del run di validazione. Utilizzato per creare una sottodirectory all'interno della cartella di progetto, dove vengono memorizzati i log e gli output di validazione.
verboseboolTrueSe True, visualizza informazioni dettagliate durante il processo di validazione, inclusi metriche per classe, avanzamento del batch e ulteriori informazioni di debug.
save_txtboolFalseSe True, salva i risultati di rilevamento in file di testo, con un file per immagine, utili per ulteriori analisi, post-elaborazione personalizzata o integrazione con altri sistemi.
save_confboolFalseSe True, include i valori di confidenza nei file di testo salvati quando save_txt è abilitato, fornendo output più dettagliati per analisi e filtraggio.
workersint8Numero di thread worker per il caricamento dei dati. Valori più alti possono accelerare la pre-elaborazione dei dati ma possono aumentare l'utilizzo della CPU. L'impostazione a 0 utilizza il thread principale, che può essere più stabile in alcuni ambienti.
augmentboolFalseAbilita la test-time augmentation (TTA) durante la validazione, migliorando potenzialmente l'accuratezza del rilevamento a scapito della velocità di inferenza eseguendo l'inferenza su versioni trasformate dell'input.
agnostic_nmsboolFalseAbilita la Non-Maximum Suppression agnostica rispetto alla classe, che unisce i box sovrapposti indipendentemente dalla loro classe predetta. Utile per applicazioni focalizzate sulle istanze. Per i modelli end-to-end (YOLO26, YOLOv10), questo impedisce solo che lo stesso rilevamento appaia con etichette di classe multiple (duplicati IoU=1.0) e non esegue la soppressione basata sulla soglia IoU tra box distinti.
single_clsboolFalseTratta tutte le classi come una singola classe durante la validazione. Utile per valutare le prestazioni del modello su compiti di rilevamento binario o quando le distinzioni di classe non sono importanti.
visualizeboolFalseVisualizza 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.
show_labelsboolTrueVisualizza le etichette di classe nelle visualizzazioni di validazione quando visualize=True. Imposta su False per una visualizzazione più pulita di corrispondenze ed errori.
show_confboolTrueVisualizza i punteggi di confidenza nelle visualizzazioni di validazione quando visualize=True. Imposta su False per una visualizzazione più pulita di corrispondenze ed errori.
compilebool o strFalseAbilita la compilazione del grafo PyTorch 2.x torch.compile con backend='inductor'. Accetta True"default", False → disabilita, o una modalità stringa come "default", "reduce-overhead", "max-autotune-no-cudagraphs". Ripiega su eager con un avviso se non supportato.
end2endboolNoneSovrascrive la modalità end-to-end nei modelli YOLO che supportano l'inferenza senza NMS (YOLO26, YOLOv10). Impostarlo su False ti consente di eseguire la validazione utilizzando la tradizionale pipeline NMS, permettendoti inoltre di utilizzare l'argomento iou.

Ognuna di queste impostazioni gioca un ruolo vitale nel processo di validazione, consentendo una valutazione personalizzabile ed efficiente dei modelli YOLO. Regolare questi parametri in base alle tue specifiche esigenze e risorse può aiutare a raggiungere il miglior equilibrio tra accuratezza e prestazioni.

Link to this sectionEsempio di validazione con argomenti#



Watch: How to Export Model Validation Results in CSV, JSON, SQL, Polars DataFrame & More

Esplora la validazione del modello e i 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("yolo26n.pt")

# Customize validation settings
metrics = model.val(data="coco8.yaml", imgsz=640, batch=16, conf=0.25, iou=0.7, device="0")
Esporta ConfusionMatrix

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

from ultralytics import YOLO

model = YOLO("yolo26n.pt")

results = model.val(data="coco8.yaml", plots=True)
print(results.confusion_matrix.to_df())
Precision, Recall e F1 per immagine

La validazione memorizza le metriche di precision, recall, F1, TP, FP e FN per immagine (alla soglia IoU 0.5) per tutte le attività tranne la classificazione. Accedi ad esse tramite results.box.image_metrics per rilevamento e OBB, results.seg.image_metrics per segmentazione e results.pose.image_metrics per pose al termine della validazione.

from ultralytics import YOLO

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

# Validate and access per-image metrics
results = model.val(data="coco8.yaml")

# image_metrics is a dictionary with image filenames as keys
print(results.box.image_metrics)
# Output: {'image1.jpg': {'precision': 0.85, 'recall': 0.92, 'f1': 0.88, 'tp': 17, 'fp': 3, 'fn': 1}, ...}

# Access metrics for a specific image
results.box.image_metrics["image1.jpg"]  # {'precision': 0.85, 'recall': 0.92, 'f1': 0.88, 'tp': 17, 'fp': 3, 'fn': 1}

Ogni voce in image_metrics contiene le seguenti chiavi:

ChiaveDescrizione
precisionPunteggio di precision per l'immagine (tp / (tp + fp)).
recallPunteggio di recall per l'immagine (tp / (tp + fn)).
f1Media armonica di precision e recall.
tpNumero di veri positivi per l'immagine.
fpNumero di falsi positivi per l'immagine.
fnNumero di falsi negativi per l'immagine.

Questa funzionalità è disponibile per le attività di rilevamento, segmentazione, pose e OBB.

MetodoTipo di ritornoDescrizione
summary()List[Dict[str, Any]]Converte i risultati della validazione in un dizionario riassuntivo.
to_df()DataFrameRestituisce i risultati della validazione come un Polars DataFrame strutturato.
to_csv()strEsporta i risultati della validazione in formato CSV e restituisce la stringa CSV.
to_json()strEsporta i risultati della validazione in formato JSON e restituisce la stringa JSON.

Per maggiori dettagli vedi la documentazione della classe DataExportMixin.

Link to this sectionFAQ#

Link to this sectionCome posso validare il mio modello YOLO26 con Ultralytics?#

Per validare il tuo modello YOLO26, 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("yolo26n.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=yolo26n.pt

Per ulteriori personalizzazioni, puoi regolare 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.

Link to this sectionQuali metriche posso ottenere dalla validazione del modello YOLO26?#

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

  • mAP50 (mean Average Precision alla soglia IoU 0.5)
  • mAP75 (mean Average Precision alla soglia IoU 0.75)
  • mAP50-95 (mean Average Precision su molteplici 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
print(metrics.box.image_metrics)  # per-image metrics dictionary with precision, recall, F1, TP, FP, and FN

Per una valutazione completa delle prestazioni, è cruciale rivedere tutte queste metriche. Per maggiori dettagli, fai riferimento alle Caratteristiche principali della modalità Val.

Link to this sectionQuali sono i vantaggi dell'utilizzo di Ultralytics YOLO per la validazione?#

Utilizzare Ultralytics YOLO per la validazione offre diversi vantaggi:

  • Precision: YOLO26 offre metriche di prestazione accurate, inclusi mAP50, mAP75 e mAP50-95.
  • Convenienza: I modelli ricordano le loro impostazioni di addestramento, rendendo la validazione semplice.
  • Flessibilità: Puoi validare rispetto agli stessi dataset e dimensioni dell'immagine o altri differenti.
  • Ottimizzazione degli iperparametri: Le metriche di validazione aiutano a perfezionare i modelli per prestazioni migliori.

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

Link to this sectionPosso validare il mio modello YOLO26 utilizzando un dataset personalizzato?#

Sì, puoi validare il tuo modello YOLO26 utilizzando un dataset personalizzato. Specifica l'argomento data con il percorso del tuo file di configurazione del dataset. Questo file dovrebbe includere il percorso dei dati di validazione.

Nota

La validazione viene eseguita utilizzando i nomi delle classi del modello stesso, che puoi visualizzare utilizzando model.names e che potrebbero essere diversi da quelli specificati nel file di configurazione del dataset.

Esempio in Python:

from ultralytics import YOLO

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

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

Esempio utilizzando CLI:

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

Per opzioni più personalizzabili durante la validazione, vedi la sezione Esempio di validazione con argomenti.

Link to this sectionCome posso salvare i risultati della validazione in un file JSON in YOLO26?#

Per salvare i risultati della validazione in un file JSON, puoi impostare l'argomento save_json su True quando esegui la validazione. Questo può essere fatto sia nell'API Python che nella CLI.

Esempio in Python:

from ultralytics import YOLO

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

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

Esempio utilizzando CLI:

yolo val model=yolo26n.pt save_json=True

Questa funzionalità è particolarmente utile per ulteriori analisi o integrazione con altri strumenti. Controlla gli Argomenti per la validazione del modello YOLO per maggiori dettagli.

Commenti