FCOS目标检测 paper笔记

FCOS:Fully Convolutional One-Stage Object Detection是一个anchor free的detector,
paper链接
github链接

anchor based检测方法(Faster R-CNN, SSD, YOLO etc.)存在如下问题:
1.detection performance 对anchor box的size ,aspect ratios比较敏感,需要仔细调整超参。
2.超参固定下来以后,如果物体大小变化太大还是适应不了
3.anchor box需要密集拜访,将会有大量的anchor box, 而且它们中的大部分都将是negative sample, 正负样本比例失衡的问题。
4.大量anchor box计算量的增加,比如计算IOU

作者思考是不是可以参考语义分割FCN的框架,一连串直接到底,形式简洁。

DenseBox有做过这方面的改进,用FCN直接得到一个dense map,
output中的每个像素处有一个4D向量,代表左上和右下角的坐标,还有一个class分类。
但是对有overlap的box处理得还不够。
遇到overlap时到底应该属于哪个box?

作者观察到FPN结构可以很大程度解决这个问题,也就是多层feature map.
还提出了改善精度的centerness.

与anchor based的output区别:
anchor based把每个位置当作多个anchor box的中心(不同大小),在这个基础上进一步缩减。
anchor free是在位置上直接regress bounding box.

先定义ground truth的bounding box for input image:
包含左上角和右下角的坐标,class,COCO数据集一共有80类
FCOS目标检测 paper笔记_第1张图片
anchor free在预测时,每个位置(x, y)如果在ground truth box内而且label一致,就认为是正样本,反之是负样本(label=0)
output除了label, 还有一个4D向量,但它不是bounding box的左上和右下角坐标,而是当前pixel位置到bounding box4条边的偏移量,如下图
FCOS目标检测 paper笔记_第2张图片
计算方式如下:
在这里插入图片描述

所以网络的输出包含了80D的label向量(一共80类),和4D向量,
对分类而言,不是multi-class分类,而是80个二分类器
FCOS目标检测 paper笔记_第3张图片

损失函数:
2部分,一个是focal loss(用于二分类的),一个是计算预测的4D向量和ground truth的IOU损失
求和部分是对整个feature map的所有像素点,
正样本是指pixel处的class score值>0.05
FCOS目标检测 paper笔记_第4张图片

多层的FPN结构:

用于解决最后一层feature map的large stride问题,直观上感觉large stride下预测应该不太准(anchor based方法中就有),
所以应用了多层FPN,得到各种尺度的feature map,
用了5层feature map: P3~P7,
其中P3, P4, P5直接永乐CNN的C3,C4,C5,然后P6和P7是分别把P5和P6通过stride=2的卷积层,

As a result, the feature levels P3 , P4 , P5 , P6 and P7 have strides 8, 16, 32, 64 and 128, respectively.

对bounding box的限制:
在anchor based方法中,一般在不同feature level中,会设置不同的anchor box size.
那在anchor free的方法中,不同的feature level也应该作一些设置才对,
这里,作者设了每个feature level中最大的distance, bounding box的最大偏移超过了这个distance, 或者比上一level的distance小,都认为是负样本,不再参与预测。
作这样的限制是因为很多会发生overlapping的物体都有着不同的size, 通过这种方式把不同size的区分开,
当然,如果这样过滤都还是会剩下一个位置对应多个ground truth box的情况,作者选最小area的box作为target.
FCOS目标检测 paper笔记_第5张图片

So,整体FCOS的网络结构如下

FCOS目标检测 paper笔记_第6张图片

其中,Head的参数是共享的(节约参数,提高performance).

跟Classification并行的有一个Center-ness的分支。
它的提出主要是因为没有它效果还是不如anchor-based检测器,
作者观察到有很多距离box中心偏远的位置也预测了box,
为了把这些偏远的位置过滤掉,就要加大box中心位置的权重,削弱偏远位置的权重,

正常我们会想到每个点计算到box中心的距离,根据距离的倒数赋权重,
但是这样又会面临计算距离这个开销,作者直接根据偏移量的比例来定义到中心的权重,

在这里插入图片描述
加了一个开根号是为了放缓decay.
它的范围是0~1,所以训练时用了binary cross entropy(BCE) loss.
测试的时候,这个权重会和分类的score相乘。
FCOS目标检测 paper笔记_第7张图片
后面实验就不说了,放一个有没有center-ness这个分支的对比,FCOS目标检测 paper笔记_第8张图片

和anchor based方法对比

FCOS目标检测 paper笔记_第9张图片

你可能感兴趣的:(DeepLearning,目标检测,深度学习,计算机视觉)