Kursinnehåll
Grundläggande Datorseende
Grundläggande Datorseende
Intersection Over Union (IoU) och Utvärderingsmetoder
Hur det beräknas
Matematiskt ges IoU av:
Där:
Area of Overlap är skärningsytan mellan den predikterade och den faktiska avgränsningsrutan;
Area of Union är den totala ytan som täcks av båda rutorna.
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 ett mått på noggrannhet för avgränsningsrutor
IoU används ofta för att bedöma hur väl en predikterad avgränsningsruta överensstämmer med den faktiska sanningen (ground truth). Högre IoU-värden indikerar bättre överensstämmelse, där ett IoU på 1.0
innebär perfekt överlappning och 0.0
innebär ingen överlappning alls.
Tröskelvärde för IoU vid sanna och falska positiva
För att avgöra om en detektion är korrekt (sant positiv) eller felaktig (falskt positiv) sätts vanligtvis ett tröskelvärde för IoU. Vanligt förekommande tröskelvärden inkluderar:
IoU > 0.5: betraktas som Sant Positiv (TP);
IoU < 0.5: betraktas som Falskt Positiv (FP).
Att sätta högre IoU-tröskelvärden ökar precisionen men kan minska återkallelsen eftersom färre detektioner uppfyller kriterierna.
Utvärderingsmått: Precision, Recall och mAP
Utöver IoU används andra utvärderingsmått för att bedöma modeller för objektdetektering:
Precision: mäter andelen korrekt predikterade avgränsningsrutor bland alla prediktioner;
Recall: mäter andelen korrekt predikterade avgränsningsrutor bland alla faktiska objekt;
Mean Average Precision (mAP): beräknar den genomsnittliga precisionen över olika IoU-tröskelvärden och objektkategorier, vilket ger en omfattande utvärdering av modellens prestanda.
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 fungerar som en grundläggande metrisk för att utvärdera objektigenkänningsmodeller och hjälper till att bedöma noggrannheten hos förutsagda avgränsningsrutor. Genom att kombinera IoU med precision, recall och mAP kan forskare och ingenjörer finjustera sina modeller för att uppnå högre detekteringsnoggrannhet och tillförlitlighet.
1. Vad mäter Intersection over Union (IoU) inom objektigenkänning?
2. Vilket av följande betraktas som ett falskt negativt i objektdetektering?
3. Hur beräknas precision i objektdetektering?
Tack för dina kommentarer!