Intersection over Union (IoU) och Utvärderingsmetoder
Svep för att visa menyn
Intersection over Union (IoU) är ett mått som mäter noggrannheten hos förutsagda avgränsningsrutor genom att beräkna förhållandet mellan det överlappande området mellan den förutsagda och den faktiska rutan och arean av deras union.
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.
12345678910111213141516171819202122232425262728import 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 utvärdera hur väl en predikterad avgränsningsruta överensstämmer med den faktiska markeringen. 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 för sanna positiva 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 objektigenkänningsmodeller:
- Precision: mäter andelen korrekt förutsagda avgränsningsrutor bland alla förutsägelser;
- Recall: mäter andelen korrekt förutsagda 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 heltäckande utvärdering av modellens prestanda.
123456789def 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 mätvärde vid utvärdering av 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 resultat vid objektdetektering?
3. Hur beräknas precision vid objektdetektering?
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal