Approfondimenti sulla valutazione e il fine-tuning dei modelli#
Dopo il training di un modello YOLO, il passaggio successivo consiste nel misurarne le prestazioni e applicare il fine-tuning per colmare le lacune. La valutazione utilizza metriche come mAP e IoU per quantificare l'accuratezza, mentre il fine-tuning modifica i parametri di training per rafforzare i punti deboli, così che il modello raggiunga il tuo obiettivo di progetto. Questa guida spiega le principali metriche di valutazione, come leggerle e come agire in base ai risultati.
Watch: Insights into Model Evaluation and Fine-Tuning | Tips for Improving Mean Average Precision
La valutazione e il fine-tuning si collocano verso la fine del workflow di un progetto di computer vision, quando il training è già in corso e devi verificare che il modello sia accurato, efficiente e pronto per il deployment.
Principali metriche di valutazione#
Diverse metriche misurano l'efficacia delle prestazioni di un modello. Queste metriche delle prestazioni forniscono informazioni numeriche chiare che guidano i miglioramenti, aiutandoti a verificare 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, dove i punteggi più alti indicano una maggiore confidenza. Il punteggio di confidenza aiuta a filtrare le predizioni: vengono considerate valide solo le rilevazioni con punteggi di confidenza superiori a una soglia specificata.
Quando esegui l'inferenza, se non visualizzi alcuna predizione e hai già verificato tutto il resto, prova ad abbassare la soglia di confidenza. A volte la soglia è troppo alta e fa sì che il modello ignori predizioni valide. Abbassandola, permetti al modello di considerare più possibilità. Potrebbe non soddisfare gli obiettivi finali del progetto, ma è un buon modo per capire cosa può fare il modello e decidere come applicare il fine-tuning.
Intersezione sull'unione#
Intersezione sull'unione (IoU) è una metrica nel rilevamento degli oggetti che misura quanto la bounding box predetta si sovrapponga alla bounding box del ground truth. I valori IoU variano da 0 a 1, dove 1 rappresenta una corrispondenza perfetta. IoU è essenziale perché misura quanto i confini predetti corrispondano ai confini effettivi dell'oggetto.
Precisione media media#
La precisione media media (mAP) misura le prestazioni complessive di un modello di rilevamento degli oggetti. Esamina la precisione del rilevamento per ogni classe di oggetti, calcola la media di questi punteggi e restituisce un singolo numero che mostra quanto accuratamente il modello riesca a identificare e classificare gli oggetti.
Le due metriche mAP più comunemente riportate sono:
- mAP@.5: misura la precisione media a una singola soglia IoU pari a 0.5. Questa metrica verifica se il modello riesce a individuare correttamente gli oggetti con un requisito di accuratezza meno rigoroso. Si concentra sul fatto che l'oggetto si trovi approssimativamente nella posizione corretta, senza richiedere un posizionamento perfetto, e aiuta a capire se il modello è generalmente efficace nell'individuare gli oggetti.
- mAP@.5:.95: calcola la media dei valori mAP ottenuti a più soglie IoU, da 0.5 a 0.95 con incrementi di 0.05. Questa metrica è più dettagliata e rigorosa. Offre una panoramica più completa dell'accuratezza con cui il modello riesce a individuare 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 utilizza una soglia IoU più rigorosa pari a 0.75, e mAP@small, medium e large, che valutano la precisione su oggetti di dimensioni diverse.
Valutazione di un modello YOLO26#
Puoi valutare un modello YOLO26 sottoposto a training con la modalità di validazione. Per approfondire il calcolo e l'interpretazione di ogni metrica, consulta la guida alle metriche delle prestazioni di YOLO26.
Gestione di immagini di dimensioni variabili#
Valutare il modello su immagini di dimensioni diverse ti aiuta a comprenderne le prestazioni su dataset eterogenei. Il parametro di validazione rect=true raggruppa le immagini in base al rapporto d'aspetto e aggiunge padding a ogni batch fino alla forma minima compatibile, così le immagini rettangolari vengono valutate senza essere forzate in un quadrato.
Il parametro imgsz imposta la dimensione dell'immagine utilizzata durante la validazione, applicandola come quadrato. Se non lo imposti esplicitamente, YOLO26 riutilizza il valore salvato nelle impostazioni del modello (640 per i modelli ufficiali pretrained, oppure la dimensione utilizzata per il training di un checkpoint personalizzato). Con rect=true, YOLO26 limita il lato più lungo a imgsz e aggiunge 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 in 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.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt")
# Run validation on your dataset
results = model.val(data="coco8.yaml")
# Overall metrics
print("mAP50-95:", results.box.map) # mAP at IoU 0.50:0.95
print("mAP50:", results.box.map50) # mAP at IoU 0.50
print("mAP75:", results.box.map75) # mAP at IoU 0.75
print("Mean precision:", results.box.mp)
print("Mean recall:", results.box.mr)
print("Fitness:", results.box.fitness()) # weighted score used for model selection
# Per-class metrics
print("Class indices evaluated:", results.box.ap_class_index)
print("Per-class mAP50-95:", results.box.maps)
# Per-image precision, recall, F1, TP, FP, and FN
print("Per-image metrics:", results.box.image_metrics)
# Per-stage timing breakdown in milliseconds per image
print("Timing breakdown (ms/image):", results.speed)Nota 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 dal nome del file, che contiene precision, recall, f1, tp, fp e fn a IoU 0.5 per ogni immagine. I tempi di preprocessing, inferenza, calcolo della loss e postprocessing vengono riportati separatamente nel dizionario results.speed. Insieme, questi dati ti permettono di individuare le immagini con cui il modello ha difficoltà e di applicare il fine-tuning di conseguenza.
Fine-tuning del modello#
Il fine-tuning prende un modello pretrained e ne modifica i parametri per migliorarne le prestazioni su un'attività o un dataset specifico. Noto anche come retraining 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, esegui nuovamente il training del modello sui tuoi dati, modificando gli argomenti di training descritti nella guida al fine-tuning.
Suddivisione in riquadri per gli oggetti piccoli#
La suddivisione delle immagini in riquadri può migliorare l'accuratezza del rilevamento degli oggetti piccoli. Dividendo le immagini più grandi in segmenti più piccoli, ad esempio suddividendo immagini 1280x1280 in più segmenti 640x640, preservi la risoluzione originale e permetti al modello di apprendere da frammenti ad alta risoluzione. Ultralytics supporta questa procedura durante l'inferenza tramite l'inferenza suddivisa in riquadri con SAHI. Quando esegui il training su immagini suddivise in riquadri, assicurati di adattare correttamente le label per ogni nuovo segmento.
Conclusioni#
La valutazione e il fine-tuning trasformano un modello sottoposto a training in un modello affidabile e pronto per il deployment: metriche come mAP e IoU rivelano i punti deboli e modifiche mirate ai parametri li correggono. Inizia dalla modalità di validazione per ottenere un benchmark del modello, quindi esegui nuovamente il training con gli argomenti descritti nella guida al fine-tuning e continua a iterare con nuovi parametri, tecniche e dataset. Se sorgono domande, chiedi alla community nel repository GitHub di Ultralytics o nel server Discord di Ultralytics.
FAQ#
Per valutare le prestazioni di un modello YOLO26, le metriche importanti includono il punteggio di confidenza, l'Intersezione sull'unione (IoU) e la Precisione media media (mAP). Il punteggio di confidenza misura la certezza del modello per ogni classe di oggetti rilevata. IoU valuta quanto la bounding box predetta si sovrapponga al ground truth. La Precisione media media (mAP) aggrega i punteggi di precisione tra le classi; mAP@.5 e mAP@.5:.95 sono due tipologie comuni per diverse soglie IoU. Scopri di più su queste metriche nella nostra guida alle metriche delle prestazioni di YOLO26.
Il fine-tuning di un modello YOLO26 pretrained consiste nel modificarne i parametri per migliorarne le prestazioni su un'attività o un dataset specifico. Inizia valutando il modello con le metriche, quindi esegui nuovamente il training a partire dai pesi pretrained sul tuo dataset. Durante la valutazione, parametri come
rect=trueaiutano a gestire efficacemente immagini di dimensioni diverse. Per gli argomenti di training da modificare, consulta la guida al fine-tuning.Per gestire immagini di dimensioni variabili durante la valutazione, utilizza il parametro
rect=truein YOLO26, che raggruppa le immagini in base al rapporto d'aspetto e aggiunge padding a ogni batch invece di forzare ogni immagine in un quadrato. Il parametroimgszimposta la dimensione dell'immagine per la validazione; se non lo sovrascrivi, YOLO26 riutilizza il valore salvato nel modello (640 per i modelli ufficiali pretrained). Regolaimgszin base al tuo dataset e alla memoria GPU. Per ulteriori dettagli, visita la nostra sezione sulla gestione delle immagini di dimensioni variabili.Migliorare la precisione media media (mAP) di un modello YOLO26 richiede diversi passaggi:
- Regolazione degli iperparametri: sperimenta diversi learning rate, batch size e tecniche di data augmentation.
- Data augmentation: utilizza tecniche come Mosaic e MixUp per creare campioni di training diversificati.
- Suddivisione in riquadri: suddividi le immagini più grandi in riquadri più piccoli per migliorare l'accuratezza del rilevamento degli oggetti piccoli.
Per gli argomenti di training alla base dei passaggi 1 e 2, consulta la guida al fine-tuning; il passaggio 3 è descritto nella sezione sulla suddivisione delle immagini in riquadri.
Puoi accedere alle metriche di valutazione del modello YOLO26 utilizzando Python dopo aver eseguito la validazione:
Utilizzofrom ultralytics import YOLO # Load a model model = YOLO("yolo26n.pt") # Run validation results = model.val(data="coco8.yaml") # Access key metrics 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)L'analisi di queste metriche ti aiuta ad applicare il fine-tuning e a ottimizzare il modello YOLO26. Per un approfondimento, consulta la nostra guida sulle metriche delle prestazioni di YOLO.