Side-Aware Boundary Localization for More Precise Object Detection 论文笔记
前言
目前的目标检测器依赖bbox回归来对目标进行定位,它通过预测几个偏移值来确定目标的位置。如果anchor与目标之间存在很大的位移,那么精确定位就变得非常困难。从而限制了整体的检测性能。
本文提出了一种新方法用于目标的精确定位,作者观察到当为目标标注bbox时,使box的每条边与目标边界对齐比移动整个box更加的简便。由此,本文提出侧边感知边界定位(Side-Aware Boundary Localization,SABL),对bbox的每条边根据其周围的上下文分别进行定位。
如上图所示,根据bucketing机制来进行精确目标定位,对于bbox的每条边,将目标空间划分为多个bucket,然后采用以下两步来确定每条边的位置:
- 首先找到那个正确的bucket,使用其中心线作为粗略估计来确定bbox的边所在的位置;
- 然后通过进一步预测offset来修正边的位置。
使用这种方法,即使anchor与目标之间存在很大位移,也依然能够实现精确定位。
此外,为了在NMS中保留这些精确定位的bbox,本文还基于bucketing置信度对分类分数进行调整,使得性能得到进一步的提升。
方法实现
如上图所示,SABL的流程大致可分为四个阶段:
- 首先通过side-aware特征提取模块,对RoI feature进行聚合之后得到side-aware特征;
- 然后通过bucketing边界定位模块,使用bucketing机制得到四条边的位置,每条边先通过bucket进行粗略估计,再通过修正得到精确位置;
- 使用bucket置信度对分类分数进行调整;
- 使用一个可选择的边界修正模块来进一步提升定位精度。
接下来分别对四部分进行说明。
1. side-aware特征提取(SAFE)
side-aware特征提取的方法如下:
-
首先用RoIAlign得到每个proposal的RoI feature,然后用两个的卷积层将其转换为特征图,然后接下来采用了self-attention机制。具体来说就是,在上使用的卷积得到两个不同的attention map 和,然后使用softmax函数分别沿Y/X方向进行正则化,再乘以原始中的特征分别得到X/Y方向的特征图;
-
然后将上一步得到的特征图分别沿Y/X方向相加,再分别经过和的卷积得到特征图和,和都是1D特征图,大小分别为和,
-
然后对和通过解卷积进行2倍的上采样,得到和的特征,分别表示水平和竖直方向;
-
最后通过分割得到side-aware特征和。
2. bucketing边界定位
bucket机制
对于给定的proposal(),首先使用放大候选框,以覆盖整个目标。然后在X/Y方向将候选框划分为个bucket,每个方向对应个bucket,那么X/Y方向上bucket的宽度分别为和,接下来的定位过程可分为两个阶段:
- 在粗定位阶段,直接基于side-aware特征,使用二分类器来预测目标的边界是否在当前bucket中,或距离最近;
- 在细定位阶段,用回归器预测被选中的bucket的中心线到gt边界的offset。
细定位阶段的目标
通过粗定位可以得到距离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)
直接多次级联定位head虽然能够提升性能,但也引入了较大的计算开销。于是考虑重复利用SAFE提取出的side-aware特征来减少计算开销。具体来说就是,对于每条边的位置预测,可以通过对相对应的side-aware特征进行线性插值,得到与预测的位置对齐的特征。接着回归器就能对这些位置对齐的特征进行处理,以得到更准确的边界预测。此外,还采用二分类器以进一步抑制位置精度较低的bbox的NMS得分。
在bucketing边界定位模块中,如果一个proposal与gt的IoU大于阈值0.5,那么这个proposal就是正样本。在通过bucketing边界定位模块确定proposal的边界后,FAR在这些边界上训练了两个额外的分支:回归和二分类:
- 对于每条边,如果它和相对应的gt之间的偏移小于bucket的宽度和,则为正样本,否则为负样本。回归分支的目标就是优化正样本与gt之间的偏移值,这个偏移值还要在对应方向上经过或进行归一化;
- 二分类器就是之前说的,抑制位置精度较低的bbox的NMS得分。
将SABL应用到single-stage检测器
前面的都是基于two-stage检测器,这里说一下single-stage检测器。由于single-stage检测器中没有RoI feature,因此需要得到每个位置上的特征向量,然后在这些特征向量上进行bucket粗定位和细定位,其它地方与先前的步骤相同。
结论
本文分别对bbox的四条边进行定位,取代了之前一整个bbox的回归。主要思想是提取出每条边的side-aware特征,然后基于这些特征利用bucket机制来进行精确定位。此外,还利用bucket置信度与分类置信度的联动进一步提升检测性能。