FCOS: Fully Convolutional One-Stage Object Detection
文章解读
backbone+FPN
对于输出部分H*W的特征图,每个像素点都需要输出类别打分,中心打分,回归坐标,他们的维度分别是C,1和4;center-ness
1 创新点
目标检测可以分为两大类别,anchor-based和anchor-free算法,前者为主流的算法,比如:YOLO-V3,SSD,faster RCNN等,存在如下缺点,
(1)引入许多需要优化的超参数,如:anchor number,anchor size,anchor ratio等;
(2)为了保证算法效果,需要很多anchors,存在正负样本不平衡的问题;
如果不适用anchor box就是第二种思路,anchor-free,代表性的算法包括:
1 早期探索:DenseBox,YOLO
2 基于关键点:CornerNet,ExtreNet
3 密集预测:FSAF,FCOS,FoveaBox,TIFNET
本文算法属于anchor-free类别算法,且效果在anchor-free中算是SOTA,主要优点:
(1)因为是pixel-based预测,所以可以使用semantic segmentation方向的tricks;
(2)可以修改FCOS的输出分支,用于解决instance segmentation和keypoint detection任务。
算法思想
网络结构
FCOS的网络结构如下图,包括:
1 backbone网络
深度学习识别网络
2 neck:feature pyramid结构;
3 head:输出部分,classification/Regression/Center-ness;
对于输出部分H*W的特征图,每个像素点都需要输出类别打分,中心打分,回归坐标,他们的维度分别是C,1和4;
细节点:
feature pyramid结构部分并不是标准的FPN结构,P6和P7层似乎有些多余
center-ness输出分支
center-ness,表示中心点打分,表征了当前像素点是否处于ground true target的中心位置,如下面的热力图,红色为1,蓝色为0,其他的在0与1之间:
数学公式表示:
其中表示ground truth,从公式中也可以看出l,r*相等时,为1 ,为0是表示0,centerness表示当前像素偏离真实像素目标的中心点的程度,值越小,偏离越大。
FCOS目标检测算法在边界预测中使用的策略如下:
作者首先计算所有特征上位置的回归坐标:
(1)计算当前层级中的回归目标:l,t,r,b
(2)判断max(l,t,r,b)>mi或者max(l,t,r,b)<mi-1是否满足;
(3)如果满足,则不进行回归;
(4)mi作为当前尺度特征层的最大回归距离。