一.提出背景
2019 是 Anchor Free 大行其道的一年,从CornerNet 到 ExtremeNet,从FSAF到FCOS,层出不穷。
论文:FCOS: Fully Convolutional One-Stage Object Detection【paper】【github】
二.算法框架
FCOS框架比较简单,架构图参考:
基础backbone是一个3层的卷积网络(对应图中C3,C4,C5),Pyramid特征金字塔构建完成P3-P7(感觉到P6就够了),每个金字塔层对应一个预测头(Head)。
其中Head层分为3个预测分支,1个分类 + 1个位置回归 + 1个Center-ness(用于构建居中loss,后面展开)
二.Why FCOS?
看着架构图来看为什么要这么设计?
1)特征pyramid价值
不同尺度的目标,在不同的特征层下 特征保留的最好,将目标按照尺度划分到不同特征层进行回归,能够有效处理重叠目标(假设重叠目标的尺度不同)。
2)Anchor Free的价值
对于基于Anchor检测来讲,正样本按照尺寸和宽高比被划分到不同的Anchor,导致对于每一个Anchor,其分类和位置回归用到的训练样本都会大大减少。
Anchor Free解决的就是这个问题,基于中心点回归4条边的位置:
Loss定义为 分类Loss + 回归Loss:
“Center-ness”是指回归框距离中心的度量,公式很简单,l*,r* 差异越大,值越接近0,相等时=1:
通过 Center-ness Loss,将回归返回尽量约束在以当前点为中心的BBox上,这样做的好处是降低非Center Box的权重,有效抑制偏离中心的Box,
三.试验效果(进一步改进)
试验效果如下:
非常不错,超越YOLO v2和SSD、CornerNet,改进思路:
将回归位置归一化到【0,1】,添加多任务分支(比如分割),结合Anchor-Based方法 等。