目標檢測中的迴歸損失函數系列四:DIoU Loss / CIoU Loss

論文:https://arxiv.org/pdf/1911.08287.pdf
開源代碼:
https://github.com/Zzh-tju/DIoU-darknet
https://github.com/Zzh-tju/CIoU

IoU/GIoU Loss

IoU通常定義如下:
在這裏插入圖片描述
其中
在這裏插入圖片描述
代表的是真實框。
在這裏插入圖片描述
代表的是預測框。
但是,IoU Loss 僅在邊界框重疊時起作用,並且在非重疊情況下不會提供任何移動梯度,所以有了GIoU Loss。儘管GIoU Loss緩解非重疊情況下的梯度消失問題,但仍然存在一些侷限性。如下圖所示:
在這裏插入圖片描述
其中第一行是GIoU Loss,第二行是DIoU Loss。綠色框和黑色框分別代表target boxanchor box。藍色和紅色代表GIoUDIoU的預測框。
由圖看出,GIoU Loss收斂很慢,因爲GIoU Loss首先是要增加預測框的大小,使其與目標框重疊,然後是利用GIoU Loss的公式(如下)最大化邊界框的重疊區域。
在這裏插入圖片描述
在這裏插入圖片描述

此外,由圖2可以看到,當目標框完全包裹預測框的時候,IoU和GIoU的值都一樣,此時GIoU退化爲IoU, 無法區分其相對位置關係。通常GIoU Loss無法很好地收斂於最新的檢測算法中,從而導致檢測不準確。

綜上所述,對於不重疊的情況,IoU Loss會收斂到不好的解決方案,而GIoU Loss的收斂速度很慢,尤其是對於水平和垂直方向的盒子。 而且,將IoU和GIoU損失合併到對象檢測管道中時,不能保證迴歸的準確性
基於以上,作者提出兩個問題:

  • 直接最小化預測框和目標框之間的標準化距離以實現更快的收斂是否可行?
  • 預測框與目標框重疊時,如何使迴歸更準確,更快?

DIoU Loss

通常,基於IoU的損失可以定義爲:
在這裏插入圖片描述
其中R(B,Bgt)是預測框B和目標框Bgt的懲罰項。
對於DIoU Loss,懲罰項定義爲:

在這裏插入圖片描述
其中b和bgt表示B和Bgt的中心點,ρ(·)是歐幾里得距離,c是覆蓋兩個盒子的最小封閉盒子的對角線長度。如下圖所示:
在這裏插入圖片描述
然後可以將DIoU損失函數定義爲:
在這裏插入圖片描述
DIoU Loss的優點如下:

  • DIoU Loss與迴歸問題的scale無關(尺度不變性)
  • 與GioU Loss類似,當邊界框不與目標框重疊時,DIoU Loss仍然可以爲邊界框提供移動方向。
  • DIoU損失可以直接最小化兩個目標盒之間的距離,因此它比GioU損失收斂快得多。
  • 在水平和垂直兩種情況下,DIoU損失可以使收益損失迅速下降,而GioU損失幾乎退化爲IoU損失。

CIoU Loss

作者建議邊界框迴歸的良好損失應考慮三個重要的幾何因素,即重疊面積,中心點距離和縱橫比。 通過合併座標,IoU Loss考慮重疊區域,而GIoU Loss在很大程度上依賴於IoU損耗。 DIoU Loss旨在同時考慮邊界框的重疊區域和中心點距離。 但是,邊框的高寬比的一致性也是一個重要的幾何因素,基於此,作者提出了CIoU Loss。
CIoU Loss的懲罰項定義如下:
在這裏插入圖片描述
其中α是一個正的權衡參數,而v衡量長寬比的一致性。
在這裏插入圖片描述
在這裏插入圖片描述
CIoU Loss的最終定義如下:
在這裏插入圖片描述

實驗結果

下表顯示了在YOLOv3上的使用IoU Loss,GIoU Loss,DIoU Loss, CIoU Loss獲得的AP值。
在這裏插入圖片描述
由圖可以看到,使用IoU作爲評價指標,DIoU Loss可以提高性能,使AP的增益爲3.29%,AP75的增益爲6.02%。 CIoU Loss考慮了兩個邊界框的三個重要幾何因素,帶來了驚人的性能提升,即5.67%AP和8.95%AP75,證明了DIoU/CIoU Loss的有效性。

參考

https://blog.csdn.net/qiu931110/article/details/103330107
https://bbs.cvmart.net/topics/1436
https://zhuanlan.zhihu.com/p/94799295

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章