《FSAF:Feature Selective Anchor-Free Module for Single-Shot Object Detection》论文笔记

参考代码地址:Feature-Selective-Anchor-Free-Module-for-Single-Shot-Object-Detection

1. 概述

导读:这篇文章对于一阶段(文中baseline为RetinaNet)的检测模型回归提供了一个新的特征选择机制:anchor-free的特征选择机制(feature selective anchor-free,FSAF)。它解除了原有anchor-based中使用IoU采样与一些特殊规则制定的特征选方案的限制,使用在不同的特征层上使用anchor-free的检测分支,让检测的目标去动态划分寻找所需要的特征(按照最小损失准则),它与原有的anchor-based的检测分支相并行,并且可以很方便地嵌入到现有的模型中。实际上也会证明文章的方法有效,在COCO数据集上获得了44.6的mAP。

在基于anchor的一阶段检测模型中,默认使用最佳anchor box大小的形式安排不同的回归目标到不同的特征层上进行回归,这种机制的优化结构见下图所示:
《FSAF:Feature Selective Anchor-Free Module for Single-Shot Object Detection》论文笔记
上面提到的检测方法设计有如下的一些问题:

  • 1)特殊规则制定的特征选择机制:人为地通过制定一些规则将anchor(比如按照box的size)划分到特征金字塔的不同层次上,但是这样的划分机制主要是通过人为经验来的,因而并不能说是最优的方案;
  • 2)基于IoU的anchor采样:训练的时候检测的目标会被分配给与其IoU最为适配的anchor上;

对于上面的两点问题文章是使用FSAF模块进行解决,它的思想就是让每个检测的目标自由选择最适合其回归的检测分支,而并非使用原有anchor-based方法的限制,它的设计思想可以用下图进行描述:
《FSAF:Feature Selective Anchor-Free Module for Single-Shot Object Detection》论文笔记
在上图中,每个特征层上使用一个anchor-free的检测分支单独与回归检测边界与分类置信度,而且检测目标可以按照其内部信息(based on the instance content)而不是大小选择这些检测分支,从中选择最好的进行回归。基于此的改进效果还是很明显的,见下图:
《FSAF:Feature Selective Anchor-Free Module for Single-Shot Object Detection》论文笔记

2. 方法设计

2.1 网络结构

这篇文章的网络结构见下图4所示:
《FSAF:Feature Selective Anchor-Free Module for Single-Shot Object Detection》论文笔记
其中在原有anchor-based检测分支的基础上增加了一个anchor-free的检测分支(预测对应的中心到边界框的4个距离),下面的内容主要分为:anchor-free的回归机制与基于instance content的特征选择机制

2.2 anchor-free分支的回归表示

对于需要回归的检测框目标表示为b=[x,y,w,h]b=[x,y,w,h],在特征金字塔层级PlP_l上经过映射之后的目标框表示为bpl=[xpl,ypl,wpl,hpl,]b_p^l=[x_p^l,y_p^l,w_p^l,h_p^l,],将检测目标映射到对应的特征层级自然要对应不同的tride才行。除此之外文章还定义了不同的区域用于回归:有效区域belb_e^l与忽略区域bilb_i^l,对于每个目标区域是定义了上面这两个区域的,其定义的规则为:xml=xpl,yml=ypl,wml=ϵmwpl,hml=ϵmhplx_m^l=x_p^l,y_m^l=y_p^l,w_m^l=\epsilon_m w_p^l,h_m^l=\epsilon_m h_p^l
其中m=[i or e]m=[i\ or \ e],代表有效区域与忽略区域,对于缩放系数定义为ϵi=0.5,ϵe=0.2\epsilon_i=0.5, \epsilon_e=0.2。对应的边界框与分类结果见下图所示:《FSAF:Feature Selective Anchor-Free Module for Single-Shot Object Detection》论文笔记
分类输出:
分类的输出是包含KK个channel的输出,代表的是对应的类别。承上文所说的有效区域的定义(0.2的GT标注区域)被表示为白色的区域,而介于上文中提到的0.2到0.5的区域被认为是忽略的,就是在梯度反传的不发生反传。特别的在重贴时候的处理:忽略区域相交叠的结果也是被忽略,有效区域的重合按照目标更小的区域优先原则。这里分类的损失使用的是Focal Loss(对应的两个超参数设置为RetinaNet中的最佳经验值),这里计算loss只会计算非忽略区域的loss,并将它们加起来再与有效区域中像素的个数做归一化操作。此外对于在上面两个区域之外的区域就是被描述为黑色了(具体参考图5所示)。

边界框回归输出:
这里边界框的回归形式是回归中心点距离检测框4个边界的距离,只有上面文章定义的有效区域产生的检测结果才会被提取出来,注意的是这里对每个预测的分量使用了S=4S=4进行归一化。这里使用的检测框损失为IoU Loss(这个损失的缺点已经有很多介绍了,可以换成新的GIoU、DIoU、CIoU等),之后会将得到的损失按照有效区域中进行取平均

整体的损失函数为:
L=Lab+λ(Lclsaf+Lregaf)L=L^{ab}+\lambda(L_{cls}^{af}+L_{reg}^{af})
其中λ=0.5\lambda=0.5,前半部分为anchor-based分支的损失,后半部分为anchor-free分支的损失。

2.3 在线基于instance content的特征选择机制

上文讲了anchor-free分支中分类与定位损失的定义,那么在对应的特征层ll上anchor-free分支产生的损失可以描述为:
《FSAF:Feature Selective Anchor-Free Module for Single-Shot Object Detection》论文笔记
那么得到这个损失之后,怎么选择目标最适应的特征呢?文章是按照最小loss进行选择的,见下图所示:
《FSAF:Feature Selective Anchor-Free Module for Single-Shot Object Detection》论文笔记
其数学表达式为:
l=arg minlLFLI(l)+LIoUI(l)l^*=\argmin_l L_{FL}^I(l)+L_{IoU}^I(l)
则文章提出的特征选择方法与原始FPN中的特征选择方法进行对比,其结果见下表所示:
《FSAF:Feature Selective Anchor-Free Module for Single-Shot Object Detection》论文笔记

3. 实验结果

相比baseline RetinaNet性能对比:
《FSAF:Feature Selective Anchor-Free Module for Single-Shot Object Detection》论文笔记
与其它检测方法的性能对比:
《FSAF:Feature Selective Anchor-Free Module for Single-Shot Object Detection》论文笔记