Paper Reading:FPN
FPN
论文:Feature Pyramid Networks for Object Detection
发表时间:2017
发表作者:(Facebook AI Research)Tsung-Yi Lin, Piotr Dollar, Ross Girshick, Kaiming He, Bharath Hariharan, and Serge Belongie
发表刊物/会议:CVPR
论文链接:论文链接
论文代码:点击此处
Feature Pyramid Networks (FPN) 是比较早提出利用多尺度特征和 Top-Down 结构做目标检测的网络结构之一,虽然论文中整个网络是基于 Faster R-CNN 检测算法构建,但其整体思想可以广泛适用于目前常见的大部分目标检测算法甚至分类等的其他任务中。
整体来讲, FPN 解决的问题如下:只用网络高层特征去做检测,虽然语义信息比较丰富,但是经过层层pooling等操作,特征丢失太多细节信息,对于小目标检测这些信息往往是比较重要的。所以,作者想要将语义信息充分的高层特征映射回分辨率较大、细节信息充分的底层特征,将二者以合适的方式融合来提升小目标的检测效果。
特征金字塔
FPN算法为了解决多尺度检测的问题,引入了特征金字塔网络。FPN的结构设计了top-down结构和横向连接,以此融合具有高分辨率的浅层layer和具有丰富语义信息的深层layer。这样就实现了从单尺度的单张输入图像,快速构建在所有尺度上都具有强语义信息的特征金字塔,同时不产生明显的代价。
上图中作者首先介绍了四种常见的特征利用的方式,这里我们一一说明。图中a部分展示了利用图像特征金字塔的方式做预测的方法,即通过将预测图片变换为不同尺寸的图片输入网络,得到不同尺寸的特征进行预测。这种方法行之有效,可以提升对各个尺寸目标的检测效果。但应用于类似于 Faster R-CNN 这样的网络,迫于速度和显存的压力,端对端的训练难以实现。通常这种方法只应用于网络预测的阶段。
图中 b 部分展示的方法为利用单一尺度图片的最高层信息进行预测的方法,是平时最广泛被使用的一种方法,简单高效。但是缺点是由于尺度单一,应对多尺度的目标效果受限。
图中 c 部分展示了利用特征金字塔来做预测的方法。即采用不同尺寸不同深度的特征层分别进行预测,每层的感受野和特征信息的丰富程度都不一样,对不同尺寸的目标响应也有所区别。其中高层特征更适合用于检测大目标,而低层特征细节信息更加丰富,感受野也偏小,更适合用于检测小目标。我们经常使用的 SSD 检测算法即使用了这种思路。该方法的缺点是低层的特征信息因为层数较浅,语义信息不太丰富,所以小目标的检测效果仍然不尽如人意。
图中 d 部分即为 FPN 的解决方案,利用 Top-Down 结构,融合了高层和底层的特征信息,使得底层的语义信息仍然很丰富的同时保持较大的分辨率,提升小物体的检测效果。
总结
- 特征图片金字塔:产生了多尺度特征表示,但是花费大量的时间,不适合实际应用
- 单一特征映射:只有高层的特征信息,会导致小尺寸的目标物被忽视,从而会造成检测小物体的性能急剧下降。
- 金字塔特征分层:让不同深度的特征图去学习同样的语义信息,同样会忽略掉底层网络中的细节特征。
- 特征金字塔:FPN主要解决的是物体检测中的多尺度问题,通过简单的网络连接改变,在基本不增加原有模型计算量的情况下,大幅度提升了小物体检测的性能
上图 展示了 FPN 网络的特征融合方式,其中高层特征通过最近邻差值的方式增大两倍的尺寸,而底层的特征经过一个 $11$ 的卷积做降维操作,这两层特征分别作像素级的相加完成融合。融合之后的特征可以经过一个 $33$ 的卷积层之后输入用来预测,也可以再重复上面的操作,和更低层的特征进行融合。
把更抽象,语义更强的高层特征图进行上取样,然后把该特征横向连接(lateral connections )至前一层特征,因此高层特征得到加强。值得注意的是,横向连接的两层特征在空间尺寸上要相同。这样做应该主要是为了利用底层的定位细节信息。
把高层特征做2倍上采样(最邻近上采样法,可以参考反卷积),然后将其和对应的前一层特征结合(前一层要经过1 * 1的卷积核才能用,目的是改变channels,应该是要和后一层的channels相同),结合方式就是做像素间的加法。重复迭代该过程,直至生成最精细的特征图。迭代开始阶段,作者在C5层后面加了一个1 * 1的卷积核来产生最粗略的特征图,最后,作者用3 * 3的卷积核去处理已经融合的特征图(为了消除上采样的混叠效应),以生成最后需要的特征图。为了后面的应用能够在所有层级共享分类层,这里坐着固定了3*3卷积后的输出通道为d,这里设为256.因此所有额外的卷积层(比如P2)具有256通道输出。这些额外层没有用非线性。
应用
本文方法在理论上在CNN中是通用的,作者将其首先应用到了RPN和Fast R-CNN中,应用中尽量做小幅度的修改。
在 RPN 中,区别于原论文直接在最后的 feature map 上设置不同尺度和比例的 anchor,由于头部在所有金字塔等级的所有位置上密集滑动,因此没有必要在每个特征级别上设置多尺度anchor。 本文的尺度信息对应于相应的 feature map(分别设置面积为 32×32,64×64, 128×128, 256×256, 512×512),比例用类似于原来的方式设置 {1:2, 1:1, 2:1} 三种,所以在金字塔上总共有15个anchor。与 RPN 一样,FPN 每层 feature map 加入 3x3 的卷积及两个相邻的 1x1 卷积分别做分类和回归的预测。在 RPN 中,实验对比了 FPN 不同层 feature map 卷积参数共享与否,发现共享仍然能达到很好性能,说明特征金字塔使得不同层学到了相同层次的语义特征。
训练中,把重叠率(IoU)高于0.7的作为正样本,低于0.3的作为负样本。特征金字塔网路之间有参数共享,其优秀表现使得所有层级具有相似的语义信息。具体性能在实验中评估。
在 Fast R-CNN 中, 要将它与FPN一起使用,需要将不同比例的RoI分配给金字塔等级。 将特征金字塔视为从图像金字塔生成,可以调整基于区域的检测器的分配策略,以便在图像金字塔上运行。在形式上,通过以下方式将宽度为w且高度为h(在图像网络上)的RoI分配到特征金字塔的等级$P_k$上:
算法结构如下:
- 首先,选择一张需要处理的图片,然后对该图片进行预处理操作;
- 然后,将处理过的图片送入预训练的特征网络中(如ResNet等),即构建所谓的bottom-up网络;
- 接着,如图所示,构建对应的top-down网络(即对层4进行上采样操作,先用1x1的卷积对层2进行降维处理,然后将两者相加(对应元素相加),最后进行3x3的卷积操作,最后);
- 接着,在图中的4、5、6层上面分别进行RPN操作,即一个3x3的卷积后面分两路,分别连接一个1x1的卷积用来进行分类和回归操作;
- 接着,将上一步获得的候选ROI分别输入到4、5、6层上面分别进行ROI Pool操作(固定为7x7的特征);
- 最后,在上一步的基础上面连接两个1024层的全连接网络层,然后分两个支路,连接对应的分类层和回归层;
下图展示了各个算法在 COCO 数据集上的对比。
参考:
FPN
Paper Reading:FPN的更多相关文章
- Paper Reading: Stereo DSO
开篇第一篇就写一个paper reading吧,用markdown+vim写东西切换中英文挺麻烦的,有些就偷懒都用英文写了. Stereo DSO: Large-Scale Direct Sparse ...
- [Paper Reading]--Exploiting Relevance Feedback in Knowledge Graph
<Exploiting Relevance Feedback in Knowledge Graph> Publication: KDD 2015 Authors: Yu Su, Sheng ...
- Paper Reading: Perceptual Generative Adversarial Networks for Small Object Detection
Perceptual Generative Adversarial Networks for Small Object Detection 2017-07-11 19:47:46 CVPR 20 ...
- Paper Reading: In Defense of the Triplet Loss for Person Re-Identification
In Defense of the Triplet Loss for Person Re-Identification 2017-07-02 14:04:20 This blog comes ...
- Paper Reading - Attention Is All You Need ( NIPS 2017 ) ★
Link of the Paper: https://arxiv.org/abs/1706.03762 Motivation: The inherently sequential nature of ...
- Paper Reading - Convolutional Sequence to Sequence Learning ( CoRR 2017 ) ★
Link of the Paper: https://arxiv.org/abs/1705.03122 Motivation: Compared to recurrent layers, convol ...
- Paper Reading - Deep Captioning with Multimodal Recurrent Neural Networks ( m-RNN ) ( ICLR 2015 ) ★
Link of the Paper: https://arxiv.org/pdf/1412.6632.pdf Main Points: The authors propose a multimodal ...
- Paper Reading - Deep Visual-Semantic Alignments for Generating Image Descriptions ( CVPR 2015 )
Link of the Paper: https://arxiv.org/abs/1412.2306 Main Points: An Alignment Model: Convolutional Ne ...
- Paper Reading - Mind’s Eye: A Recurrent Visual Representation for Image Caption Generation ( CVPR 2015 )
Link of the Paper: https://ieeexplore.ieee.org/document/7298856/ A Correlative Paper: Learning a Rec ...
随机推荐
- (CVE-2017-7269 ) IIS6.0实现远程控制
简介 IIS 6.0默认不开启WebDAV,一旦开启了WebDAV,安装了IIS6.0的服务器将可能受到该漏洞的威胁 利用条件 Windows 2003 R2开启WebDAV服务的IIS6.0 环境搭 ...
- 高级UI-Snackbar
在与用户的交互中,最为常用的Toast和Dialog,但二者都存在其局限,Toast无法与用户进行交互,Dialog虽然可以与用户交互,但却会阻断用户操作的连贯性,介于二者之间的平衡,Snackbar ...
- 【转】sql server迁移到mysql
SQL Server转换为MySQL工具,用了一下 感觉蛮不错的. 下载地址:https://www.jb51.net/softs/209207.html#downintro2 分享上来,同时也以便记 ...
- [转帖]为微软效力15年的微软前员工解释Windows 10为什么问题这么多
为微软效力15年的微软前员工解释Windows 10为什么问题这么多 https://www.cnbeta.com/articles/tech/892109.htm . 测试团队已经被裁撤 . 自动化 ...
- mssql sqlserver时间戳与时间格式互相转换的方法分享
转自: http://www.maomao365.com/?p=9336 摘要: 下文讲述mssql中时间戳和时间格式的转换方法,如下所示: 实验环境:sql server 2008 R2 时间戳简介 ...
- GFS(Google File System,谷歌文件系统)----(1)文件系统简介
分布式文件系统 系统是构建在普通的.廉价的机器上,因此故障是常态而不是意外 系统希望存储的是大量的大型文件(单个文件size很大) 系统支持两种类型读操作:大量的顺序读取以及小规模的随机读取(larg ...
- java源码--Map
Map接口 用于保存具有映射关系的数据结构,实现该接口的类可以通过键来获取对应的值.. 可以将给定一个键值对存储在Map接口的实现类实例中,如:map.put("key", &qu ...
- 【C++札记】指针函数与函数指针
指针函数 指针函数是一个函数,只不过指针函数返回的类型是某一类型的指针. 格式: 类型名* 函数名(函数参数列表) 如下代码存在问题 void test(char *p) { p = (char*)m ...
- Python列表排序方法reverse、sort、sorted详解
python语言中的列表排序方法有三个:reverse反转/倒序排序.sort正序排序.sorted可以获取排序后的列表.在更高级列表排序中,后两中方法还可以加入条件参数进行排序. reverse() ...
- RHadoop: REDUCE capability required is more than the supported max container capability in the cluster
I have not used RHadoop. However I've had a very similar problem on my cluster, and this problem see ...