论文解读-FCOS:Fully Convolutional One-Stage Object Detection

文章目录

    • 1 动机
    • 2 算法思想
      • 2.1 网络结构
      • 2.2 center-ness输出分支
      • 2.3 优化目标
    • 3 实验结果
      • 3.1 centerness的影响
      • 3.2 和已有方法的对比
    • 4 总结
    • 5 参考资料


1 动机

目标检测算法可以分为两大类别,anchor-based和anchor-free算法,前者是主流的做法,比如yolo-v3、ssd、faster rcnn等,它存在如下缺点,
(1)引入很多需要优化的超参数, 比如anchor number、anchor size、anchor ratio等;
(2)为了保证算法效果,需要很多的anchors,存在正负样本类别不均衡问题;
(3)在训练的时候,需要计算所有anchor box同ground truth boxes的IoU,计算量较大;

那么可不可以不使用anchor box呢,这便是第二种思路,anchor-free,代表性的算法包括yolo-v1、cornernet、FSAF(见笔者之前的文章https://blog.csdn.net/diligent_321/article/details/88384588)。

本文也属于anchor-free类别的算法,且效果在anchor-free派系中算SOTA了。它的主要优点如下:
(1)因为输出是pixel-based预测,所以可以复用semantic segmentation方向的tricks;
(2)可以修改FCOS的输出分支,用于解决instance segmentation和keypoint detection任务;

2 算法思想

2.1 网络结构

FCOS的网络结构如下图,显然,它包含了如下3个部分,
(1)backbone网络;
(2)feature pyramid结构;
(3)输出部分(classification/Regression/Center-ness);

对于输出部分 H × W H\times W H×W的特征图,每一个像素点需要输出类别打分、中心打分、回归坐标,它们的维度分别为C、1和4。
论文解读-FCOS:Fully Convolutional One-Stage Object Detection_第1张图片

大家应该也都注意到了,feature pyramid结构部分并不是标准的FPN结构,P6和P7层似乎有些多余,所以实验部分(Table 7)和Retinanet做对比,证明FCOS输出部分网络设计的优势,笔者认为就有些差强人意了。

2.2 center-ness输出分支

center-ness,可以译成中心点打分,它表征了当前像素点是否处于ground truth target的中心区域,以下面的热力图为例,红色部分表示center-ness值为1,蓝色部分表示center-ness值为0,其他部分的值介于0和1之间。
论文解读-FCOS:Fully Convolutional One-Stage Object Detection_第2张图片
数学公式表示如下,
在这里插入图片描述
其中, ∗ * 表示ground truth。

从公式中也可以看出,当 l ∗ 、 r ∗ l^{*}、r^{*} lr相等时, m i n ( l ∗ , r ∗ ) m a x ( l ∗ , r ∗ ) = 1 \frac{min(l^{*}, r^{*})}{max(l^{*}, r^{*})}=1 max(l,r)min(l,r)=1,当 l ∗ = 0 l^{*}=0 l=0或者 r ∗ = 0 r^{*}=0 r=0时, m i n ( l ∗ , r ∗ ) m a x ( l ∗ , r ∗ ) = 0 \frac{min(l^{*}, r^{*})}{max(l^{*}, r^{*})}=0 max(l,r)min(l,r)=0,也即 c e n t e r n e s s ∗ centerness^{*} centerness衡量了当前像素偏离真实目标的中心点的程度,值越小,偏离越大。

2.3 优化目标

(1)分类和定位分支

分类和定位分支的优化目标如下,
在这里插入图片描述
论文解读-FCOS:Fully Convolutional One-Stage Object Detection_第3张图片
其中, p x , y p_{x, y} px,y表示特征图的位置 ( x , y ) (x, y) (x,y)处的分类概率, t x , y t_{x, y} tx,y表示特征图的位置 ( x , y ) (x, y) (x,y)处的回归坐标。

(2)centerness分支

该分支直接回归处公式(3)中的 c e n t e r n e s s ∗ centerness^{*} centerness。笔者刚开始看时,一直觉得这个分支多余,因为基于回归任务的输出,是可以计算出来 c e n t e r n e s s centerness centerness的。尽管作者在实验部分Table 5给出了这种想法的对比结果,说明了效果不好,但是缺乏理论解释,笔者认为这里还是可以出一些有价值的工作的。

3 实验结果

3.1 centerness的影响

论文解读-FCOS:Fully Convolutional One-Stage Object Detection_第4张图片
这里还需要提及一下,作者增加了一组实验,如果使用ground truth center-ness值,那么AP会从36.6提升到42.1,显然会有很大的提升。既然作者已经指明了方向,大家如果想发paper可以沿着这个方向思考。

3.2 和已有方法的对比

由下表可以看出,FCOS的结果优于RetinaNet近2个点。并且,同FSAF算法相比,FSAF联合anchor-based分支和anchor-free分支的结果是40.9,而单独使用anchor-free分支无明显提升,所以,FCOS的效果还是可以的。
论文解读-FCOS:Fully Convolutional One-Stage Object Detection_第5张图片

4 总结

(1)虽然Yolo-v1也是anchor-free算法,区别在于,yolo-v1只利用了目标的中心区域的点做预测,因此recall较低。而FCOS利用了目标的整个区域内的点,recall和anchor-based算法相当;
(2)尽管centerness确实带来效果上的明显提升,但是缺乏理论可解释性;
(3)作为一种新的anchor-free算法,它的效果确实超过了yolo-v1、cornernet、FSAF,但是,既然是one-stage算法,推理速度是固有优势,而论文中却始终未提速度,可见,开发anchor-free且速度较快的检测算法,还有一段路要走。

5 参考资料

https://arxiv.org/abs/1904.01355

你可能感兴趣的:(深度学习算法)