Come testare i modelli di visione artificiale#
Introduzione#
Il testing del modello verifica le prestazioni di un trained model su dati reali mai visti prima, come oggetti in movimento, scarsamente illuminati o parzialmente nascosti, anziché su un benchmark curato. Mentre la model evaluation misura le metriche su un dataset etichettato, il testing verifica che il comportamento appreso dal modello corrisponda ai goals of your application prima del rilascio. Questa guida tratta la preparazione dei dati di test, il testing dei modelli Ultralytics YOLO26 e l'individuazione di overfitting, underfitting e data leakage.
Watch: How to Test Machine Learning Models | Avoid Data Leakage in Computer Vision 🚀
Test del modello vs Valutazione del modello#
Il testing e la valutazione del modello sono due steps in a computer vision project distinti. La valutazione misura le prestazioni con le metriche su un dataset etichettato; il testing verifica se il comportamento appreso dal modello si mantiene in condizioni che ricordano il rilascio.
Immagina di aver addestrato un modello di computer vision per riconoscere cani e gatti e di volerlo installare in un negozio di animali per monitorarli. Durante la fase di valutazione del modello, usi un dataset etichettato per calcolare metriche come accuracy, precision e recall. Ad esempio, il modello potrebbe avere un'accuratezza del 98% nel distinguere tra cani e gatti in un dato dataset.
Dopo la valutazione, testi il modello utilizzando immagini provenienti da un negozio di animali per vedere quanto bene identifichi cani e gatti in condizioni più varie e realistiche. Controlli se riesce a etichettare correttamente cani e gatti quando sono in movimento, in diverse condizioni di illuminazione o parzialmente oscurati da oggetti come giocattoli o mobili. Il test del modello verifica che il modello si comporti come previsto al di fuori dell'ambiente di valutazione controllato.
Preparazione per il test del modello#
I datasets di computer vision vengono solitamente suddivisi in set di addestramento e di test per simulare le condizioni reali: il training data insegna al modello, mentre il data di test ne verifica il comportamento su esempi mai visti prima. La Ultralytics Platform mantiene l'organizzazione e l'annotazione dei dataset in un unico posto, il che aiuta durante la creazione di un set di test etichettato.
- Rappresentazione realistica: I dati di test mai visti prima dovrebbero essere simili ai dati che il modello gestirà una volta implementato. Questo fornisce un quadro realistico delle capacità del modello.
- Dimensioni sufficienti: Il dataset di test deve essere abbastanza grande da fornire approfondimenti affidabili su quanto bene performa il modello.
Come testare un modello YOLO26#
Testare un modello YOLO26 addestrato comporta due flussi di lavoro complementari: validare su uno split di test etichettato per ottenere metriche quantitative e fare previsioni su nuove immagini per ispezionarne il comportamento in modo qualitativo.
Validazione su uno split di test etichettato#
La Validation mode confronta le predizioni del modello con le etichette di ground truth e riporta precision, recall, mAP50 e mAP50-95 per i modelli di rilevamento. Salva anche ausili visivi come una matrice di confusione e una curva precision-recall, che ti aiutano a individuare aree specifiche in cui il modello potrebbe non funzionare bene.
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 convalida viene eseguita sullo split val del dataset. Per misurare le prestazioni su un test set trattenuto, definisci uno split test: nello YAML del tuo dataset e passa split="test".
Previsione su nuove immagini#
La Prediction mode esegue il modello su dati nuovi e non visti senza richiedere etichette. Non produce metriche di prestazione, ma salvare gli output annotati ti permette di esaminare come si comporta il modello su immagini del mondo reale, ad esempio un'intera cartella di immagini di test in un solo colpo.
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 in un addestramento personalizzato, esegui la modalità di predizione con un checkpoint preaddestrato sulle tue immagini. I modelli sono preaddestrati su dataset come COCO, quindi i risultati danno una rapida idea di come il modello potrebbe comportarsi nel tuo contesto specifico.
Modalità di validazione vs. previsione#
| Modalità | Scopo | Richiede etichette | Output |
|---|---|---|---|
| Validation | Quantifica le prestazioni rispetto alla verità (ground truth) | Sì | Precisione, richiamo, mAP50, mAP50-95, matrice di confusione, curve PR |
| Prediction | Ispeziona il comportamento del modello su dati nuovi non etichettati | No | Immagini annotate e risultati di previsione, nessuna metrica |
Come analizzare i risultati del test#
Una volta ottenuti previsioni e metriche, approfondisci dove e perché il modello fallisce:
- Immagini classificate erroneamente: Identifica e rivedi le immagini che il modello ha classificato erroneamente per capire dove sbaglia.
- Analisi degli errori: Esegui un'analisi approfondita degli errori per capire le tipologie di errori (es. falsi positivi vs falsi negativi) e le loro potenziali cause.
- Bias ed equità: Controlla la presenza di eventuali bias nelle previsioni del modello. Assicurati che il modello funzioni altrettanto bene su diversi sottogruppi di dati, specialmente se include attributi sensibili come razza, genere o età.
Overfitting e underfitting nel machine learning#
Quando testi un modello di machine learning, specialmente nella computer vision, è importante fare attenzione all'overfitting e all'underfitting. Questi problemi possono influenzare significativamente il funzionamento del modello con i nuovi dati.
| Problema | Segnali comuni | Come affrontarli |
|---|---|---|
| Overfitting | Alta precisione di addestramento ma bassa precisione di validazione; ipersensibilità a piccoli cambiamenti o dettagli irrilevanti nelle immagini | Applica la regularization come il dropout, aumenta le dimensioni del dataset di addestramento, semplifica l'architettura del modello |
| Underfitting | Bassa precisione anche sul set di addestramento; fallimento costante nel riconoscere caratteristiche o oggetti ovvi | Usa un modello più complesso, fornisci caratteristiche più rilevanti, aumenta le epochs di addestramento |
La chiave è trovare un equilibrio in modo che il modello funzioni bene sia sui dataset di addestramento che su quelli di validazione. Monitorare regolarmente le metriche e ispezionare visivamente le previsioni durante i test ti aiuta a cogliere una deriva verso uno dei due estremi.
Data leakage nella visione artificiale e come evitarlo#
Il data leakage si verifica quando informazioni esterne al dataset di addestramento vengono accidentalmente utilizzate per addestrare il modello. Il modello può sembrare molto accurato durante l'addestramento, ma non funzionerà bene su dati nuovi e mai visti quando si verifica il data leakage.
Il leakage può essere difficile da individuare e spesso deriva da bias nascosti nei dati di addestramento:
| Tipo di bias | Cosa indica |
|---|---|
| Bias della fotocamera | Angoli diversi, illuminazione, ombre e movimenti della fotocamera introducono pattern indesiderati |
| Bias di sovrapposizione | Loghi, timestamp o altre sovrapposizioni nelle immagini traggono in inganno il modello |
| Bias di carattere e oggetto | Caratteri o oggetti specifici che appaiono frequentemente in determinate classi distorcono l'apprendimento del modello |
| Bias spaziale | Gli squilibri tra primo piano e sfondo, le distribuzioni delle bounding box e le posizioni degli oggetti influenzano l'addestramento |
| Bias di etichetta e dominio | Etichette errate o cambiamenti nei tipi di dati portano al leakage |
Come rilevare ed evitare il data leakage#
Per trovare il data leakage, controlla se i risultati del modello sono sorprendentemente buoni, osserva se una caratteristica è molto più importante delle altre, verifica che le decisioni del modello abbiano un senso intuitivo e accertati che i dati siano stati divisi correttamente prima di qualsiasi elaborazione.
Per prevenirlo, usa un dataset diversificato con immagini o video da fotocamere e ambienti diversi e rivedi attentamente i tuoi dati per individuare bias nascosti, come campioni positivi presi tutti in un momento specifico della giornata. Evitare il data leakage rende i tuoi modelli di visione artificiale più affidabili in situazioni reali.
Cosa viene dopo il test del modello#
Dopo aver testato il tuo modello, i passaggi successivi dipendono dai risultati. Se il tuo modello funziona bene, puoi rilasciarlo in un ambiente reale. Se i risultati non sono soddisfacenti, dovrai apportare miglioramenti. Ciò potrebbe comportare l'analisi degli errori, la gathering more data, il miglioramento della qualità dei dati, l'adjusting hyperparameters e la ripetizione dell'addestramento del modello.
Conclusione#
Un rigoroso testing del modello — validando su uno split di test riservato, effettuando previsioni su immagini del mondo reale e controllando overfitting e data leakage — è ciò che trasforma un modello ben valutato in uno affidabile. Risolvi i problemi evidenziati dai test prima del rilascio, e il tuo modello avrà molte più probabilità di funzionare come previsto in produzione. Se sorgono domande lungo il percorso, chiedi alla community sul Ultralytics GitHub repository o sul Ultralytics Discord server.
FAQ#
La valutazione del modello misura le prestazioni con le metriche su un dataset etichettato, mentre il testing del modello verifica come il modello si comporta su dati nuovi e non visti che ricordano le condizioni di rilascio. La valutazione produce numeri come precision e mAP da un dataset controllato; il testing rivela se il comportamento appreso si mantiene con illuminazione variabile, movimento o occlusione. Vedi Model Testing vs. Model Evaluation per un esempio pratico.
Usa la prediction mode e passa un percorso di cartella come
source— YOLO26 viene eseguito su ogni immagine nella cartella e può salvare i risultati annotati per la revisione. La modalità di predizione non calcola le metriche; per quantificare le prestazioni su un set etichettato, usa invece la validation mode. Entrambi i flussi di lavoro sono mostrati in How to Test a YOLO26 Model.Per i modelli di rilevamento, la validazione riporta precision, recall, mAP50 e mAP50-95 e salva grafici inclusi una matrice di confusione e una curva precision-recall. Per validare su uno split di test dedicato anziché sullo split
valpredefinito, definiscitest:nello YAML del tuo dataset e passasplit="test". Vedi la performance metrics guide per capire come interpretare ciascuna metrica.Per l'overfitting, applica tecniche di regolarizzazione come il dropout, aumenta le dimensioni del dataset di addestramento o semplifica l'architettura del modello. Per l'underfitting, usa un modello più complesso, fornisci caratteristiche più rilevanti o addestra per più epoche. I segni di ciascun problema e le relative correzioni sono riassunti in Overfitting and Underfitting in Machine Learning.
Sospetta un data leakage quando le prestazioni del test sembrano sorprendentemente buone, una singola caratteristica domina le predizioni o le decisioni del modello non hanno senso intuitivo. Evitalo usando dataset diversi provenienti da telecamere e ambienti differenti, esaminando i dati per individuare bias nascosti e verificando che la suddivisione train/test sia avvenuta prima di qualsiasi elaborazione. Vedi Data Leakage in Computer Vision per i tipi di bias comuni.
Se i risultati soddisfano gli obiettivi del tuo progetto, rilascia il modello; in caso contrario, miglioralo prima del rilascio. Ciò può significare analizzare gli errori, la collecting more diverse data, migliorare la qualità dei dati, il tuning hyperparameters e ripetere l'addestramento. Ripeti il testing dopo ogni ciclo di modifiche per confermare che le correzioni abbiano funzionato.