物件偵測

交集比聯集

交集比聯集衡量兩個框重疊的程度,刻度從 0(毫無重疊)到 1(完全相同)。做法就寫在名字裡:取兩矩形重疊處的面積(交集),除以它們共同覆蓋的總面積(聯集)。若預測框恰好落在真實框上,IoU = 1;若兩者僅僅相觸,IoU 趨近於 0。它是偵測中最重要的單一幾何量。

為什麼是除以聯集,而不是除以較小的那個框?因為聯集同時懲罰兩種錯誤:太小的框會漏掉物件的一部分(縮小交集),太大的框則會覆蓋到空白(膨脹聯集)。兩者都會拉低 IoU,所以高 IoU 證明這個框是緊貼的,而不只是有重疊。形式上,對框 A 與 B,IoU = area(A ∩ B) / area(A ∪ B) = area(A ∩ B) / (area(A) + area(B) − area(A ∩ B))。這正是兩個像素集合的 Jaccard 指數。

IoU 在偵測器中做三件事。(1) 標籤分配:決定哪些錨框/提議框是哪個物件的正樣本。(2) 非極大值抑制:決定何時兩個偵測是「同一個物件」、該丟掉其中一個。(3) 評估:一個偵測唯有其與真實框的 IoU 超過門檻才算正確——COCO 在 0.50 到 0.95、間隔 0.05 的多個門檻上對 mAP 取平均,獎勵那些不只是存在、而且精準的框。

純 IoU 作為損失有個盲點:若兩框完全不重疊,IoU 為 0,且其梯度處處為零,無法給最佳化器任何「該往哪個方向移動」的訊號。廣義 IoU(GIoU)藉由額外考慮包住兩者的最小框來修正這點,使不重疊的框仍能產生有用的梯度;DIoU 與 CIoU 則進一步加入中心距離與長寬比項,以獲得更快、更穩定的收斂。

框 A = [0,0,2,2](面積 4)與框 B = [1,1,3,3](面積 4)重疊於 [1,1,2,2](面積 1)。聯集 = 4+4−1 = 7,故 IoU = 1/7 ≈ 0.14——遠低於常用的 0.5「正確」門檻。

IoU 具尺度不變性——它在意的是相對重疊,而非絕對像素誤差。在小物件上 5 像素的偏差就可能讓 IoU 掉到 0.5 以下,但同樣的偏差在巨大物件上幾乎不動。這正是為何在高 IoU 評估下,小物件系統性地更難。

又称
IoUJaccard indexoverlap