Come testare i modelli di computer vision#
Introduzione#
Il testing del modello verifica le prestazioni di un modello addestrato su dati reali non visti in precedenza: oggetti in movimento, scarsamente illuminati o parzialmente nascosti, anziché un benchmark curato. Mentre la valutazione del modello misura le metriche su un dataset annotato, il testing verifica che il comportamento appreso dal modello corrisponda agli obiettivi della tua applicazione prima della distribuzione. Questa guida illustra come preparare i dati di test, testare i modelli Ultralytics YOLO26 e individuare overfitting, underfitting e data leakage.
Watch: How to Test Machine Learning Models | Avoid Data Leakage in Computer Vision 🚀
Testing del modello e valutazione del modello a confronto#
Il testing del modello e la valutazione del modello sono due fasi distinte di un progetto di computer vision. La valutazione misura le prestazioni con metriche su un dataset annotato; il testing verifica se il comportamento appreso dal modello regge in condizioni simili a quelle della distribuzione.
Supponiamo che tu abbia addestrato un modello di computer vision per riconoscere gatti e cani e che voglia distribuirlo in un negozio di animali per monitorare gli animali. Durante la fase di valutazione del modello, usi un dataset annotato per calcolare metriche come accuratezza, precision e recall. Ad esempio, il modello potrebbe raggiungere un'accuratezza del 98% nel distinguere tra gatti e cani in un determinato dataset.
Dopo la valutazione, testi il modello utilizzando immagini provenienti da un negozio di animali per verificare quanto bene identifichi gatti e cani in condizioni più varie e realistiche. Controlli se riesce ad assegnare correttamente l'etichetta a gatti e cani quando sono in movimento, in condizioni di illuminazione diverse o parzialmente occlusi da oggetti come giocattoli o mobili. Il testing del modello verifica che il modello si comporti come previsto al di fuori dell'ambiente di valutazione controllato.
Preparazione al testing del modello#
I dataset di computer vision sono generalmente suddivisi in set di addestramento e di test per simulare le condizioni del mondo reale: i dati di addestramento insegnano al modello, mentre i dati di test ne verificano il comportamento su esempi mai visti. La Ultralytics Platform gestisce l'organizzazione e l'annotazione dei dataset in un unico luogo, facilitando la creazione di un set di test annotato.
- Rappresentazione realistica: i dati di test mai visti in precedenza dovrebbero essere simili ai dati che il modello gestirà una volta distribuito. In questo modo ottieni un quadro realistico delle capacità del modello.
- Dimensioni sufficienti: il dataset di test deve essere abbastanza grande da fornire informazioni affidabili sulle prestazioni del modello.
Come testare un modello YOLO26#
Il testing di un modello YOLO26 addestrato prevede due flussi di lavoro complementari: la validazione su uno split di test annotato per ottenere metriche quantitative e la predizione su nuove immagini per esaminare qualitativamente il comportamento.
Validazione su uno split di test annotato#
La modalità di validazione confronta le predizioni del modello con le etichette di riferimento e restituisce precision, recall, mAP50 e mAP50-95 per i modelli di rilevamento. Salva inoltre elementi visivi come una matrice di confusione e una curva precision-recall, che ti aiutano a individuare le aree specifiche in cui il modello potrebbe avere prestazioni insufficienti.
from ultralytics import YOLO
# Load a pretrained model or your own trained checkpoint, e.g. "path/to/best.pt"
model = YOLO("yolo26n.pt")
# Validate; add split="test" if your dataset YAML defines a test split
metrics = model.val(data="coco8.yaml")
print(metrics.box.map) # mAP50-95Per impostazione predefinita, la validazione viene eseguita sullo split val del dataset. Per misurare le prestazioni su un set di test riservato, definisci uno split test: nel file YAML del dataset e passa split="test".
Predizione su nuove immagini#
La modalità di predizione esegue il modello su dati nuovi e mai visti senza richiedere etichette. Non produce metriche delle prestazioni, ma salvando gli output annotati puoi esaminare il comportamento del modello su immagini del mondo reale, ad esempio su un'intera cartella di immagini di test in un'unica operazione.
from ultralytics import YOLO
# Load a pretrained model or your own trained checkpoint, e.g. "path/to/best.pt"
model = YOLO("yolo26n.pt")
# Run predictions on a folder of test images and save annotated results
results = model.predict(source="path/to/test_images", save=True)Per verificare se YOLO26 è adatto alla tua applicazione prima di investire nell'addestramento personalizzato, esegui la modalità di predizione con un checkpoint pretrained sulle tue immagini. I modelli sono pretrained su dataset come COCO, quindi i risultati forniscono una rapida indicazione delle prestazioni che il modello potrebbe raggiungere nel tuo contesto specifico.
Modalità di validazione e di predizione a confronto#
| Modalità | Scopo | Richiede etichette | Output |
|---|---|---|---|
| Validazione | Quantifica le prestazioni rispetto ai dati di riferimento | Sì | Precision, recall, mAP50, mAP50-95, matrice di confusione, curve PR |
| Predizione | Esamina il comportamento del modello su dati nuovi e non annotati | No | Immagini annotate e risultati delle predizioni, senza metriche |
Come analizzare i risultati del test#
Una volta ottenute predizioni e metriche, analizza in dettaglio dove e perché il modello fallisce:
- Immagini classificate erroneamente: individua ed esamina le immagini che il modello ha classificato erroneamente per capire dove sta sbagliando.
- Analisi degli errori: esegui un'analisi approfondita degli errori per comprendere i tipi di errore (ad esempio, falsi positivi rispetto a falsi negativi) e le loro possibili cause.
- Bias ed equità: verifica la presenza di eventuali bias nelle predizioni del modello. Assicurati che il modello ottenga prestazioni uniformi su diversi sottoinsiemi di dati, soprattutto se questi includono attributi sensibili come razza, genere o età.
Overfitting e underfitting nel machine learning#
Quando testi un modello di machine learning, soprattutto nella computer vision, è importante prestare attenzione a overfitting e underfitting. Questi problemi possono influire significativamente sul funzionamento del modello con dati nuovi.
| Problema | Segnali comuni | Come risolverlo |
|---|---|---|
| Overfitting | Accuratezza elevata sull'addestramento ma bassa sulla validazione; eccessiva sensibilità a piccole variazioni o dettagli irrilevanti nelle immagini | Applica la regolarizzazione, ad esempio il dropout, aumenta le dimensioni del dataset di addestramento e semplifica l'architettura del modello |
| Underfitting | Accuratezza bassa anche sul set di addestramento; incapacità costante di riconoscere caratteristiche o oggetti evidenti | Usa un modello più complesso, fornisci caratteristiche più pertinenti e aumenta il numero di epoche di addestramento |
La chiave è trovare un equilibrio affinché il modello ottenga buone prestazioni sia sui dataset di addestramento sia su quelli di validazione. Monitorare regolarmente le metriche ed esaminare visivamente le predizioni durante il testing ti aiuta a individuare una deriva verso uno dei due estremi.
Data leakage nella computer vision e come evitarlo#
Il data leakage si verifica quando informazioni esterne al dataset di addestramento vengono utilizzate accidentalmente per addestrare il modello. Il modello può sembrare molto accurato durante l'addestramento, ma non avrà buone prestazioni su dati nuovi e mai visti quando si verifica un data leakage.
Il leakage può essere difficile da individuare e spesso deriva da bias nascosti nei dati di addestramento:
| Tipo di bias | Come si manifesta |
|---|---|
| Bias della fotocamera | Angolazioni, illuminazione, ombre e movimenti della fotocamera diversi introducono pattern indesiderati |
| Bias degli overlay | Loghi, timestamp o altri overlay nelle immagini inducono il modello in errore |
| Bias di font e oggetti | Font o oggetti specifici che compaiono frequentemente in determinate classi distorcono l'apprendimento del modello |
| Bias spaziale | Gli squilibri tra primo piano e sfondo, nelle distribuzioni delle bounding box e nelle posizioni degli oggetti influenzano l'addestramento |
| Bias delle etichette e del dominio | Etichette errate o variazioni nei tipi di dati causano leakage |
Come rilevare ed evitare il data leakage#
Per individuare il data leakage, verifica se i risultati del modello sono sorprendentemente buoni, controlla se una caratteristica è molto più importante delle altre, accertati che le decisioni del modello abbiano intuitivamente senso e verifica che i dati siano stati suddivisi correttamente prima di qualsiasi elaborazione.
Per prevenirlo, usa un dataset diversificato con immagini o video provenienti da fotocamere e ambienti diversi ed esamina attentamente i dati alla ricerca di bias nascosti, ad esempio se tutti i campioni positivi sono stati acquisiti in un determinato momento della giornata. Evitare il data leakage rende i tuoi modelli di computer vision più affidabili nelle situazioni del mondo reale.
Cosa fare dopo il testing del modello#
Dopo aver testato il modello, i passaggi successivi dipendono dai risultati. Se il modello ottiene buone prestazioni, puoi distribuirlo in un ambiente reale. Se i risultati non sono soddisfacenti, dovrai apportare dei miglioramenti. Potrebbe essere necessario analizzare gli errori, raccogliere più dati, migliorare la qualità dei dati, regolare gli iperparametri e riaddestrare il modello.
Conclusioni#
Un testing rigoroso del modello — convalidare su uno split di test riservato, eseguire predizioni su immagini del mondo reale e verificare la presenza di overfitting e data leakage — è ciò che trasforma un modello ben valutato in un modello affidabile. Risolvi i problemi evidenziati dal testing prima della distribuzione: in questo modo il modello avrà molte più probabilità di funzionare come previsto in produzione. Se sorgono dubbi, chiedi alla community nel repository Ultralytics su GitHub o nel server Discord di Ultralytics.
FAQ#
La valutazione del modello misura le prestazioni con metriche su un dataset annotato, mentre il testing del modello verifica come si comporta su dati nuovi e mai visti che riproducono le condizioni di distribuzione. La valutazione produce numeri come precision e mAP da un dataset controllato; il testing rivela se il comportamento appreso regge con illuminazione, movimento od occlusioni variabili. Consulta Testing del modello e valutazione del modello a confronto per un esempio pratico.
Usa la modalità di predizione e passa il percorso di una cartella come
source: YOLO26 verrà eseguito su ogni immagine della cartella e potrà salvare i risultati annotati per la revisione. La modalità di predizione non calcola metriche; per quantificare le prestazioni su un set annotato, usa invece la modalità di validazione. Entrambi i flussi di lavoro sono illustrati in Come testare un modello YOLO26.Per i modelli di rilevamento, la validazione restituisce precision, recall, mAP50 e mAP50-95 e salva grafici tra cui una matrice di confusione e una curva precision-recall. Per eseguire la validazione su uno split di test dedicato anziché sullo split predefinito
val, definiscitest:nel file YAML del dataset e passasplit="test". Consulta la guida alle metriche delle prestazioni per sapere come interpretare ogni metrica.In caso di overfitting, applica tecniche di regolarizzazione come il dropout, aumenta le dimensioni del dataset di addestramento oppure semplifica l'architettura del modello. In caso di underfitting, usa un modello più complesso, fornisci caratteristiche più pertinenti oppure addestra il modello per un numero maggiore di epoche. I segnali di ciascun problema e le relative soluzioni sono riepilogati in Overfitting e underfitting nel machine learning.
Sospetta la presenza di data leakage quando le prestazioni sul test sono sorprendentemente buone, una singola caratteristica domina le predizioni o le decisioni del modello non hanno intuitivamente senso. Previenilo usando dataset diversificati provenienti da fotocamere e ambienti diversi, esaminando i dati alla ricerca di bias nascosti e verificando che la suddivisione tra addestramento e test sia avvenuta prima di qualsiasi elaborazione. Consulta Data leakage nella computer vision per conoscere i tipi di bias più comuni.
Se i risultati soddisfano gli obiettivi del progetto, distribuisci il modello; in caso contrario, miglioralo prima della distribuzione. Ciò può significare analizzare gli errori, raccogliere dati più diversificati, migliorare la qualità dei dati, ottimizzare gli iperparametri e riaddestrare il modello. Ripeti il testing dopo ogni ciclo di modifiche per confermare che le correzioni abbiano funzionato.