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笔记 写在前面:关于这篇论文的背景知识,请参考我前面的两篇随笔(<关于目标检测>和<关于注意力机制> ...
随机推荐
- javascript 闭包内部机制
在初学JavaScript函数式编程的时候,经常会出现令人出乎意料的结果,而原因,大都是由于不理解JavaScript闭包引起的:理解JavaScript的闭包,可以从JavaScript的闭包内部机 ...
- 搜索Ex
哎呀好几天没写POI题解了 (>﹏<) 看着摇曳不定的小旗子深深惶恐 打算开始肝洛谷试炼场的提高分区了[对我就是这么菜… 搜索Ex 比暴搜不错得多的题 洛谷P1514 引水入城 拆成两问来 ...
- android-support-v4.jar 免积分下载
资源名称:android扩展插件 android-support-v4.jar 资源大小:137KB 上传日期:2012-10-08 资源积分:1 下载次数:136 电信下载地址:http://www ...
- android progressdialog 对话框试用实例
ProgressDialog 跟AlertDialog用法差不多,不同的是:ProgressDialog 显示的是一种"加载中"的效果,android 中 ProgressDial ...
- 【ARC102E】Stop. Otherwise...(容斥原理,动态规划)
[ARC102E]Stop. Otherwise...(容斥原理,动态规划) 题面 AtCoder 有\(n\)个骰子,每个骰子有\(K\)个面,上面有\(1\)到\(K\).骰子都是一样的. 现在对 ...
- 洛谷 P1613 跑路 解题报告
P1613 跑路 题目描述 小\(A\)的工作不仅繁琐,更有苛刻的规定,要求小\(A\)每天早上在\(6:00\)之前到达公司,否则这个月工资清零.可是小\(A\)偏偏又有赖床的坏毛病.于是为了保住自 ...
- Android手势监听类GestureDetector的使用
在使用自定义视图的时候,对触屏事件的处理是比不可少的,有能力的可以自己写代码处理,这样更加的灵活.如果不想这么麻烦,Android提供了一个手势监听类GestureDetector,可以供我们使用.G ...
- centos6.5修改主机名
centos 修改主机名 0.说明 系统安装后,系统默认的主机名称是localhost,现在想要修改为master.操作需要root权限. 1.方案一:仅当前登录有效,重启后失效 直接在命令行执行命令 ...
- HDU 1176 免费馅饼 (动态规划)
HDU 1176 免费馅饼 (动态规划) Description 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy的人品实在是太好了,这馅饼 ...
- 【HDU3085】nightmare2 双向BFS
对于搜索树分支很多且有明确起点和终点的情况时,可以采用双向搜索来减小搜索树的大小. 对于双向BFS来说,与单向最大的不同是双向BFS需要按层扩展,表示可能到达的区域.而单向BFS则是按照单个节点进行扩 ...