《FCOS: Fully Convolutional One-Stage Object Detection》论文精讲

  • 一、背景
    • 1,提出问题
    • 2,解决办法
    • 3,FCOS优势总结
  • 二、相关工作
    • 1, 基于anchor的检测器
    • 2, Anchor-free检测器
  • 三、模型介绍
    • 1, 一阶段的全卷积神经网络
      • 网络的输出
      • 损失函数
      • 小结
    • 2, 使用多尺度的特征金字塔(FPN)
    • 3, Center-ness for FCOS
    • 4,损失函数详解

一、背景

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

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

  1. 目标检测论文阅读:FCOS算法笔记

    标题:FCOS: Fully Convolutional One-Stage Object Detection 会议:ICCV2019 论文地址:https://ieeexplore.ieee.org ...

  2. FCOS:全卷积一阶段Anchor Free物体检测器,多种视觉任务的统一框架

    作者 | ronghuaiyang 来源 | AI公园 导读:这是众多Anchor Free中比较有影响力的一篇文章,不光是效果好,而且思路清楚,简单,不需要任何trick,并将众多的视觉任务统一到了 ...

  3. NeurIPS 2022 | FCOS-LiDAR:全卷积单阶段3D目标检测(沈春华团队)

    编辑 | CVer 点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨卷干货,即可获取 点击进入→自动驾驶之心[3D目标检测]技术交流群 后台回复[3D检测综述]获取最新基于点云 ...

  4. 单阶段目标检测重要论文总结

    文章目录 一.Yolov1 1.论文简介 2.检测原理 3.结构设计 4.疑难问题 5.论文总结 二.Yolov2 1.论文简介 2.更好.更快.更强 1)为什么更好? 2)为什么更快? 3)为什么更 ...

  5. 两阶段目标检测重要论文总结

    文章目录 Selective Search方法 1.论文简介 2.算法原理 EdgeBoxes方法 1.论文简介 2.算法原理 一.R-CNN 1.论文简介 2.结构设计 3.论文总结及改进点 二.S ...

  6. 用心整理,尽量最全,一套目标检测、卷积神经网络和OpenCV学习资料(教程/PPT/代码)...

    计算机视觉(Computer Vision, CV)作为人工智能(AI)的核心技术之一,在过去的二十年里发展迅猛,应用范围遍及工业.农业.军事.国防等多个领域. 计算机视觉主要完成哪些任务? 计算机视 ...

  7. 一文看尽 27 篇 CVPR 2021 2D 目标检测论文

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨二玖 编辑丨极市平台 导读 本文对我们汇总的 CVPR 2021 检测大类中的2D目标检测领域的 ...

  8. 做目标检测,这6篇就够了:CVPR 2020目标检测论文盘点

    点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要15分钟 Follow小博主,每天更新前沿干货 来源:机器之心 CVPR 2020 会议上,有哪些目标检测论文值得关注? 目标检测是计算机视觉 ...

  9. access open 知乎_做目标检测,这6篇就够了:CVPR 2020目标检测论文盘点

    CVPR 2020 会议上,有哪些目标检测论文值得关注? 选自heartbeat,作者:Derrick Mwiti,机器之心编译,参与:陈萍. 目标检测是计算机视觉中的经典问题之一.凭借大量可用数据. ...

最新文章

  1. SpringBoot在接受前台参数时提示:Ruquired parameter ‘‘ is not present
  2. 前端趋势榜:上周最有意思、又实用的 10 大 Web 项目 - 210924
  3. SAP Cloud Application Programming 编程模型(CAP)的设计准则
  4. SAP Cloud for Customer 2102版本如何使用Key User Tool创建扩展字段 - extension field
  5. 使用@JsonIdentityInfo的Spring自定义序列化器
  6. matlab将满足某一条件的矩阵元素置零
  7. visual studio 2019 未能在命名空间“System.IO.Ports”中找到类型名“SerialPort”
  8. as上的git到码云操作_高校版News||码云联合实训邦发布软件工程在线实训教程
  9. Oracle闪回技术
  10. [Ubuntu] 0% [Connecting to archive.ubuntu.com (2001:67c:1360:8001::17)]
  11. python的格式化输入_如何在python中读取格式化的输入?
  12. 碧桂园博智林机器人总部大楼_博智林机器人谷总部大楼完工
  13. bilibili直播: Vue.js Podcast(小记录)~~~
  14. 公开课丨重中之重!Web安全漏洞与防御
  15. 阿里云掠地CDN:网宿称我们不在一条路上
  16. 基于正交设计的折射反向学习樽海鞘群算法
  17. TimeSformer:抛弃CNN的Transformer视频理解框架
  18. 关联规则挖掘基本概念与Aprior算法
  19. YOLOv8训练自己的数据集
  20. oracle数据库uga中文全称,关于uga,pga和sga

热门文章

  1. 树莓派小车识别场地内特定颜色的直线并据此修正方向的方法
  2. 一元最小二乘法(c语言实现)
  3. 制作自己的 tusimple 格式数据集
  4. 实现诺易腾与unity3D实时交互的软件设置
  5. oracle正则表达式匹配中文
  6. hexdump使用小技巧
  7. 行内块元素上下错位问题
  8. CSS之 块、行内、行内块元素
  9. java服务降级_服务降级
  10. ( 从零开始的数据结构生活 )五、图