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笔记 写在前面:关于这篇论文的背景知识,请参考我前面的两篇随笔(<关于目标检测>和<关于注意力机制> ...
随机推荐
- ajax 提交数组 泛型集合(二)
最近在项目中,使用 mvc架构,model层使用code first 碰见一个问题,前台json传递数据给后台action的复杂对象,发现复杂对象中的list范型集合并没有获取到数据. 研究半天,终于 ...
- Spring的编程式事务和声明式事务
事务管理对于企业应用来说是至关重要的,当出现异常情况时,它也可以保证数据的一致性. Spring事务管理的两种方式 spring支持编程式事务管理和声明式事务管理两种方式. 编程式事务使用Transa ...
- MT【213】二次曲线系方程
(2013北大夏令营)函数$y=x^2+ax+b$与坐标轴交于三个不同的点$A,B,C$,已知$\Delta ABC$的外心$P$在$y=x$上,求$a+b$的值. 解:由二次曲线系知识知三角形的外接 ...
- 自学Zabbix3.11-宏Macros
点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix3.11-宏Macros zabbix宏变量让zabbix变得更灵活,它根据一系列 ...
- BZOJ5298 [CQOI2018] 交错序列 | 矩阵乘法和一个trick
题面 求所有长度为\(n\)的.没有相邻的1的01序列中,若0有\(x\)个.1有\(y\)个,\(x^ay^b\)之和(对\(m\)取模). \(n \le 10^7, m \le 10^8, 0 ...
- [USACO 2018 Open Contest]作业总结
t1-Out of Sorts 题目大意 将最大的数冒泡排序到最后需要多少次操作. 分析 排序后判断距离. ac代码 #include<bits/stdc++.h> #define N 1 ...
- JNative 传递参数bug
下载JNative网址:http://sourceforge.net/projects/jnative/files/jnative/ 下载JNative版本:JNative_1.4RC3_bin.zi ...
- Django + Uwsgi +Nginx生产环境部署
python manage.py runserver 0.0.0.0:80 ,一定不要用这个轻量级Server作为你的生产环境下的Server,因为它只能用于开发自测阶段.它既没有安全审计功能,而且又 ...
- 压缩和解压缩文件tar, tar.gz and tar.bz2
1, 对于tar.gz 压缩:tar -zcvf archive-name.tar.gz directory-name 解压:tar -zxvf prog-1-jan-2005.tar.gz -C / ...
- 第二节,TensorFlow 使用前馈神经网络实现手写数字识别
一 感知器 感知器学习笔记:https://blog.csdn.net/liyuanbhu/article/details/51622695 感知器(Perceptron)是二分类的线性分类模型,其输 ...