卷积神经网络—目标检测回归损失函数


目标检测任务的损失函数由 Classificition LossBounding Box Regeression Loss两部分构成。
本文介绍目标检测任务中近几年来Bounding Box Regression Loss Function的演进过程,其演进路线是 Smooth L1 Loss → \to IoU Loss → \to GIoU Loss → \to DIoU Loss → \to CIoU Loss

整个优化路程:围绕在GT与预测的去重上,生成推荐框的过程。从开始只开率两种框的简单交并比,到,在上一种方法上依次逐渐增加考虑因素:
【 IoU Loss】将4个坐标点当成整体,
【 GIoU Loss】两个相交框的交并比与两个框的外接矩形的关系(两个相交框的方式),
【DIoU Loss】两个相交框重叠面积和中心点距离,
【CIoU Loss】(complete IoU loss)完全考虑重叠面积-中心点距离-长宽比。
在这里插入图片描述

一、Smooth L1 Loss

  • Fast RCNN论文提出该方法,假设 x x x 为预测框和真实框之间的数值差异,常用的 L1和L2 Loss以及smoothL1定义为:
    L 1 = ∣ x ∣ d L 2 ( x ) x = 2 x L 2 = x 2 s m o o t h L 1 ( x ) = { 0.5 x 2 i f ∣ x ∣ < 1 ∣ x ∣ − 0.5 o t h e r w i s e \begin{aligned} L_1&= |x|\frac{dL_2(x)}{x} = 2x \\ L_2&=x^2 \\ \mathrm{smooth}_{L_1}(x)&= \left\{\begin{matrix} 0.5x^2 & \mathrm{if}|x|<1\\ |x|-0.5 & \mathrm{otherwise} \end{matrix}\right. \end{aligned} L1L2smoothL1(x)=xxdL2(x)=2x=x2={0.5x2x0.5ifx<1otherwise

  • 上述的3个损失函数对 x x x 的导数分别为:
    ∣ x ∣ d L 1 ( x ) x = { 1 i f   x ⩾ 0 − 1 o t h e r w i s e d L 2 ( x ) x = 2 x d s m o o t h L 1 ( x ) x = { x i f   ∣ x ∣ < 1 ± 1 o t h e r w i s e \begin{aligned} |x|\frac{dL_1(x)}{x}&= \left\{\begin{matrix} 1 & \mathrm{if}~x\geqslant 0\\ -1 & \mathrm{otherwise} \end{matrix}\right.\\ \frac{\mathrm{d}L_2(x)}{x} &= 2x\\ \frac{\mathrm{d_{smooth}}_{L_1}(x)}{x} &= \left\{\begin{matrix} x & \mathrm{if}~|x|<1\\ \pm 1 & \mathrm{otherwise} \end{matrix}\right. \end{aligned} xxdL1(x)xdL2(x)xdsmoothL1(x)={11if x0otherwise=2x={x±1if x<1otherwise

    从损失函数对x的导数可知: L1 损失函数对 x 的导数为常数,在训练后期,x很小时,如果learning rate 不变,损失函数会在稳定值附近波动,很难收敛到更高的精度。 L2 损失函数对x的导数在x值很大时,其导数也非常大,在训练初期不稳定。 s m o o t h L 1 smooth_{L_1} smoothL1 完美的避开了 L1 L2损失的缺点。
    在这里插入图片描述

  • 实际目标检测框回归任务中的损失loss为 :
    L l o c ( t u , v ) = ∑ i ∈ { x , y , w , h } s m o o t h L 1 ( t i u , v i ) L_{loc}(t^u,v) = \sum_{i\in \{x,y,w,h\}}smooth_{L_1}(t_i^u,v_i) Lloc(tu,v)=i{x,y,w,h}smoothL1(tiu,vi)
    其中 v = ( v x , v y , v w , v h ) v=(v_x,v_y,v_w,v_h) v=(vx,vy,vw,vh) 表示 GT 框坐标, t u = ( t x u , t y u , t w u , t h u ) t^u=(t^u_x,t^u_y,t^u_w,t^u_h) tu=(txu,tyu,twu,thu) 表示预测的框坐标,即分别求4个点的loss,相加作为Bounding Box Regression Loss。

缺点:
1 、上面的三种Loss用于计算目标检测的Bounding Box Loss时,独立的求出4个点的Loss,然后进行相加得到最终的Bounding Box Loss,这种做法的假设是4个点是相互独立的,实际是有一定相关性的
2 、实际评价框检测的指标是使用IOU,这两者是不等价的,多个检测框可能有相同大小的smooth Loss,但IOU可能差异很大,为了解决这个问题就引入了 IOU Loss。

二、IoU Loss

本文由旷视提出,发表于2016 ACM,【论文地址】

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

  1. 检测评价的方式是使用IoU,而实际回归坐标框的时候是使用4个坐标点,如下图所示,是不等价的;L1或者L2 Loss相同的框,其IoU 不是唯一的
  2. 通过4个点回归坐标框的方式是假设4个坐标点是相互独立的,没有考虑其相关性,实际4个坐标点具有一定的相关性
  3. 基于L1和L2的距离的loss对于尺度不具有不变性
    在这里插入图片描述
图(a)中的三组框具有相同的L2 Loss,但其IoU差异很大; 图(b)中的三组框具有相同的L1 Loss,但IoU 同样差异很大,说明L1,L2这些Loss用于回归任务时,不能等价于最后用于评测检测的IoU.

2.2 基于此提出IoU Loss,其将4个点构成的box看成一个整体进行回归:
在这里插入图片描述
上图中的红色点表示目标检测网络结构中Head部分上的点(i,j),绿色的框表示Ground truth框, 蓝色的框表示Prediction的框,IoU loss的定义如上,先求出2个框的IoU,然后再求个-ln(IoU),实际很多是直接定义为IoU Loss = 1-IoU
在这里插入图片描述

三、GIoU Loss

本文由斯坦福学者提出,发表于CVPR2019【论文地址】【github项目地址】

IoU Loss 有2个缺点:

  1. 当预测框和目标框不相交时,IoU(A,B)=0时,不能反映A,B距离的远近,此时损失函数不可导,IoU Loss 无法优化两个框不相交的情况
  2. 假设预测框和目标框的大小都确定,只要两个框的相交值是确定的,其IoU值是相同时,IoU值不能反映两个框是如何相交的
    在这里插入图片描述
    在这里插入图片描述

GIoU的性质

  • GIoU和IoU一样,可以作为一种距离的衡量方式: L ( G I o U ) = 1 − G I o U L_{(GIoU)} = 1-GIoU L(GIoU)=1GIoU
  • GIoU具有尺度不变性
  • 对于 ∀ A , B \forall A,B A,B,:
    • G I o U ( A , B ) ⩽ I o U ( A , B ) GIoU(A,B)\leqslant IoU(A,B) GIoU(A,B)IoU(A,B) 0 ⩽ I o U ( A , B ) ⩽ 1 0 \leqslant IoU(A,B) \leqslant 1 0IoU(A,B)1 ,因此 − 1 ⩽ G I o U ( A , B ) ⩽ 1 -1 \leqslant GIoU(A,B) \leqslant 1 1GIoU(A,B)1 A → B A \to B AB 时,两者相同都等于1,此时GIoU(A,B)=1
  • 当 A 和 B 不相交时,GIoU(A,B) = -1

四、DIoU Loss

GIoU Loss不足
在这里插入图片描述当目标框完全包裹预测框的时候,IoU和GIoU的值都一样,此时GIoU退化为IoU, 无法区分其相对位置关系;此时作者提出的DIoU因为加入了中心点归一化距离,所以可以更好地优化此类问题。

启发点:

基于IoU和GIoU存在的问题,作者提出了两个问题:

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

好的目标框回归损失应该考虑三个重要的几何因素:重叠面积,中心点距离,长宽比。基于问题一,作者提出了DIoU Loss,相对于GIoU Loss收敛速度更快,该Loss考虑了重叠面积和中心点距离,但没有考虑到长宽比;针对问题二,作者提出了CIoU Loss,其收敛的精度更高,以上三个因素都考虑到了。

Distance-IoU 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),其中 R ( B , B g t ) R(B,B^{gt}) R(B,Bgt)定义为预测框 B B B 和目标框 B g t B^{gt} Bgt 的惩罚项。

  • DIoU中的惩罚项表示为: R D I o U = ρ 2 ( b , b g t ) c 2 R_{DIoU} = \frac{\rho^2(b,b^{gt})}{c^2} RDIoU=c2ρ2(b,bgt)

    • 其中 b , b g t b,b^{gt} b,bgt 分别表示 B , B g t B,B^{gt} B,Bgt 的中心点,
    • ρ ( ⋅ ) \rho(·) ρ()表示欧式距离,
    • c c c 表示 B , B g t B,B^{gt} B,Bgt 的最小外界矩形的对角线距离,如下图所示。可以将DIoU替换IoU用于NMS算法当中,也即论文提出的DIoU-NMS,实验结果表明有一定的提升。
  • DIoU Loss function定义为: L D I o U = 1 − I o U + ρ 2 ( b , b g t ) c 2 L_{DIoU} =1-IoU+ \frac{\rho^2(b,b^{gt})}{c^2} LDIoU=1IoU+c2ρ2(b,bgt)

在这里插入图片描述上图中绿色框为目标框,黑色框为预测框,灰色框为两者的最小外界矩形框,d表示目标框和真实框的中心点距离,c表示最小外界矩形框的距离。

DIoU的性质:

  • 尺度不变性
  • 当两个框完全重合时, L I o U = L G I o U = L D I o U = L I o U = 0 L_{IoU} = L_{GIoU} = L_{DIoU} = L_{IoU} = 0 LIoU=LGIoU=LDIoU=LIoU=0 ,当2个框不相交时 L G I o U = L D I o U → 0 L_{GIoU} = L_{DIoU} \to 0 LGIoU=LDIoU0
  • DIoU Loss可以直接优化2个框直接的距离,比GIoU Loss收敛速度更快
  • 对于目标框包裹预测框的这种情况,DIoU Loss可以收敛的很快,而GIoU Loss此时退化为IoU Loss收敛速度较慢

五、CIoU Loss

【论文地址】【github地址】

Complete-IoU Loss

  • CIoU的惩罚项是在 DIoU 的惩罚项基础上加了一个影响因子 α v \alpha v αv ,这个因子把预测框长宽比拟合目标框的长宽比考虑进去。
    • R C I o U = ρ 2 ( b , b g t ) c 2 + α v R_{CIoU}=\frac{\rho^2(b,b^{gt}) }{c^2}+\alpha v RCIoU=c2ρ2(b,bgt)+αv
    • 其中 α \alpha α 是用于做trade-off的参数, α = v ( 1 − I o U ) + v \alpha =\frac{v}{(1-IoU)+v} α=(1IoU)+vv
    • v v v 是用来衡量长宽比一致性的参数,定义为: v = 4 π 2 ( arctan ⁡ w g t h g t − arctan ⁡ w h ) 2 v=\frac{4}{\pi^2 }\left ( \arctan\frac{w^{gt}}{h^{gt}} -\arctan\frac{w}{h} \right )^2 v=π24(arctanhgtwgtarctanhw)2
  • CIoU Loss function的定义为:
    L C I o U = 1 − ρ 2 ( b , b g t ) c 2 + α v L_{CIoU}=1-\frac{\rho^2(b,b^{gt}) }{c^2}+\alpha v LCIoU=1c2ρ2(b,bgt)+αv

DIoU和CIoU的提升效果

在YOLOv3上进行实验对比,DIoU loss和CIoU的效果都很显著,mAP分别提升3.29%和5.67%,而AP75则分别提升6.40%和8.43%,而使用DIoU-NMS则能进一步提升,幅度达到5.91%和9.88%
在这里插入图片描述
其它验证结果参考
https://www.jianshu.com/p/ef6dc5703b50

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SongpingWang

你的鼓励是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值