目标检测中IOU的发展
说明:本文仅供学习
smooth L1 loss
Smooth L1 Loss完美的避开了L1和L2 Loss的缺点
- L1 Loss的问题:损失函数对x的导数为常数,在训练后期,x很小时,如果learning rate 不变,损失函数会在稳定值附近波动,很难收敛到更高的精度。
- L2 Loss的问题:损失函数对x的导数在x值很大时,其导数也非常大,在训练初期不稳定。
IOU
在IOU loss提出来之前,检测上有关候选框的回归主要是通过坐标的回归损失来优化。但基于L1 loss/L2 loss的坐标回归不具有尺度不变性,且并没有将四个坐标之间的相关性考虑进去。因此,在ACM2016的论文中提出了IOU loss,它将四个坐标点看成一个整体进行计算,具有尺度不变性(也就是对尺度不敏感)。IOU Loss的定义是先求出预测框和真实框之间的交集和并集之比,再求负对数,但是在实际使用中我们常常将IOU Loss写成1-IOU。如果两个框重合则交并比等于1,Loss为0说明重合度非常高。
虽然IOU loss虽然解决了Smooth L1系列变量相互独立和不具有尺度不变性的两大问题,但是它也存在两个问题:
- 当预测框和目标框不相交时,IoU(A,B)=0时,不能反映A,B距离的远近,此时损失函数不可导,IoU Loss 无法优化两个框不相交的情况。
- 假设预测框和目标框的大小都确定,只要两个框的相交值是确定的,其IoU值是相同时,IoU值不能反映两个框是如何相交的。
因此,IOU loss虽然比较简单直观,但它不是最好的选择!
GIOU
针对IOU无法反映两个框是如何相交的问题,GIOU通过引入预测框和真实框的最小外接矩形(类似于图像处理中的闭包区域)来获取预测框、真实框在闭包区域中的比重。这样子,GIOU不仅可以关注重叠区域,还可以关注其他非重合区域,能比较好的反映两个框在闭包区域中的相交情况。
从公式上来看,GIOU是一种IOU的下界,取值范围[-1,1]。在两者重合的时候取最大值1,在两者无交集且无限远的时候取最小值-1,因此GIoU与IOU相比,是一个比较好的距离度量指标。
DIOU
虽然GIOU通过引入闭包区域缓解了预测框与真实框相交位置的衡量问题,但其实际上存在两个问题:
- 对每个预测框与真实框均要去计算最小外接矩形,计算及收敛速度受到限制(收敛速度不够快)。【能不能直接最小化距离?,以达到更快的速度?】
- 当预测框在真实框内部时,GIOU退化为IOU,也无法区分相对位置关系。【能不能在两者有重叠时甚至包含时回归更加准确】
- 因此,针对上述问题,DIOU在基于IOU特性的基础上考虑到GIOU的缺点,直接回归两个框中心点的欧式距离,加速了收敛速度。DIoU的惩罚项是基于中心点的距离和对角线距离的比值,避免了像GIoU在两框距离较远时,产生较大的外包框,Loss值较大难以优化。
- 同时为缓解两框包含时的退化问题,DIOU还考虑了两框之间的重叠面积,使所回归的候选框更稳定。
CIOU
- DIoU Loss存在的问题:中心点重合,但宽高比不同时,DIOU loss不变。
- 因此,为了得到更加精准的预测框,CIOU在DIOU的基础上增加了一个影响因子,即增加了预测框与真实框之间长宽比的一致性的考量。
- CIoU Loss存在的问题:CIOU Loss虽然考虑了边界框回归的重叠面积、中心点距离及长宽比。但是通过其公式中的v反映的长宽比的差异,而不是宽高分别与其置信度的真实差异,所以有时会阻碍模型有效的优化相似性。
EIOU
因此,EIOU在CIOU的基础上将长宽比拆开,分别计算长、宽的差异,同时引入Fcoal loss解决了难易样本不平衡的问题。
IOU loss的总结
版权归原作者 xiaobai_Ry 所有, 如有侵权,请联系我们删除。