Feature Pyramid Networks for Object Detection

特征金字塔是识别系统中用于检测不同尺度对象的基本组件。 但是最近的深度学习对象检测器已经避免了金字塔表示,部分原因是它们是计算和内存密集型的。 在本文中,我们利用深度卷积网络固有的多尺度金字塔层次结构来构建具有边际额外成本的特征金字塔。 开发了一种具有横向连接的自上而下的架构,用于在所有尺度上构建高级语义特征图。 这种称为特征金字塔网络 (FPN) 的架构在多个应用程序中作为通用特征提取器显示出显着的改进。 在基本的 Faster R-CNN 系统中使用 FPN,我们的方法在 COCO 检测基准上实现了最先进的单模型结果,没有花里胡哨,超越了所有现有的单模型条目,包括来自 COCO 2016 挑战赛获胜者的条目。 此外,我们的方法可以在 GPU 上以 6 FPS 的速度运行,因此是一种实用且准确的多尺度目标检测解决方案。 代码将公开发布。
1.Introduction
识别不同尺度的物体是计算机视觉的一项基本挑战。 建立在图像金字塔上的特征金字塔(简称为特征化图像金字塔)构成了标准解决方案的基础[1](图 1(a))。 这些金字塔是尺度不变的,因为物体的尺度变化通过改变其在金字塔中的层次来抵消。 直观地说,此属性使模型能够通过在位置和金字塔级别上扫描模型来检测大范围内的对象。
Feature Pyramid Networks for Object Detection_第1张图片

图 1. (a) 使用图像金字塔构建特征金字塔。 在每个图像尺度上独立计算特征, 这很慢。 (b) 最近的检测系统选择使用 只有单尺度特征才能更快地检测。 © 另一种选择是 重用由 ConvNet 计算的金字塔特征层次结构 就好像它是一个特征化的图像金字塔。 (d) 我们提出的特征 金字塔网络 (FPN) 与 (b) 和 © 一样快,但更准确。 在此图中,特征图由蓝色轮廓表示,较粗 轮廓表示语义上更强的特征。
特征化图像金字塔在手工设计特征的时代被大量使用 [5, 25]。 它们非常重要,以至于像 DPM [7] 这样的目标检测器需要密集的尺度采样才能获得良好的结果(例如,每倍频程 10 个尺度)。 对于识别任务,工程特征在很大程度上已被深度卷积网络 (ConvNets) [19, 20] 计算的特征所取代。 除了能够表示更高级别的语义外,ConvNets 对尺度变化也更加鲁棒,因此有助于识别在单个输入尺度上计算的特征 [15、11、29](图 1(b))。 但即使具有这种稳健性,仍然需要金字塔来获得最准确的结果。 ImageNet [33] 和 COCO [21] 检测挑战中的所有最新热门条目都使用了对特征图像金字塔(例如 [16, 35])的多尺度测试。 对图像金字塔的每一层进行特征化的主要优点是它产生了一个多尺度的特征表示,其中所有层的语义都很强,包括高分辨率层。
然而,特征化图像金字塔的每一层都有明显的局限性。 推理时间显着增加(例如,增加了四倍 [11]),使得这种方法对于实际应用不切实际。 此外,在图像金字塔上端到端训练深度网络在内存方面是不可行的,因此,如果利用,图像金字塔是 仅在测试时间 [15, 11, 16, 35] 使用,这会创建一个 训练/测试时间推断之间的不一致。 对于这些 原因,Fast and Faster R-CNN [11, 29] 在默认设置下选择不使用特征化图像金字塔。
然而,图像金字塔并不是计算多尺度特征表示的唯一方法。 深度卷积网络逐层计算特征层次结构,并且通过子采样层,特征层次结构具有固有的多尺度金字塔形状。 这种网络内特征层次结构产生不同空间分辨率的特征图,但引入了由不同深度引起的较大语义差距。 高分辨率地图具有低级特征,这会损害其对象识别的表征能力。
Single Shot Detector (SSD) [22] 是第一次尝试使用 ConvNet 的金字塔特征层次结构,就好像它是一个特征化的图像金字塔一样(图 1©)。 理想情况下,SSD 风格的金字塔将重用多尺度特征 在前向传播中计算来自不同层的地图,因此是免费的。 但是为了避免使用低级特征,SSD 放弃了重用已经计算的层,而是从网络中的高层开始构建金字塔(例如,VGG 网络 [36] 的 conv4 3),然后添加几个新层。 因此,它错过了重用特征层次结构的更高分辨率地图的机会。 我们表明这些对于检测小物体很重要。
本文的目标是自然地利用 ConvNet 特征层次结构的金字塔形状,同时创建一个在所有尺度上都具有强语义的特征金字塔。 为了实现这一目标,我们依赖于一种架构,该架构通过自上而下的路径和横向连接将低分辨率、语义强的特征与高分辨率、语义弱的特征相结合(图 1(d))。 结果是一个特征金字塔,它在所有级别都具有丰富的语义,并且是从单个输入图像尺度快速构建的。 换句话说,我们展示了如何创建网络内特征金字塔 可用于在不牺牲表示能力、速度或内存的情况下替换特征化图像金字塔。
采用自上而下和跳过连接的类似架构在最近的研究中很流行 [28, 17, 8, 26]。 他们的目标是生成一个精细的高级特征图 进行预测的分辨率(图 2 顶部)。 相反,我们的方法利用架构作为特征金字塔,其中预测(例如,对象检测)在每个级别上独立进行(图 2 底部)。 我们的模型呼应了一个特征化的图像金字塔,这在这些作品中没有被探索过。
Feature Pyramid Networks for Object Detection_第2张图片

图 2. 顶部:具有跳跃连接的自上而下的架构, 在最好的水平上进行预测(例如,[28])。 底部: 我们的模型具有相似的结构,但将其作为特征加以利用 金字塔,在各个层面独立做出预测。

我们在用于检测和分割的各种系统中评估我们的方法,称为特征金字塔网络 (FPN) [11,29,27]。没有花里胡哨,我们报告了一个基于 FPN 和基本 Faster R-CNN 检测器 [29] 的具有挑战性的 COCO 检测基准 [21] 的最先进的单模型结果,超过了所有现有的经过严格设计的单模型-比赛获胜者的模特作品。 在消融实验中,我们发现对于边界框提议,FPN 将平均召回率(AR)显着提高了 8.0 个点;对于目标检测,它在 ResNets [16] 上的 Faster R-CNN 的强大单尺度基线上将 COCO 风格的平均精度 (AP) 提高了 2.3 个百分点,将 PASCAL 风格的 AP 提高了 3.8 个百分点。 我们的方法也很容易扩展到掩码提案,并且与严重依赖图像金字塔的最先进方法相比,提高了实例分割 AR 和速度。 此外,我们的金字塔结构可以在所有尺度上进行端到端训练,并且在训练/测试时始终如一地使用,这对于使用图像金字塔来说是不可行的。 因此,FPN 能够实现比所有现有最先进方法更高的准确度。 此外,这种改进是在不增加单尺度基线的测试时间的情况下实现的。 我们相信这些进步将促进未来的研究和应用。我们的代码将公开发布。
2.Related Work
手工设计的特征和早期的神经网络。 SIFT 特征 [25] 最初是在尺度空间极值处提取的,用于特征点匹配。 HOG 特征 [5] 以及后来的 SIFT 特征也是在整个图像金字塔上密集计算的。 这些 HOG 和 SIFT 金字塔已用于图像分类、对象检测、人体姿势估计等众多工作中。 快速计算特征图像金字塔也引起了极大的兴趣。 美元’等。 [6] 通过首先计算稀疏采样(按比例)金字塔然后对缺失级别进行插值来演示快速金字塔计算。 在 HOG 和 SIFT 之前,使用 ConvNets [38, 32] 进行人脸检测的早期工作计算了图像金字塔上的浅层网络,以跨尺度检测人脸。
深度卷积网络目标检测器。 随着现代深度卷积网络 [19] 的发展,像 OverFeat [34] 和 R-CNN [12] 这样的目标检测器在准确度上显示出显着的提高。 OverFeat 采用了类似于早期神经网络人脸检测器的策略,将 ConvNet 用作图像金字塔上的滑动窗口检测器。 R-CNN 采用了基于区域提议的策略 [37],其中每个 在使用 ConvNet 分类之前对提案进行了尺度归一化。 SPPnet [15] 证明了这种基于区域的检测器可以更有效地应用于在单个图像尺度上提取的特征图上。 最近和更准确的检测方法,如 Fast R-CNN [11] 和 Faster R-CNN [29] 提倡使用从单一尺度计算的特征,因为它提供了准确度和速度之间的良好折衷。 然而,多尺度检测仍然表现更好,尤其是对于小物体。
使用多层的方法。 最近的一些方法通过在 ConvNet 中使用不同的层来改进检测和分割。 FCN [24] 在多个尺度上对每个类别的部分分数求和,以计算语义分割。 Hypercolumns [13] 使用类似的方法进行对象实例分割。 其他几种方法(HyperNet [18]、ParseNet [23] 和 ION [2])在计算预测之前连接多个层的特征,这相当于对转换后的特征求和。 SSD [22] 和 MS-CNN [3] 在特征层次结构的多个层次上预测对象,而无需组合特征或分数。 最近有一些利用横向/跳过连接的方法,这些方法将跨分辨率和语义级别的低级特征图关联起来,包括用于分割的 U-Net [31] 和 SharpMask [28],用于人脸检测的重组网络 [17],以及堆叠沙漏网络[26] 用于关键点估计。 吉亚西等人。 [8] 提出了 FCN 的拉普拉斯金字塔表示,以逐步细化分割。 尽管这些方法采用了金字塔形状的架构,但它们与特征化图像金字塔 [5, 7, 34] 不同,其中预测是在各个级别独立进行的,见图 2。 事实上,对于图 2(顶部)中的金字塔结构,仍然需要图像金字塔来识别跨多个尺度的对象 [28]。
3.Feature Pyramid Networks
我们的目标是利用 ConvNet 的金字塔特征层次结构,它具有从低到高的语义,并构建一个贯穿始终具有高级语义的特征金字塔。 由此产生的特征金字塔网络是通用的,在本文中,我们关注滑动窗口提议者(区域提议网络,简称 RPN)[29] 和基于区域的检测器(Fast R-CNN)[11]。 我们还将 FPN 推广到第 2 节中的实例分割提议。 6. 我们的方法将任意大小的单尺度图像作为输入,并以完全卷积的方式在多个级别上输出按比例大小的特征图。 这个过程独立于主干卷积架构(例如,[19,36,16]),在本文中,我们展示了结果 使用 ResNets [16]。 我们的金字塔的构建涉及自下而上的路径、自上而下的路径和横向连接,如下所述。
Feature Pyramid Networks for Object Detection_第3张图片

图 3。 说明横向连接和自上而下路径的构建块,通过添加合并。
自下而上的路径。自下而上的路径是主干 ConvNet 的前馈计算,它计算由多个尺度的特征图组成的特征层次结构,缩放步长为 2。 通常有很多层产生相同大小的输出图,我们说这些层处于相同的网络阶段。 对于我们的特征金字塔,我们为每个阶段定义一个金字塔级别。我们选择每个阶段最后一层的输出作为我们的参考特征图集,我们将对其进行丰富以创建我们的金字塔。 这种选择很自然,因为每个阶段的最深层应该具有最强的特征。 具体来说,对于 ResNets [16],我们使用每个阶段的最后一个残差块输出的特征激活。 我们将这些最后残差块的输出表示为 C2; C3; C4; C5 用于 conv2、conv3、conv4 和 conv5 输出,注意它们相对于输入图像的步幅为 4、8、16、32 像素。 由于 conv1 的内存占用很大,我们不将其包含在金字塔中。
自上而下的路径和横向连接。 自上而下的路径通过从更高的金字塔级别对空间上更粗糙但语义更强的特征图进行上采样来产生更高分辨率的特征。 然后通过横向连接使用自下而上路径的特征增强这些特征。 每个横向连接从自下而上的路径和自上而下的路径合并相同空间大小的特征图。 自下而上的特征图具有较低级别的语义,但它的激活更准确地定位,因为它的子采样次数更少。 图 3 显示了构建我们的自上而下特征图的构建块。 使用较粗分辨率的特征图,我们将空间分辨率上采样 2 倍(为简单起见,使用最近邻上采样)。 然后通过逐元素加法将上采样图与相应的自下而上图(经过 1×1 卷积层以减少通道尺寸)合并。重复此过程,直到生成最精细的分辨率图。 要开始迭代,我们只需在 C5 上附加一个 1×1 卷积层以生成最粗略的分辨率图。 最后,我们在每个合并图上附加一个 3×3 的卷积来生成最终的特征图,这是为了减少上采样的锯齿效应。 最后一组特征图称为 P2; P3; P4; P5,对应C2; C3; C4; C5 分别具有相同的空间大小。 因为金字塔的所有级别都使用共享分类器/回归器,就像在传统的特征图像金字塔中一样,我们在所有特征图中固定了特征维度(通道数,表示为 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]。 锚点具有多个预定义的比例和纵横比,以覆盖不同形状的对象。

你可能感兴趣的:(机器视觉算法,计算机视觉,人工智能)