Visione artificiale: Valutazione delle prestazioni
Il mondo della visione artificiale evolve rapidamente e con esso cresce il bisogno di comprendere non solo gli algoritmi, ma anche le migliori pratiche per addestrare, valutare e ottimizzare i modelli. Che tu stia lavorando su dataset complessi, sperimentando con tecniche di transfer learning o cercando di migliorare le performance su problemi specifici come classificazione, rilevamento o segmentazione, questa raccolta di FAQ ti offre risposte chiare e approfondite. Troverai spiegazioni pratiche, metriche fondamentali e strategie di validazione che ti aiuteranno a costruire modelli più robusti, evitando errori comuni e accelerando il tuo percorso nello sviluppo di soluzioni di computer vision.
Quali metriche si usano per valutare classificazione, rilevamento e segmentazione (accuracy, precision, recall, mAP, IoU)?
La valutazione delle prestazioni varia significativamente a seconda del tipo di task, ognuno dei quali richiede metriche specifiche per catturare aspetti diversi delle performance:
Classificazione di immagini: Accuracy misura la percentuale di predizioni corrette sul totale dei campioni. Tuttavia, in presenza di classi sbilanciate, diventa cruciale utilizzare Precision (True Positives / (True Positives + False Positives)), Recall (True Positives / (True Positives + False Negatives)) e F1-score (media armonica di precision e recall). Per problemi multi-classe si utilizzano macro-average e micro-average di queste metriche. La confusion matrix fornisce un'analisi dettagliata degli errori per classe.
Object Detection: Le prestazioni si valutano principalmente tramite IoU (Intersection over Union), che misura l'overlap tra bounding box predetta e ground truth dividendo l'area di intersezione per l'area di unione. La metrica chiave è mAP (mean Average Precision), che calcola l'Average Precision per ogni classe su diverse soglie IoU (tipicamente da 0.5 a 0.95 con step di 0.05) e ne fa la media. mAP@0.5 è più permissivo, mentre mAP@0.5:0.95 fornisce una valutazione più rigorosa della localizzazione.
Segmentazione semantica: Si utilizzano principalmente IoU pixel-wise e Dice Coefficient (2×TP/(2×TP+FP+FN)) per misurare quanto accuratamente le maschere segmentate coincidono con quelle reali. Il mean IoU (mIoU) calcola la media dell'IoU su tutte le classi. Pixel Accuracy misura la frazione di pixel classificati correttamente, mentre Frequency Weighted IoU pondera le classi in base alla loro frequenza nel dataset.
Instance Segmentation: Combina metriche di detection (mAP con IoU su maschere invece che bounding box) e segmentation, valutando sia la capacità di individuare istanze separate che la qualità della segmentazione a livello di pixel.
Come si costruisce una curva ROC e si calcola l'AUC per un classificatore di immagini?
La curva ROC (Receiver Operating Characteristic) è uno strumento fondamentale per valutare classificatori binari, mostrando il trade-off tra sensibilità e specificità:
1. Ottenimento delle probabilità: Il modello deve produrre probabilità di appartenenza alla classe positiva (tramite softmax per multi-classe o sigmoid per binario), non solo predizioni discrete. Per classificatori di immagini, questo significa che l'ultimo layer deve essere configurato per output probabilistici.
2. Calcolo delle metriche per ogni soglia: Si varia sistematicamente la soglia di decisione da 0 a 1 e per ogni valore si calcolano True Positive Rate (TPR = Sensitivity = Recall) e False Positive Rate (FPR = 1 - Specificity). TPR misura la frazione di positivi correttamente identificati, mentre FPR indica la frazione di negativi erroneamente classificati come positivi.
3. Costruzione della curva: Si plottano i punti (FPR, TPR) per ogni soglia, ottenendo una curva che va da (0,0) a (1,1). Una curva che si avvicina all'angolo superiore sinistro indica migliori performance, mentre una linea diagonale rappresenta un classificatore casuale.
4. Calcolo dell'AUC: L'Area Under the Curve rappresenta la probabilità che il classificatore assegni una probabilità più alta a un esempio positivo scelto casualmente rispetto a uno negativo. Un AUC di 0.5 indica performance casuali, 1.0 rappresenta un classificatore perfetto, mentre valori sotto 0.5 suggeriscono che invertire le predizioni migliorerebbe le performance. Per problemi multi-classe si può calcolare l'AUC in modalità one-vs-all o one-vs-one.
Limitazioni in computer vision: ROC-AUC può essere meno informativo con dataset molto sbilanciati (comuni in medical imaging), dove la curva Precision-Recall fornisce una valutazione più realistica delle performance.
Quando usare k-fold cross-validation su dataset di immagini o video?
La k-fold cross-validation in computer vision richiede considerazioni specifiche dovute alle caratteristiche dei dati visivi e ai costi computazionali:
Dataset piccoli o medi (< 10K samples): Essenziale per massimizzare l'utilizzo dei dati disponibili e ottenere stime robuste delle performance. Particolarmente utile in domini specializzati come imaging medico, controllo qualità industriale o riconoscimento di specie rare, dove la raccolta dati è costosa e limitata.
Dataset sbilanciati: Il k-fold con stratificazione garantisce che ogni fold mantenga la distribuzione originale delle classi, evitando fold con classi completamente assenti. Questo è cruciale in applicazioni mediche dove alcune patologie sono molto rare.
Validazione di architetture e iperparametri: Quando si confrontano diverse architetture CNN (ResNet vs EfficientNet vs Vision Transformer) o si ottimizzano iperparametri (learning rate, batch size, data augmentation), k-fold fornisce stime più stabili delle performance rispetto a una singola divisione train/test.
Precauzioni per dati video e sequenze temporali: Fondamentale evitare data leakage assicurandosi che frame consecutivi dello stesso video non finiscano in fold diversi. Si deve dividere per video/sequenza, non per singoli frame. Questo principio si applica anche a dataset con multiple viste dello stesso oggetto o pazienti con scansioni longitudinali.
Quando evitarlo: Con dataset molto grandi (> 100K samples) dove una semplice divisione 70/15/15 train/validation/test fornisce sufficiente robustezza statistica con costi computazionali inferiori. Inoltre, quando si utilizzano modelli pre-addestrati con transfer learning, una singola divisione può essere sufficiente.
Varianti specializzate: Group k-fold per dati con strutture gerarchiche (es. multiple immagini per paziente), time series split per dati temporali, e repeated k-fold quando si vuole ridurre ulteriormente la varianza delle stime combinando multiple esecuzioni con diversi random seed.
Faq
Quali metriche si usano per valutare un modello di classificazione di immagini?
Accuracy misura la percentuale di predizioni corrette, ma in caso di dataset sbilanciati è preferibile considerare Precision, Recall e F1-score. La confusion matrix aiuta a visualizzare gli errori per classe.
Che metriche si usano per valutare un modello di object detection?
Le più comuni sono IoU (Intersection over Union), che misura l’overlap tra bounding box predetta e reale, e mAP (mean Average Precision), calcolato su diverse soglie di IoU per valutare precision e recall.
Quali metriche sono utili nella segmentazione semantica?
Si usano IoU pixel-wise, Dice Coefficient e mIoU (media dell’IoU su tutte le classi). In aggiunta, Pixel Accuracy e Frequency Weighted IoU considerano la frequenza delle classi.
Come si valutano le prestazioni nell’instance segmentation?
Si combinano metriche di detection (mAP basato su IoU) e di segmentazione (accuratezza delle maschere pixel-wise), per misurare sia la corretta individuazione delle istanze sia la qualità della segmentazione.
Che cos’è una curva ROC?
È un grafico che mostra il compromesso tra True Positive Rate (Recall) e False Positive Rate variando la soglia di decisione. Una curva vicina all’angolo in alto a sinistra indica un modello performante.
Cosa rappresenta l’AUC della curva ROC?
L’AUC (Area Under Curve) misura l’area sotto la curva ROC. Valori vicini a 1.0 indicano un classificatore eccellente, 0.5 prestazioni casuali, sotto 0.5 un modello peggiore del caso.
Quando la curva ROC è meno utile?
In dataset sbilanciati (es. medical imaging con patologie rare), la ROC può essere fuorviante. In questi casi, la curva Precision-Recall fornisce una valutazione più realistica delle performance.
Quando usare k-fold cross-validation su dataset di immagini?
È utile su dataset piccoli o medi per sfruttare al massimo i dati e ottenere stime robuste delle performance, specialmente in domini dove i dati sono costosi o rari (es. diagnostica medica).
Quali precauzioni servono con k-fold in video e sequenze temporali?
Bisogna evitare data leakage: frame dello stesso video non devono finire in fold diversi. La suddivisione deve avvenire a livello di video/sequenza, non di singolo frame.
Quando è meglio evitare k-fold cross-validation?
Con dataset molto grandi (>100K campioni), dove una divisione train/validation/test è sufficiente. Inoltre, con modelli pre-addestrati tramite transfer learning, spesso una sola validazione è adeguata e più efficiente.