onestage方法_FCOS : 找到诀窍了,anchor-free的one-stage目标检测算法也可以很准 | ICCV 2019...
论文提出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...相关推荐
- (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
目标检测算法之YOLOv5计算预选框.详解anchor计算 单节段目标检测算法中:预选框的设定直接影响最终的检测精度 众所周知,yolov5中采用自适应调整预选框anchor的大小,但万事开头难,配置 ...
- 目标检测算法综述—— 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 研究背景 主要贡献 二分类的交叉 ...
- 目标检测算法横向比较,包括backbone、特征融合、loss、proposal/anchor/heatmap、NMS、正负样本设置等
目标检测算法发展移步:目标检测算法 本文从算法改进的方向,进行横向比较,包括backbone,特征融合.loss.proposal/anchor/heatmap.NMS.正负样本设置等 Referen ...
- 目标检测算法——anchor free
一.anchor free 概述 1.先要知道anchor 是什么(这需要先了解二阶段如faster rcnn,一阶检测器如YOLO V2以后或SSD等). 在过去,目标检测通常被建模为对候选框的分类 ...
- 地平线机器人提出Anchor free、NMS free的3D目标检测算法 | CVPR2020 Workshop
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 这是一篇由地平线机器人发表在CVPR2020 Workshop的文章,主要是将Anchor Free的 ...
- 推荐CVer的总结 | 性能最强的One-stage目标检测算法
前言 2019.07.07,CVer 曾推出一篇:大盘点 | 性能最强的目标检测算法,大家对此反映很好,还有很多同学私信要盘点 FPS 最快的目标检测算法. 要知道衡量目标检测最重要的两个性能就是 精 ...
- 基于神经网络的目标检测论文之目标检测方法:改进的SSD目标检测算法
4.2 改进的SSD 上一章我们了解到,物体识别检测算法是在传统CNN算法基础上加上目标区域建议策略和边框回归算法得到的.前辈们的工作主要体现在目标区域建议的改进策略上,从最开始的穷举建议框,到划分图 ...
- 目标检测算法回顾之Anchor free篇章
基于anchor free的目标检测方法 (一)背景与定义 1.1 anchor-based的特征 1.2 anchor的好处? 1.3 anchor的局限? 1.4 anchor-free 与anc ...
- 抛弃Anchor box和NMS,目标检测新范式开源:Sparse R-CNN
点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要10分钟 Follow小博主,每天更新前沿干货 作者丨孙培泽@知乎 来源丨https://zhuanlan.zhihu.com/p/31005 ...
最新文章
- 一起谈.NET技术,微软PDC10:大牛谈ASP.NET和C#技术走向
- docker ps 只显示容器名称 显示列名
- 在应用了皮肤的程序中制作透明的文本编辑控件(如:TcxMemo)
- java高并发(十三)并发容器J.U.C--AQS
- sql 某字段存储另一个表的多个id值并以逗号分隔,现根据id去中文并拼接同样以逗号分隔...
- 【Python】处理 from sklearn.externals import joblib 报错问题
- leetcode —— 33. 搜索旋转排序数组
- Linux下yum命令详解
- 【Deep Learning 五】课程二(mproving Deep Neural Networks),第一周(Setting up your Machine Learning Applicat)答案
- java spring 事务_java 事务与spring 声明式事务
- 英伟达有魔力,Uber小心翼翼 | 跟着开复去硅谷Day1
- 打造了一把安全的锁,不料把自己也锁在了里面
- notepad正则提取
- IFC最新标准 IFC4X3 RC2 和 IFC4X3 RC4 特点
- 计算机专业毕业祝福语,大学毕业生祝福语
- 禅道项目管理软件测试功能模块,禅道使用分享:禅道用例管理流程
- 零基础做一个微信答题小程序(二)
- matplotlib绘制两个图形及网格、透明度、图例、颜色等
- 【Android】自定义View的位置参数
- python输入生日输出星座_python输入日期输出星座?
热门文章
- “三行代码,确实需要耗上一整天”
- iOS 跨平台开发,该用 Flutter 还是 Swift?
- ​苹果官网出现价格Bug:千元产品变百元;阿里云量子模拟平台“太章2.0”正式开源;Vant 3.0发布|极客头条...
- 魅族回应 “暗中给手机植入木马”;前谷歌AI伦理专家遭解雇或因论文;GoLand 2020.3发布|极客头条...
- 华为 ICT 助力智能车,钢铁侠小鹏隔空喊话,Car OS 年终大盘点
- 张勇云栖连讲三年,阿里云十年一剑,王者归来
- 来点干货 | Android 常见内存泄漏与优化(二)
- 如何让 PPT 像 PyeCharts 一样炫酷?
- 2020年,5 种 将死的编程语言!
- 离职113天后,微软的“中国先生”沈向洋云受聘清华大学教授