FCOS:全卷积一阶段目标检测论文精讲

FCOS是一种无需anchor的一阶段全卷积目标检测器,它通过预测像素级别的边界框和中心性来解决重叠框的不确定性。论文提出的方法包括使用FPN进行多尺度预测和引入center-ness分支抑制远离物体中心的低质量检测框。FCOS的优势在于简化了模型,提高了检测精度,且能应用于其他视觉任务。
摘要由CSDN通过智能技术生成

一、背景

1,提出问题

  object detection might be the only one deviating from the neat fully convolutional per-pixel prediction framework mainly due to the use of anchor boxes. It is nature to ask a question: Can we solve object detection in the neat per-pixel prediction fashion, analogue to FCN for semantic segmentation, for example?(也就是说基于anchor的目标检测器不能使用全卷积神经网络,所以提出是否可以也使用全卷积神经网络用于目标检测)

2,解决办法

方法1: In the literature, some works attempted to leverage the FCNs-based framework for object detection such as Dense-Box,Specifically, these FCN-based frameworks directly predict a 4D vector plus a class category at each spatial location on a level of feature maps
存在问题
(1)DenseBox crops and resizes training images to a fixed scale;(DenseBox需要将图片统一到一个固定尺度)
(2)these methods do not work well when applied to generic object detection with highly overlapped bounding boxes(对于那种重叠较多的框预测效果不好)

方法2:In the sequel, we take a closer look at the issue and show that with FPN this ambiguity can be largely eliminated. As a result, our method can already obtain comparable detection accuracy with those traditional anchor based detectors.
存在问题
(1)we observe that our method may produce a number of low-quality predicted bounding boxes at the locations that are far from the center of an target object(发现我们这个方法会产生很多远离物体中心点低质量预测框)
解决方法
(1)we introduce a novel “center-ness” branch (only one layer) to predict the deviation of a pixel to the center of its corresponding bounding box(提出一种center-ness方法解决了这个问题)

3,FCOS优势总结

(1) 现在目标检测和其他任务一样可以使用全卷积神经网络
(2) 目标检测不需要anchor了(proposal free and anchor free)
(3) 由于消除了anchor的计算与匹配,简化了模型并节省了时间和内存
(4) 可以作为Region Proposal Networks (RPNs)在两阶段的目标检测模型中,且效果更好,因此对目标检测中需要确定anchor这个之前的共识提出了质疑
(5) 该检测器可以快速且最小化修改的用于其他视觉任务上

二、相关工作

1, 基于anchor的检测器

  这部分主要简单介绍了下yolov2,v3和ssd等基于anchor的检测器

2, Anchor-free检测器

YOLOv1:The most popular anchor-free detector might be YOLOv1;However, since only points near the center are used to predict bounding boxes, YOLOv1 suffers from low recall as mentioned in YOLOv2(由于只对接近中心点的点进行预测,存在recall低的问题)

解决办法:, FCOS takes advantages of all points in a ground truth bounding box to predict the bounding boxes and the low-quality detected bounding boxes are suppressed by the proposed “center-ness” branch(FCOS将在标记框内所有点都认为是正样本,并使用了center-ness技术)

CornerNet:requires much more complicated postprocessing to group the pairs of corners belonging to the same instance. An extra distance metric is learned for the purpose of grouping(需要更复杂的后处理来分组属于同一实例的角对。为了分组的目的,我们学习了一个额外的距离度量)

DenseBox:The family of detectors have been considered unsuitable for generic object detection due to difficulty in handling overlapping bounding boxes and the recall being relatively low(由于难以处理重叠框,召回率较低,这类检测器被认为不适合用于通用对象检测)

三、模型介绍

  we first reformulate object detection in a per-pixel prediction fashion. Next, we show that how we make use of multi-level prediction to improve the recall and resolve the ambiguity resulted from overlapped bounding boxes. Finally, we present our proposed “centerness” branch, which helps suppress the low-quality detected bounding boxes and improves the overall performance by a large margin

1, 一阶段的全卷积神经网络

  把Fi ∈ R H×W×C当作主干卷积网络的第i层特征图,s代表到这一层的总的步长,ground-truth框可以用 {Bi}表示,Bi=(x0i, y0i ,x1i, y1i,ci),前四个参数代表框的左上和右下角坐标,c代表框的类别,对于特征图Fi上每个值(x,y),我们都可以用公式([s/2]+xs,[s/2]+ys)把它映射到输入图像。跟基于anchor的检测器不一样,它是根据anchor作为参考来回归出目标框,而我们这个方法是直接回归出标记框。

在这里插入图片描述

  同时,坐标(x,y)如果落于ground-truth box内是被认为作为正样本,并且其类别也就是这个ground-truth box框的类别,相反就会被认为是负样本,其c也就等于0。同时,我们使用了一个4维张量t*=(l*,t*,r*,b*)作为定位的回归目标。l*,t*,r*,b*分别代表中心点到bounding-box的四条边的距离,如图1。如果一个坐标落入多个bounding box,该坐标就被认为是一个ambiguous sample(模糊样本),我们简单的选用最小面积的那个框作为回归目标。在下一阶段我们可以看到通过使用多尺度的预测,可以显著的减少这种ambiguous sample的情况,因此这种情况几乎对模型就没什么影响,通过下面公式计算回归目标值:
在这里插入图片描述
  这里再强调下,FCOS可以尽可能多的产生很多前景(也就是正样本),而这与基于anchor的检测器不同,后者只将iou值最大的点作为正样本,我们猜想这个改进就是FCOS效果比基于anchor检测器更好的原因之一。

网络的输出

  联想下我们需要训练的目标,我们可以知道网络最后一层的输出是一个80维分类标签加上一个4维的边框坐标,跟其他网络一样,我们添加了四个卷积层在主干网络的特征输出层后面用来分类和回归。并且,使用了exp(x)函数对回归结果进行处理,使得输出在(0,∞)范围,FCOS比起基于anchor的检测器少了9个网络输出(这里指基于anchor的检测器输出中有一个参数专门用来判断该位置是否存在框,而FCOS则不需要,而是直接根据c来判断)

损失函数

  损失函数由下面公式定义:
在这里插入图片描述
  其中Lcls是focal loss,而Lreg是IOU loss,Npos是正样本的数量,λ在这里是1,用来平衡Lreg,1{ci>0}是一个标记函数,如果ci>0则为1,否则为0。损失函数是在整个特征图Fi上进行计算求和。(这里的损失值写的还不完全,后续还有一项center-ness loss)

小结

  FCOS的使用很简单直接,就是给一张输入图片,通过前向传播在每个特征图上的Fi获得分类分数px,y,回归值tx,y,我们这里通过选用那些px,y>0.05的点作为正样本,并且应用之前的公式1计算预测框。

2, 使用多尺度的特征金字塔(FPN)

在这里插入图片描述
  使用FPN结构,我们在特征图上预测了不同的物体尺寸,我们充分应用了五种尺度的特征图,分别命名为{P3,P4,P5,P6,P7},其中P3,P4,P5由模型主干网络(backbone)的特征图C3,C4,C5产生,如上图2,P6,P7由一个步长为2的卷积层通过P5,P6产生,最后结果是,P3,P4,P5,P6,P7相对原始输入有着8,16,32,64,128的步长
  不像基于anchor的检测器需要通过不同的anchor尺寸来匹配不同尺寸的特征层,我们这直接在每一层限制了bounding box的回归。我们首先对所有的特征尺度下每个坐标计算其l*,t*,r*,b*(也就是ground truth);接着,如果该坐标值满足max(l,t,r*,b*)>mi或者max(l*,t*,r*,b*)<mi-1,则被认为是负样本**。这里的mi是每一层i特征图负责预测的最大距离,这里的m2,m3,m4,m5,m6,m7分别设置为0,64,128,256,512,∞。特别的不同尺度的物体就会映射到不同尺度特征层,而往往那种重叠(overlapping)情况发生在不同尺寸之间。如果一个位置依然被标记为多个ground-truth框,我们简单的选用那个最小面积的框作为其目标。实验结果表明这种多尺度的预测可以显著缓解之前提到的矛盾现象,并且提高基于全卷积网络模型性能相对于基于anchor的检测器。
  我们观察到,对于不同的特征层负责不同尺寸的回归(比如P3是[0,64],P4是[64,128]),因此,对于不同的特征级别使用相同的头是不合理的,所以不是使用标准的exp(x)函数,我们使用exp(si*x)带有一个可训练的参数si去自动调整指数函数。这样也显著提高了模型预测效果。

3, Center-ness for FCOS

在这里插入图片描述
  使用多尺度的预测后,FCOS依然跟基于anchor的检测器有着显著的差异,我们观察到那是因为由那些距离物体中心点很远的点产生了许多低质量的预测框。对此我们引入了一个与分类层平行的单独层(如图2所示)来预测目标点的==“center-ness”==值,center-ness反映了预测点与所匹配的物体中心点的距离如图7所示。使用下面公式确定:
在这里插入图片描述
  这里使用开方来降低center-ness大小,center-ness取值为0到1,因此可以使用交叉熵来计算其损失函数,该部分损失值添加到公式2当中。最后预测结果得分是将center-ness值与分类得分的值相乘。因此center-ness可以降低那些远离中心点的预测框得分,那些低质量的框会在最后的非极大值抑制阶段被滤除掉。
  另一种center-ness的替代是只利用ground-truth的中央部位作为正样本通过使用一个额外超参数,通过我们实验发现,将两者结合可以取得一个更好的结果,实验结果如表格3所示。
在这里插入图片描述

4,损失函数详解

  该部分将出一篇博客精讲,敬请关注!!!

参考:
1,FCOS: Fully Convolutional One-Stage Object Detection

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值