论文提出anchor-free和proposal-free的one-stage的目标检测算法FCOS,不再需要anchor相关的的超参数,在目前流行的逐像素(per-pixel)预测方法上进行目标检测,根据实验结果来看,FCOS能够与主流的检测算法相比较,达到SOTA,为后面的大热的anchor-free方法提供了很好的参考

来源:【晓飞的算法工程笔记】 公众号

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

Introduction

大多目标检测网络都是anchor-based,虽然anchor能带来很大的准确率提升,但也会带来一些缺点:

准确率对anchor的尺寸、长宽比和数量较为敏感,这些超参都会人工细调

anchor的尺寸和长宽是固定的,如果目标的相关属性相差较大,会比较难预测

为了高召回,通常会使用密集的anchor布满输入,大多为负样本,导致训练不平衡

anchor需要如IOU的复杂计算

近期,FCNs在各视觉任务中都有不错的表现,但目标检测由于anchor的存在,不能进行纯逐像素预测,于是论文抛弃anchor,提出逐像素全卷积目标检测网络FCOS网络,总结如下:

效仿前期的FCNs-based网络,如DenseBox,每个像素回归一个4D向量指代预测框相对于当前像素位置的偏移,如图1左

为了预测不同尺寸的目标,DenseBox会缩放或剪裁生成图像金字塔进行预测,而且当目标重叠时,会出现像素不知道负责预测哪个目标的问题,如图1右。在对问题进行研究后,论文发现使用FPN能解决以上问题,后面会细讲

由于预测的结果会产生许多低质量的预测结果,论文采用center-ness分支来预测当前像素与对应目标中心点的偏离情况,用来去除低质量预测结果以及进行NMS

Our Approach

Fully Convolutional One-Stage Object Detector

为层

的特征图,

为层的总stride,输入的GT为

分别为box的左上角和右下角坐标以及类别,

为类别数。特征图

的每个位置

,可以通过

映射回原图,FCOS直接预测相对于当前像素的box位置,而不是anchor的那样将像素作为中心再回归

当像素

落在GT中则认为是正样本,将类别

设置为目标类别,否则设置为0。除了类别,还有4D向量

作为回归目标,分别为box的四条边与像素的距离。当像素落在多个GT中时,直接选择区域最小的作为回归目标。相对于anchor-based的IOU判断,FCOS能生成更多的正样本来训练回归器

Network Outputs

网络最终输出80D分类标签向量

和4D box坐标向量

,训练

个二分类器而不是多分类器,在最后特征后面分别接4个卷积层用于分类和定位分支,在定位分支使用

保证结果为正,整体输出比anchor-based少9x倍

Loss Function

为focal loss,

为UnitBox中的IOU loss,

为正样本数,

为平衡权重,公式2计算特征图上的所有结果

Inference

对于输入图片,推理得到特征图

的分类分数

以及回归预测

,然后取

的作为正样本,公共公式1得到预测框位置

Multi-level Prediction with FPN for FCOS

下面讲下FCOS如何使用FPN来解决之前提到的问题:

由于large stride,通常最后的特征图都会面临较低的最大可能召回(best possible recall, BPR)问题。在anchor based detector中,可以通过降低IOU阈值来弥补,而实验发现,FCN-based的FCOS本身就能在large stride情况下还有更好的BPR,加上FPN,BPR则会更高

目标框重叠会导致难解的歧义,例如不知道像素对应哪个回归目标,论文使用多层预测来解决这个问题,甚至FCN-based效果比anchor-based要好

如图2,FPN使用

层特征,其中

分别通过

卷积以及top-down connection生成,

则是分别通过

进行stride为2的

卷积生成,各特征的stride分别为8,16,32,64和128

anchor-based方法对不同的层使用不同的大小,论文则直接限制每层的bbox回归范围。首先计算

,

,

,如果满足

,则设为负样本,不需要进行bbox回归。

为层

的最大回归距离,

,

,

,

,

分别为0,64,128,256,512和

。如果在这样设置下,像素仍存在歧义,则选择区域最小的作为回归目标,从实验来看,这样设定的结果很好

最后,不同层间共享head,不仅减少参数,还能提高准确率。而由于不同的层负责不同的尺寸,所以不应该使用相同的head,因此,论文将

改为

,添加可训练的标量

来自动调整不同层的指数基底

Center-ness for FCOS

使用FPN后,FCOS与anchor-based detector仍然存在差距,主要来源于低质量的预测box,这些box的大多由距离目标中心点相当远的像素产生。因此,论文提出新的独立分支来预测像素的center-ness,用来评估像素与目标中心点的距离

center-ness的gt计算如公式3,取值

,使用二值交叉熵进行训练。在测试时,最终的分数是将分类分数与center-ness进行加权,低质量的box分数会降低,最后可能通过NMS进行过滤

center-ness的另一种形式是在训练时仅用目标框的中心区域像素作为正样本,这会带来额外的超参数,目前已经验证性能会更好

Experiments

Ablation Study

Multi-level Prediction with FPN

best possible recall(BPR)定义为检测器能够回归的gt比例,如果gt被赋予某个预测结果,即为能够回归。从表1看来,不用FPN的FCOS直接有95.55%,而anchor-based的经典实现只有86.82%,加上FPN后就提高到98.40%

在原始FCOS中,正样本中歧义目标的比例为23.16%,使用FPN后能够降低到7.14%。这里论文提到,同类别目标的歧义是没关系的,因为不管预测为哪个目标,都是正确的,预测漏的目标可以由其它更靠近他的像素来预测。所以,只考虑不同类别的歧义比例大概为17.84%,使用FPN后可降为3.75%。而在最终结果中,仅2.3%的框来自于歧义像素,考虑不同类别的歧义,则仅有1.5%的,所以歧义不是FCN-based FCOS的问题

With or Without Center-ness

center-ness分支能够将AP从33.5%升为37.1%,比直接从回归结果中计算的方式要好

FCOS vs. Anchor-based Detectors

相对于RetinaNet,之前FCOS使用了分组卷积(GN)和使用

来产生

,为了对比,去掉以上的改进进行实验,发现准确率依旧比anchor-based要好

Comparison with State-of-the-art Detectors

Extensions on Region Proposal Networks

将anchor-based的RPNs with FPN替换成FCOS,能够显著提高

Class-agnostic Precision-recall Curves

Visualization for Center-ness

CONCLUSION

论文提出anchor-free和proposal-free的one-stage的目标检测算法FCOS,不再需要anchor相关的的超参数,在目前流行的逐像素(per-pixel)预测方法上进行目标检测,根据实验结果来看,FCOS能够与主流的检测算法相比较,达到SOTA,为后面的大热的anchor-free方法提供了很好的参考

如果本文对你有帮助,麻烦点个赞或在看呗~

更多内容请关注 微信公众号【晓飞的算法工程笔记】

work-life balance.

onestage方法_FCOS : 找到诀窍了,anchor-free的one-stage目标检测算法也可以很准 | ICCV 2019...相关推荐

  1. (20)目标检测算法之YOLOv5计算预选框、详解anchor计算

    目标检测算法之YOLOv5计算预选框.详解anchor计算 单节段目标检测算法中:预选框的设定直接影响最终的检测精度 众所周知,yolov5中采用自适应调整预选框anchor的大小,但万事开头难,配置 ...

  2. 目标检测算法综述—— One-Stage方法

    目录 1.概述 2.目标检测算法 2.1.SSD 2.2.DSSD 2.3.YOLO V1 2.4.YOLO V2 2.5.YOLO V3 2.6.RetinaNet 研究背景 主要贡献 二分类的交叉 ...

  3. 目标检测算法横向比较,包括backbone、特征融合、loss、proposal/anchor/heatmap、NMS、正负样本设置等

    目标检测算法发展移步:目标检测算法 本文从算法改进的方向,进行横向比较,包括backbone,特征融合.loss.proposal/anchor/heatmap.NMS.正负样本设置等 Referen ...

  4. 目标检测算法——anchor free

    一.anchor free 概述 1.先要知道anchor 是什么(这需要先了解二阶段如faster rcnn,一阶检测器如YOLO V2以后或SSD等). 在过去,目标检测通常被建模为对候选框的分类 ...

  5. 地平线机器人提出Anchor free、NMS free的3D目标检测算法 | CVPR2020 Workshop

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 这是一篇由地平线机器人发表在CVPR2020 Workshop的文章,主要是将Anchor Free的 ...

  6. 推荐CVer的总结 | 性能最强的One-stage目标检测算法

    前言 2019.07.07,CVer 曾推出一篇:大盘点 | 性能最强的目标检测算法,大家对此反映很好,还有很多同学私信要盘点 FPS 最快的目标检测算法. 要知道衡量目标检测最重要的两个性能就是 精 ...

  7. 基于神经网络的目标检测论文之目标检测方法:改进的SSD目标检测算法

    4.2 改进的SSD 上一章我们了解到,物体识别检测算法是在传统CNN算法基础上加上目标区域建议策略和边框回归算法得到的.前辈们的工作主要体现在目标区域建议的改进策略上,从最开始的穷举建议框,到划分图 ...

  8. 目标检测算法回顾之Anchor free篇章

    基于anchor free的目标检测方法 (一)背景与定义 1.1 anchor-based的特征 1.2 anchor的好处? 1.3 anchor的局限? 1.4 anchor-free 与anc ...

  9. 抛弃Anchor box和NMS,目标检测新范式开源:Sparse R-CNN

    点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要10分钟 Follow小博主,每天更新前沿干货 作者丨孙培泽@知乎 来源丨https://zhuanlan.zhihu.com/p/31005 ...

最新文章

  1. 一起谈.NET技术,微软PDC10:大牛谈ASP.NET和C#技术走向
  2. docker ps 只显示容器名称 显示列名
  3. 在应用了皮肤的程序中制作透明的文本编辑控件(如:TcxMemo)
  4. java高并发(十三)并发容器J.U.C--AQS
  5. sql 某字段存储另一个表的多个id值并以逗号分隔,现根据id去中文并拼接同样以逗号分隔...
  6. 【Python】处理 from sklearn.externals import joblib 报错问题
  7. leetcode —— 33. 搜索旋转排序数组
  8. Linux下yum命令详解
  9. 【Deep Learning 五】课程二(mproving Deep Neural Networks),第一周(Setting up your Machine Learning Applicat)答案
  10. java spring 事务_java 事务与spring 声明式事务
  11. 英伟达有魔力,Uber小心翼翼 | 跟着开复去硅谷Day1
  12. 打造了一把安全的锁,不料把自己也锁在了里面
  13. notepad正则提取
  14. IFC最新标准 IFC4X3 RC2 和 IFC4X3 RC4 特点
  15. 计算机专业毕业祝福语,大学毕业生祝福语
  16. 禅道项目管理软件测试功能模块,禅道使用分享:禅道用例管理流程
  17. 零基础做一个微信答题小程序(二)
  18. matplotlib绘制两个图形及网格、透明度、图例、颜色等
  19. 【Android】自定义View的位置参数
  20. python输入生日输出星座_python输入日期输出星座?

热门文章

  1. “三行代码,确实需要耗上一整天”
  2. iOS 跨平台开发,该用 Flutter 还是 Swift?
  3. ​苹果官网出现价格Bug:千元产品变百元;阿里云量子模拟平台“太章2.0”正式开源;Vant 3.0发布|极客头条...
  4. 魅族回应 “暗中给手机植入木马”;前谷歌AI伦理专家遭解雇或因论文;GoLand 2020.3发布|极客头条...
  5. 华为 ICT 助力智能车,钢铁侠小鹏隔空喊话,Car OS 年终大盘点
  6. 张勇云栖连讲三年,阿里云十年一剑,王者归来
  7. 来点干货 | Android 常见内存泄漏与优化(二)
  8. 如何让 PPT 像 PyeCharts 一样炫酷?
  9. 2020年,5 种 将死的编程语言!
  10. 离职113天后,微软的“中国先生”沈向洋云受聘清华大学教授