FPN特征金字塔结构学习笔记

FPN特征金字塔结构学习笔记

Feature Pyramid Networks for Object Detection

Abstract

特征金字塔是识别系统中的基本组件,用于检测不同尺度的对象。但最近的深度学习对象检测器已经避免了金字塔表示,部分原因是它们是计算和内存密集型的。在本文中,我们利用深度卷积网络固有的多尺度金字塔层次结构来构造具有边际额外成本的特征金字塔。开发了一种具有横向连接的自顶向下架构,用于在所有尺度上构建高级语义特征图。这种被称为特征金字塔网络(FPN)的体系结构在几个应用中作为通用特征提取器显示出显著的改进。在一个基本的更快的R-CNN系统中使用FPN,我们的方法在COCO检测基准上实现了最先进的单模型结果,没有花里胡哨,超过了所有现有的单模型参赛作品,包括来自COCO 2016挑战赛获胜者的作品。此外,我们的方法可以在GPU上以6 FPS的速度运行,因此是一种实用而准确的多尺度对象检测解决方案。代码将向公众开放。

1. Introduction

识别不同尺度的物体是计算机视觉的一个基本挑战。基于影像金字塔构建的特征金字塔(简称为特征影像金字塔)构成了标准解决方案的基础1。这些金字塔是比例不变的,因为对象的比例变化是通过移动其在金字塔中的级别来抵消的。直观地说,该属性使模型能够通过在位置和金字塔级别上扫描模型来检测大范围比例的对象。

image-20221003204534584

特征图像金字塔在手工设计特征的时代被大量使用[5,25]。它们是如此重要,以至于像DPM [7]这样的物体检测器需要密集标度采样来获得良好的结果(例如,每个倍频程10个标度)。对于识别任务,工程特征具有

很大程度上被深度卷积网络(ConvNets) [19,20]计算的特征所取代。除了能够表示更高层次的语义,ConvNets还对尺度的变化更具鲁棒性,从而有助于根据单个输入尺度计算的特征进行识别15,11,29。但是即使有这种鲁棒性,仍然需要金字塔来获得最准确的结果。ImageNet [33]和COCO [21]检测挑战中所有最近的顶级条目都使用了特征化图像金字塔的多尺度测试(例如[16,35])。特征化图像金字塔的每一层的主要优点是,它产生多尺度特征表示,其中所有层都是语义强的,包括高分辨率层

然而,特征化图像金字塔的每一层都有明显的局限性。推理时间大大增加(例如,增加了四倍[11]),使得这种方法对于实际应用不切实际。而且,训练深入图像金字塔上的端到端网络在内存方面是不可行的,因此,如果被利用,图像金字塔仅在测试时间使用[15,11,16,35],这在训练/测试时间推断之间产生不一致。由于这些原因,Fast和Fast R-CNN[11,29]选择在默认设置下不使用特征化图像金字塔。

然而,影像金字塔并不是计算多尺度要素制图表达的唯一方式。深度ConvNet逐层计算要素等级,对于子采样图层,要素等级具有固有的多比例金字塔形状。这种网络内特征等级产生不同空间分辨率的特征地图,但是引入了由不同深度引起的大的语义差距高分辨率地图具有低级特征,这损害了它们用于物体识别的表示能力

单触发探测器(SSD) [22]是首次尝试使用ConvNet的金字塔特征层次,就好像它是一个特征化的图像金字塔(图1©)。理想情况下,SSD风格的金字塔将重用前向传递中计算的不同图层的多尺度要素地图,因此是免费的。但是为了避免使用低级特征,SSD放弃了重新使用已经计算的层,而是从网络中的高层(例如,VGG网的conv 4 3[36])开始构建金字塔,然后添加几个新层。因此,它错过了重用要素等级的高分辨率地图的机会。我们证明了这些对于探测小物体的重要性

本文的目标是自然地利用ConvNet功能层次的金字塔形状,同时创建一个在所有尺度上都具有强大语义的功能金字塔。为了实现这一目标,我们依靠一种架构,该架构通过自上而下的路径和横向连接将低分辨率、语义强的特征与高分辨率、语义弱的特征相结合(图1(d))。结果是一个在所有级别都具有丰富语义的特征金字塔,并且是从单个输入图像尺度快速构建的。换句话说,我们展示了如何在不牺牲表现能力、速度或内存的情况下创建可用于替换特征影像金字塔的网络内要素金字塔

采用自顶向下和跳过连接的类似架构在最近的研究中很流行[28,17,8,26]。他们的目标是生成一个高分辨率的单一高级特征图,在此基础上进行预测(图2顶部)。相反,我们的方法利用该体系结构作为特征金字塔,其中预测(例如,对象检测)在每个级别上独立进行(图2底部)。我们的模型呼应了一个特征化的图像金字塔,这是没有在这些作品中探讨。

image-20221003211740335

我们评估我们的方法,称为特征金字塔网络(FPN),在各种系统的检测和分割[11,29,27]。没有华而不实的东西,我们报告了在具有挑战性的COCO检测基准[21]上的最先进的单一模型结果,该基准仅仅基于FPN和一个基本的更快的R-CNN检测器[29],超越了所有现有的竞争获胜者的重设计单一模型条目。在消融实验中,我们发现对于包围盒提议,FPN显著地将平均召回率提高了8.0个点;对于对象检测,它将COCO风格的平均精度(AP)提高了2.3点,将PASCAL风格的AP提高了3.8点,超过了ResNets上更快的R-CNN的强大单尺度基线[16]。我们的方法也很容易扩展到屏蔽建议,并改善实例分割AR和速度超过国家的最先进的方法,严重依赖于图像金字塔

此外,我们的金字塔结构可以使用所有尺度进行端到端训练,并在训练/测试时一致使用,这在使用图像金字塔时是内存不可行的。因此,与所有现有的先进方法相比,FPNs能够实现更高的精度。此外,这种改进是在不增加测试时间的情况下实现的。我们相信这些进步将促进未来的研究和应用。我们的代码将会公开。

2. Related Work

Hand-engineered features and early neural networks.

SIFT特征[25]最初是在尺度空间极值处提取的,并用于特征点匹配。HOG特征[5]以及后来的SIFT特征是在整个图像金字塔上密集计算的。这些HOG和SIFT金字塔已经在图像分类、对象检测、人类姿势估计等许多工作中使用。人们对快速计算特征化图像金字塔也很感兴趣。Dollár等人[6]演示了快速金字塔计算,首先计算稀疏采样(按比例)的金字塔,然后对缺失级别进行插值。在HOG和SIFT之前,早期使用ConvNets [38,32]进行的人脸检测工作计算图像金字塔上的浅网络,以跨尺度检测人脸。

Deep ConvNet object detectors.

随着现代深海探测网[19]的发展,像OverFeat [34]和R-CNN [12]这样的目标探测器在精确度上有了显著的提高。OverFeat采用了一种类似于早期神经网络人脸检测器的策略,即在图像金字塔上应用一个ConvNet作为滑动窗口检测器。R-CNN采用了一种基于区域提案的策略[37],在使用ConvNet进行分类之前,对每个提案进行尺度归一化。SPPnet [15]证明了这种基于区域的检测器可以更有效地应用于在单个图像尺度上提取的特征地图。最近更精确的检测方法,如Fast R-CNN [11]和Fast R-CNN[29]提倡使用从单个尺度计算的特征,因为它在精度和速度之间提供了良好的平衡。然而,多尺度检测仍然表现更好,尤其是对于小物体。

Methods using multiple layers.

许多最近的方法通过在ConvNet中使用不同的层来改进检测和分割。FCN [24]在多个尺度上对每个类别的部分分数求和,以计算语义分段。Hypercolumns [13]使用类似的方法进行对象实例分割。其他几种方法(HyperNet [18]、ParseNet [23]和ION [2])在计算预测之前连接多个图层的特征,这相当于对变换后的特征求和。SSD [22]和MS-CNN [3]在不结合特征或分数的情况下预测特征层级的多个层上的对象

最近有一些利用横向/跳跃连接的方法,这些方法跨分辨率和语义级别关联低级特征图,包括用于分割的U-Net [31]和SharpMask [28],用于面部检测的重组器网络[17],以及用于关键点估计的堆叠沙漏网络[26]。Ghiasi等人[8]提出了用于fcn的拉普拉斯金字塔表示,以逐步改进分割。尽管这些方法采用金字塔形状的架构,但它们不同于特征化的图像金字塔[5,7,34],在图像金字塔中,预测是在所有级别上独立进行的,参见图2。事实上,对于图2(顶部)中的金字塔架构,仍然需要图像金字塔来识别跨多个尺度的对象[28]。

3. Feature Pyramid Networks

我们的目标是利用ConvNet的金字塔式特征层次结构,它具有从低级到高级的语义,并构建一个具有高级语义的特征金字塔。由此产生的特征金字塔网络是通用的,在本文中,我们将重点放在滑动窗口提议器(区域提议网络,简称RPN)[29]和基于区域的检测器(Fast R-CNN) [11]。我们还将fpn推广到Sec中的实例分割建议。6.

我们的方法采用任意大小的单尺度图像作为输入,并输出成比例大小的特征图在多个层次上,以完全卷积的方式。这一过程独立于主干卷积架构(例如[19,36,16]),在本文中,我们使用resnet[16]给出了结果。我们金字塔的构建包括一个自下而上的路径、一个自上而下的路径和横向连接,如下所述。

Bottom-up pathway.

自下而上的路径是主干ConvNet的前馈计算,它计算由多个比例的特征图组成的特征层次,比例步长为2。通常会有许多图层生成相同大小的输出地图,我们称这些图层处于相同的网络阶段。对于我们的特征金字塔,我们为每个阶段定义一个金字塔等级我们选择每个阶段的最后一层的输出作为我们的参考特征地图集,我们将丰富它来创建我们的金字塔。这种选择是自然的,因为每个阶段的最深层应该具有最强的特征。

具体来说,对于resnet[16],我们使用每个阶段的最后一个残差块输出的特征激活。对于conv2、conv3、conv4和conv5输出,我们将这些最后残余模块的输出表示为{C2、C3、C4、C5},注意它们相对于输入图像的跨度为{4,8,16,32}像素。由于conv1的内存占用量较大,因此我们没有将其包括在金字塔中。

Top-down pathway and lateral connections

自上而下路径通过从更高的金字塔等级向上采样空间上更粗糙但语义上更强的特征地图来产生更高分辨率的特征。然后,通过横向连接,利用自下而上路径的特征来增强这些特征。每个横向连接合并来自自下而上路径和自上而下路径的相同空间大小的特征地图。自底向上的特征映射具有较低层次的语义,但是它的激活被更精确地定位,因为它被二次抽样的次数更少

图3显示了构建自顶向下特征图的构件。对于较粗分辨率的特征图,我们将空间分辨率上采样2倍(为简单起见,使用最近邻上采样)。然后,上采样映射通过逐元素加法与相应的自底向上映射(经过1×1卷积层以降低信道维数)合并。重复该过程,直到生成最佳分辨率的地图。为了开始迭代,我们简单地在C5上附加一个1×1卷积层,以产生最粗糙的分辨率图。最后,我们在每个合并的图上附加一个3×3卷积以生成最终的特征图,这是为了减少上采样的混叠效应。这最后一组特征地图被称为{P2,P3,P4,P5},分别对应于{C2,C3,C4,C5},它们具有相同的空间大小。

image-20221003214830999

因为金字塔的所有级别都像在传统的特征化图像金字塔中一样使用共享的分类器/回归器,所以我们在所有特征图中固定特征维度(通道数,表示为d)。在本文中,我们设置d = 256,因此所有额外的卷积层都有256通道输出。在这些额外的层中没有非线性,我们根据经验发现这些非线性具有较小的影响。

简单是我们设计的核心,我们发现我们的模型对许多设计选择都是稳健的。我们已经试验了更复杂的块(例如,使用多层剩余块[16]作为连接),并观察到略微更好的结果。设计更好的连接模块不是本文的重点,所以我们选择上面描述的简单设计

4. Applications

我们的方法是在深凹网中构建要素金字塔的通用解决方案。在下文中,我们采用RPN [29]中的方法用于边界框提议生成,并采用Fast R-CNN [11]中的方法用于对象检测。为了证明我们的方法的简单性和有效性,我们对[29,11]的原始系统进行了最小的修改,以适应我们的特征金字塔。

4.1. Feature Pyramid Networks for RPN

RPN [29]是一个滑动窗口类别不可知的对象检测器。在最初的RPN设计中,在密集的3×3滑动窗口上评估一个小子网,在单尺度卷积特征地图的顶部,执行对象/非对象二元分类和边界框回归。这是通过一个3×3卷积层,后跟两个用于分类和回归的兄弟1×1卷积实现的,我们称之为网络头。对象/非对象标准和边界框回归目标是相对于一组称为锚点的参考框来定义的[29]。锚具有多个预定义的比例和纵横比,以便覆盖不同形状的物体

我们通过用我们的FPN替换单比例特征地图来适应RPN。我们将相同设计的头部(3×3 conv和两个兄弟1×1转换器)附加到我们的特征金字塔的每一层。因为头部密集地滑过所有金字塔等级中的所有位置,所以没有必要在特定等级上具有多尺度锚。取而代之的是,我们给每一层分配一个等级的锚。形式上,我们将锚点定义为分别在{P2,P3,P4,P5,P6}上具有 3 2 2 , 6 4 2 , 12 8 2 , 25 6 2 , 51 2 2 {32^2,64^2,128^2,256^2,512^2} 322642128225625122个像素的区域。1与[29]一样,我们也在每个级别使用多种纵横比{1:2,1:1,2:1}的锚点。所以金字塔上总共有15个锚

我们根据锚的交集/并集(IoU)比率,用真实边界框为锚分配训练标签,如[29]所示。从形式上来说,如果一个锚对于一个给定的基础事实框具有最高的IoU,或者对于任何一个基础事实框具有超过0.7的IoU,则该锚被分配一个正标签,如果对于所有的基础事实框具有低于0.3的IoU,则该锚被分配一个负标签。请注意,地面实况框的标度并不明确用于将它们分配到金字塔的各个级别;相反,地面真相框与锚相关联,锚被分配到金字塔等级。因此,除了[29]中的规则之外,我们不引入额外的规则。

我们注意到,头部的参数在所有特征金字塔等级中是共享的;我们还评估了没有共享参数的替代方案,并观察到类似的准确性。共享参数的良好性能表明我们的金字塔的所有级别共享相似的语义级别。这个优点类似于使用特征化图像金字塔的优点,其中公共头部分类器可以应用于在任何图像尺度下计算的特征。

通过上述调整,RPN可以用我们的FPN以与[29]中相同的方式自然地训练和测试。我们在实验中详细阐述了实现细节。

4.2. Feature Pyramid Networks for Fast R-CNN

Fast R-CNN [11]是一种基于区域的对象检测器,其中感兴趣区域(RoI)池用于提取特征。Fast R-CNN最常用于单尺度特征地图。要将其与我们的FPN一起使用,我们需要将不同规模的ROI分配给金字塔等级。

我们认为我们的特征金字塔好像是从图像金字塔中产生的。因此,当基于区域的检测器在图像金字塔上运行时,我们可以调整它们的分配策略[15,11]。形式上,我们通过以下方式将宽度为w、高度为h(在网络的输入图像上)的RoI分配给我们的特征金字塔的级别Pk:

image-20221003222559402

这里224是标准的ImageNet预训练大小,k0是w × h = 2242的RoI应该映射到的目标级别。类似于使用C4作为单尺度特征图的基于ResNet的更快的R-CNN系统[16],我们将k0设置为4。直觉上,Eqn。(1)意味着如果RoI的比例变小(比如224的1/2),它应该被映射到更精细的分辨率级别(比如k = 3)。

我们将预测器头部(在Fast R-CNN中,头部是特定于类的分类器和包围盒回归器)附加到所有级别的所有ROI。同样,无论级别如何,磁头都共享参数。在[16]中,ResNet的conv5层(一个9层深度子网)被用作conv4特性之上的头部,但我们的方法已经利用conv5来构建特性金字塔。所以与[16]不同,我们简单地采用RoI pooling来提取7×7的特征,并在最终的分类和包围盒回归层之前附加两个隐藏的1024-d全连接(fc)层(每个后面跟着ReLU)。这些层是随机初始化的,因为ResNets中没有预先训练的fc层。请注意,与标准conv5磁头相比,我们的2-fc MLP磁头重量更轻,速度更快。

基于这些适应,我们可以在特征金字塔的顶部训练和测试快速RCNN。实验Fast R-CNN

5. Experiments on Object Detection

image-20221003222826978

image-20221003222850145

image-20221003222915692

image-20221003222929530

image-20221003223030720

image-20221003223133549

6. Extensions: Segmentation Proposals

image-20221003223146509

7. Conclusion

我们已经展示了一个清晰而简单的框架,用于在ConvNets中构建要素金字塔。我们的方法在几个强基线和竞赛获胜者上显示出显著的改进。因此,它为特征金字塔的研究和应用提供了一种实用的解决方案,而不需要计算图像金字塔。最后,我们的研究表明,尽管 deep ConvNets具有很强的表示能力,并且对尺度变化具有隐含的鲁棒性,但使用金字塔表示明确解决多尺度问题仍然至关重要

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值