URL
TL;DR
-
Faster RCNN
系列、SSD
、YOLOv2~v5
(注意YOLOv1
不包括在内)都是基于Anchor
进行预测的。 -
本文提出一种 Anchor Free 的 one stage 目标检测方法,整个模型结构非常轻量,效果强大。
-
由于没有了 anchor,所以 fcos 可方便拓展到其他任务。
Algorithm
网络结构
-
backbone + FPN
输出了 5 种尺度的feature map
用于预测,由于是全卷积网络,所以 5 个输出头共享一份参数,对于每个尺度的feature map
上的每一个位置 预测包括类别(N,Cls,H,W)、框的位置(N,4,H,W)和一个中心置信度(N,1,H,W)。 -
由于共享输出头,所以本文作者 为每个输出头增加了不共享的 scale 参数,scale.shape == (num_of_level, 1)
- 其中位置参数模型预测的是如上图所示的(l,t,b,r),即相对于 feature map 上的点到 GT 的上下左右偏移量。
centerness
-
,即
GT bbox
内的点越靠近中心越大,越远离中心越小,取值范围[0, 1]
,可视化centerness
热力图如上图所示。 -
最终预测时,score 阈值过滤的是
centerness * score
。
损失函数
- 其中 表示在特征图点(x,y)处预测的每个类别的 score
- 表示在特征图点(x,y)处的真实类别(负样本类别为 0)
- 表示在特征图点(x,y)处预测的目标边界信息
- 表示在特征图点处预测的centerness
- 使用
focal loss
以平衡正负样本 - 使用
GIOU loss
,且只对正样本计算 - 使用
focal loss
,且只对正样本计算
正样本选择策略
-
与
anchor base
方法不同,fcos
对正样本的选择较为苛刻,仅当 feature map 上的某个点落入 gt bbox 中心区域(sub-box)时才被当做正样本 。 -
sub-box
的定义: ,其中 表示gt bbox
中心点在原始图上的坐标;s
表示stride
即当前feature map
相较于原图下采样倍数;r
表示radius
半径超参数,在coco
数据集上取1.5
。 -
除了正样本之外,其他样本的
cls
类别都被置为0(background)
,负样本只计算cls loss
,不计算reg loss
和centerness loss
(也没法计算,有框才能计算)。
Ambiguous sample
-
anchor free
的检测方法绕不开一个天然的问题:如果一个feature map
的特征点(x,y)同时是两个GT bbox
的正例,应该如何预测,毕竟fcos
每个特征点只预测一个框。 -
本文缓解该问题的方法是:使用 FPN box 尺度分配 + center sampling。
-
FPN bbox
尺度分配是一个常用的解决Ambiguity
问题的方法,越大的feature map
负责检测越小的框。(将Ambiguity
出现的概率从23.16%
降低到7.24%
) -
center sampling
:即上面提到的 sub-box 采样方法,radius = 1.5。(将Ambiguity
出现的概率从7.24%
降低到2.66%
)
-
Thought
FCOS
是一种很简单高效的2D anchor free
物体检测算法,迁移性强,启发了后面的FCOS3D
单目3D
检测。