0%

FASF

本篇文章是CVPR2019的一篇Anchor-Free的文章,是一篇很好的Anchor Free的目标检测的文章,目前基于anchor的目标检测方法,大多采用不同的level预测不同尺度的instance,而分配规则往往是人为设计的,这导致anchor的匹配策略可能不是最优的。那有没有更优的匹配方法?文章从level选取的点进行切入,利用FASF实现不同的instance在不同level的动态分配,实现了level的动态选择,并且anchor free方法取得了较好的mAP,另外作者设计了anchor free跟anchor-based相结合的方法,进一步提升模型效果,取得了可观的结果。


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

作者:Chenchen Zhu & Yihui He & Marios Savvides

论文链接:https://arxiv.org/abs/1903.00621


Back Ground

目标检测的一个挑战在于尺度的变化,目前解决问题的方法包括:特征金字塔、multi-level、anchor boxes等。特征金字塔以及anchor-based已经取得了不错的效果。但是存在一定的限制:

  1. 启发式的特征选择。
  2. 重叠的anchor的选择。

目前基于anchor的目标检测方法,大多采用不同的level预测不同尺度的instance,而分配规则往往是人为设计的,这导致anchor的匹配策略可能不是最优的。本文提出了feature selective anchor-free module来解决这个限制。并且FASF可以与anchor-based 分支协同并行工作,提高模型效果。在COCO上,可以达到44.6%的mAP

Feature Selective Anchor Free

Network Architecture

FSAF的结构展示如下图,作者的实验是以RetinaNet为基础,所以下图的主干部分代表的是RetinaNet的FPN结构,同样的从P3-P7引出subnets进行分类与预测,如下图所示,P3-P7对应的分辨率$1/2^l$

1.png

FSAF重点是下图中引出来的Anchor-Free branch,分类的分支,通过一个3x3的卷积以及sigmoid得到WxHxK的特征图,用于预测K个类别,至于回归分支,通过一个3x3的卷积以及ReLU得到WxHx4的特征图,用于预测每个实例的坐标框。

Ground Truth and Loss

首先,如何定义正负样本呢?如下图所示,Groud Truth是汽车的蓝框,正样本便是中间图中白色的部分,当然除了正样本也不全是负样本,在正负样本之间还有一部分忽略样本,论文中正样本占比为宽度的0.2,忽略部分界限占比为宽度的0.5,所以每个level在宽度比例0.2-0.5的一圈是不加入训练,另外,不同level的界限间的像素也同样不加入训练,用公式表示是:$(b^{i}_{e}-b^{l}_{e});(b_{i}^{l-1},b_{i}^{l+1})$(其实不加入训练这里,论文描述的挺复杂,其实计算后发现,就是每层的Ground Truth往外扩一圈),其余的就为负样本。并且如果两个实例在同一个level重合了,以小的那个为主。

训练的时候分类采用的是Focal loss,box回归的是边界的上下左右,这里使用的是IOU Loss

2.png

Online Feature Selection

这部分是本篇文章的精髓所在,如果自动去给不同的instance分配合适的level进行预测呢?
其实答案也很简单,就如下图所示,作者分别对不同的level的分支结果求loss,然后选择loss最小的那个作为该实例的分支。

3.png

Joint Inference and Training

这部分将介绍,如何将anchor-based与anchor-free方法结合起来,如上面图Figure 4所示。

首先,在训练的时候,保持anchor-based的分支参数不变。在inference的时候,将anchor based得到的box以及anchor free得到的box一起用非极大值一致的方法,得到最终的结果。

实验

FASF 模块的效果以及online feature selection的重要性。

下图是在RetinaNet上使用FASF模块的效果,可以看出,其实只使用FASF的效果已经要好于RetinaNet了,并且在实验中可以看出,如果不使用online feature selection 效果也不错的,但是没有使用online feature selection效果好,相差了大约10个点。

4.png

FASF选择的level到底怎么样?

实验表明,大部分的检测框还是遵循原来的设计的,前面的level检测小目标,后面的level检测大目标,但是也有特例,就是下图中红色框框住的那些就是,level发生了变化。

5.png

FASF与SOTA相比较

6.png

总结

这篇文章同样是一篇很好的Anchor Free的目标检测的文章,文章从level选取的点进行切入,利用Anchor实现不同的instance在不同level的动态分配,设计了FASF方法进行level的动态选择,并且设计了anchor free跟anchor-based相结合,提升模型效果,取得了可观的结果。