&论文概述
获取地址:https://arxiv.org/abs/1912.04260
代码地址:https://github.com/open-mmlab/mmdetection
&总结与个人观点
本文提出Side-Aware Boundary Localization(SABL)以取代传统的bbox回归。提取关注于边界内容的边缘感知特征用来定位。提出使用该特征的轻量级two-step bucketing方法以精确定位目标。同时引入重打分(rescore)机制,利用bucket的置信度来保留高质量的bbox。在各种目标检测流程中,SABL均展现了一致且重大的性能提升。
本文通过对回归方法的分析,观察到更简单精确回归到边界框的方法,设计的整体框架很精巧,思路很清晰,而且每个方法的提出都很明确,值得一观。
&贡献
- 使用Side-Aware Boundary Localization(SABL)取代之前的bbox regression分支,对bbox的每条边分别定位,提高了定位的精度;
- 使用Bucketing scheme进行细粒度目标定位以及对分类进行rescore,降低高精度bbox的抑制率;
- 在COCO数据集中,在Faster R-CNN、RetinaNet以及Cascade R-CNN的基础上替换回归分支,最终分别提升了3.0、1.6以及0.9个点。
&拟解决的问题
问题:精确的定位需要对bbox的每条边都精准地放置,然而,主流方法只关注于预测中心以及size,并不是完成这个任务最高效的方法,尤其是在anchor与目标间存在多种displacements时。
分析:bbox回归用于将附近的候选区域与目标对齐。当前的回归方法大多是使用对中心偏移以及尺度因子的预测,虽然高效但却限制了整体检测的性能。基于观察:当标注目标的bbox时,使box的每条边与目标边界对齐相较于整体移动box以及修正size更简便。
因此,提出使用对bbox的每条边基于其周围的上下文信息分别定位的SABL结构。
&框架及主要方法
1、 Main Structure
暂且不看每个部分的具体实现,上图展示了当前模型的整体实现流程。可见,所有操作是在特征提取完成后进行的,对于提取出的RoI特征先计算分类得分,同时通过边缘感知特征提取方法提取出具有边缘感知的特征,然后使用Bucketing边缘定位做初步粗略回归,根据每个Bucketing的置信度作平均来对分类得分再次计算得到NMS score,然后通过特征对齐精炼预测边界偏移,同样将其整合到当前的NMS score中得到最终的得分。
2、 Side-Aware Feature Extraction
图中给出的边缘感知的特征提取方法相当明确:
1)将RoI特征经过2个3×3的卷积,然后分别用不同的1×1卷积得到Mx/My,分别表示X方向上的特征以及Y方向上的特征的映射,然后使用softmax方法分别沿Y/X方向进行正则化,再将对应特征乘回原先的特征中分别得到X/Y方向的特征图(此处使用自注意力机制);
2)沿Y/X方向相加经过1×3/3×1卷积得到对应的1×k/k×1大小的1D特征图Fx、Fy,经过以采样因子为2进行解卷积上采样后得到1×2k/2k×1大小的特征,分别表示水平和竖直方向;
3)经过分割分别获得Fleft、Fright、Ftop、Fdown四边的特征。
3、 Boundary Localization with Bucketing
在使用Bucketing做回归的过程中使用了two-step bucketing操作:
1) 对于给与的候选框(Bleft、Bright、Btop、Bdown),先使用σ(σ>1)放大候选框以覆盖整个目标。(不过即便放大了,也不一定就能覆盖整个目标哎?)然后将候选区域分成2k个bucket,分别对应之前得到的4个边界特征的位置,在粗定位阶段,直接基于边界感知的特征使用二分类器来预测当前目标的边界是否在当前bucket中或距离最近;
2) 在精细定位阶段,使用回归器预测所选择的bucket的中心线与ground-truth边界的偏移量。
对于之前使用的粗定位,将距离边界最近的bucket标记为1,其余标记为0,为了减少训练中的二义性,在每条边上,由于距离边界第二近的bucket很难与positive的进行区分,因此将其视为ignore。然后在精确定位阶段,偏移的预测应当在positive与ignore之间。
4、 Bucketing-Guided Rescoring
在粗定位时会对每个bucket预测一个置信度,而为了在NMS阶段保留更多精确定位的bbox,使用这些置信度进行二次打分。使用4个边界的bucket的平均置信与先前的多类标签得分相乘得到NMS scores。
二次打分能够保留有着高类别置信度以及精确定位的最好的box。
5、 Feature-Aligned Refinement( FAR )
直接多次级联定位head能够有效提高性能,但也引入了较大的计算开销。本文直接复用通过SAFE提取出的边缘感知特征以减少计算开销。
对于每条边的位置预测,通过对相应的side-aware feature进行线性插值(因为预测的偏移是小数,需要通过插值来获得当前位置特征)能够获得与预测的位置对齐的特征,回归器依赖于这些位置对齐的特征能够获得更精确的边缘预测,此外,采用二分类以抑制低精度的bbox的NMS得分。
在proposals经过Boundary Localization with Bucketing定位边界后,在这些边界上FAR训练两个额外分支:回归与二分类。对于每条边,边界与响应的ground truth的偏移小于对应的bucket的长/宽时,视为正样本,否则为负样本。在每条边上回归的值视为正样本与ground-truth间的displacement。
6、 Application to Single-Stage Detector
Single-Stage Detector没有proposal的提取操作,经过FPN的特征直接进入两个分支预测,其他的地方与先前的步骤相似。
7、 Experiments
1) 对比实验:在COCO test-dev数据集上与其他方法的对比。整体来说,在对速度方面影响不是太大的情况下,使用SABL的效果均提高了1-3个点。
2) 消融实验:每个模块的消融结果,SAFE(Side-Aware Feature Extraction)、BLB(Boundary Localization with Bucketing)、LGR(Bucketing-Guided Rescoring)、FAR(Feature-Aligned Refinement)。以及使用Ignore标记的消融,在FAR上的两分支的消融。
3) 对比实验:
卷积层的数量对Side-Aware Feature Extraction的影响。2D Conv表示在F前的3×3卷积层的数量,1D Conv表示在Fx与Fy前1×3和3×1卷积层的数量。实验结果表明,如SAFE的结构图所示,使用2个2D conv以及1个1D conv的效果能够达到最佳。
将2D的RoI特征聚集到1D特征的不同方法的对比。实验表明,使用注意力掩模方法的效果优于最大池化以及平均池化。
Side-Aware Feature Extraction模块中特征大小的不同设置的比较。实验表明,k的值为7时效果已经能够达到较优的水准。
不同的定位方法的实验对比,从实验结果中可以看出,只使用Bucketing机制的效果与使用回归分支的结果相差较大,再回归分支上再加上Bucketing预测的效果略优于只使用回归的方法。右图表明使用Bucketing机制能够有效较低候选区域与ground-truth边界间displacement的均值以及多样性。
不同的参数的设置实验对比。
&思考与启发
这种自注意力的使用可以考虑加入到FPN中,每个特征中都存在上下文信息、语义信息以及空间信息。(当前在做FPN模块,之后需要重新研读)