搜尋意圖: 如果你在找「交聯比 是什麼」或「交聯比 和相近概念差在哪」,先看這頁的短定義、完整說明與延伸比較。
TL;DR: 衡量兩個邊界框或區域重疊程度的指標,值域 0 到 1,常用於物件偵測與影像分割的評估。
實用情境: 適合用在閱讀 AI 文章、產品文件或和同事討論時,先用一頁快速對齊概念。
下一步: 先讀完定義,再往下看延伸比較與對應工具,把概念轉成實際應用。
衡量兩個邊界框或區域重疊程度的指標,值域 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
常見問題
物件偵測中 IoU 閾值通常設多少?0.5 是標準嗎?
IoU 閾值的選擇取決於應用場景的精度要求,沒有唯一的標準。在學術評估中,Pascal VOC 傳統上以 IoU=0.5 作為單一閾值(mAP@0.5),COCO 則採用從 0.5 到 0.95 每隔 0.05 的 10 個閾值取平均(mAP@[0.5:0.95]),後者對定位精度的要求更嚴格。在實際部署中,閾值的選擇需考慮業務需求:自動駕駛等安全關鍵場景可能需要 0.7 以上的高 IoU,確保邊界框精確定位;而一般物件計數場景使用 0.5 通常已足夠。NMS 中的 IoU 閾值則控制多餘框的抑制,通常設在 0.45–0.5 之間,過高會保留太多重疊框,過低會誤刪同類別不同物件的框。
mIoU 是什麼?在語意分割中如何計算?
mIoU(mean Intersection over Union,平均交聯比)是語意分割任務的主要評估指標。計算方式是:對每個語意類別(如道路、天空、行人),分別計算預測分割遮罩與真實標注遮罩的 IoU,然後對所有類別取算術平均。例如,若場景有 5 個類別,各類別 IoU 分別為 0.8、0.7、0.6、0.5、0.4,則 mIoU = (0.8+0.7+0.6+0.5+0.4)/5 = 0.6。mIoU 等同對待每個類別(Macro 平均),稀有類別的低 IoU 同樣影響最終得分,這使它對類別不平衡的分割任務能提供公平的評估,是 Cityscapes、ADE20K、COCO Stuff 等主流分割 Benchmark 的標準指標。
為什麼物件偵測模型訓練時要用 CIoU 而不是 MSE 損失?
傳統的邊界框回歸損失(如 MSE 或 Smooth L1)對邊界框的各個座標(x, y, w, h)分別計算誤差再加總,但這種方式有兩個問題:第一,它沒有直接優化 IoU,最終評估指標(mAP)是 IoU-based 的,損失函數與評估指標不一致;第二,相同的座標誤差在不同尺寸的框上代表完全不同的 IoU 差異(大框位移幾個像素影響小,小框位移幾個像素影響大)。CIoU(Complete IoU)損失直接以 IoU 為基礎,並加入中心點距離和寬高比的懲罰項,讓損失函數與評估指標高度對齊,訓練過程中的每次梯度更新都在直接朝提高 IoU 的方向優化,收斂速度更快、最終定位精度更高,因此被現代 YOLO 系列等模型普遍採用。