Distance-IoU Loss: Faster and Better Learning for Bounding Box Regression-AAAI 2020
IOU loss
IoU是目标检测里面很重要的一个指标,通过预测的框和GT间的交集与并集的比例进行计算,经常用于评价bbox的优劣 。但一般对bbox的精调都采用L2范数,而一些研究表明这不是最优化IoU的方法,因此出现了IoU loss
IoU loss直接通过IoU计算梯度进行回归,论文提到IoU loss的无法避免的缺点:当两个box无交集时,IoU=0,很近的无交集框和很远的无交集框的输出一样,这样就失去了梯度方向,无法优化。
这里论文主要讨论的类似YOLO的检测网络,按照GT是否在cell判断当前bbox是否需要回归,所以可能存在无交集的情况。而一般的two stage网络,在bbox regress的时候都会卡IOU>=0.5,不会对无交集的框进行回归
GIOU Loss
GIou loss在IoU loss的基础上增加一个惩罚项,为包围预测框和的最小区域大小,当bbox的距离越大时,惩罚项将越大。
尽管GIoU解决了IoU的梯度问题,但他仍然存在几个限制:
如图1所示,在训练过程中,GIoU倾向于先增大bbox的大小来增大与GT的交集,然后通过公式3的IoU项引导最大化bbox的重叠区域。
如图2中的包含情况,GIoU会退化成IoU
由于很大程度依赖IoU项,GIoU需要更多的迭代次数来收敛,特别是水平和垂直的bbox(后面会分析)。一般地,GIoU loss不能很好地收敛SOTA算法,反而造成不好的结果。
DIoU Loss
简单地在IoU loss基础上添加一个惩罚项,该惩罚项用于最小化两个bbox的中心点距离。如图1所示,DIoU收敛速度和效果都很好,而且DIoU能够用于NMS的计算中,不仅考虑了重叠区域,还考虑了中心点距离。
另外,论文考虑bbox的三要素,重叠区域,中心点距离和长宽比,进一步提出了Complete IoU(CIoU) loss,收敛更快,效果更好。
论文提出了能减少两个box中心点间的距离的惩罚项, 和 分别表示 和 的中心点。 是欧氏距离, 是最小包围两个bbox的框的对角线长度。
DIoU loss的惩罚项能够直接最小化中心点间的距离,而GIoU loss意在减少外界包围框的面积
DIoU loss保留了IoU loss和GIoU loss的一些属性:
- DIoU loss依然是尺寸无关的,不会大尺寸产生大的loss,小尺寸产生小的loss那样
- 类似于GIoU loss,DIoU loss能够为无交集的bbox提供梯度方向
- 当bbox完全重合时,,当bbox很远时,
在模拟实验中,发现DIoU loss也有一些独有的属性:
- 如图1和图3所示,DIoU loss能够直接最小化bbox的中心点距离。因此,他的收敛很快
- 在包含的情况下,或垂直和水平的情况下,DIoU loss的收敛非常快,而GIoU loss则几乎退化成了IoU loss
CIOU Loss
其中 是权重函数,而 用来度量长宽比的相似性
最后,CIoU loss的梯度类似于DIoU loss,但还要考虑 的梯度。在长宽在 [0,1] 的情况下, 的值通常很小,会导致梯度爆炸,因此在实现时将替换成1
Non-Maximum Suppression using DIoU
在原始的NMS中,IoU指标用于抑制多余的检测框,但由于仅考虑了重叠区域,经常会造成错误的抑制,特别是在bbox包含的情况下。因此,可以使用DIoU作为NMS的标准,不仅考虑重叠区域,还考虑了中心点距离
其中 是分类置信度, 为NMS阈值,