FPN-Feature Pyramid Networks for Object Detection
FPN-Feature Pyramid Networks for Object Detection
标签(空格分隔): 深度学习 目标检测
这次学习的论文是FPN,是关于解决多尺度问题的一篇论文。记录下论文笔记,欢迎交流。转载请注明网址:http://www.cnblogs.com/alanma/p/6884121.html
动机:
特征金字塔是多尺度目标检测系统的一个基本组成部分。但是,在最近的深度学习目标检测上,考虑到特征金字塔花费的计算和存储代价,都选择避免使用特征金字塔。问题的关键是寻找特征金字塔对多尺度问题带来的准确率和代价的trade-off,这也就是这篇文章的研究目的。
整体思想:
因为深度卷积神经网络具有内在的多尺度性质(池化带来的不同size的feature map),网络由浅即深,分辨率越来越粗糙,但是语义信息越来越丰富。相似的思想利用在FCN的skip layer。要识别多尺度的目标,也需要利用不同level的feature map。作者利用了这种内在多尺度性质,设计出FPN。结构如下图:


到这,应该已经了解了FPN基本思想,就是想利用不同level的feature map预测不同尺度的目标。尺寸小的物体因不断的池化会在较深的层消失,所以利用浅层检测小目标,但是浅层不如深层具备丰富的语义特征,所以还需要浅层融合深层的特征。
总结来说,FPN = top-down的融合(skip layer) + 在金字塔各层进行prediction。
这部分比较FPN和其他多尺度方法,说明为什么FPN代价较小
下面是对比图:

图(a)是相当常见的一种多尺度方法,称为featurized image pyramid,这种方法在较早的人工设计特征(DPM)时被广泛使用,在CNN中也有人使用过。就是对input iamge进行multi scale,通过设置不同的缩放比例实现。这种可以解决多尺度,但是相当于训练了多个模型(假设要求输入大小固定),即便允许输入大小不固定,但是也增加了存储不同scale图像的内存空间。
图(b)就是CNN了,cnn相比人工设计特征,能够自己学习到更高级的语义特征,同时CNN对尺度变化鲁棒,因此如图,从单个尺度的输入计算的特征也能用来识别,但是遇到明显的多尺度目标检测时,还是需要金字塔结构来进一步提升准确率。
从现在在imageNet和COCO数据集上领先的的一些方法来看,在测试的时候都用到了featurized image pyramid方法,即结合(a),(b)。 说明了特征化图像金字塔的每一级的好处在于,产生了多尺度的特征表示,每一级的特征都有很强的语义(因为都用cnn生成的特征),包括高分辨率的一级(最大尺度的输入图像)。
但是这种模式有明显的弊端,相比于原来方法,时间增长了4倍,很难在实时应用中使用,同样,也增大了存储代价,这就是为什么只是在测试阶段使用image pyramid。但是如果只在测试阶段使用,那么训练和测试在推断的时候会不一致。所以,最近的一些方法干脆舍弃了image pyramid。
但是image pyramid不是计算多尺度特征表示的唯一方法。deepCNN能够层次化的特征,而且因为池化的作用,会产生金字塔形的特征,具有一种内在的多尺度。但是问题在于,高分辨率的map(浅层)具有low-level的特征,所以浅层的目标识别性能较弱。这也是不同level融合的目的。
如图(c),SSD较早尝试了使用CNN金字塔形的层级特征。理想情况下,SSD风格的金字塔 重利用了前向过程计算出的来自多层的多尺度特征图,因此这种形式是不消耗额外的资源的。但是SSD为了避免使用low-level的特征,放弃了浅层的feature map,而是从conv4_3开始建立金字塔,而且加入了一些新的层。因此SSD放弃了重利用更高分辨率的feature map,但是这些feature map对检测小目标非常重要。这就是SSD与FPN的区别。
图(4)是FPN的结构,FPN是为了自然地利用CNN层级特征的金字塔形式,同时生成在所有尺度上都具有强语义信息的特征金字塔。所以FPN的结构设计了top-down结构和横向连接,以此融合具有高分辨率的浅层layer和具有丰富语义信息的深层layer。这样就实现了从单尺度的单张输入图像,快速构建在所有尺度上都具有强语义信息的特征金字塔,同时不产生明显的代价。
FPN与FCN的区别:
FPN在金字塔的所有层都进行prediction。FCN同样进行了融合,但是最后是在单个层进行的prediction。
精度和速度:FPN作为一个通用的特征提取器,可以放入到其他网络中,实验展示了FPN带来的明显提升。FPN+faster r-cnn在coco数据集检测任务中碾压了所有现有的单模型方法。同时FPN+faster r-cnn的检测速度为5fps,因此也是一种可以实用的方法。
代码:作者还没放出...
FPN在RPN和fast rcnn上的使用
- 任意尺度的输入(全卷积)。输出是多层,成比例的(池化步长)的feature map。主体网络结构可任意,如ResNet
- Bottom-up
排除conv1(考虑到内存),产生相同大小feature map尺寸的layer算做一个stage,其实就是以pool层为界。那特征金字塔的层的尺寸步长就是pool步长2。取每个stage的最后一层feature map作为特征金字塔的层,因为越深的层的特征语义信息越好。 - top-dowm和横向连接
就是执行融合过程。首先上层上采样2倍(最近邻上采样),浅层进行1x1的卷积保证两层的维度相同,最后进行相加进行融合,得到更具有语义信息的浅层。最后,特征金子塔的每一级都进行3x3的卷积,免除上采样产生的混叠效应。 - 最后,所有的特征金字塔的层都要确保通道数一致(d =256),因为它们最后在进行预测的时候,要共享最后的分类器(在RPN和fast rcnn中,共享了box的分类器和box的回归器)。
- RPN:因为特征金字塔的不同层已经代表着不同的尺度,所以在产生anchor的时候,在特定层只考虑不同的形状比,而不考虑不同的scale。然后特征金字塔的所有层共享box分类器和回归器。
- Fast rcnn: fast rcnn就是一个基于区域的目标检测器。以往它的输入是单尺度的。现在考虑FPN多尺度。因为我们可以将CNN的特征金字塔看成是来自于image pyramid.这个不难理解,因为CNN的每层对应不同大小的感受野。那么多尺度需要将不同大小的roi,对应到特征金字塔的不同的层(因为我们要将CNN的特征金字塔看成是来自于image pyramid.)。论文给出了计算公式:

根据公式很容易理解,文章把224224大小的ROI对应到ResNet faster rcnn的C4, 如果有一个roi大小是224224的1/4,也就是更小的目标,应该对应到比C4更浅的层去。再根据池化的步长,很容易推测出对应到C3,那么检测112*112大小的roi,就到C3层检测。
同RPN一样,后面也共用box分类器和box回归器。
FPN-Feature Pyramid Networks for Object Detection的更多相关文章
- Feature Pyramid Networks for Object Detection比较FPN、UNet、Conv-Deconv
https://vitalab.github.io/deep-learning/2017/04/04/feature-pyramid-network.html Feature Pyramid Netw ...
- 『计算机视觉』FPN:feature pyramid networks for object detection
对用卷积神经网络进行目标检测方法的一种改进,通过提取多尺度的特征信息进行融合,进而提高目标检测的精度,特别是在小物体检测上的精度.FPN是ResNet或DenseNet等通用特征提取网络的附加组件,可 ...
- 【Network Architecture】Feature Pyramid Networks for Object Detection(FPN)论文解析(转)
目录 0. 前言 1. 博客一 2.. 博客二 0. 前言 这篇论文提出了一种新的特征融合方式来解决多尺度问题, 感觉挺有创新性的, 如果需要与其他网络进行拼接,还是需要再回到原文看一下细节.这里 ...
- Feature Pyramid Networks for Object Detection
Feature Pyramid Networks for Object Detection 特征金字塔网络用于目标检测 论文地址:https://arxiv.org/pdf/1612.03144.pd ...
- 论文阅读笔记三十三:Feature Pyramid Networks for Object Detection(FPN CVPR 2017)
论文源址:https://arxiv.org/abs/1612.03144 代码:https://github.com/jwyang/fpn.pytorch 摘要 特征金字塔是用于不同尺寸目标检测中的 ...
- 论文阅读 | FPN:Feature Pyramid Networks for Object Detection
论文地址:https://arxiv.org/pdf/1612.03144v2.pdf 代码地址:https://github.com/unsky/FPN 概述 FPN是FAIR发表在CVPR 201 ...
- FPN(feature pyramid networks)
多尺度的object detection算法:FPN(feature pyramid networks). 原来多数的object detection算法都是只采用顶层特征做预测,但我们知道低层的特征 ...
- Parallel Feature Pyramid Network for Object Detection
Parallel Feature Pyramid Network for Object Detection ECCV2018 总结: 文章借鉴了SPP的思想并通过MSCA(multi-scale co ...
- Paper Reading: Relation Networks for Object Detection
Relation Networks for Object Detection笔记 写在前面:关于这篇论文的背景知识,请参考我前面的两篇随笔(<关于目标检测>和<关于注意力机制> ...
随机推荐
- Debug时含有的子元素,在代码里获取不到的问题
比如,Debug时如下图展示: 我想要获取的是:ansList.get(i).getComponent().getConnectorId() debug时明明有这个元素,但是当我写出来的时候却发现:a ...
- Centos7下Zabbix3.4至Zabbix4.0的升级步骤
点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 Centos7下Zabbix3.4至Zabbix4.0的升级步骤 查看现在centos版本和zab ...
- 【BZOJ3879】SvT(后缀自动机,虚树)
[BZOJ3879]SvT(后缀自动机,虚树) 题面 BZOJ 题解 看着这个东西,询问若干个前缀两两之间的\(lcp\)? 显然\(lcp\)就是\(SAM\)构建出来的\(parent\)数上的\ ...
- 爬楼梯问题 leetcode70
假设你正在爬楼梯,需要n阶你才能到达楼顶,n是正整数 每次你可以爬1或2个台阶,有多少种不同的方法可以爬到楼顶 当n=1时,steps=1 当n=2时,1+1,2 steps=2 当n=3时,1+1+ ...
- yiming
关于双城 专家团队 总裁专栏 双城荣誉 诚聘英才 双城著作移民服务 移民专题 移民专刊 移民百科 成功案例 联系我们 澳大利亚 匈牙利 美国 加拿大 欧洲 瓦努阿图 双城集团 双城地产 君益诚 ...
- ReactNative组件之scrollView实现轮播
想要实现轮播效果,首先安装时间定时器 接下来就是在我们的项目中使用定时器 接下来我们将竖着的轮播图变成横着的 接下来我们调整间距 我们知道轮播图下方,还有5个圆点,那我们怎么做呢? 拿到每一个圆点 看 ...
- Python数据挖掘课程
[Python数据挖掘课程]一.安装Python及爬虫入门介绍[Python数据挖掘课程]二.Kmeans聚类数据分析及Anaconda介绍[Python数据挖掘课程]三.Kmeans聚类代码实现.作 ...
- 2018.7中石油个人赛第4场(D-Transit Tree Path)-最短路算法
6690: Transit Tree Path 时间限制: 1 Sec 内存限制: 128 MB提交: 472 解决: 132[提交] [状态] [讨论版] [命题人:admin] 题目描述 Yo ...
- Redis集群中的节点如何保证数据一致
主从复制: 1.redis的复制功能是支持多个数据库之间的数据同步.一类是主数据库(master)一类是从数据库(slave),主数据库可以进行读写操作,当发生写操作的时候自动将数据同步到从数据库,而 ...
- SQL Server 关于CROSS APPLY 和 OUTER APPLY应用
先看看语法: <left_table_expression> {cross|outer} apply<right_table_expression> 再让我们了解一下appl ...