论文链接: https://arxiv.org/abs/1911.08287
Bounding Box的回归分支在目标检测中很重要。目前, l n l_n ln-norm loss 对获得最优的IoU metric不是很合适,IoU Loss 只有在bounding boxes 有重叠的时候起作用,而且不会提供任何移动梯度给不重叠的bounding boxes,也就是梯度消失。而GIoU Loss改善了IoU Loss的情况,但有以下缺点:
详细的图示案例可以查看这篇博客。
所以作者提了两个问题:
4. 是否可以直接最小化normalized distance between predicted box and target box,从而加快收敛速度。
5. 当与目标框有重叠,甚至被包含的时候,怎么样使得回归更加的精准和快速。
先来回顾以下IoU Loss 和 GIoU 的公式。
首先,IoU的定义如下:
I o U = ∣ B ∩ B g t ∣ ∣ B ∪ B g t ∣ IoU = \frac{|B \cap B^{gt}|}{|B \cup B^{gt}|} IoU=∣B∪Bgt∣∣B∩Bgt∣
其中, B g t = ( x g t , y g t , w g t , h g t ) B^{gt}=(x^{gt}, y^{gt}, w^{gt}, h^{gt}) Bgt=(xgt,ygt,wgt,hgt)是ground-truth,而预测的是相对应的 B B B。
基于上面式子,IoU Loss的表达式为:
L I o U = 1 − ∣ B ∩ B g t ∣ ∣ B ∪ B g t ∣ L_{IoU} = 1 - \frac{|B \cap B^{gt}|}{|B \cup B^{gt}|} LIoU=1−∣B∪Bgt∣∣B∩Bgt∣
所以,IoU Loss 只有在bounding boxes有重叠的时候奏效, 也不能提供任何的移动梯度给不重叠的情况。所以GIoU Loss 就提出来了。
L G I o U = 1 − I o U + ∣ C − B ∪ B g t ∣ ∣ C ∣ L_{GIoU} = 1 - IoU + \frac{|C - B \cup B^{gt}|}{|C|} LGIoU=1−IoU+∣C∣∣C−B∪Bgt∣
这里的 C C C是覆盖 B B B和 B g t B^{gt} Bgt的框的面积。
相比于IoU Loss, 多了一个penalty term ∣ C − B ∪ B g t ∣ ∣ C ∣ \frac{|C - B \cup B^{gt}|}{|C|} ∣C∣∣C−B∪Bgt∣。由于这个penalty term,在没有重叠的情况下,预测的bounding box会向ground truth box移动。
而当两个boxes有重叠或者被包含的时候,penalty term通常很小或者为0, 收敛速度慢。
所以作者提出下面的改进方法。
为了优化penalty term,作者提出最小化两个bounding boxes中心点的normalized distance。
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)
其中, b , b g t b, b^{gt} b,bgt分别是预测框和ground-truth的中心点, ρ \rho ρ是欧几里德距离, c c c是两个框的最小包围框的对角长度。如下图所示:
因此,DIoU Loss是直接最小化两个目标框的中心点距离。
相比于IoU Loss 和 GIoU Loss,DIoU Loss也继承了以下特征:
但DIoU Loss 收敛速度快。
对于第二个问题,当与目标框有重叠,甚至被包含的时候,怎么样使得回归更加的精准和快速。 作者认为,好的 bounding box regression loss应该考虑三个重要的几何信息: overlap area, central point distance 和 aspect ratio。IoU Loss 考虑了overlap area, GIoU Loss 依赖于IoU Loss, 而DIoU Loss考虑了overlap area 和 central point distance。然而对于aspect ratio, 作者提出了下列Loss:
L C I o U = 1 − I o U + ρ 2 ( b , b g t ) c 2 + α v L_{CIoU} = 1 - IoU + \frac{\rho^2(b,b^{gt})}{c^2} + \alpha v LCIoU=1−IoU+c2ρ2(b,bgt)+αv
其中:
v = 4 π 2 ( arctan w g t h g t − arctan w h ) 2 v= \frac{4}{\pi^2}(\arctan\frac{w^{gt}}{h^{gt}} - \arctan\frac{w}{h})^2 v=π24(arctanhgtwgt−arctanhw)2
α = v ( 1 − I o U ) + v \alpha = \frac{v}{(1-IoU)+v} α=(1−IoU)+vv
而Loss所对应的梯度为:
∂ v ∂ w = 8 π 2 ( arctan w g t h g t − arctan w h ) × h w 2 + h 2 \frac{\partial v}{\partial w} = \frac{8}{\pi^2}(\arctan\frac{w^{gt}}{h^{gt}} - \arctan\frac{w}{h}) \times \frac{h}{w^2+h^2} ∂w∂v=π28(arctanhgtwgt−arctanhw)×w2+h2h
∂ v ∂ h = − 8 π 2 ( arctan w g t h g t − arctan w h ) × w w 2 + h 2 \frac{\partial v}{\partial h} = -\frac{8}{\pi^2}(\arctan\frac{w^{gt}}{h^{gt}} - \arctan\frac{w}{h}) \times \frac{w}{w^2+h^2} ∂h∂v=−π28(arctanhgtwgt−arctanhw)×w2+h2w
而分母 w 2 + h 2 w^2+h^2 w2+h2在 h , w ∈ [ 0 , 1 ] h, w \in [0, 1] h,w∈[0,1]的情况下通常很小,很可能会产生梯度爆炸。因此为了稳定的收敛,作者简单的将 1 w 2 + h 2 \frac{1}{w^2+h^2} w2+h21置为1。
原始的NMS中,重叠面积是唯一的一个考量因素,对被包含的情况会产生错误的抑制。因此作者提出了不仅仅考量重叠面积,还需要考虑两个框中心点的距离。定义如下:
s i = { s i , I o U − R D I o U ( M , B i ) < ϵ 0 , I o U − R D I o U ( M , B i ) ≥ ϵ s_i = \{ \begin{matrix} s_i, \quad IoU - R_{DIoU}(M, B_i) < \epsilon \\ 0, \quad IoU - R_{DIoU}(M, B_i) \geq \epsilon \end{matrix} si={si,IoU−RDIoU(M,Bi)<ϵ0,IoU−RDIoU(M,Bi)≥ϵ
其中, M M M是预测的最高置信度的框, B B B是其他预测的框。 s i s_i si是classification score, ϵ \epsilon ϵ是NMS阈值。 R D I o U ( ∙ ) R_{DIoU}(\bullet) RDIoU(∙)是上面DIoU Loss里面的penalty term。作者认为如果两个框中心点较远,应该是两个目标,不应该被移除。。。
CIoU Loss 对于小目标的AP值比原始的IoU Loss表现较差而DIoU Loss是最好的。作者认为aspect ratio对小目标的regression accuracy作用不大。因为对于回归来说,中心点距离比aspect ratio更重要。而且aspect ratio可能会减弱两个框中心点normalizd distance的影响。而对于中等或者大的目标,CIoU Loss效果更好。