Kursusindhold
Computer Vision Grundlæggende
Computer Vision Grundlæggende
Intersection Over Union (IoU) og Evalueringsmetrikker
Hvordan det beregnes
Matematisk er IoU givet ved:
Hvor:
Area of Overlap er skæringsarealet mellem den forudsagte og den faktiske afgrænsningsboks;
Area of Union er det samlede areal dækket af begge bokse.
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 som en metrisk for nøjagtighed af afgrænsningsbokse
IoU anvendes ofte til at vurdere, hvor godt en forudsagt afgrænsningsboks stemmer overens med sandhedsværdien. Højere IoU-værdier indikerer bedre overensstemmelse, hvor en IoU på 1.0
betyder perfekt overlap, og 0.0
betyder ingen overlapning overhovedet.
Tærskelværdi for IoU ved sande og falske positiver
For at afgøre, om en detektion er korrekt (sand positiv) eller ukorrekt (falsk positiv), sættes der typisk en tærskelværdi for IoU. Almindeligt anvendte tærskler inkluderer:
IoU > 0.5: betragtes som en Sand Positiv (TP);
IoU < 0.5: betragtes som en Falsk Positiv (FP).
Højere IoU-tærskler øger præcisionen, men kan reducere recall, da færre detektioner opfylder kriterierne.
Evalueringsmetrikker: Præcision, Recall og mAP
Ud over IoU hjælper andre evalueringsmetrikker med at vurdere objektdetektionsmodeller:
Præcision: måler andelen af korrekt forudsagte afgrænsningsbokse blandt alle forudsigelser;
Recall: måler andelen af korrekt forudsagte afgrænsningsbokse blandt alle sandhedsværdier;
Mean Average Precision (mAP): beregner den gennemsnitlige præcision på tværs af forskellige IoU-tærskler og objektkategorier, hvilket giver en omfattende evaluering af modellens ydeevne.
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}")
IoU fungerer som en grundlæggende målemetode til evaluering af objektgenkendelsesmodeller og hjælper med at vurdere nøjagtigheden af de forudsagte afgrænsningsbokse. Ved at kombinere IoU med præcision, recall og mAP kan forskere og ingeniører finjustere deres modeller for at opnå højere detektionsnøjagtighed og pålidelighed.
1. Hvad måler Intersection over Union (IoU) i objektgenkendelse?
2. Hvilket af følgende betragtes som et falsk negativ i objektgenkendelse?
3. Hvordan beregnes præcision i objektgenkendelse?
Tak for dine kommentarer!