目标检测边界框回归损失函数汇总:SmoothL1/IoU/GIoU/DIoU/CIoU Loss

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个变量进行回归,但是,这种做法有以下缺点:

  1. L2 loss在计算边界框损失时,先独立地求出4个点的损失Loss,然后进行相加,这种做法假设了这4个点是相互独立的,但实际上应该是有一定相关性的,因为这4个点都依赖于同一个目标。
  2. 实际评价框检测的指标是使用IoU,这两者是不等价的,多个检测框可能有相同大小的L2 Loss,但它们的IoU可能差异很大。
  3. L2 loss并不具有尺度不变性。大边界框的L2损失通常会大于小边界框的损失,这使得在网络训练过程中,网络会更加注重大边界框的定位,忽视小边界框的定位,最终导致模型对小目标的检测性能比较差。

既然框检测的评价指标是IoU,那么我们可以直接基于IoU来构造新的损失函数(解决了问题2),于是论文UnitBox就提出了IoU loss。IoU loss 综合考虑了用于描述边界框的4个变量,并赋予了它们一定的相关性(解决了问题1)。再者,IoU loss 具有尺度不变性(解决了问题3)。

2.2 原理

IoU loss的原理实际上很简单,这里不再详细说明,直接看以下两幅图。
在这里插入图片描述
在这里插入图片描述

2.3 IoU loss 的特性(优点)

  1. 具有尺度不变性。大边界框的IoU loss 基本上与小边界框的IoU loss相等。对于不同分辨率的图片(边界框尺寸不同),L2 loss得到的预测框受真实边界框尺寸影响较大,而IoU loss得到的预测框受真实边界框尺寸影响较小,鲁棒性较好。
    在这里插入图片描述
  2. 输入任意样本,IoU的值均介于[0, 1]之间,这种自然的归一化损失使模型具有更强的处理多尺度图像的能力。IoU=1时,预测效果最理想,此时IoU loss=0;IoU=0时,预测效果最差,此时IoU loss趋于正无穷大;而IoU在[0, 1]区间单调递增时,IoU loss由正无穷大单调递减至0,这些均满足损失函数的要求。
  3. 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个缺点:

  1. 当预测框A和目标框B不相交时,IoU(A,B)=0时,不能反映A,B距离的远近,此时损失函数不可导,IoU loss 无法优化两个框不相交的情况。
  2. 假设预测框A和目标框B的大小都确定,只要两个框的相交值是确定的,其IoU值就是相同的,此时IoU值不能反映两个框是如何相交的。如下图所示,三种不同相对位置的框拥有相同的IoU=0.33,但是拥有不同的GIoU=0.33,0.24,-0.1。当框的对齐方向更好一些时GIoU的值会更高一些。
    在这里插入图片描述

3.2 原理

GIoU的计算方法如下:其中,C是能完全包围A和B的最小矩形框。
在这里插入图片描述

3.3 GIoU 的特性(优点)

  1. 与IoU相似,GIoU也是一种距离度量,作为损失函数的话, L G I o U = 1 − G I o U L_{GIoU}=1-GIoU LGIoU=1GIoU满足损失函数的基本要求。
  2. GIoU具有尺度不变性。
  3. GIoU是IoU的下界,当且仅当两个框完全重合时, I o U = G I o U IoU=GIoU IoU=GIoU
  4. IoU取值范围为[0,1],GIoU取值范围为[-1,1]。GIoU在两者重合的时候取最大值1,在两者无交集且无限远的时候取最小值-1,因此GIoU是一个非常好的距离度量指标。
  5. 与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=1IoU+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)=CCBBgt

  • 对于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)=c2bbgt22其中, 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损失函数的那点事儿.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值