【目标检测】FCOS: Fully Convolutional One-Stage Object Detection

【目标检测】FCOS: Fully Convolutional One-Stage Object Detection_第1张图片

Abstract & Introduction

受语义分割模型Fully Convolutional Network启发,提出一种per-pixel prediciton方式的目标检测。

anchor-based方法,存在下列问题:

(1)训练过程中,需要计算每个anchor和GT的IoU,非常浪费计算资源

(2)需要面向任务设计anchor,anchor的sizes,aspect ratios和numbers会极大影响最后的检测结果[15,24]。对于RetinaNet,作者在调整anchor超参后,在COCO上提高了4个点。

(3)anchor是固定的,无法适应多变的物体大小。

(4)正负样本数量的不平衡:对于一张短边为800的图片,anchor-based方法会产生180K anchor,其中绝大多数为负样本。

FCOS(Fully Convolutional one-stage object detector),使用NMS,FCOS(ResNetXt-64x4d-101)取得了44.7% AP。

 

Model

对于特征图Fi上的location (x, y),可以通过映射回location (x, y)的感受野的中心。

location (x, y)被视作正样本:(1)它在GT中的中心区域(中心点,对应不同stage加不同值);(2)它的类别标签是该GT box的类别标签。其他情况,都视作负样本。如果一个location在多个GT bbox中,则该location被视为模糊样本,本文简单的将它划分给bbox较小的那个。

不同于anchor-based方法,FCOS会利用尽可能多的前景样本来训练回归,这不同于前者,前者仅考虑和GT的IOU。

对于每个location预测一个80维分类标签向量和4维前景bbox坐标。受RetinaNet启发,将backbone产生的feature maps分别送入有4个卷积层的分类和回归分支。因为正样本较多,给回归分量加个exp(),值域映射到(0, 无穷)。

损失函数定义如下:

【目标检测】FCOS: Fully Convolutional One-Stage Object Detection_第2张图片

Lcls是focal loss,Lreg是UnitBox中的IOU损失,Npos是正样本的数量。分类分数px,y大于0.05的被视为是正样本。

 

Multi-level Prediction with FPN for FCOS

使用不同大小的特征层做预测。具体来说,包含:{P3, P4, P5, P6, P7},P3, P4和P5由backbone的C3,C4,C5产生以及从上到下的1x1卷积。P6和P7在P5和P6基础上增加一个步长为2的卷积层实现。P3-7分别对应8,16,32,64和128的步长。

不同于anchor-based方法,对不同层使用不同尺寸的bbox,我们直接限制了每层bbox回归的范围。如果某个location,它的或者,则将它视作负样本。本文设置m2-7为:0,64,128,512和无穷。这样还有一个好处是可以避免大多数目标覆盖的问题。

但我们发现不同level的特征图,应该回归到不同尺寸。因此,我们将放缩函数变为exp(si * x)

【目标检测】FCOS: Fully Convolutional One-Stage Object Detection_第3张图片

 

Center-ness for FCOS

FCOS会产生很多低质量的bbox,尤其是那些离目标中心较远的locations。我们增加一个和分类分支共享卷积层的新分支,用于预测location的center-ness。

center-ness大小为0-1,用BCE loss计算。用于抑制产生奇怪的bbox。

在测试时,center-ness产生的分数和分类分数相乘,使得低质量的bbox可以被NMS筛选掉。

 

实验

在COCO上实验,我们使用trainval135k(115K图片)用于训练,minival(5K图片)作为验证集用于消融实验。在test_dev(20K图片)作为测试

【目标检测】FCOS: Fully Convolutional One-Stage Object Detection_第4张图片

 

你可能感兴趣的:(目标检测)