《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,并制作了相应的统计直方图,如下
IoU distribution
作者发现,超过60%的难负样本的IoU大于0.05,而随机采样的样本中只有30%的样本的IoU大于0.05。这种极端的样本不平衡使得大量的难样本替换成了容易样本。

为了使得采样样本的IoU分布接近难负样本采样样本的IoU分布,作者提出了IoU平衡采样。假设我们需要从M个候选样本中选择N个负样本,那么每个样本随机被选择的概率是 p = N M p = \frac{N}{M} p=MN。为了提高难负样本被选择的概率,作者根据IoU平均地划分采样区间成K个bin。将N个所需的负样本平均分配到到每个bin中。我们再从这些bin中统一选择样本。这就是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)
前一项表示bin被选择的概率,后一项表示再bin中被选择的概率, M k M_k Mk表示第k个bin的候选样本数量。因为难负样本被平均分配到每个bin,难负样本在bin中被选择的概率变大,而设置好K值,难负样本被选择的概率变大了。通过IoU平衡采样得到的样本的IoU分布如上图所示,可以看到和难负样本采样的IoU分布近似了。论文中K默认设置为3。

Balanced Feature Pyramid

作者的平衡特征金字塔的每一层的特征信息来自不同级别的特征层,不同级别的特征层的贡献度都一样,平衡特征金字塔的构造方式如下图所示
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所示
balanced L1 loss的梯度和loss曲线图
regression error指样本的smooth L1损失,纵坐标表示Balanced L1 Loss的梯度和损失。

Balanced L1 Loss的公式如下
L loc = ∑ L b ( t i u − v i ) L_\text{loc} = \sum L_b(t_i^u - v_i) Lloc=Lb(tiuvi)
其中 L b L_b Lb表示每个样本的平衡L1损失。为了达到作者想要的梯度效果,作者设置了单个样本的损失梯度:
∂ L b ∂ x = { α ln ⁡ ( b ∣ x ∣ + 1 )  if  ∣ x ∣ < 1 γ otherwise \frac{\partial L_b}{\partial x} = \begin{cases} \alpha \ln (b |x|+1) & \text{ if } |x| \lt 1 \\ \gamma & \text{otherwise} \end{cases} xLb={αln(bx+1)γ if x<1otherwise
其中 γ \gamma γ控制着梯度的上限,论文默认设置为1.5。 α \alpha α控制着inliers的梯度, α \alpha α越小,inliers梯度越大,如上图a所示。论文默认设置 α = 0.5 \alpha=0.5 α=0.5

由上如的梯度公式可以推导出单个样本的平衡L1损失:
L b ( x ) = { α b ( b ∣ x ∣ + 1 ) ln ⁡ ( b ∣ x ∣ + 1 ) − α ∣ x ∣  if  ∣ x ∣ < 1 γ ∣ x ∣ + C otherwise L_b(x) = \begin{cases} \frac{\alpha}{b} (b |x|+1) \ln (b |x|+1) - \alpha |x| & \text{ if } |x| \lt 1 \\ \gamma |x| + C & \text{otherwise} \end{cases} Lb(x)={bα(bx+1)ln(bx+1)αxγx+C if x<1otherwise
参数的约束是
α ln ⁡ ( b + 1 ) = γ \alpha \ln (b + 1) = \gamma αln(b+1)=γ

Experiments

experiments

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值