1. 第一作者:Tsung-Yi Lin
2. 发表年份:2017
3. 发表期刊:CVPR
4. 关键词:CNN、金字塔网络、跳跃连接、目标检测
5. 探索动机:特征金字塔是识别系统中用于检测不同尺度目标的基本组件。为了处理小物体,经典的方式是采用图像金字塔在训练或测试阶段对图片进行多尺度变化增强,但是这样带来了极大的计算量。最近的深度学习目标检测器已经避免使用金字塔表示。
6. 工作目标:是否可以利用卷积网络的金字塔特征层级体系,实现更高效的特征提取网络?
7. 核心思想:我们利用深度卷积网络内在的多尺度、金字塔层级体系来构造具有很少成本的特征金字塔,具有横向连接的自顶向下的结构,用于在所有尺度上构建高级的语义特征图。FPN是一 种旨在提高准确率和速度的特征提取器。
8. 实现方法:对特征图进行不断的下采样后,拥有了四层具有高语义内容的特征层,然后重新进行2倍上采样,然后通过按元素相加,将上采样图与相应的自下而上的图(经过1×1卷积层减少通道维度)合并。迭代这个过程,直到生成最佳分辨率图。与长宽相同的特征层进行相加,这样可以保证检测到小目标的特征与信息。
9. 实验结果:对RPN方法和Fast/Faster RCNN方法都有极大的性能提升。另外,它的训练和测试时间和普通的Faster RCNN方法相差很小。因此,它可以作为图像特征金字塔的一种较好的替代。
10.论文&代码下载:
https://openaccess.thecvf.com/content_cvpr_2017/papers/Lin_Feature_Pyramid_Networks_CVPR_2017_paper.pdf
https://github.com/jwyang/fpn.pytorch
Feature Pyramid Networks for Object Detection
摘要
特征金字塔是识别系统中用于检测不同尺度目标的基本组件。但是最近的深度学习目标检测器已经避免使用金字塔表示,一部分原因是它们需要大量的计算和内存。在本文中,我们利用深度卷积网络内在的多尺度、金字塔层级体系来构造具有很少额外成本的特征金字塔。我们开发了一种具有横向连接的自顶向下的结构,用于在所有尺度上构建高级的语义特征图。这种称为特征金字塔网络(FPN)的结构在几个应用程序中作为通用特征提取器,表现出了显著的提高。在一个基本的Faster R-CNN系统中使用FPN,没有任何不必要的东西的情况下,我们的方法可以在COCO检测基准数据集上取得最好的单模型结果,结果超过了所有现有的单模型输入,包括COCO 2016挑战赛的获奖者。此外,我们的方法可以在GPU上以6FPS运行,因此对于多尺度目标检测是实用且准确的解决方案。代码将公开发布。
1. 介绍
识别不同尺度的目标是计算机视觉中的一个基本挑战。建立在图像金字塔之上的特征金字塔(我们简称为特征化图像金字塔)构成了标准解决方案的基础,图1(a)。这些金字塔是尺度不变的,因为目标的尺度变化是通过在金字塔中改变它的层级来抵消的。直观地说,该属性使模型能够通过在位置和金字塔层级上扫描模型来检测大范围尺度内的目标。
(a)使用图像金字塔构建特征金字塔。每个图像尺度上的特征都是独立计算的,速度很慢。(b)近期的检测系统选择只使用单一尺度特征进行更快的检测。(c)另一种方法是重复用ConvNet计算的金字塔特征层次结构,就好像它是一个特征化的图像金字塔。(d)我们提出的特征金字塔网络(FPN)与(b)和(c)类似,但更准确。在该图中,特征图用蓝色轮廓表示,较粗的轮廓表示语义上较强的特征。
特征化图像金字塔在人工设计的时代被大量使用。它们非常关键,以至于像DPM这样的目标检测器需要密集的尺度采样才能获得好的结果(例如每组10个尺度)。对于识别任务,工程特征大部分已经被深度卷积网络(ConvNets)计算的特征所取代。除了能够表示更高级的语义,ConvNets对于尺度变化也更加鲁棒,从而有助于从单一输入尺度上计算的特征上进行识别(图1(b))。但即使有这种鲁棒性,金字塔仍然需要得到最准确的结果。在ImageNet和COCO检测挑战中,最近所有排名靠前的输入都使用了针对特征化图像金字塔的多尺度测试(例如[16,35])。对图像金字塔的每层进行特征化的主要优势在于它产生了多尺度的特征表示,所有层次上在语义上都很强,包括高分辨率层。
尽管如此,特征化图像金字塔的每个层次都具有明显的局限性。推理时间显著增加(例如,四倍[11]),使得这种方法在实际应用中不切实际。此外,利用图像金字塔训练端到端的深度网络,在内存方面也是不可行的,所以如果被采用,图像金字塔仅在测试时被使用,这造成了训练/测试时推理的不一致性。出于这些原因,Fast和Faster R-CNN选择在默认设置下不使用特征化图像金字塔。
但是,图像金字塔并不是计算多尺度特征表示的唯一方法。深层ConvNet逐层计算特征层级,而对于下采样层,特征层级具有内在的多尺度金字塔形状。这种内在的网络特征层级产生不同空间分辨率的特征图,但引入了由不同深度引起的较大的语义差异。高分辨率图具有损害其目标识别的表示能力的低级特征。
单次检测器(SSD)是首先尝试使用ConvNet的金字塔特征层级中的一个,它像是一个特征化的图像金字塔(图1(c))。理想情况下,SSD风格的金字塔将重复用正向传递中从不同层中计算的多尺度特征图,因此是零成本的。但为了避免使用低级特征,SSD放弃重用已经计算好的图层,而从网络中的最高层开始构建金字塔(例如,VGG网络的conv4_3),然后添加几个新层。因此它错过了重用特征层级的更高分辨率图的机会。我们证明这些对于检测小目标很重要。
本文的目标是自然地利用ConvNet特征层级结构的金字塔形状,同时创建一个在所有尺度上都具有强大语义的特征金字塔。为了实现这个目标,我们所依赖的结构将低分辨率、强语义的特征与高分辨率、弱语义的特征通过自顶向下的路径和横向连接相结合。(图1(d))。结果是一个特征金字塔,在所有层次上都具有丰富的语义,并且可以从单个输入图像尺度上进行快速构建。换句话说,我们展示了如何创建网络中的特征金字塔,可以用来代替特征化的图像金字塔,而不牺牲表示能力、速度或内存。
最近的研究流行采用类似自顶向下和跳跃连接的结构。他们的目标是生成具有高分辨率的单个高层级特征图,并在其上进行预测(图2顶部)。相反,我们的方法利用这个结构作为特征金字塔,其中预测(例如目标检测)在每个层次上独立进行(图2底部)。我们的模型反映了一个特征化的图像金字塔,在这些研究中还没有探索过这种模型。
图2。顶部:带有跳跃连接的自顶向下的结构,在最好的层次上进行预测(例如,[28])。底部:我们的模型具有类似的结构,但将其用作特征金字塔,并在各个层次上独立进行预测。
我们评估了我们称为特征金字塔网络(FPN)的方法,在各种系统中用于检测和分割。没有任何不必要的东西,我们在具有挑战性的COCO检测基准数据集上公布了最新的单模型结果,仅仅基于FPN和基本的Faster R-CNN检测器,就超过了其他单模型结构的效果。在消融实验中,我们发现对于边界框提议,FPN将平均召回率(AR)显著增加了8个百分点;对于目标检测,它将COCO型的平均精度(AP)提高了2.3个百分点,PASCAL型AP提高了3.8个百分点,超过了ResNet上Faster R-CNN强大的单尺度基准线。我们的方法也很容易扩展掩模提议,改进实例分隔 AR,并且速度超过了依赖图像金字塔的最先进方法。
另外,我们的金字塔结构可以在所有尺度进行端到端训练,并且在训练/测试时使用一致,但在使用图像金字塔时是内存不够的。因此,FPN能够比所有现有的最先进的方法获得更高的精度。此外,这种改进是在不增加单尺度基准测试时间的情况下实现的。我们相信这些进展将有助于未来的研究和应用。我们的代码将公开发布。
2. 相关工作
人工设计特征和早期神经网络。SIFT特征最初是从尺度空间极值中提取的,用于特征点匹配。HOG特征,以及后来的SIFT特征,都是在整个图像金字塔上密集计算的。这些HOG和SIFT金字塔已在许多工作中得到了应用,用于图像分类,目标检测,人体姿势估计等。这对快速计算特征化图像金字塔也很有意义。Dollar等人通过先计算一个稀疏采样(尺度)金字塔,然后插入缺失的层级,从而演示了快速金字塔计算。在HOG和SIFT之前,ConvNets在人脸检测方面的早期工作计算了图像金字塔上的浅网络来跨尺度检测人脸。
Deep ConvNet目标检测器。随着现代深度卷积网络的发展,像OverFeat和R-CNN这样的目标检测器在精度上显示出了显著的提高。OverFeat采用了一种类似于早期神经网络人脸检测器的策略,通过在图像金字塔上应用ConvNet作为滑动窗口检测器。R-CNN采用了基于区域提议的策略,其中每个提议在用ConvNet进行分类之前都进行了尺度归一化。SPPnet表明,这种基于区域的检测器可以更有效地应用于在单个图像尺度上提取的特征图。最近更准确的检测方法,如Fast R-CNN和Faster R-CNN提倡使用从单一尺度计算出的特征,因为它提供了精确度和速度之间的良好折衷。然而,多尺度检测性能更好,特别是对于小目标的检测。
使用多层的方法。最近的一些方法通过使用ConvNet中的不同层来改进检测和分割。FCN将多个尺度上的每个类别的部分分数相加以计算语义分割。Hypercolumns使用类似的方法进行目标实例分割。在计算预测之前,其他几种方法(HyperNet,ParseNet和ION)将多个层的特征连接起来,这相当于累加转换后的特征。SSD和MS-CNN可预测特征层级中多个层的目标,而不需要组合特征或分数。
最近有一些方法利用横向/跳跃连接将跨分辨率和语义层次的低级特征图关联起来,包括用于分割的U-Net和SharpMask,Recombinator网络用于人脸检测以及堆叠沙漏网络用于关键点估计。Ghiasi等人为FCN提出拉普拉斯金字塔表示,以逐步细化分割。尽管这些方法采用的是金字塔形状的结构,但它们不同于特征化的图像金字塔,其中所有层次上的预测都是独立进行的,参见图2。事实上,对于图2(顶部)中的金字塔结构,图像金字塔仍然需要跨多个尺度上识别目标。
3. 特征金字塔网络
我们的目标是利用卷积网络的金字塔特征层级体系,该层级体系具有从低到高的语义,并在整个过程中构建具有高层级语义的特征金字塔。由此产生的特征金字塔网络是通用的,在本文中,我们聚焦于滑动窗口提议(Region Proposal Network,简称RPN)和基于区域的检测器(Fast R-CNN)。在第6节中我们还将FPN推广到实例分割。
我们的方法以任意大小的单尺度图像作为输入,并以全卷积的方式输出多层适当大小的特征图。这个过程独立于主干卷积结构(例如[19,36,16]),在本文中,我们呈现了使用ResNets的结果。如下所述,我们的金字塔结构包括自下而上的路径,自上而下的路径和横向连接。
自下而上的路径。自下向上的路径进行的是主干卷积网络的前馈计算,它计算一个特征层级体系,由尺度缩放比例为2的多个的尺度特征图组成。通常有许多层产生相同大小的输出图,并且我们认为这些层位于相同的网络阶段。对于我们的特征金字塔,我们为每个阶段定义一个金字塔层。我们选择每个阶段的最后一层的输出作为我们的特征图的参考集,我们将丰富它来创建我们的金字塔。这种选择是很自然的,因为每个阶段的最深层应具有最强大的特征。
具体而言,对于ResNets,我们使用每个阶段的最后一个残差块的特征激活输出。对于conv2,conv3,conv4和conv5输出,我们将这些最后残差块的输出表示为{C2, C3, C4, C5},并注意到相对于输入图像它们的步长为{4,8,16,32}个像素。由于庞大的内存占用,我们不会将conv1纳入金字塔。
自顶向下的路径和横向连接。自上而下的路径通过从更高的金字塔层次上采样在空间上更粗糙但语义更强的特征图,产生了更高分辨率的特征。通过横向连接自下而上路径的特征,这些特征得到增强。每个横向连接合并来自自下而上路径和自顶向下路径的具有相同空间大小的特征图。自下而上的特征图具有较低级别的语义,但由于它被下采样的次数更少,其激活可以更精确地定位。
图3. 构建块说明了横向连接和自顶向下的路径,通过加法合并。
图3说明了构建我们的自顶向下特征图的构建块。使用粗糙的分辨率的特征图,我们将空间分辨率进行2倍上采样(为了简单起见,使用最邻近上采样)。然后通过按元素相加,将上采样图与相应的自下而上的图(经过1×1卷积层减少通道维度)合并。迭代这个过程,直到生成最佳分辨率图。为了开始迭代,我们只需在C5上添加一个1×1卷积层来生成最粗糙分辨率图。最后,我们在每个合并图上添加一个3×3卷积来生成最终的特征图,以减少上采样的混叠效应。这个最终的特征图集称为{P2 , P3 , P4 , P5 },对应于{C2 , C3 , C4 , C5 },分别具有相同的空间大小。
由于金字塔的所有层都像传统的特征图像金字塔一样使用共享分类器/回归器,因此我们在所有特征图中固定特征维度(通道数为d)。在本文中我们设置d=256,因此所有额外的卷积层都有256个通道的输出。在这些额外的层中没有非线性,在实验中我们发现这些影响很小。
简洁性是我们设计的核心,我们发现我们的模型对许多设计选择都很鲁棒。我们已经在更复杂的块上进行实验(例如,使用多层残差块作为连接)并观察到好一些的结果。设计更好的连接模块并不是本文的重点,所以我们选择上述的简单设计。
4. 实验
略
7. 总结
我们提供了一个简洁的框架,用于在ConvNets中构建特征金字塔。我们的方法在几个稳固的基准和竞赛获胜者上均显示出显着改进。因此,它为特征金字塔的研究和应用提供了一种实用的解决方案,而无需计算图像金字塔。最后,我们的研究表明,尽管深层ConvNets具有强大的表示能力,并且隐含了对尺度变化的鲁棒性,但是使用金字塔表示法明确解决多尺度问题仍然至关重要。
神经网络学习小记录29——特征金字塔-Feature Pyramid Networks(FPN)