Ultralytics YOLO27:
Get Started

Approfondimenti sulla valutazione e sull'ottimizzazione del modello#

Dopo aver addestrato un modello YOLO, il passo successivo consiste nel misurarne le prestazioni e perfezionarlo per colmare le lacune. La valutazione usa metriche come mAP e IoU per quantificare l'accuratezza, mentre l'ottimizzazione modifica i parametri di addestramento per rafforzare i punti deboli e far sì che il modello raggiunga l'obiettivo del tuo progetto. Questa guida illustra le principali metriche di valutazione, come leggerle e come intervenire in base a ciò che indicano.



Guarda: Approfondimenti sulla valutazione e la messa a punto dei modelli | Suggerimenti per migliorare la precisione media (mAP)

La valutazione e l'ottimizzazione si collocano verso la fine del flusso di lavoro di un progetto di computer vision, quando l'addestramento è avviato e devi verificare che il modello sia accurato, efficiente e pronto per la distribuzione.

Metriche di valutazione principali#

Diverse metriche misurano l'efficacia di un modello. Queste metriche di prestazione forniscono informazioni chiare e numeriche che guidano i miglioramenti, assicurando che il modello raggiunga gli obiettivi previsti.

Punteggio di confidenza#

Il punteggio di confidenza rappresenta la certezza del modello che un oggetto rilevato appartenga a una determinata classe. Varia da 0 a 1; i punteggi più alti indicano una maggiore certezza. Il punteggio di confidenza aiuta a filtrare le predizioni: solo i rilevamenti con un punteggio superiore a una soglia specificata vengono considerati validi.

Non vedi predizioni?

Se durante l'inferenza non vedi alcuna predizione e hai già controllato tutto il resto, prova ad abbassare la soglia di confidenza. A volte la soglia è troppo alta e il modello ignora predizioni valide. Abbassarla consente al modello di prendere in considerazione più possibilità. Potrebbe non soddisfare gli obiettivi finali del tuo progetto, ma è un buon modo per vedere cosa sa fare il modello e decidere come perfezionarlo.

Intersection over Union#

Intersection over Union (IoU) è una metrica del rilevamento degli oggetti che misura quanto il riquadro di delimitazione predetto si sovrappone al riquadro di delimitazione di ground truth. I valori IoU variano da 0 a 1, dove 1 indica una corrispondenza perfetta. IoU è essenziale perché misura quanto i confini predetti corrispondono a quelli effettivi dell'oggetto.

Intersection over Union Overview

Precisione media media#

La precisione media media (mAP) misura le prestazioni complessive di un modello di rilevamento degli oggetti. Considera la precisione del rilevamento per ogni classe di oggetti, calcola la media dei punteggi e restituisce un unico numero che indica l'accuratezza con cui il modello è in grado di identificare e classificare gli oggetti.

In genere vengono riportate due metriche mAP:

  • mAP@.5: Misura la precisione media a un'unica soglia IoU pari a 0.5. Questa metrica verifica se il modello sa individuare correttamente gli oggetti con un requisito di accuratezza meno severo. Si concentra sul fatto che l'oggetto si trovi approssimativamente nella posizione giusta, senza richiedere una collocazione perfetta, e aiuta a capire se il modello è generalmente efficace nel rilevare gli oggetti.
  • mAP@.5:.95: Calcola la media dei valori mAP misurati a più soglie IoU, da 0.5 a 0.95 con incrementi di 0.05. Questa metrica è più dettagliata e rigorosa. Offre un quadro più completo dell'accuratezza con cui il modello individua gli oggetti a diversi livelli di severità ed è particolarmente utile per le applicazioni che richiedono un rilevamento preciso degli oggetti.

Altre metriche mAP includono mAP@0.75, che usa una soglia IoU più rigorosa, pari a 0.75, e mAP@small, medium e large, che valutano la precisione per oggetti di dimensioni diverse.

Mean average precision mAP metric

Valutazione di un modello YOLO26#

Puoi valutare un modello YOLO26 addestrato usando la modalità di validazione. Per un approfondimento sul calcolo e sull'interpretazione di ciascuna metrica, consulta la guida alle metriche di prestazione di YOLO26.

Gestione di immagini di dimensioni variabili#

Valutare il modello su immagini di dimensioni diverse aiuta a comprenderne le prestazioni su dataset eterogenei. Per impostazione predefinita, la validazione usa il raggruppamento rettangolare (rect=True in model.val()): raggruppa le immagini in base al rapporto d'aspetto e applica padding a ogni batch fino alla forma più piccola che le contiene, così le immagini rettangolari vengono valutate senza essere forzate in un quadrato.

Il parametro imgsz imposta le dimensioni dell'immagine usate durante la validazione, applicate come un quadrato. Se non lo imposti esplicitamente, YOLO26 riutilizza il valore salvato nelle impostazioni del modello (640 per i modelli ufficiali preaddestrati oppure la dimensione usata per addestrare un checkpoint personalizzato). Con rect=true, YOLO26 limita il lato più lungo a imgsz e applica padding al lato più corto fino a un multiplo dello stride, preservando il rapporto d'aspetto. Regola imgsz in base alle dimensioni del tuo dataset e alla memoria GPU disponibile.

Accesso alle metriche di YOLO26#

Per comprendere nel dettaglio le prestazioni del modello, puoi accedere a metriche di valutazione specifiche con poche righe di Python. Il frammento seguente carica un modello, esegue la validazione e stampa le metriche più utili.

Utilizzo
from ultralytics import YOLO

# Carica un modello
model = YOLO("yolo26n.pt")

# Esegui la convalida sul tuo dataset
results = model.val(data="coco8.yaml")

# Metriche complessive
print("mAP50-95:", results.box.map)  # mAP con IoU 0.50:0.95
print("mAP50:", results.box.map50)  # mAP con IoU 0.50
print("mAP75:", results.box.map75)  # mAP con IoU 0.75
print("Mean precision:", results.box.mp)
print("Mean recall:", results.box.mr)
print("Fitness:", results.box.fitness())  # punteggio ponderato usato per selezionare il modello

# Metriche per classe
print("Class indices evaluated:", results.box.ap_class_index)
print("Per-class mAP50-95:", results.box.maps)

# Precisione, richiamo, F1, TP, FP e FN per immagine
print("Per-image metrics:", results.box.image_metrics)

# Dettaglio dei tempi per fase in millisecondi per immagine
print("Timing breakdown (ms/image):", results.speed)

Tieni presente che fitness() è un metodo e deve essere chiamato con le parentesi, mentre metriche come map, map50 e mp sono proprietà a cui si accede direttamente.

L'attributo results.box.image_metrics è un dizionario per immagine, indicizzato per nome del file immagine, che contiene precision, recall, f1, tp, fp e fn con IoU 0.5 per ogni immagine. I tempi di pre-elaborazione, inferenza, loss e post-elaborazione sono riportati separatamente nel dizionario results.speed. Insieme, queste informazioni ti consentono di individuare le immagini con cui il modello ha difficoltà e di perfezionarlo di conseguenza.

Perfezionare il tuo modello#

Il fine-tuning parte da un modello preaddestrato e ne modifica i parametri per migliorarne le prestazioni su un'attività o un set di dati specifici. Questa procedura, nota anche come riaddestramento del modello, consente al modello di comprendere e prevedere meglio i risultati per i dati che incontrerà nelle applicazioni del mondo reale. In base ai risultati della valutazione, riaddestri il modello sui tuoi dati, modificando gli argomenti di addestramento descritti nella guida al fine-tuning.

Suddivisione delle immagini in riquadri per gli oggetti piccoli#

La suddivisione delle immagini in riquadri può migliorare la precisione del rilevamento degli oggetti piccoli. Dividendo le immagini più grandi in segmenti più piccoli, ad esempio suddividendo immagini da 1280x1280 in più segmenti da 640x640, mantieni la risoluzione originale e consenti al modello di apprendere da frammenti ad alta risoluzione. Ultralytics supporta questa funzionalità in fase di inferenza tramite l'inferenza con tassellatura SAHI. Quando addestri il modello su immagini suddivise in riquadri, assicurati di adattare correttamente le etichette a ogni nuovo segmento.

Conclusione#

La valutazione e il fine-tuning trasformano un modello addestrato in un modello affidabile e pronto per la distribuzione: metriche come mAP e IoU evidenziano i punti deboli, mentre modifiche mirate ai parametri li affrontano. Inizia con la modalità di validazione per misurare le prestazioni del tuo modello, quindi riaddestralo con gli argomenti descritti nella guida al fine-tuning e continua a iterare usando nuovi parametri, tecniche e set di dati. Se hai domande, chiedi alla community nel repository GitHub di Ultralytics o nel server Discord di Ultralytics.

Domande frequenti#

  • Per valutare le prestazioni di un modello YOLO26, le metriche importanti includono il punteggio di confidenza, l'intersezione su unione (IoU) e la precisione media (mAP). Il punteggio di confidenza misura il grado di certezza del modello per ogni classe di oggetti rilevata. IoU valuta quanto il riquadro di delimitazione predetto si sovrappone alla verità di riferimento. La precisione media (mAP) aggrega i punteggi di precisione tra le classi; mAP@.5 e mAP@.5:.95 sono due tipi comuni per soglie IoU diverse. Scopri di più su queste metriche nella nostra guida alle metriche delle prestazioni di YOLO26.

  • Il fine-tuning di un modello YOLO26 preaddestrato consiste nel modificarne i parametri per migliorare le prestazioni su un'attività o un set di dati specifici. Inizia valutando il modello con delle metriche, quindi riaddestralo sui tuoi dati usando i pesi preaddestrati. Durante la valutazione, parametri come rect=true aiutano a gestire efficacemente immagini di dimensioni diverse. Per sapere quali argomenti di addestramento modificare, consulta la guida al fine-tuning.

  • Per gestire immagini di dimensioni variabili durante la valutazione, usa la validazione rettangolare (rect=True, l'impostazione predefinita per model.val()), che raggruppa le immagini in base al rapporto d'aspetto e aggiunge padding a ogni batch invece di forzare ogni immagine a essere quadrata. Il parametro imgsz imposta la dimensione dell'immagine per la validazione; se non lo sovrascrivi, YOLO26 riutilizza il valore salvato nel modello (640 per i modelli ufficiali preaddestrati). Regola imgsz in base al tuo set di dati e alla memoria della GPU. Per maggiori dettagli, visita la nostra sezione sulla gestione di immagini di dimensioni variabili.

  • Per migliorare la precisione media (mAP) di un modello YOLO26, puoi procedere in diversi modi:

    1. Ottimizzazione degli iperparametri: sperimenta diversi tassi di apprendimento, dimensioni dei batch e trasformazioni per l'aumento dei dati.
    2. Aumento dei dati: usa tecniche come Mosaic e MixUp per creare campioni di addestramento diversificati.
    3. Suddivisione delle immagini in riquadri: dividi le immagini più grandi in riquadri più piccoli per migliorare la precisione del rilevamento degli oggetti piccoli.

    Per gli argomenti di addestramento relativi ai passaggi 1 e 2, consulta la guida al fine-tuning; il passaggio 3 è trattato nella sezione sulla suddivisione delle immagini in riquadri.

  • Puoi accedere alle metriche di valutazione del modello YOLO26 con Python dopo aver eseguito la validazione:

    Utilizzo
    from ultralytics import YOLO
    
    # Carica un modello
    model = YOLO("yolo26n.pt")
    
    # Esegui la validazione
    results = model.val(data="coco8.yaml")
    
    # Accedi alle metriche principali
    print("Mean average precision at IoU=0.50:", results.box.map50)
    print("Mean average precision at IoU=0.50:0.95:", results.box.map)
    print("Mean recall:", results.box.mr)
    print("Class indices evaluated:", results.box.ap_class_index)

    Analizzare queste metriche ti aiuta a perfezionare e ottimizzare il tuo modello YOLO26. Per approfondire, consulta la nostra guida alle metriche delle prestazioni di YOLO.

Commenti