《Libra R-CNN: Towards Balanced Learning for Object Detection》笔记
Introduction
这篇论文针对目标检测训练过程中的不平衡问题,提出了一种平衡化学习方法。关于目标检测中的不平衡问题,这篇博客有更详细的介绍。
这篇论文讨论的不平衡问题包括三种:
- 样本级别的不平衡:对于二阶段的目标检测算法,样本是通过随机采样得到的,这会导致大多数样本都是容易样本(容易学习),缺乏难样本。
- 特征级别的不平衡:由于低层的特征层主要包含内容描述信息,高层特征层主要包含语义信息,不同特征层的特征信息不平衡。
- 目标级别的不平衡:目标检测是多任务学习任务,有识别和定位两个目标,对应两种目标函数,这两种目标函数的损失值是不平衡的。
论文针对上述的3中不平衡问题,分别提出了3中解决方法:IoU-balanced sampling, balanced feature pyramid 和 balanced L1 loss。三种方法结合在一起,组成了Libra R-CNN。
IoU-balanced sampling
IoU平衡采样提出来的思路是这样的。首先,论文统计了一下随机采样和Hard Negative采样得到的样本与gt的IoU,并制作了相应的统计直方图,如下
作者发现,超过60%的难负样本的IoU大于0.05,而随机采样的样本中只有30%的样本的IoU大于0.05。这种极端的样本不平衡使得大量的难样本替换成了容易样本。
为了使得采样样本的IoU分布接近难负样本采样样本的IoU分布,作者提出了IoU平衡采样。假设我们需要从M个候选样本中选择N个负样本,那么每个样本随机被选择的概率是。为了提高难负样本被选择的概率,作者根据IoU平均地划分采样区间成K个bin。将N个所需的负样本平均分配到到每个bin中。我们再从这些bin中统一选择样本。这就是IoU平衡采样。现在,每个样本的采样概率是
前一项表示bin被选择的概率,后一项表示再bin中被选择的概率,表示第k个bin的候选样本数量。因为难负样本被平均分配到每个bin,难负样本在bin中被选择的概率变大,而设置好K值,难负样本被选择的概率变大了。通过IoU平衡采样得到的样本的IoU分布如上图所示,可以看到和难负样本采样的IoU分布近似了。论文中K默认设置为3。
Balanced Feature Pyramid
作者的平衡特征金字塔的每一层的特征信息来自不同级别的特征层,不同级别的特征层的贡献度都一样,平衡特征金字塔的构造方式如下图所示
如上图所示,作者先把所有的特征层聚合起来,低级别的层下采样,高级别的层上采样,大小变成C4的大小,然后所有层的特征进行平均,得到Integrate,再由Integrate反向操作生成不同级别的特征层。也可以对Integrate进行refine,加些卷积层,或者加入高斯non-local模块。
通过这种方法生成的Balanced Feature Pyramid的每个特征层都包含相等的低级和高级特征信息,达到特征平衡。
Balanced L1 Loss
目标检测使用的smooth L1 loss有些缺点,首先它还是很容易受到outlier的影响,作者发现,相比于outliers,inliers平均每样本只贡献30%的梯度。作者把smooth L1 loss大于等于1的样本称为outlier,其他是inlier。作者希望在回归损失中把inliers和outliers分开,截断outliers的大梯度为1,同时增大inliner的梯度,使得inliers和outliers的贡献的梯度平衡。样本的梯度贡献如下图a所示
regression error指样本的smooth L1损失,纵坐标表示Balanced L1 Loss的梯度和损失。
Balanced L1 Loss的公式如下
其中表示每个样本的平衡L1损失。为了达到作者想要的梯度效果,作者设置了单个样本的损失梯度:
其中控制着梯度的上限,论文默认设置为1.5。控制着inliers的梯度,越小,inliers梯度越大,如上图a所示。论文默认设置。
由上如的梯度公式可以推导出单个样本的平衡L1损失:
参数的约束是