目标检测论文阅读:Libra R-CNN算法笔记

标题:Libra R-CNN: Towards Balanced Learning for Object Detection
会议:CVPR2019
论文地址:https://ieeexplore.ieee.org/document/8953703/
这篇文章研究了目标检测中极具代表性的三个方面,正负样本采样、特征金字塔和损失函数,通过发现这三个方面的不平衡问题,针对性地提出解决方案。文章的思路十分清晰,没有太多网络结构上的创新,不是非常复杂。比较特别的是,虽然是在两阶段方法基础上进行改进,文章也将可用的两个组件嵌入到单阶段方法中验证了有效性,对后续研究启发良多。

Abstract

与模型结构相比,对检测器的成功同样至关重要的训练过程在目标检测中受到的关注相对较少。在这项工作中,我们仔细回顾了检测器的常规训练惯例,发现检测性能往往受限于训练过程中的不平衡性,这一般包含三个层次:采样层、特征层和目标层。为了缓解由此带来的不利影响,我们提出了Libra R-CNN,一个用于目标检测的简单有效的平衡学习框架。它集成了三个新颖的组件:IoU平衡采样、平衡特征金字塔和平衡L1损失,分别用于减少采样、特征和目标层的不平衡。得益于整体平衡的设计,Libra R-CNN显著提升了检测性能。在MSCOCO上,原始实现的Libra R-CNN平均精度(AP)比FPN Faster R-CNN和RetinaNet分别提高了2.5个和2.0个百分点。

1. Introduction

随着深度卷积网络的发展,近年来目标检测取得了显著的进展。Faster R-CNN 、RetinaNet、Cascade R-CNN等多个检测框架被开发出来,大大推动了SOTA。尽管pipeline结构存在明显的差异,例如单阶段和两阶段,现代检测框架大多遵循一个共同的训练范式,即采样区域,从中提取特征,然后在标准的多任务目标函数指导下联合识别类别和优化位置。
基于该范式,目标检测器训练的成功取决于三个关键方面:①所选的区域样本是否具有代表性;②提取的视觉特征是否得到充分利用;③设计的目标函数是否最优。然而,我们的研究发现,典型的训练过程在所有的这些方面都显著失衡。这种不平衡问题使得精心设计的模型结构的力量无法得到充分发挥,从而限制了整体性能,如图1所示。下面,我们依次描述这些问题:
在这里插入图片描述
①采样层不平衡: 在训练目标检测器时,困难样本尤其具有价值,因为它们更有效地提高了检测性能。然而,随机采样方案通常会导致选择的样本以简单样本为主。主流的困难样本挖掘方法,如OHEM,可以有助于促使关注困难样本。然而,它们往往对噪声标签敏感,并且需要消耗大量的内存和计算成本。Focal Loss在单阶段检测器中也缓解了这一问题,但扩展到R-CNN后发现改进不大,因为两阶段过程过滤了大部分简单负样本。因此,这个问题需要更优雅地解决。
②特征层不平衡: 主干中的深层高级特征具有更多的语义含义,而浅层低级特征具有更多的描述性内容。最近,FPN和PANet中通过横向连接进行特征融合,推动了目标检测的发展。这些方法启发我们,低层和高层信息对于目标检测是互补的。如何利用它们来融合金字塔表示,决定了检测性能。然而,将它们融合在一起的最佳途径是什么?我们的研究表明,融合的特征应该具有来自每个分辨率的平衡信息。但上述方法中的顺序方式会使得融合的特征更多地关注相邻分辨率而较少关注其它分辨率。非相邻层包含的语义信息在信息流中每融合一次就会被稀释。
③目标层不平衡: 检测器需要执行分类和定位两个任务,因此训练目标中混合了两个不同的目标。如果它们没有适当地平衡,一个目标可能会被影响,导致整体性能不佳。对于训练过程中涉及到的样本情况也是如此。如果它们不能适当地平衡,简单样本产生的小梯度可能被淹没在困难样本产生的大梯度中,从而限制了进一步的优化。因此,我们需要重新平衡所涉及的任务和样本来达到最优收敛。
为了缓解这些问题带来的不利影响,我们提出了Libra R-CNN,这是一个简单有效的目标检测框架,它明确地在上述三个层次上实现了平衡。该框架合并了三个新颖的组件:①IoU平衡采样,根据它们与分配的真值的IoU挖掘困难样本。②平衡特征金字塔,它使用相同的深度融合平衡语义特征来增强多层特征。③平衡L1损失,它促进关键梯度,重新平衡所涉及的分类、整体定位和精确定位。
在MS COCO上,不加点缀的Libra R-CNN比FPN Faster R-CNN和RetinaNet的平均精度(AP)分别提高了2.5和2.0个点。在1×计划下,基于ResNet-50/ResNeXt-101-64x4d的FPN Faster R-CNN主干的Libra R-CNN分别可以获得38.7和43.0AP。
这里我们总结我们的主要贡献:①我们系统地回顾了检测器的训练过程。我们的研究揭示了限制了检测性能的三个层面的不平衡问题。②我们提出了Libra R-CNN,该框架通过结合三个新的组件来重新平衡训练过程:IoU平衡采样、平衡特征金字塔和平衡L1损失。③我们在MS COCO上对所提出的框架进行了测试,与包括单阶段和两阶段在内的SOTA检测器相比,都取得了显著的提升。

2. Related Work

目标检测的模型结构。 介绍了一些主流的检测器。
目标检测的平衡学习。 缓解目标检测训练过程中的不平衡性是实现最优训练和充分挖掘模型结构潜力的关键。
采样层不平衡。OHEM和Focal Loss是目前解决目标检测中采样层不平衡问题的主要方法。常用的OHEM根据置信度自动选择困难样本。然而,这一过程会造成额外的内存和速度成本,使得训练过程臃肿。此外,OHEM还受到噪声标签的影响,不能在所有情况下都很好地工作。Focal Loss以优雅的损失形式解决了单阶段检测器中额外的前景背景类不平衡问题,但由于不平衡情况的不同,通常对两阶段检测器带来的增益很小或没有。与这些方法相比,我们的方法大大降低了成本,并且优雅地解决了这个问题。
特征层不平衡。利用多层特征生成具有识别力的金字塔表示对检测性能至关重要。FPN提出横向连接通过自顶向下的路径来丰富浅层的语义信息。之后,PANet引入了自底向上的路径来进一步增加深层的低级信息。Kong等人提出了一种新的基于SSD的高效金字塔,以高度非线性但高效的方式融合特征。与这些方法不同,我们的方法依赖于融合的平衡语义特征来增强原始特征。通过这种方式,金字塔中的每个分辨率都从其它处获得平等的信息,从而平衡信息流,使特征更具识别力。
目标层不平衡。Kendall等人证明了基于多任务学习的模型的性能强烈依赖于每个任务之间损失的相对权重。但以往的方法主要关注如何增强模型结构的识别能力。最近,UnitBox和IoU-Net引入了一些新的与IoU相关的目标函数,以提高定位精度。与它们不同的是,我们的方法重新平衡了涉及的任务和样本,以达到更好的收敛性。

3. Methodology

Libra R-CNN的整体流程如图2所示。我们的目标是使用整体平衡的设计来缓解检测器训练过程中存在的不平衡,从而尽可能地挖掘模型结构的潜力。
在这里插入图片描述

3.1. IoU-balanced Sampling

让我们从一个基本问题开始:一个训练样本与其对应的真值之间的重叠度是否与其难度相关?为了回答这个问题,我们进行实验来寻找背后的真相。结果见图3。我们主要考虑难负样本,这是已知的主要问题。我们发现超过60%的难负样本重叠度大于0.05,但随机采样只为我们提供了大于此阈值的30%的训练样本。这种极端的样本不平衡将大量的困难样本埋藏在成千上万的简单样本中。
在这里插入图片描述
受此启发,我们提出IoU平衡采样:一种简单有效且不增加额外成本的困难样本挖掘方法。假设我们需要从 M M M个对应的候选样本中抽取 N N N个负样本。随机采样下每个样本的选择概率为:
p = N M p=\frac{N}{M} p=MN为了提高难负样本的选择概率,我们根据IoU将采样间隔均匀划分为 K K K个箱子。将 N N N个所需负样本平均分配到每个箱子。然后我们从它们中均匀地选取样本。因此,我们得到IoU平衡采样下的选择概率:
p k = N K ∗ 1 M k ,   k ∈ [ 0 , K ) p_k=\frac{N}{K}*\frac{1}{M_k},~k\in[0,K) pk=KNMk1, k[0,K)其中,其中 M k M_k Mk是对应区间 k k k内的候选样本个数。实验中 K K K默认设置为3。
IoU平衡采样的直方图如图3中绿色所示。可以看出,我们的IoU平衡采样可以引导训练样本的分布接近难负样本的分布。实验还表明,检测性能对 K K K不敏感,只要IoU较高的样本更容易被选中。
此外,值得注意的是,该方法也适用于难正样本。然而,在大多数情况下,没有足够的候选样本将此过程扩展到正样本中。为了使平衡采样步骤更加全面,我们对每个真值抽取相同数量的正样本作为替代方法。

3.2. Balanced Feature Pyramid

与之前的方法使用横向连接来融合多层特征不同,我们的关键思想是使用相同的深度融合平衡语义特征来增强多层特征。pipeline如图4所示。它包括缩放、融合、优化和增强四个步骤。
在这里插入图片描述
获取平衡语义特征。 在分辨率层 l l l的特征记为 C l C_l Cl。多层特征的个数记为 L L L。包含的最低和最高层的索引分别记为 l m i n l_{min} lmin l m a x l_{max} lmax。在图4中, C 2 C_2 C2的分辨率最高。为了融合多层特征并同时保持其语义层次,我们首先将多层特征 { C 2 , C 3 , C 4 , C 5 } \{C_2,C_3,C_4,C_5\} {C2,C3,C4,C5}分别使用插值和最大池化调整为一个中间尺寸,即与 C 4 C_4 C4相同的尺寸。当特征被缩放后,通过简单的平均来得到平衡语义特征:
C = 1 L ∑ l = l m i n l m a x C l C=\frac{1}{L}\sum_{l=l_{min}}^{l_{max}}C_l C=L1l=lminlmaxCl然后使用相同但反向的过程对获得的特征进行缩放,以增强原始特征。在这个过程中,每个分辨率从其他分辨率中获得的信息是相等的。注意该过程不包含任何参数。我们观察到这种非参数方法的提升,证明了信息流的有效性。
优化平衡语义特征。 平衡语义特征可以进一步优化,使其更具识别力。我们发现直接使用卷积的优化和非局部模块都能很好地起到效果。但是非局部模块效果更加稳定。因此,本文默认使用插入高斯非局部注意力。优化步骤有助于我们增强融合特征并进一步改善结果。
通过该方法,同时聚合从低层到高层的特征。输出 { P 2 , P 3 , P 4 , P 5 } \{P_2,P_3,P_4,P_5\} {P2,P3,P4,P5}在FPN中按照相同的pipeline进行目标检测。值得一提的是,我们的平衡特征金字塔可以与FPN和PAFPN等最近的解决方案形成互补,而不会产生冲突。

3.3. Balanced L1 Loss

自Fast R-CNN以来,分类和定位问题在多任务损失的指导下被同时解决,其定义如下:
L p , u , t u , v = L c l s ( p , u ) + λ [ u ≥ 1 ] L l o c ( t u , v ) L_{p,u,t^u,v}=L_{cls}(p,u)+\lambda[u≥1]L_{loc}(t^u,v) Lp,u,tu,v=Lcls(p,u)+λ[u1]Lloc(tu,v) L c l s L_{cls} Lcls L l o c L_{loc} Lloc分别是识别和定位对应的目标函数。L_{cls}中的预测和目标分别记为 p p p u u u t u t^u tu是类别 u u u对应的回归结果。 v v v是回归目标。 λ \lambda λ用于调节多任务学习下的损失权重。我们将损失大于等于1.0的样本称为离群值。其他样本称为正常值。
平衡所涉及任务的一个自然解决方案是调整它们的损失权重。然而,由于回归目标的无界性,直接提高定位损失的权重会使模型对离群值更加敏感。这些可视为困难样本的离群值会产生过大的梯度,对训练过程有害。与离群值相比,正常值对整体梯度的贡献很小,可以看作是简单样本。具体来说,与离群值相比,正常值平均每个样本只贡献30%的梯度。考虑到这些问题,我们提出平衡L1损失,记为 L b L_b Lb
在这里插入图片描述
平衡L1损失由传统的smooth L1损失衍生而来,其通过设置一个拐点将正常值从离群值中分离出来,并将离群值产生的大梯度以最大值1.0进行截取,如图5a中虚线所示。平衡L1损失的核心思想是促进关键的回归梯度,即来自正确值(准确样本)的梯度,以重新平衡所涉及的样本和任务,从而实现更平衡的训练,包括分类、整体定位和精确定位。定位损失 L l o c L_{loc} Lloc用平衡L1损失定义为:
L l o c = ∑ i ∈ { x , y , w , h } L b ( t i u − v i ) L_{loc}=\sum_{i\in\{x,y,w,h\}}L_b(t_i^u-v_i) Lloc=i{x,y,w,h}Lb(tiuvi)其对应的梯度公式如下:
∂ L l o c ∂ w ∝ ∂ L b ∂ t i u ∝ ∂ L b ∂ x \frac{\partial L_{loc}}{\partial w}\propto\frac{\partial L_b}{\partial t_i^u}\propto\frac{\partial L_b}{\partial x} wLloctiuLbxLb基于上述公式,我们设计一个推广的梯度公式:
∂ L b ∂ x = { α l n ( b ∣ x ∣ + 1 )   i f   ∣ x ∣ < 1 γ   o t h e r w i s e \frac{\partial L_b}{\partial x}=\left\{\begin{matrix}\alpha ln(b|x|+1)~&\mathrm{if}~|x|<1\\ \gamma~&\mathrm{otherwise} \end{matrix}\right. xLb={αln(bx+1) γ if x<1otherwise图5a显示我们的平衡L1损失在一个系数 α \alpha α的控制下增加了正常值的梯度。较小的 α \alpha α增加了正常值的梯度,但对离群点的梯度没有影响。此外,还引入了一个由 γ \gamma γ控制的整体推广放大率来调节回归误差的上界,这可以帮助目标函数更好地平衡所涉及的任务。这两个控制不同方面的系数相互改善,从而达到更平衡的训练。 b b b用于保证 L b ( x = 1 ) L_b(x=1) Lb(x=1)在下式的两个公式中取值相同。
通过对上述梯度公式进行积分,我们可以得到平衡L1损失:
L b ( x ) = { α b ( b ∣ x ∣ + 1 ) l n ( b ∣ x ∣ + 1 ) − α ∣ x ∣   i f   ∣ x ∣ < 1 γ ∣ x ∣ + C   o t h e r w i s e L_b(x)=\left\{\begin{matrix}\frac{\alpha}{b}(b|x|+1)ln(b|x|+1)-\alpha|x|~&\mathrm{if}~|x|<1\\ \gamma|x|+C~&\mathrm{otherwise} \end{matrix}\right. Lb(x)={bα(bx+1)ln(bx+1)αx γx+C if x<1otherwise其中,参数 γ \gamma γ α \alpha α b b b由下式约束:
α l n ( b + 1 ) = γ \alpha ln(b+1)=\gamma αln(b+1)=γ实验中默认参数设置为 α = 0.5 \alpha=0.5 α=0.5 γ = 1.5 \gamma=1.5 γ=1.5

4. Experiments

4.1. Dataset and Evaluation Metrics

介绍了实验用的数据集和评价指标。

4.2. Implementation Details

介绍了实现细节。

4.3. Main Results

在这里插入图片描述
在这里插入图片描述
对比实验,具体的实验结论可以参照原文。

4.4. Ablation Experiments

在这里插入图片描述
各个组件的有效性,具体的实验结论可以参照原文。
在这里插入图片描述
在这里插入图片描述
IoU平衡采样的有效性,具体的实验结论可以参照原文。
在这里插入图片描述
IoU平衡采样的消融实验,具体的实验结论可以参照原文。
在这里插入图片描述
平衡语义金字塔的消融实验,具体的实验结论可以参照原文。
在这里插入图片描述
平衡L1损失的消融实验,具体的实验结论可以参照原文。

5. Conclusion

在本文中,我们系统地回顾了检测器的训练过程,发现由于训练过程中存在的不平衡问题,模型结构的潜力没有得到充分发挥。根据观察,我们提出Libra R-CNN,通过一个整体的平衡设计来平衡不平衡。借助简单有效的组件,即Libra R-CNN通过IoU平衡采样、平衡特征金字塔和平衡L1损失,在具有挑战性的MS COCO数据集上带来了显著的改进。大量实验表明,Libra R-CNN无论对于两阶段检测器还是单阶段检测器都能很好地泛化到各种主干上。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Frankenstein@

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

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

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

打赏作者

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

抵扣说明:

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

余额充值