目标检测的两个任务,分类和位置回归,本帖将经典的位置回归损失函数总结如下,按发表时间顺序。
L1、L2、smooth L1 loss
提出smooth L1 loss的论文:
L1最低点是不可导的,所以势必不会收敛到最低点,可能会在最优解附近震荡。而L2损失容易在离群点产生梯度爆炸的问题。smooth L1则集两者的优点于一身。
IoU loss
提出IoU loss的论文:
不论是L2还是smooth L1 loss都没有考虑到四个点的关联性和尺度不变性,这个是比较致命的缺点,当两对预测框与GT框的IoU相同时,尺度更大那一对loss会更高,或者如下图,用左下角和右上角点计算损失,L2 loss相同,但IoU却不相同。
IoU损失有两种形式,后一种更为常用:
L
I
o
U
=
−
l
n
I
o
U
L_{IoU} = -lnIoU
LIoU=−lnIoU
L
I
o
U
=
1
−
I
o
U
L_{IoU} = 1-IoU
LIoU=1−IoU
这样,BBox回归问题的评价指标和优化指标已经重叠统一了。
GIoU loss
提出GIoU loss 的论文:
IoU loss 最大的缺点就是两个框不相交时IoU横为0,损失恒为1,没法提供优化的梯度。
如下图(图来自CHEN), 右图的loss应该更小才对,但IoU loss却是相同的。
GIoU引入了一个最小闭包区的概念,即能将预测框和真实框包裹住的最小矩形框,其中,
A
c
A_c
Ac 为最小闭包区,
u
u
u为预测框和真实框的并集,那么GIoU第二项的分子就是上图中白色区域,白色区域比最小闭包区的值越高,loss越高。
DIoU loss
而
上图中三种情况下IoU和GIoU的loss均为0.75,但显然第三种情况应该是更好的预测结果,而DIoU loss就可以更精确地表示这些情况,其计算公式如下式,相比IoU损失多了一项惩罚项,是
[
两个框中心点的欧式距离
最小闭包矩形对角线长度
]
2
[{\frac{两个框中心点的欧式距离}{最小闭包矩形对角线长度}}]^2
[最小闭包矩形对角线长度两个框中心点的欧式距离]2
DIoU还有如下的优势:
- 因为DIoU直接最小化两个框的距离,所以收敛得比GIoU快很多,如下图示。尤其是在两个框的相对方向是垂直或水平时。
- 作为NMS的评价指标时能获得更好的效果。
CIoU loss(Complete IoU Loss)
与DIoU loss出自同一篇文章
作者认为,好的IoU损失应该考虑三个因素:
- 相交的面积
- 中心点距离
- 长宽比
而IoU和GIoU loss只考虑了第一个因素,DIoU loss多考虑了第二个因素。
作者又提出了CIoU loss,可以更精确衡量两个框的重合度和相似度,比DIoU多了一个长宽比的惩罚项
v
v
v
作者通过实验表明,CIoU相比其他IoU损失取得了更好的实验结果。
Focal-EIoU loss
这个损失我看知乎上大家评论不是很好啊,自己也还没细看,挖个坑。
文中第三章对IoU,GIoU,CIoU损失的缺点做了一下总结,。而
本文提出的新损失是基于CIoU的,CIoU定义如下:
作者认为CIoU loss有以下两个缺点:
-
如果预测框和gt框的长宽比是相同的,那么长宽比的惩罚项恒为0,作者认为不合理
-
观察CIoU中w,h相对于v的梯度,发现这两个梯度是一对相反数,也就是说,w和h不能同时增大或减小,这显然是不够合理的。
针对上述问题,作者对于长宽比的惩罚项进行了替换,形成了EIoU,如下式:
其中, C w , C h C_{w},C_{h} Cw,Ch是最小闭包的w和h。
Alpha IoU
简单说就是对IoU loss家族做了幂次运算,如下图的公式。
如上图,alpha-IoU可以通过自适应地提高高IoU对象的损失和梯度来提高BBox回归精度,而且对小数据集和噪声BBox提供了更好的稳健性。
SIoU(SCYLLA-IoU) loss
作者认为以前的IoU损失都没有考虑角度问题,但是方向框的角度确实可以影响回归,因此提出SIoU loss,其中SIoU使用4组cost组成见下
- 角度损失
- 距离损失
- 形状损失
- IoU损失
依次分开来看: - 角度损失
未完待续。。。