Side-Aware Boundary Localization for More Precise Object Detection 论文笔记

前言

目前的目标检测器依赖bbox回归来对目标进行定位,它通过预测几个偏移值来确定目标的位置。如果anchor与目标之间存在很大的位移,那么精确定位就变得非常困难。从而限制了整体的检测性能。

本文提出了一种新方法用于目标的精确定位,作者观察到当为目标标注bbox时,使box的每条边与目标边界对齐比移动整个box更加的简便。由此,本文提出侧边感知边界定位(Side-Aware Boundary Localization,SABL),对bbox的每条边根据其周围的上下文分别进行定位。
Side-Aware Boundary Localization for More Precise Object Detection 论文笔记
如上图所示,根据bucketing机制来进行精确目标定位,对于bbox的每条边,将目标空间划分为多个bucket,然后采用以下两步来确定每条边的位置:

  1. 首先找到那个正确的bucket,使用其中心线作为粗略估计来确定bbox的边所在的位置;
  2. 然后通过进一步预测offset来修正边的位置。

使用这种方法,即使anchor与目标之间存在很大位移,也依然能够实现精确定位。

此外,为了在NMS中保留这些精确定位的bbox,本文还基于bucketing置信度对分类分数进行调整,使得性能得到进一步的提升。


方法实现

Side-Aware Boundary Localization for More Precise Object Detection 论文笔记
如上图所示,SABL的流程大致可分为四个阶段:

  1. 首先通过side-aware特征提取模块,对RoI feature进行聚合之后得到side-aware特征;
  2. 然后通过bucketing边界定位模块,使用bucketing机制得到四条边的位置,每条边先通过bucket进行粗略估计,再通过修正得到精确位置;
  3. 使用bucket置信度对分类分数进行调整;
  4. 使用一个可选择的边界修正模块来进一步提升定位精度。

接下来分别对四部分进行说明。

1. side-aware特征提取(SAFE)

Side-Aware Boundary Localization for More Precise Object Detection 论文笔记
side-aware特征提取的方法如下:

  1. 首先用RoIAlign得到每个proposal的RoI feature,然后用两个3×33\times 3的卷积层将其转换为特征图FF,然后接下来采用了self-attention机制。具体来说就是,在FF上使用1×11 \times 1的卷积得到两个不同的attention map MxM_xMyM_y,然后使用softmax函数分别沿Y/X方向进行正则化,再乘以原始FF中的特征分别得到X/Y方向的特征图;

  2. 然后将上一步得到的特征图分别沿Y/X方向相加,再分别经过1×31\times 33×13\times 1的卷积得到特征图FxF_xFyF_yFxF_xFyF_y都是1D特征图,大小分别为1×k1 \times kk×1k \times 1
    Side-Aware Boundary Localization for More Precise Object Detection 论文笔记

  3. 然后对FxF_xFyF_y通过解卷积进行2倍的上采样,得到1×2k1 \times 2k2k×12k \times 1的特征,分别表示水平和竖直方向;

  4. 最后通过分割得到side-aware特征Fleft,Fright,FtopF_{left},F_{right},F_{top}FdownF_{down}

2. bucketing边界定位

Side-Aware Boundary Localization for More Precise Object Detection 论文笔记

bucket机制

对于给定的proposal(Bleft,Bright,Btop,BdownB_{left},B_{right},B_{top},B_{down}),首先使用σ(σ>1)\sigma(\sigma>1)放大候选框,以覆盖整个目标。然后在X/Y方向将候选框划分为2k2k个bucket,每个方向对应kk个bucket,那么X/Y方向上bucket的宽度分别为lx=(σBrightσBleft)/2kl_x=(\sigma B_{right}-\sigma B_{left})/2kly=(σBdownσBtop)/2kl_y=(\sigma B_{down}-\sigma B_{top})/2k,接下来的定位过程可分为两个阶段:

  1. 在粗定位阶段,直接基于side-aware特征,使用二分类器来预测目标的边界是否在当前bucket中,或距离最近;
  2. 在细定位阶段,用回归器预测被选中的bucket的中心线到gt边界的offset。

细定位阶段的目标

Side-Aware Boundary Localization for More Precise Object Detection 论文笔记
通过粗定位可以得到距离gt bbox边界最近的bucket,如上图所示,如果一个bucket的中心线距离gt边界最近,那么它就被标记为1(positive bucket),而其它的bucket都被标记为0(negative bucket)。但是,注意到距离gt边界第二近的bucket很难与positive bucket区分开来,因此这部分bucket被记为ignored。 在细定位的回归分支中,通常忽略掉negative bucket。为了增强细定位回归分支的鲁棒性,使用positive和ignored bucket来训练回归器。 细定位的优化目标是bucket中心线与对应的gt边界之间的偏移。

3. 使用bucketing置信度进行重打分

在bucket机制的粗定位中,可以得到一个bucket置信度,它表示预测的位置的可靠程度。为了能够在NMS中保留定位更准确的bbox,SABL首先对四条边的bucket置信度取平均值,然后乘以分类分数,实现重打分(rescore),最后在NMS中用这个分数对bbox进行排序。重打分的意义在于,保留了那些既具有较高分类分数,又具有较高定位精度的bbox。

4. 边界修正模块(FAR)

Side-Aware Boundary Localization for More Precise Object Detection 论文笔记
直接多次级联定位head虽然能够提升性能,但也引入了较大的计算开销。于是考虑重复利用SAFE提取出的side-aware特征来减少计算开销。具体来说就是,对于每条边的位置预测,可以通过对相对应的side-aware特征进行线性插值,得到与预测的位置对齐的特征。接着回归器就能对这些位置对齐的特征进行处理,以得到更准确的边界预测。此外,还采用二分类器以进一步抑制位置精度较低的bbox的NMS得分。

在bucketing边界定位模块中,如果一个proposal与gt的IoU大于阈值0.5,那么这个proposal就是正样本。在通过bucketing边界定位模块确定proposal的边界后,FAR在这些边界上训练了两个额外的分支:回归和二分类:

  • 对于每条边,如果它和相对应的gt之间的偏移小于bucket的宽度lxl_xlyl_y,则为正样本,否则为负样本。回归分支的目标就是优化正样本与gt之间的偏移值,这个偏移值还要在对应方向上经过lxl_xlyl_y进行归一化;
  • 二分类器就是之前说的,抑制位置精度较低的bbox的NMS得分。

将SABL应用到single-stage检测器

Side-Aware Boundary Localization for More Precise Object Detection 论文笔记
前面的都是基于two-stage检测器,这里说一下single-stage检测器。由于single-stage检测器中没有RoI feature,因此需要得到每个位置上的特征向量,然后在这些特征向量上进行bucket粗定位和细定位,其它地方与先前的步骤相同。


结论

本文分别对bbox的四条边进行定位,取代了之前一整个bbox的回归。主要思想是提取出每条边的side-aware特征,然后基于这些特征利用bucket机制来进行精确定位。此外,还利用bucket置信度与分类置信度的联动进一步提升检测性能。