Kursinnhold
Grunnleggende Datamaskinsyn
Grunnleggende Datamaskinsyn
Intersection Over Union (IoU) og Evalueringsmetrikker
Hvordan det beregnes
Matematisk er IoU gitt ved:
Hvor:
Area of Overlap er skjæringsområdet mellom den predikerte og den faktiske avgrensningsboksen;
Area of Union er det totale området dekket av begge boksene.
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 metrikk for nøyaktighet av avgrensningsbokser
IoU brukes ofte for å vurdere hvor godt en predikert avgrensningsboks samsvarer med fasiten. Høyere IoU-verdier indikerer bedre samsvar, der en IoU på 1.0
betyr perfekt overlapp og 0.0
betyr ingen overlapp i det hele tatt.
Terskling av IoU for sanne og falske positive
For å avgjøre om en deteksjon er korrekt (sann positiv) eller feil (falsk positiv), settes det vanligvis en terskel for IoU. Vanlige terskelverdier inkluderer:
IoU > 0.5: regnes som en True Positive (TP);
IoU < 0.5: regnes som en False Positive (FP).
Å sette høyere IoU-terskler øker presisjonen, men kan redusere tilbakekallingen siden færre deteksjoner oppfyller kriteriene.
Evalueringsmetrikker: presisjon, tilbakekalling og mAP
I tillegg til IoU hjelper andre evalueringsmetrikker med å vurdere objektdeteksjonsmodeller:
Presisjon: måler andelen korrekt predikerte avgrensningsbokser blant alle prediksjoner;
Tilbakekalling: måler andelen korrekt predikerte avgrensningsbokser blant alle fasitobjekter;
Mean Average Precision (mAP): beregner gjennomsnittlig presisjon på tvers av ulike IoU-terskler og objektkategorier, og gir en helhetlig vurdering av modellens ytelse.
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 grunnleggende metrikk for evaluering av objektdeteksjonsmodeller, og hjelper til med å vurdere nøyaktigheten til predikerte avgrensningsbokser. Ved å kombinere IoU med presisjon, tilbakekalling og mAP, kan forskere og ingeniører finjustere modellene sine for å oppnå høyere deteksjonsnøyaktighet og pålitelighet.
1. Hva måler Intersection over Union (IoU) i objektdeteksjon?
2. Hvilket av følgende regnes som en falsk negativ i objektdeteksjon?
3. Hvordan beregnes presisjon i objektdeteksjon?
Takk for tilbakemeldingene dine!