Contenuti del Corso
Fondamenti di Computer Vision
Fondamenti di Computer Vision
Intersezione su Unione (IoU) e Metriche di Valutazione
Come viene calcolato
Matematicamente, l'IoU è definito da:
Dove:
Area di Sovrapposizione è l'intersezione tra il riquadro predetto e quello reale;
Area di Unione è l'area totale coperta da entrambi i riquadri.
import numpy as np def compute_iou(boxA, boxB): # Extract coordinates xA = max(boxA[0], boxB[0]) yA = max(boxA[1], boxB[1]) xB = min(boxA[2], boxB[2]) yB = min(boxA[3], boxB[3]) # Compute intersection area interArea = max(0, xB - xA) * max(0, yB - yA) # Compute areas of both boxes boxAArea = (boxA[2] - boxA[0]) * (boxA[3] - boxA[1]) boxBArea = (boxB[2] - boxB[0]) * (boxB[3] - boxB[1]) # Compute union area unionArea = boxAArea + boxBArea - interArea # Compute IoU iou = interArea / unionArea return iou # Example usage box1 = [50, 50, 150, 150] # [x1, y1, x2, y2] box2 = [100, 100, 200, 200] iou_score = compute_iou(box1, box2) print("IoU Score:", iou_score)
IoU come metrica per l'accuratezza dei bounding box
L'IoU è comunemente utilizzato per valutare quanto bene un bounding box predetto si allinea con il ground truth. Valori di IoU più alti indicano un migliore allineamento, con un IoU di 1.0
che significa sovrapposizione perfetta e 0.0
che indica nessuna sovrapposizione.
Soglia di IoU per veri positivi e falsi positivi
Per determinare se una rilevazione è corretta (vero positivo) o errata (falso positivo), viene solitamente impostata una soglia per l'IoU. Le soglie comunemente utilizzate includono:
IoU > 0.5: considerato un Vero Positivo (TP);
IoU < 0.5: considerato un Falso Positivo (FP).
Impostare soglie di IoU più alte aumenta la precisione ma può ridurre il recall poiché meno rilevazioni soddisfano i criteri.
Metriche di valutazione: Precision, Recall e mAP
Oltre all'IoU, altre metriche di valutazione aiutano a valutare i modelli di object detection:
Precision: misura la proporzione di bounding box predetti correttamente tra tutte le predizioni;
Recall: misura la proporzione di bounding box predetti correttamente tra tutti gli oggetti ground truth;
Mean Average Precision (mAP): calcola la precisione media su diverse soglie di IoU e categorie di oggetti, fornendo una valutazione completa delle prestazioni del modello.
def precision_recall(tp, fp, fn): precision = tp / (tp + fp) if (tp + fp) > 0 else 0 recall = tp / (tp + fn) if (tp + fn) > 0 else 0 return precision, recall # Example usage tp, fp, fn = 50, 10, 20 precision, recall = precision_recall(tp, fp, fn) print(f"Precision: {precision:.2f}, Recall: {recall:.2f}")
L'IoU è una metrica fondamentale per la valutazione dei modelli di rilevamento oggetti, utile per misurare l'accuratezza delle bounding box previste. Combinando IoU con precision, recall e mAP, ricercatori e ingegneri possono ottimizzare i loro modelli per ottenere una maggiore accuratezza e affidabilità nel rilevamento.
1. Cosa misura l'Intersection over Union (IoU) nel rilevamento oggetti?
2. Quale delle seguenti opzioni è considerata un falso negativo nel rilevamento degli oggetti?
3. Come viene calcolata la Precision nel rilevamento degli oggetti?
Grazie per i tuoi commenti!