天天看點

目标檢測中目标框回歸損失函數(IoU, GIoU, DIoU, CIoU)總結目标檢測中目标框回歸損失函數(IoU, GIoU, DIoU, CIoU)總結

目标檢測中目标框回歸損失函數(IoU, GIoU, DIoU, CIoU)總結

1. Smooth L1 Loss

這個是 Faster-RCNN 中的損失函數。具體可以參考深度學習目标檢測之 R-CNN 系列:Faster R-CNN 網絡詳解 中相應介紹。

Smooth L1 Loss 相比 L1 和 L2 的優勢可以參考 損失函數:L1 loss, L2 loss, smooth L1 loss。總結其優勢就是:

  • smooth L1和L1-loss函數的差別在于,L1-loss在0點處導數不唯一,可能影響收斂。smooth L1的解決辦法是在0點附近使用平方函數使得它更加平滑
  • 相比于L2損失函數,其對離群點、異常值(outlier)不敏感,梯度變化相對更小,訓練時不容易跑飛

2. IoU Loss

IoU(Intersection over Union) 是曠視在 2016 年于 UnitBox: An Advanced Object Detection Network 中提出的,随後被廣泛使用。正如其名交并比,就是兩個 BBox 的交集比上并集。

目标檢測中目标框回歸損失函數(IoU, GIoU, DIoU, CIoU)總結目标檢測中目标框回歸損失函數(IoU, GIoU, DIoU, CIoU)總結

IoU Loss 的數學表達式為 L o s s I o U = − l n ( I o U ) Loss_{IoU} = -ln(IoU) LossIoU​=−ln(IoU),實際使用中很多直接簡化為 L o s s I o U = 1 − I o U Loss_{IoU} = 1 - IoU LossIoU​=1−IoU。

IoU 相比 Smooth L1 Loss 具有如下優勢:

  • 具有尺度不變性
  • IoU Loss,其将 4 個點構成的 box 看成一個整體進行回歸

直接看下圖更直覺。

目标檢測中目标框回歸損失函數(IoU, GIoU, DIoU, CIoU)總結目标檢測中目标框回歸損失函數(IoU, GIoU, DIoU, CIoU)總結

IoU 的不足:

1)當預測框和目标框不相交時,IoU(A,B)=0時,不能反映A,B距離的遠近,此時損失函數不可導,IoU Loss 無法優化兩個框不相交的情況。

2)假設預測框和目标框的大小都确定,隻要兩個框的相交值是确定的,其IoU值是相同時,IoU值不能反映兩個框是如何相交的。

3. GIoU Loss

GIoU(Generalized Intersection over Union) 是Hamid Rezatofighi 等2019年于 Generalized Intersection over Union: A Metric and A Loss for Bounding BoxRegression 中提出的一種改進的 IoU Loss。

如下圖所示,三種不同相對位置的框擁有相同的IoU=0.33值,但是擁有不同的GIoU=0.33,0.24,-0.1。當框的對齊方向更好一些時GIoU的值會更高一些。

目标檢測中目标框回歸損失函數(IoU, GIoU, DIoU, CIoU)總結目标檢測中目标框回歸損失函數(IoU, GIoU, DIoU, CIoU)總結

計算過程如下:

目标檢測中目标框回歸損失函數(IoU, GIoU, DIoU, CIoU)總結目标檢測中目标框回歸損失函數(IoU, GIoU, DIoU, CIoU)總結

GIoU Loss 的表達式為:

L o s s G I o U = 1 − G I o U Loss_{GIoU} = 1 - GIoU LossGIoU​=1−GIoU

GIoU 的不足:

如下圖,BBox 重合的時候 GIoU 退化為 IoU。

目标檢測中目标框回歸損失函數(IoU, GIoU, DIoU, CIoU)總結目标檢測中目标框回歸損失函數(IoU, GIoU, DIoU, CIoU)總結

4. DIoU Loss

DIoU(Distance-IoU) 是 Zhaohui Zheng 等 2019 年在 Distance-IoU Loss: Faster and Better Learning for Bounding Box Regression 中提出的。

基于IoU和GIoU存在的問題,作者提出了兩個問題:

  • 第一:直接最小化預測框與目标框之間的歸一化距離是否可行,以達到更快的收斂速度。
  • 第二:如何使回歸在與目标框有重疊甚至包含時更準确、更快。

好的目标框回歸損失應該考慮三個重要的幾何因素:重疊面積,中心點距離,長寬比。基于問題一,作者提出了DIoU Loss,相對于GIoU Loss收斂速度更快,該Loss考慮了重疊面積和中心點距離,但沒有考慮到長寬比;針對問題二,作者提出了CIoU Loss,其收斂的精度更高,以上三個因素都考慮到了。

通常基于IoU-based的loss可以定義為 L = 1 − I o U + R ( B , B g t ) L = 1 - IoU + R(B, B^{gt}) L=1−IoU+R(B,Bgt),其中 R ( B , B g t ) R(B, B^{gt}) R(B,Bgt) 定義為預測框 B B B和目标框 B g t B^{gt} Bgt 的懲罰項。

DIoU中的懲罰項表示為 R D I o U = ρ 2 ( b , b g t ) c 2 R_{DIoU} = \frac{\rho^{2}(b, b^{gt})}{c^2} RDIoU​=c2ρ2(b,bgt)​ ,其中 b b b 和 b g t b^{gt} bgt 分别表示 B B B 和 B g t B^{gt} Bgt 的中心點, ρ \rho ρ 表示歐式距離, c c c 表示 B B B 和 B g t B^{gt} Bgt 的最小外界矩形的對角線距離,如下圖所示。可以将 DIoU 替換 IoU 用于 NMS 算法當中,也即論文提出的 DIoU-NMS,實驗結果表明有一定的提升。

DIoU Loss function 定義為: L D I o U = 1 − I o U + ρ 2 ( b , b g t ) c 2 L_{DIoU} = 1 - IoU + \frac{\rho^{2}(b, b^{gt})}{c^2} LDIoU​=1−IoU+c2ρ2(b,bgt)​

目标檢測中目标框回歸損失函數(IoU, GIoU, DIoU, CIoU)總結目标檢測中目标框回歸損失函數(IoU, GIoU, DIoU, CIoU)總結

DIoU的性質:

  • 尺度不變性
  • 當兩個框完全重合時, L I o U = L G I o U = L D I o U = 0 L_{IoU} = L_{GIoU} = L_{DIoU} = 0 LIoU​=LGIoU​=LDIoU​=0 ,當2個框不相交時 L G I o U = L D I o U → 2 L_{GIoU} = L_{DIoU} \rightarrow 2 LGIoU​=LDIoU​→2
  • DIoU Loss 可以直接優化 2 個框直接的距離,比 GIoU Loss 收斂速度更快
  • 對于目标框包裹預測框的這種情況,DIoU Loss 可以收斂的很快,而 GIoU Loss 此時退化為 IoU Loss 收斂速度較慢

5. CIoU Loss

DIoU 那撥人在 2020 年又整出了個 CIOU( Complete-IoU)。論文見Enhancing Geometric Factors in Model Learningand Inference for Object Detection and InstanceSegmentation。套路和 DIoU 差不多。

CIoU Loss 的表達式如下:

L D I o U = 1 − I o U + ρ 2 ( b , b g t ) c 2 + α υ L_{DIoU} = 1 - IoU + \frac{\rho^{2}(b, b^{gt})}{c^2} + \alpha\upsilon LDIoU​=1−IoU+c2ρ2(b,bgt)​+αυ

CIoU 的懲罰項是在 DIoU 的懲罰項基礎上加了一個影響因子 α υ \alpha\upsilon αυ ,這個因子把預測框長寬比拟合目标框的長寬比考慮進去。其中 α \alpha α 是用于做 trade-off 的參數, α = υ ( 1 − I o U ) + υ \alpha = \frac{\upsilon}{(1 - IoU) + \upsilon} α=(1−IoU)+υυ​, υ \upsilon υ 是用來衡量長寬比一緻性的參數,定義為 υ = 4 π 2 ( a t c t a n w g t h g t − a r c t a n w h ) \upsilon = \frac{4}{\pi^{2}}(atctan{\frac{w^{gt}}{h^{gt}}} - arctan{\frac{w}{h}}) υ=π24​(atctanhgtwgt​−arctanhw​)。

參考

  • 目标檢測回歸損失函數簡介:SmoothL1/IoU/GIoU/DIoU/CIoU Loss

繼續閱讀