Feature Selective Anchor-Free Module for Single-Shot Object Detection

一、介绍

这是一篇CVPR2019已经接收的论文,作者提出了特征选择的anchor-free模块(feature selective anchor-free module, FSAF)。它能够插入到具有特征金字塔结构的单阶段目标检测器中。FSAF模块解决了传统基于anchor检测的两个局限:1)基于anchor检测采用启发式的特征选择(即根据bbx大小选择特征层)的局限 2)重复的anchor采样。FSAF基本的概念是应用到多特征层次的anchor-free的分支的训练当中的在线特征选择。具体地,每个特征金字塔层都引出一个anchor-free分支,使得bbx能够在任意特征层通过anchor-free的方式进行编码和解码。在训练阶段,我们动态的将每个实例分配到最合适的金字塔特征层中。在推理阶段,FSAF和基于anchor的分支一起并行工作,平行的输出预测的结果。我们用简单的anchor-free分支和在线特征选择策略实现了这样的想法。在COCO数据集的实验结果显示我们的FSAF模块比基于anchor的竞争对手更好、更快。当和基于anchor的分支结合在一起工作,FSAF模块在多种实验设定下以很大的比例鲁棒地提升RetinaNet这一baseline的性能,同时增加了很少的推理时间开销。我们在COCO数据集上最好的结果达到了新的state-of-the-art的结果44.6% mAP,比现有所有单阶段检测器在COCO上的表现都要好。

二、作者的方法

2.1 网络结构

即是在RetinaNet的基础上加上了FSAF模块。网络包含一个backbone(产生特征金字塔)和两个task-specific的子网络(分别用于分类和边框回归)。特征金字塔由backbone网络的P3到P7构成(P_l,l为金字塔层数,P_l层的大小是输入图片大小的1/2^l),不同层用来检测不同大小的目标。

基于anchor的分支方面:分类的子网络分别预测A个anchor属于K类的概率,因此输出大小为WxHxKA(和yolo 7x7很相似)。边框回归的子网络回归A个不知类别边界框与最近的实例的offset,因此输出的大小为WxHx4。

FSAF模块:在RetinaNet的顶部,FSAF模块仅在每个金字塔特征层引入两个额外的卷积层,如上图虚线框起来的特征图所示。这两个卷积层以anchor-free的方式分别负责分类和边框回归。Conv 3x3, kernels=K + Sigmoid输出WxHxK,预测每个空间位置属于第k类的概率。Conv 3x3, kernels=4 + Relu输出WxHx4,预测边界框的偏移。

通过这样的方式,基于anchor的分支和anchor free的分支以multi-task的style工作在一起,共享特征金字塔的权重。

2.2 GT和损失函数

2.2.1 分类输出

将bbx的标签投影到各个特征金字塔层得到)。然后将中心点不变,wp和hp变为原来的0.2得到:。将中心点不变,wp和hp变为原来的0.5得到:

分类输出:分类输出的GT是K个map,每个map对应一类。实例通过三种方式影响第k个map:1)effective box ble表示实例存在,用1填充这些位置 2)ignoring box减去effective box的区域不计算loss 3)如果存在相邻金字塔特征层的ignoring boxes的话,也是ignoring regions。

如果两个实例的effective boxes在一个金字塔特征层出现重叠,那么小的实例优先级更高,其余的gt map用0代替,表示不存在物体。我们使用Focal loss,alpha=0.25, gamma=2.0。总的分类损失是所有non-ignoring regions的focal loss的和,然后除以所有effective box regions包含的像素数。

2.2.2 边框回归输出

边框回归输出是不知类别的4个offset map。实例仅影响offset maps中的ble区域。在训练阶段,每个effective region里的第(i,j)个像素点(相对于整张特征图)预测 一个和 blp顶部、左边、底部、右边的偏差,然后除以S=4进行encode,计算loss时进行decode,然后使用IoU loss和blp计算损失;
在推理阶段,使用(i,j)和4个通道的输出反推回bbx,然后将分类分支K类最大的输出作为所属的类别和置信度。

2.3 在线特征选择

FSAF模块根据实例内容来选择最好的金字塔特征层Pl,而不是基于anchor方法中根据bbx大小的方式。

IoU loss:

Focal loss:

实例I第l个金字塔特征层的分类和回归损失如下式:

根据(2)式选择实例I的金字塔特征层,即使损失最小的特征层。解释:选择的特征层越适合当前的实例,预测的置信度越高,损失就越小。

2.3.2 作为对比的heuristic feature selection

224是ImageNet训练的输入图片大小。l0是WxH=224^2的层。在本文中l0=5,因为ResNet在第5个卷积组后做最后的分类。

3.3 联合推理和训练

保持RetinaNet不变,将FSAF模块插入进去,和anchor-based分支一起工作。

推理:因为FSAF模块仅仅增加了很少的卷积层,因此推理和原来一样简单,仅仅需要一次前向。对于anchor-free分支,先用0.05的置信度阈值来去除一些bbx,再对每个特征层至多选择置信度最高的1k个bbx。anchor free和acchor based两种方法产生的候选框结合在一起,然后进行nms,得到最后的检测结果。

初始化:backbone在ImageNet1k上预训练,按照[22]初始化RetinaNet,对于FSAF模块,分类的分支偏置初始化为,pi=0.01(保证初始时经过卷积、sigmoid后输出为0.01),权重初始化为方差为0.01的高斯分布。边框回归的分支偏置初始化为0.1,权重初始化为方差为0.01的高斯分布。这样的初始化帮助网络在初始学习阶段不产生大的损失,更加稳定。

优化:(ab:anchor based af:anchor free)lambda=0.5,实际上实验结果对lambda不敏感。使用SGD,8个GPU,每个GPU上2张图片,总共训练90k个iteration,最初学习律0.01,60k时除以10,80k时再除以10。使用horizontal flip进行数据增强。

三、实施细节

在COCO数据集上训练,训练数据为trainval35k,包含80k的训练数据集,和40k val中的35k子集,其余5k用于ablation study的测试使用。当和其他soft对比时,使用测试服务器上的test-dev进行测试。

四、实验结果

第一行和第二行相比,可以看出仅使用anchor-free分支能取得decent result。当anchor-free和anchor-based方法结合起来,能够提升原有anchor-based方法的性能。

第二行和第三行相比,可以看出online feature selection比heuristic feature selection更好。一些关于特征选择层的可视化结果如图8所示。

上表说明,FSAF能够在不同的backbone下稳健地提升RetinaNet的性能。

(注意和sota对比使训练方法与ablation稍微有点不同,分为single-scale和multi-scale,具体参见文章4.2)

使用ResNet101,我们的方法(属于单阶段检测器)AP为44.6%,优于现有的单阶段检测器和双阶段检测器,尤其是以很大的优势优于现有单阶段检测器。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值