目标检测中的Anchor Free方法(二)

目标检测中的Anchor Free方法

上周看了源于keypoint Motivation的anchor free方法,我们这周来看一下源于Segmentation的anchor free方法是怎样的思路。

3. 基于Segmentation的方法

FCOS

先来上一张FCOS的整体框架图:
目标检测中的Anchor Free方法(二)
按照FCOS的说法,它是把每个location都当做一个样本,如下图所示,可以看到,最左面的橙色点在棒球运动员的box内,这个点的gt实际上是该点到box的四个边缘的距离以及box的obj类别,所以最后预测出来的output是HxWxC以及HxWx4,C和4分别代表每个特征图的每个location要预测的该点所属于的类别和该点到box的边界距离。在通过这种方式得到box后,FCOS回合anchor based的方法一样进行NMS等:
目标检测中的Anchor Free方法(二)实际上如果不考虑Classification下面的Center-ness分支,怎么样,会不会觉得非常熟悉?在这里贴一下retinanet的网络图:
目标检测中的Anchor Free方法(二)
可以发现,两者最大的差别是最后输出的通道,Retinanet输出的是KA和4A(A代表anchors数量,K代表类别数量),是对每个location位置的A个anchors预测它们的类别和相对偏移量,而FCOS则直接对格子所在的类别和产生box进行预测了,完全没有box的概念,整体上也非常接近语义分割的segmentation思想。
这样做的方法会有一个问题,就是box里面,越接近中心的位置往往效果越好,但是越靠近Box边缘,虽然理论上应该仍然是正类,但是因为往往落在obj外,预测效果不佳,对此,FCOS的解决方法是引入一个新的分支centerness,它的gt计算如下:
目标检测中的Anchor Free方法(二)
可以看到,如果location距离box的左边界距离和右边界距离相同,根号内第一项应该是1,同理,当距离上下边界距离一样时候,根号内第二项是1,此时,gt值为1,location恰好处于中心位置。而如果location非常接近边缘,则gt会非常小。这个分支训练以后,在inference阶段将会和classification预测的值相乘作为最终scores得分,从而抑制接近中心点的位置。
此外,FCOS还引入了多尺度的概念,如果在FPN的某个level上,t/b/l/r中的最大值大于某个阈值,则认为这个box不适合当前level的feature,从而进行排除。

Foveabox

在了解了FCOS之后,认识foveabox也比较简单了。foveabox的不同首先在于多尺度策略和encoding的方法。
foveabox的多尺度策略是将不同大小的box根据面积分配到不同level的feature map上,且有重叠。FPN的P3~P7的每个leval的Pl分别有一个基数Sl,取l=3的时候,P3对应的S3是3232,取l=4的时候,P4对应的S4是6464,一直倍增。每个level负责的box的面积范围为,其中n^2是可变化的参数,可以看到,不同leval预测的范围会有重叠,这可以增加一定的鲁棒性:
目标检测中的Anchor Free方法(二)
而考虑到不同level预测的box大小不同,预测的box位置坐标也是经过编码的,编码方式如下(z代表系数,具体计算方式见论文):
目标检测中的Anchor Free方法(二)
最后,也就是foveabox名称的由来,对于box内部离中心点比较远的抑制方法,foveabox没有centerness那样的分支,而是用了另一个思路,那就是只有box内部比较靠近中心的点才被视作正样本(下图带黑色点的红色区域),如果该点在Box内部但是离边缘比较近,则往往被视作灰色区域,即不算正样本,也不算负样本,梯度回传的时候不考虑(红色box内部白色区域)。正样本所在的矩形框和灰色区域的矩形框大小是由两个不同的伸缩系数控制的。
目标检测中的Anchor Free方法(二)

FSAF

关于FSAF,就没有太多需要介绍的内容了,只需要知道以下三点:

  1. FSAF在每个location预测box的方式也是预测点到box四个边界的距离,类似FCOS
  2. FSAF抑制box内部远离中心点的干扰的方法类似Foveabox,同样把非常靠近中心的矩形区域视作正样本,在box内又离得比较远的不计入梯度计算
  3. FSAF的多尺度策略比较特殊,它不会手动分配level预测某个box(这一点和FCOS和Fovea不同,这两本本质上多尺度都用了手动分配的方法),而是在各个尺度上同时计算,看box在哪个level上得到的loss最小,就在这个level的特征上计算,由此实现针对不同obj的特征选择自动化
    目标检测中的Anchor Free方法(二)

结语

2019年可以说是anchor free方法的井喷年,出现了非常多的anchor free方法,而且基本上达到了SOTA的水平(今年CVPR的Libra R-CNN给出的最好结果是43%,而目前anchor free方法普遍在42~43%,FSAF联合了anchor-free和anchor based达到了44%,centernet给出的结果是47%但是个人感觉有点夸张)。
从设计来说,anchor free方法确实更符合dl的思想与理念,也更方便和keypoint以及segmentation进行接轨,从而挖掘和借鉴其它的思路,应该会成为接下来的热点。