目标检测中的回归损失函数总结

目前总结内容(Content)

本文总结了目标检测中常用的回归损失函数的优缺点以及对其公式的分析。

演进路线:Smooth L1->IoU->GIoU->DIoU->CIoU->EIoU->Alpha-IoU

Smooth L1 Loss

动机

Smooth L1 Loss完美的避开了L1和L2 Loss的缺点:

  • L1 Loss的问题:损失函数对x的导数为常数,在训练后期,x很小时,如果learning rate 不变,损失函数会在稳定值附近波动,很难收敛到更高的精度。
    L1 Loss计算公式L1 Loss及其导数
  • L2 Loss的问题:损失函数对x的导数在x值很大时,其导数也非常大,在训练初期不稳定。
    L2 Loss及其导数

分析

Smooth L1 Loss的定义为:

Smooth L1 Loss的定义

其中, x = f ( x i ) − y i x=f(x_i)-y_i x=f(xi)yi为真实值和预测值的差值。
Smooth L1对x的导数为:

Smooth L1对x的导数

实际使用时:

在这里插入图片描述

其中, v i = ( v x , v y , v w , v h ) v_i=(v_x,v_y,v_w,v_h) vi=(vx,vy,vw,vh)表示真实框坐标, t i u = ( t x u , t y u , t w u , t h u ) t_i^u=(t_x^u,t_y^u,t_w^u,t_h^u) tiu=(txu,tyu,twu,thu)表示预测的框坐标,即分别求4个点的loss,然后相加作为Bounding Box Regression Loss。

三种loss的曲线图如图所示,可以看到Smooth L1相比L1的曲线更加的Smooth

Smooth L1的优点:

  • 相比于L1损失函数,可以收敛得更快。
  • 相比于L2损失函数,对离散点、异常值不敏感,梯度变化相对更小,训练时不容易跑飞。

Smooth L1 Loss能从两个方面限制梯度:

  • 当预测框与 ground truth 差别过大时,梯度值不至于过大;
  • 当预测框与 ground truth 差别很小时,梯度值足够小。

不足

Smooth L1 Loss在计算目标检测的 bbox loss时,都是独立的求出4个点的 loss,然后相加得到最终的 bbox loss。这种做法默认4个点是相互独立的,与实际不符。举个例子,当 ( x , y ) (x, y) (x,y)为右下角时, w , h w ,h w,h其实只能取0。

IoU Loss(2016)

论文地址:https://arxiv.org/pdf/1608.01471.pdf

动机

针对Smooth L1没有考虑box四个坐标之间相关性的缺点。

分析

通过4个坐标点独立回归Bounding boxes的缺点:

  • 检测评价的方式是使用IoU,而实际回归坐标框的时候是使用4个坐标点,如下图所示,是不等价的;L1或者L2 Loss相同的框,其IoU不是唯一的;

图(a)中的三组框具有相同的L2 Loss,但其IoU差异很大;图(b)中的三组框具有相同的L1 Loss,但IoU同样差异很大,说明L1,L2这些Loss用于回归任务时,不能等价于最后用于评测检测的IoU。
  • 通过4个点回归坐标框的方式是假设4个坐标点是相互独立的,没有考虑其相关性,实际4个坐标点具有一定的相关性;
  • 基于L1和L2的距离的loss对于尺度不具有不变性;

IoU Loss定义如下:


Ious Loss公式

I o U l o s s = − l n ( I o U ( b b o x g t , b b o x p r e d ) ) IoU loss=-ln(IoU(bbox_{gt},bbox_{pred})) IoUloss=ln(IoU(bboxgt,bboxpred))
实际使用中简化为:
I o U l o s s = 1 − I o U ( b b o x g t , b b o x p r e d ) IoUloss=1-IoU(bbox_{gt},bbox_{pred}) IoUloss=1IoU(bboxgt,bboxpred)

不足

  • 当预测框和目标框不相交,即 I o U ( b b o x g t , b b o x p r e d ) = 0 IoU(bbox_{gt},bbox_{pred})=0 IoU(bboxgt,bboxpred)=0时,不能反映两个框距离的远近,此时损失函数不可导, I o U l o s s IoUloss IoUloss无法优化两个框不相交的情况。
  • 假设预测框和目标框的大小都确定,只要两个框的相交值是确定的,其 I o U IoU IoU值相同时, I o U IoU IoU值不能反映两个框是如何相交的。

IoU值相同时,IoU值不能反映两个框是如何相交的

GIoU Loss(2019)

论文地址:https://arxiv.org/abs/1902.09630
代码地址:https://github.com/generalized-iou/g-darknet

动机

解决 I o U L o s s IoU Loss IoULoss没有考虑两个框是如何相交的问题。

分析

GIoU定义如下:
G I o U = I o U − ∣ C − ∣ A ∪ B ∣ ∣ C GIoU=IoU-\frac{|C-|A \cup B||}{C} GIoU=IoUCCAB

实际使用时:
L o s s G I o U = 1 − G I o U Loss_{GIoU}=1-GIoU LossGIoU=1GIoU

  • G I o U GIoU GIoU取值范围为 [-1, 1],在两框重合时取最大值1,在两框无限远的时候取最小值-1;
  • I o U IoU IoU只关注重叠区域不同, G I o U GIoU GIoU不仅关注重叠区域,还关注其他的非重合区域,能更好的反映两者的重合度。

实验

G I o U L o s s GIoU Loss GIoULoss,在单阶段检测器YOLO v1上涨了2个点,两阶段检测器涨点相对较少(原因分析:RPN的box比较多,两个框未相交的数量相对较少

不足

当真实框完全包裹预测框的时候, I o U IoU IoU G I o U GIoU GIoU 的值都一样,此时 G I o U GIoU GIoU 退化为 I o U IoU IoU, 无法区分其相对位置关系。

DIoU Loss(2019)

论文地址:https://arxiv.org/pdf/1911.08287.pdf
代码链接:https://github.com/Zzh-tju/DIoU

动机

通过引入距离,解决 G I o U L o s s GIoU Loss GIoULoss当真实框完全包裹预测框时, I o U IoU IoU G I o U GIoU GIoU 的值一样的缺点。

分析

基于 I o U IoU IoU G I o U GIoU GIoU存在的问题,作者提出了两个问题:

  • 问题一:直接最小化预测框与目标框之间的归一化距离是否可行,以达到更快的收敛速度。
  • 问题二:如何使回归在与目标框有重叠甚至包含时更准确、更快。

好的目标框回归损失应该考虑三个重要的几何因素:重叠面积中心点距离长宽比

  • 针对问题一,作者提出了 D I o U L o s s DIoU Loss DIoULoss,相对于 G I o U L o s s GIoU Loss GIoULoss收敛速度更快,该 L o s s Loss Loss考虑了重叠面积中心点距离,但没有考虑到长宽比
  • 针对问题二,作者提出了 C I o U L o s s CIoU Loss CIoULoss其收敛的精度更高,以上三个因素都考虑到了。

DIoU Loss 的定义如下:
L o s s D I o U = 1 − I o U + ρ 2 ( b , b g t ) c 2 Loss_{DIoU}=1-IoU+ \frac{\rho^2(b,b^{gt})}{c^2} LossDIoU=1IoU+c2ρ2(b,bgt)

其中, ρ ( ) \rho() ρ()表示预测框和真实框中心点的欧氏距离, c c c表示预测框和真实框最小外界矩形的对角线距离,如下图所示:


绿色框为真实框,黑色框为预测框,灰色框为两者的最小外界矩形框,d表示真实框和预测框的中心点距离,c表示最小外界矩形框的距离。

当2个框完全重合时, L o s s D I o U = l o s s G I o U = 0 Loss_{DIoU}=loss_{GIoU}=0 LossDIoU=lossGIoU=0
当2个框不相交时, L o s s D I o U = l o s s G I o U = 2 Loss_{DIoU}=loss_{GIoU}=2 LossDIoU=lossGIoU=2

不足

边界框回归的三个重要几何因素:重叠面积、中心点距离和长宽比,DIoU 没有包含长宽比因素

CIoU Loss(2019)

论文地址:https://arxiv.org/pdf/1911.08287.pdf
代码地址:https://github.com/Zzh-tju/DIoU-darknet

动机

解决 D I o U L o s s DIoU Loss DIoULoss没有包含长宽比因素的不足。

分析

C I o U CIoU CIoU的惩罚项是在 D I o U DIoU DIoU的惩罚项基础上加了一个影响因子。

CIoU Loss定义为:
L o s s C I o U = 1 − I o U + ρ 2 ( b , b g t ) c 2 + a v Loss_{CIoU}=1-IoU+\frac{\rho^2(b,b^{gt})}{c^2}+av LossCIoU=1IoU+c2ρ2(b,bgt)+av

其中, v = 4 π 2 ( a r c t a n w g t h g t − a r c t a n w h ) 2 v=\frac{4}{\pi^2}(arctan{w^{gt} \over {h^{gt}}}-arctan{{w} \over {h}})^{2} v=π24(arctanhgtwgtarctanhw)2,用于做trade-off的参数 a = v ( 1 − I o U ) + v a=\frac{v}{(1-IoU)+v} a=(1IoU)+vv

实验


上表中左边是用5种不同Boudning Box Regression Loss Function的对比,右边是以IoU和GIoU来计算的2种Evaluation的结果;GIoU相对IoU会有2.49点提升,DIoU相对IoU会有3.29点提升,CIoU会有大概5.67点提升,CIoU结合DIoU-NMS使用效果最好,大概会有5.91点提升。

不足

在CIoU的定义中,衡量长宽比过于复杂,从两个方面减缓了收敛速度:

  • 长宽比不能取代单独的长宽,比如 w = k w g t w=kw^{gt} w=kwgt h = k h g t h=kh^{gt} h=khgt 都会导致 v = 0 v=0 v=0
  • v v v的导数可以得到 ∂ v ∂ w = − h w ∂ v ∂ h \frac{\partial v}{\partial w}=-\frac{h}{w}\frac{\partial v}{\partial h} wv=whhv ,这说明 ∂ v ∂ w \frac{\partial v}{\partial w} wv ∂ v ∂ h \frac{\partial v}{\partial h} hv 在优化中意义相反。

EIoU Loss(2021)

论文地址:https://arxiv.org/pdf/2101.08158.pdf

动机

解决CIoU定义中的不足。

亮点

引入了解决样本不平衡问题的Focal Loss思想。

分析

将CIoU的 a v av av 取代为 a 2 ( w , w g t ) C w 2 + ρ 2 ( h , h g t ) C h 2 \frac{a^2(w,w^{gt})}{C_w^2}+\frac{\rho^2(h,h^{gt})}{C_h^2} Cw2a2(w,wgt)+Ch2ρ2(h,hgt)

EIoU Loss的定义为:
L o s s E I o U = 1 − I o U + ρ 2 ( b , b g t ) c 2 + a 2 ( w , w g t ) C w 2 + ρ 2 ( h , h g t ) C h 2 Loss_{EIoU}=1-IoU+\frac{\rho^2(b,b^{gt})}{c^2}+\frac{a^2(w,w^{gt})}{C_w^2}+\frac{\rho^2(h,h^{gt})}{C_h^2} LossEIoU=1IoU+c2ρ2(b,bgt)+Cw2a2(w,wgt)+Ch2ρ2(h,hgt)

Focal-EIoU Loss的定义为:
focal loss可以理解为对损失加权,常见的分类focal loss为 F L ( p t ) = − a t ( 1 − p t ) γ l o g ( p t ) FL(p_t)=-a_t(1-p_t)^{\gamma}log(p_t) FL(pt)=at(1pt)γlog(pt)

最后得到: L o s s F o c a l − E I o U = I o U γ L o s s E I o U Loss_{Focal-EIoU}=IoU^{\gamma}Loss_{EIoU} LossFocalEIoU=IoUγLossEIoU

实验

论文首先尝试直接将EIoU带入,但是效果不好,仅供思路参考。

Alpha-IoU (2021)

论文地址:https://arxiv.org/abs/2110.13675v1

将现有的基于 I o U IoU IoU L o s s Loss Loss推广到一个新的 P o w e r I o U Power IoU PowerIoU系列的 L o s s Loss Loss,它具有一个幂次 I o U IoU IoU项和一个附加的幂次正则项。这种新的损失系列为 α − I o U L o s s α-IoU Loss αIoULoss。在多个目标检测基准和模型上的实验表明, α − i o u α- iou αiou损失:

  • 可以显著的超过现有的基于 I o U IoU IoU的损失;
  • 通过调节 α α α,使探测器更灵活地实现不同水平的bbox回归精度;
  • 对小数据集和噪声的鲁棒性更强。
    在这里插入图片描述

并且通过实验发现,在大多数情况下,取α=3的效果最好。

总结

  • 好的目标框回归损失应该考虑三个重要的几何因素:重叠面积中心点距离长宽比,对边框间的物理描述愈发准确。

参考文献

  • https://blog.csdn.net/qq_29462849/article/details/121026812
  • https://zhuanlan.zhihu.com/p/422104433
  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值