目标检测-FSAF

CVPR2019 FSAF

论文:Feature Selective Anchor-Free Module for Single-Shot Object Detection

代码:https://github.com/zccstig/mmdetection/tree/fsaf

https://github.com/xuannianz/FSAF

1. 动机

在FPN检测算法中,目标实例根据公式$k=\lfloor k_0+\log_2(\sqrt{wh}/224) \rfloor$分配到对应的level中。但是用于训练的每个实例分配到的特征级别可能不是最佳的。

image-20200501104815796

本文的动机是让每个实例自由选择最佳的特征级别来优化网络。在训练过程中,根据实例内容(而不只是实例框的大小)为每个实例动态选择最合适的特征级别。

2. 本文方法

2.1 网络结构

带有FSAF模块的RetinaNet网络结构如下,特征金字塔从骨干网络(未画出)的P3~P7构建(图中仅画出三个示意)。FSAF模块仅在RetinaNet的基础上,在每个层级引入两个附加的卷积层作为anchor-free分支,如图虚线特征图所示。anchor-free分支和anchor-based分支共同工作。具体来说,anchor-free中的分类头部由K个$3\times 3$的卷积后经过sigmoid函数得到,回归分支由4个$3\times 3$的卷积后经过ReLU函数得到。

image-20200501110603445

2.2 Ground-truth和Loss设计

设物体的框在第 $P_l$个层级为 $b_p^l$,Ground-truth的定义如下图所示,白色的外框为有效框 $b_e^l$,灰色的外框为忽视框 $b_il$,这里设置有效框的长和宽为$b_pl$的0.2倍,忽视框的长和宽为$b_p^l$的0.5倍。有效框为正样本,如果两个实例的有效框在同一层重叠,则分给面积较小的类,灰色忽视区域不会被计入loss中,黑色区域为负样本 。分类损失为focal loss,并使用有效框的像素加权。

回归损失使用IoU loss,只有有效框会计算回归损失,回归目标设为有效框中的每个点到 $b_p^l$ 上、左、下、右的距离除以一个归一化参数$S=4$。

整个网络的损失是anchor-free和anchor-based的加权损失和,这里anchor-based权重为1,anchor-free的权重为0.5。

image-20200501113031420

2.3 特征级别选择

对于实例$I$,定义它的分类损失和回归损失为所有有效框内点的损失取平均。

特征级别选择过程如下图所示,每个实例会通过所有级别的anchor-free分支并分别计算loss,选取loss最小的层级作为这一实例的监督信号。

image-20200501121032113

2.4 推理

从各个层级的所有点中选取分类得分大于0.05的最多1000个点,与anchor-based的结果一同进行NMS。

3. 实验结果

消融实验的结果:

image-20200501132040232

消融实验结果表明,在线特征选择是有效的,它可以使检测精度提升1.1~1.2%。另外,同时使用anchor-based分支和anchor-free分支可以得到更高的评分,这暗示了anchor-based分支并没有发挥出backbone网络的全部能力。

可视化实例分到的层级:

image-20200501132207826

框左边的数字为分到的层级,绿色框表示在线学习的层级与启发式规定的层级一致,红框表示不一致。

请我喝杯咖啡吧~

支付宝
微信