Link to this sectionApprofondimenti sulla valutazione e il fine-tuning dei modelli#
Dopo aver addestrato un modello YOLO, il passo successivo è misurarne le prestazioni e ottimizzarlo per colmare le lacune. La valutazione utilizza metriche come mAP e IoU per quantificare la precisione, mentre il fine-tuning regola i parametri di addestramento per rafforzare i punti deboli, affinché il modello soddisfi l'obiettivo del tuo progetto. Questa guida spiega le principali metriche di valutazione, come leggerle e le tecniche di fine-tuning che elevano le capacità del tuo modello.
Watch: Insights into Model Evaluation and Fine-Tuning | Tips for Improving Mean Average Precision
La valutazione e il fine-tuning si trovano quasi alla fine del flusso di lavoro del progetto di computer vision, una volta avviato l'addestramento e quando hai bisogno di verificare che il modello sia accurato, efficiente e pronto per il deployment.
Link to this sectionMetriche di valutazione chiave#
Varie metriche misurano l'efficacia delle prestazioni di un modello. Queste metriche di performance forniscono approfondimenti numerici chiari che guidano i miglioramenti per assicurarsi che il modello raggiunga gli obiettivi prefissati.
Link to this sectionPunteggio 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 punteggi più alti indicano una maggiore confidenza. Il punteggio di confidenza aiuta a filtrare le previsioni; solo i rilevamenti con punteggi superiori a una soglia specifica vengono considerati validi.
Quando esegui l'inferenza, se non vedi alcuna predizione e hai già controllato tutto il resto, prova ad abbassare la soglia di confidenza. A volte la soglia è troppo alta, il che porta il modello a ignorare predizioni valide. Abbassandola, permetti al modello di considerare più possibilità. Potrebbe non soddisfare i tuoi obiettivi finali, ma è un ottimo modo per vedere cosa sa fare il modello e decidere come procedere con il fine-tuning.
Link to this sectionIntersection over Union#
Intersection over Union (IoU) è una metrica nell'object detection che misura quanto bene il bounding box previsto si sovrapponga a quello reale. I valori di IoU variano da 0 a 1, dove uno rappresenta una corrispondenza perfetta. L'IoU è essenziale perché misura quanto strettamente i confini previsti corrispondano ai confini reali dell'oggetto.
Link to this sectionMean Average Precision (Precisione media)#
La Mean Average Precision (mAP) misura quanto bene un modello di rilevamento oggetti performa nel complesso. Esamina la precisione di rilevamento di ogni classe di oggetti, calcola la media di questi punteggi e fornisce un unico numero che indica con quanta precisione il modello è in grado di identificare e classificare gli oggetti.
Due metriche mAP sono le più comunemente riportate:
- mAP@.5: Misura la precisione media a una singola soglia IoU di 0,5. Questa metrica verifica se il modello è in grado di trovare correttamente gli oggetti con un requisito di precisione meno rigoroso. Si concentra sul fatto che l'oggetto sia approssimativamente nella posizione corretta, senza necessitare di un posizionamento perfetto, e aiuta a capire se il modello è generalmente bravo a individuare gli oggetti.
- mAP@.5:.95: Calcola la media dei valori mAP calcolati a diverse soglie IoU, da 0.5 a 0.95 con incrementi di 0.05. Questa metrica è più dettagliata e rigorosa. Fornisce un quadro più completo di quanto accuratamente il modello possa trovare oggetti a diversi livelli di rigore ed è particolarmente utile per applicazioni che richiedono un rilevamento preciso degli oggetti.
Altre metriche mAP includono mAP@0.75, che utilizza una soglia IoU più rigorosa di 0.75, e mAP@small, medium e large, che valutano la precisione su oggetti di dimensioni diverse.
Link to this sectionValutazione di un modello YOLO26#
Puoi valutare un modello YOLO26 addestrato con la modalità di validazione. Per uno sguardo più approfondito su come viene calcolata e interpretata ogni metrica, consulta la guida alle metriche di performance YOLO26.
Link to this sectionGestione di dimensioni immagine variabili#
Valutare il tuo modello su immagini di diverse dimensioni ti aiuta a comprendere le sue prestazioni su set di dati eterogenei. Il parametro di validazione rect=true raggruppa le immagini per rapporto d'aspetto e riempie ogni batch fino alla forma più piccola possibile, così le immagini rettangolari vengono valutate senza essere forzate in un formato quadrato.
Il parametro imgsz imposta la dimensione dell'immagine utilizzata durante la validazione, applicata come quadrato. Se non lo imposti esplicitamente, YOLO26 riutilizza il valore salvato nelle impostazioni del modello (640 per i modelli preaddestrati ufficiali, o qualsiasi dimensione sia stata usata per addestrare un checkpoint personalizzato). Con rect=true, YOLO26 vincola il lato più lungo a imgsz e riempie il lato più corto in base a un multiplo dello stride, preservando il rapporto d'aspetto. Regola imgsz in base alle dimensioni del tuo dataset e alla memoria GPU disponibile.
Link to this sectionAccesso alle metriche di YOLO26#
Per comprendere in dettaglio le prestazioni del tuo modello, puoi accedere a specifiche metriche di valutazione con poche righe di Python. Lo snippet qui sotto 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 per nome del file, contenente precision, recall, f1, tp, fp e fn a IoU 0,5 per ogni immagine. I tempi di pre-elaborazione, inferenza, loss e post-elaborazione sono riportati separatamente nel dizionario results.speed. Insieme, questi ti consentono di individuare con precisione su quali immagini il modello riscontra difficoltà e di procedere con il fine-tuning di conseguenza.
Link to this sectionFine-tuning del tuo modello#
Il fine-tuning prende un modello preaddestrato e ne regola i parametri per migliorare le prestazioni su un compito o un dataset specifico. Noto anche come riaddestramento del modello, consente al modello di comprendere meglio e prevedere i risultati per i dati che incontrerà nelle applicazioni del mondo reale. In base ai risultati della valutazione, riaddestri il modello per ottenere risultati ottimali prestando molta attenzione ad alcuni parametri e tecniche chiave.
Link to this sectionPartire con un learning rate più elevato#
Durante l'addestramento normale, il learning rate parte basso e aumenta gradualmente durante le prime epoche per stabilizzare gli aggiornamenti iniziali. Nel fine-tuning, il modello possiede già caratteristiche utili derivanti dal preaddestramento, quindi puoi saltare questa fase di riscaldamento (warmup) e iniziare ad adattarti subito ai tuoi nuovi dati.
Imposta l'argomento di addestramento warmup_epochs su 0 in model.train() per disabilitare la fase di warmup. L'addestramento prosegue quindi dai pesi preaddestrati al learning rate base configurato (lr0) invece di rampa verso di esso, adattandosi alle sfumature dei tuoi nuovi dati.
from ultralytics import YOLO
# Load a pretrained model
model = YOLO("yolo26n.pt")
# Fine-tune with the warmup phase disabled
model.train(data="coco8.yaml", epochs=10, warmup_epochs=0)Link to this sectionTassellatura dell'immagine (tiling) per oggetti piccoli#
Il tiling delle immagini può migliorare la precisione di rilevamento per piccoli oggetti. Dividendo le immagini più grandi in segmenti più piccoli, come dividere immagini 1280x1280 in molteplici segmenti 640x640, preservi la risoluzione originale e permetti al modello di apprendere da frammenti ad alta risoluzione. Ultralytics supporta questo in fase di inferenza tramite inferenza a riquadri SAHI. Quando effettui l'addestramento su immagini a riquadri, assicurati di regolare correttamente le etichette per ogni nuovo segmento.
Link to this sectionConclusione#
La valutazione e il fine-tuning sono ciò che trasforma un modello addestrato in uno affidabile e pronto per il deployment: metriche come mAP e IoU espongono le debolezze, e modifiche mirate dei parametri le risolvono. Inizia con la modalità di validazione per fare il benchmark del tuo modello, quindi applica le tecniche di fine-tuning sopra descritte e continua a iterare con nuovi parametri, tecniche e dataset. Se lungo il percorso sorgono domande, chiedi alla community sul repository GitHub di Ultralytics o sul server Discord di Ultralytics.
Link to this sectionFAQ#
Link to this sectionQuali sono le metriche chiave per valutare le prestazioni del modello YOLO26?#
Per valutare le prestazioni del modello YOLO26, le metriche importanti includono Punteggio di confidenza, Intersection over Union (IoU) e Mean Average Precision (mAP). Il Punteggio di confidenza misura la certezza del modello per ogni classe di oggetto rilevato. L'IoU valuta quanto bene il bounding box previsto si sovrapponga a quello reale. La Mean Average Precision (mAP) aggrega i punteggi di precisione tra le classi, con mAP@.5 e mAP@.5:.95 come due tipi comuni per soglie IoU variabili. Scopri di più su queste metriche nella nostra guida alle metriche di prestazione di YOLO26.
Link to this sectionCome posso perfezionare un modello YOLO26 preaddestrato per il mio set di dati specifico?#
Il fine-tuning di un modello YOLO26 preaddestrato comporta la regolazione dei suoi parametri per migliorare le prestazioni su un compito o dataset specifico. Inizia valutando il tuo modello con le metriche, quindi imposta l'argomento di addestramento warmup_epochs su 0 in model.train() in modo che il learning rate inizi immediatamente dal valore base configurato invece di rampa verso di esso. Durante la valutazione, parametri come rect=true aiutano a gestire efficacemente le diverse dimensioni delle immagini. Per una guida più dettagliata, fai riferimento alla nostra sezione sul fine-tuning del tuo modello.
Link to this sectionCome posso gestire dimensioni di immagini variabili quando valuto il mio modello YOLO26?#
Per gestire dimensioni variabili delle immagini durante la valutazione, usa il parametro rect=true in YOLO26, che raggruppa le immagini per rapporto d'aspetto e riempie ogni batch invece di forzare ogni immagine in un formato quadrato. Il parametro imgsz imposta la dimensione dell'immagine per la validazione; se non lo sovrascrivi, YOLO26 riutilizza il valore salvato del modello (640 per i modelli preaddestrati ufficiali). Regola imgsz per adattarlo al tuo dataset e alla memoria della GPU. Per ulteriori dettagli, visita la nostra sezione sulla gestione di dimensioni variabili delle immagini.
Link to this sectionQuali passaggi pratici posso intraprendere per migliorare la precisione media (mAP) per il mio modello YOLO26?#
Migliorare la precisione media (mAP) per un modello YOLO26 prevede diversi passaggi:
- Regolazione degli iperparametri: Sperimenta con diversi learning rate, batch size e aumentazioni dell'immagine.
- Data Augmentation: Usa tecniche come Mosaic e MixUp per creare campioni di addestramento diversi.
- Tiling delle immagini: Dividi immagini più grandi in riquadri più piccoli per migliorare la precisione di rilevamento per oggetti di piccole dimensioni.
Fai riferimento alla nostra sezione dettagliata sul fine-tuning del tuo modello per strategie specifiche.
Link to this sectionCome accedo alle metriche di valutazione del modello YOLO26 in Python?#
Puoi accedere alle metriche di valutazione del modello YOLO26 utilizzando Python dopo aver eseguito la validazione:
from 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)Analizzare queste metriche ti aiuta a ottimizzare e fare fine-tuning del tuo modello YOLO26. Per un approfondimento, dai un'occhiata alla nostra guida sulle metriche di performance YOLO.