目标检测之目标框损失函数汇总
文章目录
前言
目标检测任务的损失函数由分类损失和边界框回归损失组成,这部分主要介绍边界框回归损失方法部分,主要涉及 Smooth L1 Loss -> IoU Loss -> GIoU Loss -> DIoU Loss -> CIoU Loss->PIoU Loss
1. L1 loss&L2 loss
L1 Loss
L1 Loss的计算公式为
L1 loss的导数为
L2 Loss
L2 Loss 的计算公式为
L2 Loss的导数为
缺点
由二者的导数计算方式可知,L1 Loss 对x的导数为常数,当在训练后期,x很小时,如果学习率不变,损失函数会在稳定值附近波动(梯度较大),不容易收敛。
L2 损失函数在x的值很大时,导数也非常大,损失函数变化也会很大,在训练初期很不稳定。
2. Smooth L1 Loss
Smooth L1 Loss 是使用了L1 Loss、L2 Loss的各自的优点,特点是训练初期,x的值较大,为了加快收敛,使梯度较大。在训练后期,x的值较小,为了能够稳定收敛,将梯度减小,不至于在稳定点附近波动。
Smooth L1 Loss
Smooth L1 Loss 的计算公式是
Smooth L1 Loss的导数为
三者在x为不同值时Loss的对比如图所示
缺点
L1 Loss、L2 Loss、Smooth L1 Loss 在计算坐标框损失时,都是独立计算4个点的Loss,然后进行相加得到最终的Loss,这中做法的前提是4个点是相互独立的,但实际上这4个点是相关的。
3. IOU Loss
旷视2016年发表于ACM的论文中提出了IOU Loss概念,将4个最标点进行了联系。
检测评价的方式(AP/MAP)使用的是IoU,而在优化过程中确实使用的4个点的坐标,二者并不是等价的,即L1 Loss、L2 Loss 或者Smooth L1 Loss相同的loss,但是IoU确实不同的(如下图所示,Loss相同但是IoU不同)
通过4个点回归的方式,是假设4个点是互相独立的,但实际4个点是相关的。
IOU loss
IoU(Intersection over Union) Loss 与 L2 Loss 的计算方式比较
IoU Loss的计算方式
4. GIoU Loss
GIoU(Generalized Intersection over Union) Loss 是由斯坦福学者发表于2019 CVPR的。
IoU Loss的不足
当目标框与预测框不相交时,即IoU(A,B)=0,就不能反映A,B距离的远近,此时损失函数不可导,所以IoU Loss无法优化两个框不相交的情况。
即便IoU相同的两组数据,也有可能相交的方式不同,即不能体现出是如何相交的(如下图所示)。
GIoU Loss
GIoU Loss的计算方式如下所示,
5. DIoU Loss & CIoU Loss
GIoU Loss 的不足
当目标框完全被预测框包裹时,IoU与GIoU的值都是一样的,此时GIoU就退化为了IoU,还是无法区分其相对位置关系(如下图所示),所以作者(AAAI 2020)提出了DIoU-加入了中心点归一化距离,可以更好地优化此类问题。
DIoU Loss
DIoU(Distance-IoU Loss)综合考虑了重叠面积、中心点距离
Rdiou如下图所示,其中d表示两个预测框与目标框中心点的距离,c表示目标框与预测框最小外接矩形对角线的距离。
CIoU Loss
CIoU(Complete-IoU)Loss是在DIoU Loss的基础上增加了长宽比的因素,增加了对坐标框、目标框长宽比的衡量,计算方式如下
6. PIoU Loss:倾斜目标检测专用损失函数
目前的OBB-based方法大多数在anchor-based架构上采用距离损失来优化上述的5个参数,并且在航空图片的目标检测上已经有一些应用。但其检测性能在更复杂的场景中依然存在局限性,主要原因在于距离损失更多地是优化旋转角度误差,而不是优化全局IoU,特别是对长条形物体很不敏感。如图a所示,两个IoU相差很大的情景下,距离损失的结果却是一样的。
为了解决这个问题,论文提出PIoU(Pixels-IOU)损失来同时提高旋转角度和IoU的准确率。如图b所示,PIoU损失能直接反映物体间的IoU,但由于OBB间的相交区域可能是多边形,OBB的IoU比BB的IoU要难算得多,所以PIoU损失以逐像素判断的方式进行IoU计算并且是连续可微的。