论文阅读笔记7:Libra R-CNN:Towards Balanced Learning for Object Detection
Abstract
相比模型的结构,关注度较少的训练过程对于检测器的成功检测也是十分重要的。本文发现,检测性能主要受限于训练过程中的三个levels上的不平衡——sample level,feature level,objective level的不平衡问题。为此,提出了Libra R-CNN,用于对平衡目标检测的学习的简单有效的框架。主要包含三个创新点:
- IoU-balanced sampling 用于减少采样过程中的不平衡
- balanced feature pyramid 用于减少feature 的不平衡
- balanced L1 loss 用于减少objective level的不平衡。
它在MSCOCO上的Average Precision(AP)相比FPN Faster R-CNN以及RetinaNet分别高出了2.5和2个点。
Introduction
目标检测的训练过程成功与否主要依靠以下三个关键方面:
- 选择的区域样本是否具有代表性
- 是否充分利用了提取的视觉特征
设计的目标函数是否是最优的
然而,本文发现在典型的训练过程中上述三个方面中存在这严重的不平衡问题。这些不平衡问题会使得网络的结构无法得到完全开发进而影响整体的目标检测性能。如下图所示:Sample level imbalance
当在训练一个检测器时,困难样本是最具有价值的,因为它们更有利于提升目标检测的性能。然而,基于随机采样机制造成的结果一般是使挑选的样本趋向于easy类型,harde mining算法如OHEM可以更多的关注hard samples。然而,这些方法对噪声标签比较敏感,容易造成大量的内存及计算量的消耗。Focal Loss应用于单阶段的效果较好,但是,扩展到大部分样本为简单负样本的双阶段检测模型中,效果一般。Feature level imbalance
在backbone中深层具有更多的语义信息,而较低层为更多的内容描述等细节信息。FPN及PANet等通过侧连接来进行特征融合,因此,低层特征与高层特征可以对目标检测进行补充。用来来整合金字塔的特征表示的方法决定着目标检测的性能。本文认为,融合的信息应该平衡地包含每个分辨率的信息。但上述方法使得融合的特征更多关注于相邻的分辨率而不是其他分辨率。在信息传递过程中,每次融合操作,会使得非相邻层级的语义信息变得稀释。Objective level imbalance
检测器包含分类及定位两个任务。因此,在训练目标函数中结合两个不同的目标。如果二者不是平衡的,一个目标可能会被限制,进而导致整体不好的效果。此情形同样适用于训练过程中的样本,如果不平衡,由简单样本产生的小梯度值会淹没hard样本产生的较大的梯度值,进而限制了后续的一些强化操作。因此,针对最优收敛,本文平衡了相关的任务及样本。
为解决上述问题,提出了简单有效的Libra R-CNN框架。三点创新如下:
- IoU-balanced sampling:根据assigned ground-truth进行mine hard samples
- balanced feature pyramid:利用相同深度融合的平衡后的语义特征增强多层次的特征。
- balanced L1 loss:增强重要的梯度,进而对分类,粗定位,细定位进行再平衡。
我们总结了我们的主要贡献:
- 我们系统的重新审视了检测器的训练过程。我们的研究揭露了限制检测器性能的三个levels上的不平衡问题。
- 我们提出了Libra R-CNN,一个通过结合三个组件来重新平衡检测器的框架。
- 我们在MS COCO上测试了我们提出的框架,获得了在当前最先进的检测器(包库单阶段以及二阶段)上的显著提升。
Related Work
- Model architectures for object detection
- Balanced learning for object detection
- Sample level imbalance
- Feature level imbalance
- Objective level imbalance
Methodology
Libra R-CNN的全貌如下:
我们的目标是使用一个整体平衡的设计来减轻在检测器训练过程中存在的不平衡问题,从而尽可能利用模型结构的潜在能力。接下来会详细介绍所有组件:
IoU-balanced Sampling
首先提出了一个问题:训练样本及对应ground truth的重叠度IoU是否与样本的difficulty(这里类比于easy sample,hard sample)相关。我们进行了实验,结果如下:
从图中可以看到,随机采样超过70%的部分都在 IoU 0到0.05之间。而60%的hard negative样本都在IoU大于0.05的地方,但随机采样只提供了30%的IoU大于0.05的训练样本。由于这种极度的不平衡,许多的hard样本会被数以千计的easy样本埋没掉。
于是我们提出了IoU-balanced sampling:一个简单但高效不需要额外消耗的hard mining方法。假设我们需要从M个对应的候选样本中采样N个negative样本。在随机采样下,每一个样本被采样的概率为:
为了提升选择到hard样本的可能性,我们根据IoU的值将采样区间划分为K个格子。要求negative样本均匀分配到每个格子,然后对其进行均匀采样。得到的采样概率为:
$M_k$为对应区间上的候选采样数。在我们的实验中K默认取值为3。
通过上图我们可以发现我们的IoU-balanced sampling能够使训练样本的分布近似于hard negative样本的分布。
另外,值得注意的是这个方法也适用于hard positive样本。然而在大多数情况下,没有足够的候选样本,对正样本进行扩充,因此,本文选择了一个替代的方法来达到平衡采样的目的,即对每个ground truth采样相同数量的正样本。
Balanced Feature Pyramid
本文不同于以前通过侧连接的方法来结合多个层级特征的方法,本文通过使用相同深度的融合平衡后的语义信息来增强不同层级的特征,如下图所示,主要包含四步:rescaling,integrating,refining,strengthening
Obtaining balanced semantic features
为了融合多层次的特征,同时保留它们的语义层次。我们首先的多层次的特征$\lbrace C_2,C_3,C_4,C_5\rbrace$的尺寸通过插值或者最大池化改变为中等大小。然后,取其均值得到平衡后的语义特征。得到的特征,进行rescale然后通过反向操作增强原始每层的特征。在这个过程中每个分辨率从其他分辨率那里获得等同的信息。此过程不包含任何参数,证明了信息传递的高效性。
Refining balanced semantic features
平衡后的语义特征可以进一步增强增加其分辨性。本文发现卷积和non-local 模型的增强效果都很好,但是non-local模型更加稳健。因此,我们默认使用embeded Gaussian non-local attention。refining这一步可以进一步的丰富特征信息,进而提升结果。使用这种方法来自low-level以及high-level的特征能够同时被融合。融合后得到的特征{P2,P3,P4,P5}用于后续的目标检测中,流程和FPN相同。
Balanced L1 Losss
从Fast R-CNN开始,分类以及定位的问题在multi-task损失的指导下同时解决。
$L_{cls}$和$L_{loc}$分别对应着分类和定位的损失函数,$p,u$分别是$L_{cls}$的预测和目标,$t^u$是对应$u$类的回归结果。$v$是回归目标。$\lambda$用于在多任务学习下调整损失权重。我们把loss大于等于1.0的样本称为outliers,其他的样本称为inliers。
由于这个损失函数是两个loss的相加,如果分类做得很好地话一样会得到很高的分数,而导致忽略了回归的重要性。平衡上述损失的一个常规方法是,调整两个任务损失的权重,然而,对于没有边界的回归目标,直接增加定位损失的权重将会是模型对outliers的点更加敏感,outliers可以被看作是hard samples,这些hard samples可能会产生过大的损失,不利于训练。inliers可以看作是easy samples,相比outliners对整体的梯度贡献度较低,相比hard sample,平均每个,easy sample对梯度的贡献为hard sample的30%,即较少的outliers贡献了较多的梯度。基于上述分析,提出了balanced L1 Loss记作$L_b$。
Balanced L1 loss源自conventional smooth L1 loss。在conventional smooth L1 loss中有一个拐点来分离inliners和outliners,并且通过设置一个为1.0的最大值来截断outliners产生的大的梯度。Balanced L1 loss的关键思想是,促进影响较大的回归梯度,(像来自inliers即准确样本的梯度)。进而平衡包含的样本及任务。从而可以在分类,粗定位,及细定位中进行平衡的训练。,基于balanced L1 loss的定位损失如下:
其对应的梯度公式遵循:
基于上式,我们设计了一个梯度公式:
三个参数的作用:
- $\alpha$ 使得inliers获得更多的梯度(因为原先的easy样本贡献的梯度少)
- $\gamma$ 通过整体放大来陶正回归误差的上限,让更多的outliers参与回归,使得目标函数更好地平衡参与的任务
- $b$ 用来平很参数$\alpha$和$\gamma$,使之满足关系:$\alpha ln(b+1)=\gamma$,使得梯度在误差等于1处连续
最后得到balanced L1 loss如下: