Distance-IoU Loss

Distance-IoU Loss

边界盒回归是物体检测的关键步骤。在现有的方法中,虽然广泛采用 l n l_n ln-norm loss来进行边界盒回归。最近,有人提出了IoU损失和generalized IoU(GIoU)损失,以利于IoU度量,但仍存在收敛速度慢和回归不准确的问题。在本文中,我们通过加入预测框和目标框之间的归一化距离,提出了一种Distance-IoU(DIoU)损失,在训练中收敛速度比IoU和GIoU损失快得多。此外,本文还总结了边界框回归中的三个几何因素,即重叠面积、中心点距离和长宽比,在此基础上提出了Complete IoU(CIoU)损失,从而使收敛速度更快,性能更好。通过将DIoU和CIoU损失纳入到最先进的目标检测算法中,例如YOLO v3、SSD和Faster RCNN,我们不仅在IoU度量方面,而且在GIoU度量方面都取得了显著的性能提升。此外,DIoU可以很容易地被采用到非最大抑制(NMS)中作为准则,进一步促进性能的提升。源代码和训练后的模型可在https://github.com/Zzh-tju/DIoU。

在边界盒回归的评价度量方面,Intersection over Union(IoU)是最流行的度量。

在这里插入图片描述

其中 B g t = ( x g t , y g t , w g t , h g t ) B^{gt}=(x^{gt},y^{gt},w^{gt},h^{gt}) Bgt=(xgt,ygt,wgt,hgt)是ground-truth, B = ( x , y , w , h ) B=(x,y,w,h) B=(x,y,w,h)为预测框。通常情况下,在B和 B g t B^{gt} Bgt的坐标上采用 l n l_n ln-norm损失来测量边界盒之间的距离。然而,正如(Yu等人。2016年;Rezatofighi等人。2019年), l n l_n ln-norm损失不是获得最优IoU指标的合适选择。在(Rezatofighi等人。2019年),建议采用IoU损失来改进IoU指标,

在这里插入图片描述

然而,IoU损失只有在边界框有重叠时才会起作用,对于非重叠的情况不会提供任何移动梯度。而后通过增加一个惩罚项,提出了generalized IoU损失(GIoU)(Rezatofighi等人,2019)。

在这里插入图片描述

其中C是覆盖B和 B g t B^{gt} Bgt的最小边界框,由于引入了惩罚项,在非重叠的情况下,预测的盒子将向目标盒子移动。

在这里插入图片描述

图1:由GIoU损失(第一行)和DIoU损失(第二行)的Bounding box回归步骤。绿色和黑色分别表示目标框和anchor box。蓝色和红色分别表示GIoU损失和DIoU损失的预测框。GIoU损失一般会增加预测框的大小,使其与目标框重叠,而DIoU损失则直接使中心点的归一化距离最小化。

在这里插入图片描述

图2:对于这些情况,GIoU损失会退化为IoU损失,而我们的DIoU损失仍然可以区分。绿色和红色分别表示目标框和预测框。

虽然GIoU可以缓解非重叠情况下的梯度消失问题,但它仍然有几个限制。通过模拟实验(详见对IoU和GIoU损失的分析章节),我们可以评估GIoU损失在不同边界框位置的性能。如图 1 所示,可以看到 GIoU 损失打算先增大预测框的大小,使其与目标框重叠,然后公式(3)中的 IoU 项将致力于最大化边界框的重叠面积。而从图2来看,GIoU loss将完全退化为包围边界盒的IoUloss。由于严重依赖IoU项,GIoU经验上需要更多的迭代才能收敛,特别是对于水平和垂直边界盒(见图4)。通常GIoU损失在最先进的检测算法中不能很好地收敛,产生不准确的检测结果

在这里插入图片描述

图4:IoU、GIoU和DIoU损失在迭代T次后,即的回归误差的可视化。例如,E(T,n)对于每个坐标n,我们注意到(a)和(b)中的盆地对应的是良好的回归案例。可以看到,IoU损失在非重叠情况下有很大的误差,GIoU损失在水平和垂直情况下有很大的误差,而我们的DIoU损失导致各地的回归误差非常小。

在本文中,我们提出了一种用于边界盒回归的Distance-IoU(DIoU)损失。具体来说,我们只需在IoU损失上增加一个惩罚项,就可以直接最小化两个边界盒中心点之间的归一化距离,从而使收敛速度比GIoU损失快很多。从图1来看,可以部署DIoU损失来直接最小化两个边界盒之间的距离。而且只进行了120次迭代,预测的框与目标框完全匹配,而GIoU即使进行了400次迭代也没有收敛。此外,我们还提出,一个好的边界框回归损失应该考虑三个重要的几何度量,即重叠面积、中心点距离和长宽比,而这三个度量长期以来一直被忽略。通过结合这些几何度量,我们进一步提出了一种用于边界盒回归的Complete IoU(CIoU)损失,导致收敛速度更快,性能优于IoU和GIoU损失。所提出的损失可以很容易地融入到最先进的对象检测算法中。此外,DIoU可以作为非最大抑制(NMS)中的一个准则,通过这个准则,在抑制冗余框时,不仅考虑重叠区域,还考虑两个边界框中心点之间的距离,使其对有遮挡的情况更加稳健

为了评估我们提出的方法,DIoU损失和CIoU损失被纳入几个最先进的检测算法,包括YOLO v3(Redmon和Farhadi 2018),SSD(Liu等人,2016)和Faster R-CNN(Ren等人,2015),并在两个流行的基准数据集PASCAL VOC 2007(Everingham等人,2010)和MS COCO 2017(Lin等人,2014)上进行评估。

工作贡献总结如下:

  1. 提出了一种用于边界盒回归的Distance-IoU损失,即DIoU损失,它的收敛速度比IoU和GIoU损失快。
  2. 通过考虑三个几何度量,即重叠面积、中心点距离和长宽比,进一步提出了一个Complete IoU损失,即CIoU损失,它能更好地描述矩形框的回归。
  3. DIoU部署在NMS中,对冗余盒子的抑制比原来的NMS更强大。
  4. 所提出的方法可以很容易地融入到最先进的检测算法中,实现显著的性能提升。

Related Work

Loss Function for Bounding Box Regression

边界盒回归中通常采用 l n l_n ln-norm损失函数,但对变化尺度敏感。在YOLO v1(Redmon等人,2016)中,采用w和h的平方根来减轻这种影响,而YOLO v3(Redmon和Farhadi,2018)采用2 - wh。自Unitbox(Yu等,2016)以来,也使用了IoU损失,它对尺度不变.GIoU(Rezatofighi等,2019)损失的提出是为了解决非重叠情况下的梯度消失问题,但仍面临收敛慢和回归不准确的问题。相比之下,我们提出的DIoU和CIoU损失具有更快的收敛速度和更好的回归精度。

Non-Maximum Suppression

NMS是大多数对象检测算法的最后一步,在这一步中,只要其与最高得分框的重合度超过阈值,多余的检测框就会被移除。**Soft-NMS(Bodla等,2017)通过一个连续函数w.r.t.IoU对邻居的检测得分进行惩罚,得到比原始NMS更柔和、更稳健的抑制。IoUNet(Jiang等,2018)引入了一个新的网络分支来预测本地化置信度来指导NMS。最近,提出了自适应NMS(Liu,Huang,and Wang 2019)和Softer-NMS(He等2019),分别研究适当的阈值和加权平均策略。**在这项工作中,简单部署DIoU作为原始NMS中的准则,在抑制冗余框时同时考虑重叠区域和边界框两个中心点之间的距离。

Analysis to IoU and GIoU Losses

首先,我们分析原始IoU损失和GIoU损失的局限性。然而,单纯从检测结果来分析边界盒回归的过程是非常困难的,在非控制基准中的回归案例往往是不全面的,例如,不同的距离、不同的尺度和不同的长宽比。 相反,我们建议进行模拟实验,在模拟实验中,应该全面考虑回归案例,然后可以很容易地分析给定损失函数的问题。

Simulation Experiment

在这里插入图片描述

在这里插入图片描述

图3:模拟实验。(a) 考虑到不同的距离、比例和长宽比,采用了1,715,000个回归案例,(b) 迭代t次时不同损失函数的回归误差和(即 Σ n E ( t , n ) \Sigma_n\mathbf E(t,n) ΣnE(t,n))曲线。

在模拟实验中,我们试图涵盖bounding boxes之间的大部分关系,如图3(a)所示,包括距离、比例和纵横比。具体来说,我们选择了7个不同长宽比(即1:4、1:3、1:2、1:1、2:1、3:1和4:1)的单位长方体作为目标长方体。在不丧失一般性的情况下,7个目标框的中心点固定在(10,10)。anchor boxes均匀分布在5000个点。(i) 距离:在以(10,10)为中心,半径为3的圆形区域内,均匀选择5000个点,放置7个不同大小和7个纵横比的anchor boxes。在这些情况下,包括重叠框和非重叠框。(二)Scale:每个点的anchor boxes面积分别设为0.5、0.67、0.75、1、1.33、1.5、2。三)长宽比。对于给定的点和比例,采用7种长宽比,即与目标框的设置相同(即1:4、1:3、1:2、1:1、2:1、3:1和4:1)。所有5000×7×7的anchor boxes要拟合所有target box。综上所述,总共有1715000=7×7×7×5000个回归案例。

然后给定一个损失函数 L \mathcal L L,我们可以用梯度下降算法模拟每种情况下的边界盒回归过程。对于预测框 B i B_i Bi,可以通过以下方式得到当前的预测结果

在这里插入图片描述

B i t B^t_i Bit为第t次迭代时的预测框, ∇ B i t − 1 \nabla B^{t-1}_i Bit1代表第t-1次迭代时 L \mathcal L L w.r.t. B i B_i Bi 的梯度, η \eta η为幅度。值得注意的是,在我们的实现中,梯度是乘以 ( 2 − I o U i t − 1 ) (2-IoU^{t-1}_i) (2IoUit1)来加速收敛的。使用l1-norm对边界盒回归的性能进行评估。对于每个损失函数,当达到迭代T=200时终止模拟实验,误差曲线如图3(b)所示。

Limitations of IoU and GIoU Losses

在图4中,我们可视化了5000个散点在迭代次数为T时的最终回归误差。从图4(a)中不难看出,IoU损失只对与目标框重叠的情况有效。没有重叠的anchor boxe不会移动,由于 ∇ B \nabla B B 始终为0。

通过加入公式(3)中的惩罚项,GIoU损失可以更好地缓解非重叠情况的问题。从图4(b)中可以看出,GIoU损失ignificantly enlarges the basin,即GIoU工作的区域。但在水平方向和垂直方向的案例可能仍有较大的误差。这是因为在GIoU损失中罚则是用来最小化 ∣ C − A ⋃ B ∣ |C-A\bigcup B| CAB,但是 C − A ⋃ B C-A\bigcup B CAB的面积通常很小或为0(当两个盒子有包含关系时),那么GIoU几乎退化为IoU损失。GIoU损失只要运行足够的迭代,学习率适当,就会收敛到好的解,但收敛速度确实很慢。从几何上看,从图1所示的回归步骤可以看出,GIoU实际上是增加了预测框的大小,使其与目标框重合,然后IoU项会使预测框与目标框匹配,得出的收敛速度非常慢

综上所述,IoU损失对于非重叠的情况下会收敛到不好的解,而GIoU损失的收敛速度很慢,尤其是对于水平和垂直方向的盒子。而在纳入目标检测pipeline时,IoU和GIoU损失都不能保证回归的准确性。这就很自然地提出了这样的问题。第一,直接最小化预测框和目标框之间的归一化距离以实现更快的收敛是否可行?第二,当与目标框有重叠甚至包含时,如何使回归更准确、更快速?

The Proposed Method

一般情况下,IoU-based损失可以定义为

在这里插入图片描述

R ( B , B g t ) \mathcal R(B,B^{gt}) R(B,Bgt)为预测框B和目标框 B g t B^{gt} Bgt的惩罚则。通过设计适当的惩罚项,本节我们提出DIoU损失和CIoU损失来回答上述两个问题。

Distance-IoU Loss

为了回答第一个问题,我们提出将两个边界盒的中心点之间的归一化距离最小化,惩罚项可以定义为

在这里插入图片描述

b b b b g t b^{gt} bgt代表 B , B g t B,B^{gt} B,Bgt的中心点, ρ ( ⋅ ) \rho(\cdot) ρ()为欧几里得距离,而c是覆盖两个框的最小包围框的对角线长度。那么DIoU损失函数可以定义为

在这里插入图片描述

如图5所示,DIoU损失的惩罚项直接使两个中心点之间的距离最小化,而GIoU损失的目的是减少 C − B ⋃ B g t C-B\bigcup B^{gt} CBBgt的面积

在这里插入图片描述

图5:边界盒回归的DIoU损失,中心点之间的归一化距离可以直接最小化,c是覆盖两个盒子的最小包围盒的对角线长度, d = ρ ( b , b g t ) d=\rho(b,b^{gt}) d=ρ(b,bgt)是两个盒子中心点的距离。

Comparison with IoU and GIoU losses 提出的DIoU loss继承了IoU和GIoU loss的一些特性。

  1. DIoU损失对回归问题的大小仍然是不变的。
  2. 与GIoU损失类似,DIoU损失在与target box不重叠时,可以提供bounding boxes的移动方向。
  3. 当两个bounding boxes完美匹配时, L I o U = L G I o U = L D I o U \mathcal L_{IoU}=\mathcal L_{GIoU}=\mathcal L_{DIoU} LIoU=LGIoU=LDIoU。当两个bounding boxes距离很远时, L G I o U = L D I o U → 2 \mathcal L_{GIoU}=\mathcal L_{DIoU}\rightarrow 2 LGIoU=LDIoU2

而DIoU损失比IoU损失和GIoU损失有几个优点,可以通过仿真实验来评价。

  1. 如图1和图3所示,DIoU损失可以直接使两个框的距离最小化,因此收敛速度比GIoU损失快得多。
  2. 对于包含两个盒子的情况,或者在水平和垂直方向上,DIoU损失可以使回归速度非常快,而GIoU损失几乎已经退化为IoU损失,即, ∣ C − A ⋃ B ∣ → 0 |C-A\bigcup B|\rightarrow0 CAB0

Complete IoU Loss

然后我们回答第二个问题,提出一个好的边界盒回归损失应该考虑三个重要的几何因素,即重叠面积、中心点距离和长宽比。通过统一坐标,IoU损失考虑了重叠面积,GIoU损失严重依赖IoU损失。我们提出的DIoU loss旨在同时考虑边界盒的重叠面积和中心点距离。然而,边界框的长宽比的一致性也是一个重要的几何因素

因此,在DIoU损失的基础上,引入高宽比一致性,提出CIoU损失,

在这里插入图片描述

其中 α \alpha α是一个大于零的权衡参数,v衡量长宽比的一致性。

在这里插入图片描述

则损失函数可定义为

在这里插入图片描述

权衡参数定义为

在这里插入图片描述

其中重叠面积因子在回归中具有更高的优先级,特别是对于非重叠的情况。

最后,CIoU损失的优化与DIoU损失的优化相同,只是要指定v w.r.t. w和h的梯度。

在这里插入图片描述

对于h和w在[0,1]范围内的情况, w 2 + h 2 w^2+h^2 w2+h2通常是一个小值,这很可能产生梯度爆炸。因此在我们的实现中,为了稳定收敛,只需去掉 w 2 + h 2 w^2+h^2 w2+h2,由其将步长大小 1 w 2 + h 2 \frac{1}{w^2+h^2} w2+h21改为1,梯度方向仍与公式(12)一致。

Non-Maximum Suppression using DIoU

在原来的NMS中,IoU度量是用来抑制冗余的检测框,其中重叠区域是唯一的因素,对于有遮挡的情况常常产生错误的抑制。我们在这项工作中提出DIoU是一个更好的NMS标准,因为在抑制标准中不仅要考虑重叠面积,还要考虑两个盒子之间的中心点距离。对于得分最高的预测框 M \mathcal M M,DIoU-NMS可以正式定义为

在这里插入图片描述

其中,通过同时考虑IoU和两个盒子中心点之间的距离来去除盒子 B i B_i Bi s i s_i si为分类得分,KaTeX parse error: Undefined control sequence: \cal at position 1: \̲c̲a̲l̲ ̲\epsilon为NMS阈值。我们建议,中心点较远的两个盒子可能定位不同的对象,不应删除。此外,DIoU-NMS非常灵活,只需几行代码就可以集成到任何目标检测pipeline中。

Experimental Results

Discussion on DIoU-NMS

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

]

在表1,表2和表3中,我们报告了CIoU损失与原始NMS ( L C I o U ) (\mathcal L_{CIoU}) (LCIoU)和CIoU损失与DIoU-NMS ( L C I o U ( D ) ) (\mathcal L_{CIoU}(D)) (LCIoU(D))的结果。其中阈值遵循原NMS的默认设置,即YOLO v3和SSD的e=0.45,Faster R-CNN的e=0.50。可以发现,DIoUNMS在大多数情况下,比原来的NMS有进一步的性能提升。图8显示,DIoU-NMS可以更好地保存正确的检测框,其中采用在PASCAL VOC上训练的YOLO v3来检测MS COCO上的对象。为了进一步验证DIoUNMS相对于原始NMS的优越性,我们进行对比实验,原始NMS和DIoU-NMS与YOLO v3和使用CIoU loss训练的SSD进行合作。我们介绍了原始NMS和DIoU-NMS在宽范围的阈值[0.43;0.48]内的比较。从图9可以看出,DIoU-NMS在每个阈值下都优于原始NMS。此外,值得注意的是,即使是DIoU-NMS最差的性能,也至少与原始NMS的最佳性能相当或更好。也就是说,我们的DIoU-NMS即使不仔细调整阈值e,也能普遍优于原始NMS的性能。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值