從L1 loss到EIoU loss,目標檢測邊框回歸的損失函數一覽
本文轉載自知乎,已獲作者授權轉載。
鏈接:https://zhuanlan.zhihu.com/p/342991797
目標檢測任務的損失函數由Classificition Loss和BBox Regeression Loss兩部分構成。本文介紹目標檢測任務中近幾年來Bounding Box Regression Loss Function的演進過程。
其演進路線是 Smooth L1 Loss IoU Loss
GIoU Loss
DIoU Loss
CIoU Loss
EIoU Loss,本文按照此路線進行講解。
L1/L2 Loss
L1/L2 Loss 的定義
此前回歸一般采用 Loss,定義如下:

L1/L2 Loss 的缺點
但是這兩者存在一些缺點:
-
L1 Loss 對 x 的導數為常數,由於 x 代表真實值與預測值的差值,故在訓練后期,x 很小時,如果學習率不變,損失函數會在穩定值附近波動,難以收斂到更高精度;
-
L2 Loss 在 x 值很大時,其導數非常大,故在訓練初期不穩定。
Smooth L1 Loss
Smooth L1 Loss 的定義
針對 Loss 存在的缺點,修正后得到
[1]:

在 x 較小時為 L2 Loss,在 x 較大時為 L1 Loss,揚長避短。應用在目標檢測的邊框回歸中,位置損失如下所示:

其中 表示 bbox 位置的真實值,
表示 bbox 位置回歸的預測值。
Smooth L1 Loss 的缺點
-
在計算目標檢測的 bbox loss時,都是獨立的求出4個點的 loss,然后相加得到最終的 bbox loss。這種做法的默認4個點是相互獨立的,與實際不符。舉個例子,當(x, y)為右下角時,w h其實只能取0;
-
目標檢測的評價 bbox 的指標是 IoU,IoU 與
的變化不匹配。
IoU Loss
IoU Loss 的定義
針對 Loss 的缺點,IoU Loss[2]如下:
實現時甚至簡化為:
IoU 計算讓 x, y, w, h 相互關聯,同時具備了尺度不變性,克服了 Loss 的缺點。
IoU Loss 的缺點
當然 IoU Loss 也並不完美:
-
當預測框和目標框不相交,即 IoU(bbox1, bbox2)=0 時,不能反映兩個框距離的遠近,此時損失函數不可導,IoU Loss 無法優化兩個框不相交的情況。
-
假設預測框和目標框的大小都確定,只要兩個框的相交值是確定的,其 IoU 值是相同時,IoU 值不能反映兩個框是如何相交的,如圖所示:

灰色框為真實框,虛線框為預測框。這兩者情況的IoU相同,但是這兩個框的匹配狀態不一樣。我們認為右邊框匹配的好一點,因為它匹配的角度更好。故下文定義了GIoU。
GIoU Loss
GIoU 的定義
承接上一小節提到的情況,IoU 不能區分一些相交的情況,故論文[3]提出GIoU作為度量指標。
GIoU 的實現方式如上式,其中 C 為 A 和 B 的外接矩形。用 C 減去 A 和 B 的並集除以 C 得到一個數值,然后再用 A 和 B 的 IoU 減去這個數值即可得到 GIoU 的值。可以看出:
-
GIoU 取值范圍為 [-1, 1],在兩框重合時取最大值1,在兩框無限遠的時候取最小值-1;
-
與 IoU 只關注重疊區域不同,GIoU不僅關注重疊區域,還關注其他的非重合區域,能更好的反映兩者的重合度。
GIoU Loss 的定義
定義了 GIoU 之后,按照 IoU Loss 的思路定義 GIoU Loss:
GIoU Loss 的缺點
當目標框完全包裹預測框的時候,IoU 和 GIoU 的值都一樣,此時 GIoU 退化為 IoU, 無法區分其相對位置關系。

灰色框為真實框,綠色為預測框,上圖三種情況GIoU均相同,但是我們認為中間的預測框應該由於另外兩個框。
DIoU Loss
DIoU 的定義
針對 IoU和GIoU 的缺點,論文[4]總結提出了邊框回歸的三個重要幾何因素:重疊面積、中心點距離和長寬比,提出 DIoU和CIoU,本節先介紹 DIoU。
首先,論文[^ 4]總結了 IoU-based loss 的范式:
表示預測框與真實框的懲罰項,將懲罰項設置為:
其中 表示框的中心點,
表示歐氏距離,c 表示最小外接矩形的對角線距離,故 DIoU 如下所示:
DIoU 就是在 IoU 基礎上加入中心點歸一化距離,所以可以更好地表達兩個框的距離。同時,文章利用 DIoU 距離,設計了 DIoU-nms。
DIoU Loss 的定義
根據范式,DIoU Loss:
DIoU Loss 的缺點
邊框回歸的三個重要幾何因素:重疊面積、中心點距離和長寬比,DIoU 沒有包含長寬比因素。
CIoU Loss
CIoU 的定義
CIoU[^ 4] 在 DIoU 的基礎上,增加了長寬比影響因子 ,合並到懲罰項:
其中 v 用於衡量長寬比的一致性, 用於平衡 v 的值,設為:

CIoU Loss 的定義
v的導數:
CIoU Loss 的缺點
在CIoU的定義中,衡量長寬比的$v$過於復雜,從兩個方面減緩了收斂速度:
-
長寬比不能取代單獨的長寬,比如
都會導致v=0;
-
從v的導數可以得到
,這說明
和
在優化中意義相反。
EIoU Loss
EIoU 的定義
論文[5]用 取代
即可。
EIoU Loss的定義
Focal-EIoU Loss的定義
focal loss可以理解為對損失加權,常見的分類focal loss為 。本文首先嘗試直接將EIoU帶入,但是效果不好,最后得到:

Conclusion
總的來看,我認為目標檢測邊框回歸的損失函數設計應當遵循以下原則:
-
應該按照邊框的物理含義定義邊框間的距離,以設計損失函數。從
到
,對邊框間距離的物理描述愈發准確。
-
注意算法各個模塊之間的配合,比如 DIoU 與 DIoU-nms 組合才能達到更好的效果。
參考資料:
[1]^Girshick R. Fast r-cnn[C]//Proceedings of the IEEE international conference on computer vision. 2015: 1440-1448.
[2]^Yu J, Jiang Y, Wang Z, et al. Unitbox: An advanced object detection network[C]//Proceedings of the 24th ACM international conference on Multimedia. 2016: 516-520.
[3]^Rezatofighi H, Tsoi N, Gwak J Y, et al. Generalized intersection over union: A metric and a loss for bounding box regression[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2019: 658-666.
[4]^Zheng Z, Wang P, Liu W, et al. Distance-IoU Loss: Faster and Better Learning for Bounding Box Regression[J]. arXiv preprint arXiv:1911.08287, 2019.
[5]^Focal and Efficient IOU Loss for Accurate Bounding Box Regression
END