交聯比 是什麼?
IoU (Intersection over Union):交聯比 的完整解釋
衡量兩個邊界框或區域重疊程度的指標,值域 0 到 1,常用於物件偵測與影像分割的評估。
IoU(Intersection over Union,交聯比,又稱 Jaccard Index 或 Jaccard Similarity)是電腦視覺領域中最基礎、最重要的評估指標之一,幾乎所有物件偵測(Object Detection)和影像分割(Image Segmentation)的評估體系都建立在 IoU 之上。
定義與計算
給定兩個區域 A 和 B(通常是預測邊界框與真實標注框):
IoU = |A ∩ B| / |A ∪ B| = 交集面積 / 聯集面積
由於交集是聯集的子集,IoU 的值域為 [0, 1]:
- IoU = 0:兩個區域完全不重疊。
- IoU = 1:兩個區域完全重合。
- 一般而言,IoU ≥ 0.5 常被作為「預測正確」的基本門檻。
在物件偵測中的應用
- 判斷預測框是否正確(TP vs. FP)
在物件偵測中,模型輸出的每個預測框(Predicted Bounding Box)需要與真實標注框(Ground Truth Box)比對,以決定它是否算一個正確的偵測(True Positive)。比對的標準就是 IoU 閾值:
- IoU ≥ 閾值(如 0.5):判定為 True Positive(成功偵測到目標)。
- IoU < 閾值:判定為 False Positive(誤報)。
- 漏偵測的真實框:判定為 False Negative(漏報)。
- 非最大值抑制(Non-Maximum Suppression, NMS)
物件偵測模型通常對同一個目標生成多個重疊的預測框,NMS 的作用是去除重複框、只保留最佳框。流程如下:
按信心分數(Confidence Score)排序所有預測框。
選取信心分數最高的框保留。
計算它與其他框的 IoU,移除 IoU 超過 NMS 閾值(通常 0.45–0.5)的框。
對剩餘框重複步驟 2-3。
mAP(mean Average Precision)
mAP 是物件偵測任務的標準評估指標,COCO 資料集採用在 IoU 從 0.5 到 0.95(步長 0.05)的 10 個閾值下計算 AP 後取平均(AP@[0.5:0.95]),而 Pascal VOC 傳統上使用單一 IoU 閾值 0.5(mAP@0.5)。
- 影像分割
在語意分割(Semantic Segmentation)中,IoU 針對每個類別計算預測分割遮罩與真實遮罩的交聯比,所有類別的平均 IoU 稱為 mIoU(mean IoU),是語意分割最主要的評估指標。
IoU 的改良版本
標準 IoU 存在一些限制(如兩框完全不重疊時 IoU=0,但梯度也為 0,無法指導訓練),研究者提出了多種改良版用於損失函數:
- GIoU(Generalized IoU):加入最小閉包框(最小包圍兩框的矩形)作為懲罰項,即使兩框不重疊也能提供梯度信號。
- DIoU(Distance IoU):額外懲罰預測框與真實框中心點的距離,加速收斂。
- CIoU(Complete IoU):在 DIoU 基礎上進一步加入寬高比的一致性懲罰,全面優化位置、大小和形狀。
- EIoU(Efficient IoU):分別懲罰寬度差和高度差(而非寬高比),梯度訊號更穩定。
現代物件偵測模型(如 YOLOv8、YOLOv9)普遍使用 CIoU 或 EIoU 作為邊界框回歸的損失函數,取代傳統的 MSE 或 Smooth L1 損失。
程式碼示例(Python)
計算兩個邊界框([x1, y1, x2, y2] 格式)的 IoU:
def compute_iou(box1, box2):
inter_x1 = max(box1[0], box2[0])
inter_y1 = max(box1[1], box2[1])
inter_x2 = min(box1[2], box2[2])
inter_y2 = min(box1[3], box2[3])
inter_area = max(0, inter_x2 - inter_x1) * max(0, inter_y2 - inter_y1)
area1 = (box1[2] - box1[0]) * (box1[3] - box1[1])
area2 = (box2[2] - box2[0]) * (box2[3] - box2[1])
union_area = area1 + area2 - inter_area
return inter_area / union_area if union_area > 0 else 0