1. L2 loss、Smooth L1 loss
- 使用L2 loss作为边界框回归损失的目标检测模型有:R-CNN,SPPnet,YOLOv1,YOLOv2等
- 使用Smooth L1 loss作为边界框回归损失的目标检测模型有:Fast R-CNN、Faster R-CNN等。相比于L2 loss,Smooth L1 loss对于异常点的敏感性较低。
2. IoU loss
论文: UnitBox: An Advanced Object Detection Network.
本文由旷视提出,发表于2016 ACM。
论文最大的贡献就是提出了一种新的目标边界框定位损失: IoU loss。
2.1 提出问题
在目标检测领域,一般把目标边界框表示为4个变量 ( x , y , w , h ) (x,y,w,h) (x,y,w,h)或 ( x 1 , y 1 , x 2 , y 2 ) (x_1,y_1,x_2,y_2) (x1,y1,x2,y2)。在此之前,目标边界框回归问题通常采用L2 loss(Smooth L1 loss)对上述4个变量进行回归,但是,这种做法有以下缺点:
- L2 loss在计算边界框损失时,先独立地求出4个点的损失Loss,然后进行相加,这种做法假设了这4个点是相互独立的,但实际上应该是有一定相关性的,因为这4个点都依赖于同一个目标。
- 实际评价框检测的指标是使用IoU,这两者是不等价的,多个检测框可能有相同大小的L2 Loss,但它们的IoU可能差异很大。
- L2 loss并不具有尺度不变性。大边界框的L2损失通常会大于小边界框的损失,这使得在网络训练过程中,网络会更加注重大边界框的定位,忽视小边界框的定位,最终导致模型对小目标的检测性能比较差。
既然框检测的评价指标是IoU,那么我们可以直接基于IoU来构造新的损失函数(解决了问题2),于是论文UnitBox就提出了IoU loss。IoU loss 综合考虑了用于描述边界框的4个变量,并赋予了它们一定的相关性(解决了问题1)。再者,IoU loss 具有尺度不变性(解决了问题3)。
2.2 原理
IoU loss的原理实际上很简单,这里不再详细说明,直接看以下两幅图。
2.3 IoU loss 的特性(优点)
- 具有尺度不变性。大边界框的IoU loss 基本上与小边界框的IoU loss相等。对于不同分辨率的图片(边界框尺寸不同),L2 loss得到的预测框受真实边界框尺寸影响较大,而IoU loss得到的预测框受真实边界框尺寸影响较小,鲁棒性较好。
- 输入任意样本,IoU的值均介于[0, 1]之间,这种自然的归一化损失使模型具有更强的处理多尺度图像的能力。IoU=1时,预测效果最理想,此时IoU loss=0;IoU=0时,预测效果最差,此时IoU loss趋于正无穷大;而IoU在[0, 1]区间单调递增时,IoU loss由正无穷大单调递减至0,这些均满足损失函数的要求。
- IoU loss本质上是对IoU的交叉熵损失,即将IoU视为伯努利分布的随机采样(详见论文)。有时候为了简便,可直接使用1-IoU来代替IoU loss,例如,YOLOv2以K-means聚类方法自动选取anchor boxes尺寸时的损失函数就采用1-IoU。
2.4 总结
相比于L2 loss,IoU loss直接拉近两个边界框的距离,具有更快的收敛速度和检测性能,且具有尺度不变性,对大边界框和小边界框的IoU loss基本相同。
3. GIoU loss
论文: Generalized Intersection over Union: A Metric and A Loss for Bounding Box Regression.
官方代码: https://giou.stanford.edu..
3.1 提出问题
IoU loss有2个缺点:
- 当预测框A和目标框B不相交时,IoU(A,B)=0时,不能反映A,B距离的远近,此时损失函数不可导,IoU loss 无法优化两个框不相交的情况。
- 假设预测框A和目标框B的大小都确定,只要两个框的相交值是确定的,其IoU值就是相同的,此时IoU值不能反映两个框是如何相交的。如下图所示,三种不同相对位置的框拥有相同的IoU=0.33,但是拥有不同的GIoU=0.33,0.24,-0.1。当框的对齐方向更好一些时GIoU的值会更高一些。
3.2 原理
GIoU的计算方法如下:其中,C是能完全包围A和B的最小矩形框。
3.3 GIoU 的特性(优点)
- 与IoU相似,GIoU也是一种距离度量,作为损失函数的话, L G I o U = 1 − G I o U L_{GIoU}=1-GIoU LGIoU=1−GIoU满足损失函数的基本要求。
- GIoU具有尺度不变性。
- GIoU是IoU的下界,当且仅当两个框完全重合时, I o U = G I o U IoU=GIoU IoU=GIoU
- IoU取值范围为[0,1],GIoU取值范围为[-1,1]。GIoU在两者重合的时候取最大值1,在两者无交集且无限远的时候取最小值-1,因此GIoU是一个非常好的距离度量指标。
- 与IoU只关注重叠区域不同,GIoU不仅关注重叠区域,还关注其他的非重合区域,能更好的反映两者的重合度。当两个框没有重叠区域时,IoU恒等于0,此时梯度为0,导致无法训练优化。而此时GIoU是一个在[-1, 0]范围内变化的数,存在梯度,于是可进行优化,优化方向是逐渐拉近两个框之间的距离。
作者通过实验的方法,随机选取了10k对框,来研究IOU和GIoU之间的联系,得到下图:
4. DIoU loss、CIoU loss
论文: Distance-IoU Loss: Faster and Better Learning for Bounding Box Regression.
源代码: https://github.com/Zzh-tju/DIoU.
4.1 Motivation
- 当绿色GT框完全包围红色预测框时,GIoU loss退化为IoU loss,且不管红色预测框如何移动,GIoU loss和IoU loss不变,此时损失函数不能知道边界框回归器学习,GIoU和IoU均不能反映定位准确度,这使得网络收敛速度变慢。
- 仔细观察可以发现,出现上述情况时,两个框中心点的距离比较随意,预测框的宽高比比较随意,于是,考虑添加两个框中心点的距离信息,就成了DIoU loss,在DIoU loss的基础上再添加宽高比信息,就是CIoU loss。
4.2 DIoU loss
-
IoU-based loss可以统一为以下形式
L = 1 − I o U + R ( B , B g t ) L=1-IoU+R(B,B^{gt}) L=1−IoU+R(B,Bgt)其中, B B B为预测框, B g t B^{gt} Bgt为GT框, R ( B , B g t ) R(B,B^{gt}) R(B,Bgt)是新增的惩罚项。 -
对于GIoU loss, R ( B , B g t ) = ∣ C − B ∪ B g t ∣ ∣ C ∣ R(B,B^{gt})=\frac{|C-B\cup B^{gt}|}{|C|} R(B,Bgt)=∣C∣∣C−B∪Bgt∣
-
对于DIoU loss,
R ( B , B g t ) = ∣ ∣ b − b g t ∣ ∣ 2 2 c 2 R(B,B^{gt})=\frac{||b-b^{gt}||_2^2}{c^2} R(B,Bgt)=c2∣∣b−bgt∣∣22其中, b b b和 b g t b^{gt} bgt分别是预测框 B B B和GT框 B g t B^{gt} Bgt的中心点, c c c是最小包围框 C C C的对角线长度的平方。 -
引入中心点距离后,DIoU loss比GIoU loss收敛得更快,效果也更好。
注:第一行对应GIoU loss,其预测框为蓝色框;第二行对应DIoU loss,其预测框为红色框;黑色框为anchor,绿色框为GT框。
4.3 CIoU loss
参考资料:
[1]: 目标检测回归损失函数简介:SmoothL1/IoU/GIoU/DIoU/CIoU Loss.
[2]: IoU、GIoU、DIoU损失函数的那点事儿.