大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全家桶1年46,售后保障稳定
论文名称:Feature Pyramid Networks for Object Detection
论文下载:https://arxiv.org/abs/1612.03144
论文年份:2016
论文被引:12032(2022/05/03)
Abstract
Feature pyramids are a basic component in recognition systems for detecting objects at different scales. But recent deep learning object detectors have avoided pyramid representations, in part because they are compute and memory intensive. In this paper , we exploit the inherent multi-scale, pyramidal hierarchy of deep convolutional networks to construct feature pyramids with marginal extra cost. A topdown architecture with lateral connections is developed for building high-level semantic feature maps at all scales. This architecture, called a Feature Pyramid Network (FPN), shows significant improvement as a generic feature extractor in several applications. Using FPN in a basic Faster R-CNN system, our method achieves state-of-the-art singlemodel results on the COCO detection benchmark without bells and whistles, surpassing all existing single-model entries including those from the COCO 2016 challenge winners. In addition, our method can run at 6 FPS on a GPU and thus is a practical and accurate solution to multi-scale object detection. Code will be made publicly available.
特征金字塔(Feature pyramids)是识别系统中用于检测不同尺度目标的基本组件。但是最近的深度学习目标检测器已经避免了金字塔表示,部分原因是它们是计算和内存密集型的。在本文中,我们利用深度卷积网络固有的多尺度金字塔层次结构来构建具有边际额外成本(marginal extra cost)的特征金字塔。开发了一种具有横向连接的自上而下的架构,用于在所有尺度上构建高级语义特征图。这种称为特征金字塔网络 (FPN) 的架构在多个应用程序中作为通用特征提取器显示出显着的改进。在基本的 Faster R-CNN 系统中使用 FPN,我们的方法在 COCO 检测基准上实现了最先进的单模型结果,没有花里胡哨,超越了所有现有的单模型,包括 COCO 2016 挑战赛获胜者。此外,我们的方法可以在 GPU 上以 6 FPS 的速度运行,因此是一种实用且准确的多尺度目标检测解决方案。代码将公开发布。
1. Introduction
识别不同尺度的物体是计算机视觉的一项基本挑战。建立在图像金字塔上的特征金字塔(简称为特征化图像金字塔)构成了标准解决方案的基础 [1](图 1(a))。这些金字塔是尺度不变的,因为物体的尺度变化通过改变其在金字塔中的层次来抵消。直观地说,此属性使模型能够通过在位置和金字塔级别上扫描模型来检测大范围内的目标。
图 1. (a) 使用图像金字塔构建特征金字塔。特征是在每个图像尺度上独立计算的,这很慢。 (b) 最近的检测系统选择仅使用单尺度特征来加快检测速度。 © 另一种方法是重用由 ConvNet 计算的金字塔特征层次结构,就好像它是一个特征化的图像金字塔一样。 (d) 我们提出的特征金字塔网络 (FPN) 与 (b) 和 © 一样快,但更准确。在该图中,特征图由蓝色轮廓表示,较粗的轮廓表示语义上更强的特征。
特征化图像金字塔(Featurized image pyramids)在手工设计特征的时代被大量使用 [5, 25]。它们非常重要,以至于像 DPM [7] 这样的目标检测器需要密集的尺度采样才能获得良好的结果(例如,每倍频程 10 个尺度(10 scales per octave))。对于识别任务,工程特征已在很大程度上被深度卷积网络 (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))。结果是一个特征金字塔,它在所有级别都具有丰富的语义,并且是从单个输入图像尺度快速构建的。换句话说,我们展示了如何在不牺牲表征能力、速度或内存的情况下创建可用于替换特征化图像金字塔的网络内特征金字塔(in-network feature pyramids)。
采用自上而下和跳过连接的类似架构在最近的研究中很流行 [28, 17, 8, 26]。他们的目标是生成一个高分辨率的单一高级特征图,在其上进行预测(图 2 顶部)。相反,我们的方法利用架构作为特征金字塔,其中预测(例如,目标检测)在每个层级上独立进行(图 2 底部)。我们的模型呼应了一个特征化的图像金字塔,这在这些作品中没有被探索过。
我们在用于检测和分割的各种系统 [11,29,27] 中评估我们的方法,称为特征金字塔网络 (Feature Pyramid Network, FPN) 。没有花里胡哨,我们仅基于 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] 在特征层次结构的多个层次上预测目标,而无需组合特征或分数。
最近有一些利用横向/跳过连接(lateral/skip connections)的方法,这些方法将跨分辨率和语义级别的低级特征图关联起来,包括
- 用于分割的 U-Net [31] 和 SharpMask [28]
- 用于人脸检测的 Recombinator networks [17]
- Stacked Hourglass networks [26] 用于关键点估计
- [8] 提出了 FCN 的拉普拉斯金字塔表示,以逐步细化分割
尽管这些方法采用了金字塔形状的架构,但它们与特征化图像金字塔 [5, 7, 34] 不同,后者在各个级别独立进行预测,见图 2。事实上,对于图 2 中的金字塔架构(顶部) ,仍然需要图像金字塔来识别跨多个尺度的目标[28]。
3. Feature Pyramid Networks
我们的目标是利用 ConvNet 的金字塔特征层次结构,它具有从低到高的语义,并构建一个贯穿始终具有高级语义的特征金字塔。由此产生的特征金字塔网络是通用的,在本文中,我们专注于滑动窗口提议(Region Proposal Network,简称 RPN)[29] 和基于区域的检测器(Fast R-CNN)[11]。我们还将 FPN 推广到第 6 节中的实例分割提议。
我们的方法将任意大小的单尺度图像作为输入,并以完全卷积的方式在多个级别输出按比例大小的特征图。这个过程独立于主干卷积架构(例如,[19,36,16]),在本文中,我们使用 ResNets [16] 展示结果。我们的金字塔的构建涉及自下而上的路径、自上而下的路径和横向连接,如下所述。
自下而上的路径(Bottom-up pathway)。自下而上的路径是主干 ConvNet 的前馈计算,它计算由多个尺度的特征图组成的特征层次结构,缩放步长为 2。通常有许多层产生相同大小的输出图,我们说这些层处于同一网络阶段。对于特征金字塔,我们为每个阶段定义一个金字塔级别。选择每个阶段最后一层的输出作为参考特征图集,将对其进行丰富以创建金字塔。这种选择很自然,因为每个阶段的最深层应该具有最强的特征。
具体来说,对于 ResNets [16],我们使用每个阶段的最后一个残差块输出的特征激活。对于 conv2、conv3、conv4 和 conv5 的输出,我们将这些最后的残差块的输出表示为 {C2, C3, C4, C5},并注意它们相对于输入图像。由于 conv1 的内存占用很大,不将其包含在金字塔中。
自上而下的路径和横向连接(Top-down pathway and lateral connections)。自上而下的路径通过从更高的金字塔级别对空间上更粗糙但语义更强的特征图进行上采样来产生更高分辨率的特征。然后通过横向连接使用自下而上路径的特征增强这些特征。每个横向连接从自下而上的路径和自上而下的路径合并相同空间大小的特征图。自下而上的特征图具有较低级别的语义,但它的激活更准确地定位,因为它的子采样次数更少。
图 3 显示了构建我们的自上而下特征图的构建块。使用较粗分辨率的特征图,将空间分辨率上采样 2 倍(为简单起见,使用最近邻上采样)。然后通过逐元素加法将上采样图与相应的自下而上图(经过 1×1 卷积层以减少通道尺寸)合并。重复此过程,直到生成最精细的分辨率图。要开始迭代,我们只需在 C5 上附加一个 1×1 卷积层以生成最粗略的分辨率图。最后,我们在每个合并图上附加一个 3×3 的卷积来生成最终的特征图,这是为了减少上采样的锯齿效应(aliasing effect)。最后一组特征图称为{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]。锚点具有多个预定义的比例和纵横比,以覆盖不同形状的目标。
我们通过用我们的 FPN 替换单尺度特征图来调整 RPN。我们将相同设计的头部(3×3 conv 和两个同级 1×1 convs)附加到特征金字塔的每个级别。由于头部在所有金字塔级别的所有位置上密集滑动,因此没有必要在特定级别上具有多尺度锚点(anchors)。相反,将单个尺度的锚分配给每个级别。形式上,我们将锚点定义为在 {P2、P3、P4、P5、P6} 上分别具有 {322、642、1282、2562、5122} 像素的区域。如在 [29] 中,我们也使用多个纵横比的锚点 {1:2, 1:1, 2:1} 在每个级别。所以金字塔上总共有 15 个锚点。
我们根据 [29] 中的真实边界框的交集比联合(Intersection-over-Union,IoU)比率将训练标签分配给锚点。形式上,如果一个锚对于给定的groundtruth box具有最高的IoU,或者与任何ground-truth box的IoU超过0.7,则为anchor分配一个正标签,如果对于所有ground truth box的IoU低于0.3,则为anchor分配一个负标签。请注意,ground-truth box的比例并未明确用于将它们分配给金字塔的各个级别;相反,ground-truth box与已分配到金字塔级别的锚相关联。因此,除了 [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:
这里 224 是典型的 ImageNet 预训练大小,k0 是 w × h = 224 的 RoI 应该映射到的目标级别。类似于使用 C4 作为单尺度特征图的基于 ResNet 的 Faster R-CNN 系统 [16],我们将 k0 设置为 4。 (1) 意味着如果 RoI 的比例变小(例如,224 的 1/2),它应该被映射到更精细的分辨率级别(例如,k = 3)。
我们将预测器头(在 Fast R-CNN 中,头是特定于类的分类器和边界框回归器)附加到所有级别的所有 RoI。同样,无论其级别如何,头都共享参数。在 [16] 中,采用 ResNet 的 conv5 层(一个 9 层的深层子网络)作为 conv4 特征的头部,但我们的方法已经利用 conv5 来构建特征金字塔。因此,与 [16] 不同的是,我们简单地采用 RoI 池化来提取 7×7 特征,并在最终分类和边界框回归层之前附加两个隐藏的 1,024 维全连接 (fc) 层(每个层后接 ReLU)。这些层是随机初始化的,因为 ResNets 中没有预训练的 fc 层。请注意,与标准 conv5 头相比,我们的 2-fc MLP 头重量更轻,速度更快。
基于这些适应,我们可以在特征金字塔之上训练和测试 Fast RCNN。实验部分给出了实现细节。
5. Experiments on Object Detection
我们对 80 类 COCO 检测数据集 [21] 进行了实验。我们使用 80k 训练图像和 35k val 图像子集 (trainval35k [2]) 的联合进行训练,并在 5k val 图像子集 (minival) 上报告消融。我们还报告了没有公开标签的标准测试集 (test-std) [21] 的最终结果。
按照惯例 [12],所有网络主干都在 ImageNet1k 分类集 [33] 上进行预训练,然后在检测数据集上进行微调。我们使用公开可用的预训练 ResNet-50 和 ResNet-101 模型。我们的代码是使用 Caffe2 重新实现 py-faster-rcnn。
5.1. Region Proposal with RPN
我们按照 [21] 中的定义评估小、中和大目标(AR、ARm 和 ARl)上的 COCO 风格的平均召回率(AR)和 AR。我们报告每个图像(AR100 和 AR1k)的 100 和 1000 个提案的结果。
实施细节。表 1 中的所有架构都是端到端训练的。调整输入图像的大小,使其短边有 800 个像素。我们在 8 个 GPU 上采用同步 SGD 训练。一个小批量涉及每个 GPU 2 个图像和每个图像 256 个锚点。我们使用 0.0001 的权重衰减和 0.9 的动量。前 30k 小批量的学习率为 0.02,接下来的 10k 为 0.002。对于所有 RPN 实验(包括基线),我们包括图像外部的锚框进行训练,这与 [29] 中忽略这些锚框不同。其他实现细节见[29]。在 8 个 GPU 上使用 FPN 训练 RPN 在 COCO 上大约需要 8 个小时。
5.1.1 Ablation Experiments
与基线的比较。为了与原始 RPN [29] 进行公平比较,我们使用 C4(与 [16] 相同)或 C5 的单比例图运行两个基线(表 1(a,b)),两者都使用与我们相同的超参数,包括使用 { 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\} {
322,642,1282,2562,5122} 的 5 个比例的锚点。表 1 (b) 没有显示出优于 (a) 的优势,这表明单个更高级别的特征图是不够的,因为在更粗略的分辨率和更强的语义之间存在权衡。
将 FPN 置于 RPN 中将 AR1k 提高到 56.3(表 1(c)),这比单尺度 RPN 基线(表 1(a))增加了 8.0 个点。此外,小物体(AR1ks)的性能大幅提升了 12.9 个百分点。我们的金字塔表示极大地提高了 RPN 对目标尺度变化的鲁棒性。
自上而下的丰富性有多重要?表 1(d) 显示了我们的特征金字塔没有自上而下路径的结果。通过这种修改,1×1 横向连接和 3×3 卷积连接到自下而上的金字塔。该架构模拟了重用金字塔特征层次结构的效果(图 1(b))。
表 1(d) 中的结果与 RPN 基线相当,远远落后于我们的结果。我们推测这是因为自下而上的金字塔(图 1(b))的不同层次之间存在很大的语义差距,尤其是对于非常深的 ResNet。我们还评估了表 1(d) 的一个变体,但没有共享头的参数,但观察到类似的性能下降。这个问题不能简单地通过特定级别的头来解决。
横向连接有多重要?表 1(e) 显示了没有 1×1 横向连接的自上而下特征金字塔的消融结果。这个自上而下的金字塔具有很强的语义特征和精细的分辨率。但我们认为这些特征的位置并不精确,因为这些地图已经过多次下采样和上采样。更精确的特征位置可以通过横向连接直接从自下而上地图的更精细级别传递到自上而下地图。结果,FPN 的 AR1k 分数比表 1(e) 高 10 分。
金字塔表示有多重要?可以将头部附加到 P2 的最高分辨率、强语义特征图(即我们的金字塔中最精细的级别)上,而不是金字塔表示。与单尺度基线类似,我们将所有锚点分配给 P2 特征图。该变体(表 1(f))优于基线,但不如我们的方法。 RPN 是具有固定窗口大小的滑动窗口检测器,因此扫描金字塔级别可以增加其对尺度方差的鲁棒性。
此外,我们注意到单独使用 P2 会导致更多的锚点(750k,表 1(f)),这是由于其较大的空间分辨率造成的。该结果表明,大量的锚点本身不足以提高准确性。
5.2. Object Detection with Fast/Faster R-CNN
接下来我们研究基于区域(非滑动窗口)检测器的 FPN。我们通过 COCO 风格的平均精度 (AP) 和 PASCAL 风格的 AP(以 0.5 的单个 IoU 阈值)评估对象检测。我们还按照 [21] 中的定义报告了关于小型、中型和大型对象(即 AP、APm 和 APl)的 COCO AP。
实施细节。调整输入图像的大小,使其短边有 800 个像素。同步 SGD 用于在 8 个 GPU 上训练模型。每个小批量涉及每个 GPU 2 个图像和每个图像 512 个 RoI。我们使用 0.0001 的权重衰减和 0.9 的动量。前 60k 小批量的学习率为 0.02,接下来的 20k 为 0.002。我们对每张图像使用 2000 个 RoI 进行训练,使用 1000 个进行测试。在 COCO 数据集上使用 FPN 训练 Fast R-CNN 大约需要 10 个小时。
5.2.1 Fast R-CNN (on fixed proposals)
为了更好地研究 FPN 对基于区域的检测器的影响,我们对一组固定的提议进行了 Fast R-CNN 的消融。我们选择冻结由 RPN 在 FPN 上计算的提议(表 1©),因为它在检测器识别的小物体上具有良好的性能。为简单起见,我们在 Fast R-CNN 和 RPN 之间不共享特征,除非指定。
作为基于 ResNet 的 Fast R-CNN 基线,遵循 [16],我们采用输出大小为 14×14 的 RoI 池化,并将所有 conv5 层附加为头部的隐藏层。这在表 2(a) 中给出了 31.9 的 AP。表 2(b) 是利用具有 2 个隐藏 fc 层的 MLP 头的基线,类似于我们架构中的头。它的 AP 为 28.8,表明 2-fc 头没有任何优于表 2(a) 中基线的正交优势。
表 2© 显示了我们的 FPN 在 Fast R-CNN 中的结果。与表 2(a) 中的基线相比,我们的方法将 AP 提高了 2.0 点,小目标 AP 提高了 2.1 点。与同样采用 2fc 头的基线(表 2(b))相比,我们的方法将 AP 提高了 5.1 个点。5 这些比较表明,我们的特征金字塔优于基于区域的对象检测器的单尺度特征。
表 2(d) 和 (e) 表明,移除自上而下的连接或移除横向连接会导致较差的结果,类似于我们在上述 RPN 小节中观察到的结果。值得注意的是,移除自上而下的连接(表 2(d))会显着降低准确性,这表明 Fast R-CNN 在高分辨率地图上使用低级特征的问题。
在表 2(f) 中,我们在 P2 的单个最佳尺度特征图上采用 Fast R-CNN。它的结果(33.4 AP)比使用所有金字塔级别的结果(33.9 AP,表 2(c))略差。我们认为这是因为 RoI 池化是一种类似翘曲的操作(warping-like operation),它对区域规模不太敏感。尽管该变体具有良好的准确性,但它基于 {Pk} 的 RPN 提议,因此已经从金字塔表示中受益。
5.2.2 Faster R-CNN (on consistent proposals)
在上面我们使用一组固定的建议来研究检测器。但在 Faster R-CNN 系统 [29] 中,RPN 和 Fast R-CNN 必须使用相同的骨干网络才能实现特征共享。表 3 显示了我们的方法和两个基线之间的比较,所有基线都使用了 RPN 和 Fast R-CNN 的一致骨干架构。表 3(a) 显示了我们在 [16] 中描述的基线 Faster R-CNN 系统的再现。在受控设置下,我们的 FPN(表 3©)比这个强基线好 2.3 点 AP 和 3.8 点 AP@0.5。
请注意,表 3(a) 和 (b) 是比 He 等人提供的基线强得多的基线。 [16] 见表 3。我们发现以下实现造成了差距:
i)我们使用 800 像素的图像比例而不是 [11, 16] 中的 600;
ii)我们训练每张图像 512 个 RoI,加速收敛,而 [11, 16] 中的 64 个 RoI;
iii)我们使用 5 个比例锚点而不是 [16] 中的 4 个(添加 322 个);
iv)在测试时,我们每张图片使用 1000 个提议,而不是 [16] 中的 300 个。
因此,与表 3 中 He 等人的 ResNet50 Faster R-CNN 基线相比,我们的方法将 AP 提高了 7.6 点,AP@0.5 提高了 9.6 点。
共享特征。在上面,为简单起见,我们不共享 RPN 和 Fast R-CNN 之间的特征。在表 5 中,我们在 [29] 中描述的 4 步训练之后评估共享特征。与 [29] 类似,我们发现共享特征可以小幅度提高准确性。特征共享还减少了测试时间。
运行时间。通过特征共享,我们基于 FPN 的 Faster R-CNN 系统在单个 NVIDIA M40 GPU 上的 ResNet-50 推理时间为 0.148 秒,ResNet-101.6 为 0.172 秒作为比较,单尺度 ResNet-50表 3(a) 中的基线运行时间为 0.32 秒。我们的方法通过 FPN 中的额外层引入了少量额外成本,但头重量更轻。总体而言,我们的系统比基于 ResNet 的 Faster R-CNN 系统更快。我们相信我们方法的效率和简单性将有利于未来的研究和应用。
5.2.3 Comparing with COCO Competition Winners
我们发现表 5 中的 ResNet-101 模型没有使用默认的学习率计划进行充分的训练。因此,在训练 Fast R-CNN 步骤时,在每个学习速率下将小批量的数量增加2倍。这将 minival 上的 AP 增加到 35.6,但不共享特征。该模型是我们提交给 COCO 检测排行榜的模型,如表 4 所示。由于时间有限,我们没有对其特征共享版本进行评估,如表 5 所示,它应该稍好一些。
在测试开发集上,我们的方法比现有的最佳结果增加了0.5点的AP (36.2对35.7)和3.4点的AP@0.5 (59.1对55.7)。值得注意的是,我们的方法不依赖于图像金字塔,只使用单一的输入图像尺度,但在小尺度对象上仍然具有突出的AP。这只能通过以前方法的高分辨率图像输入来实现。
此外,我们的方法没有利用许多流行的改进,如迭代回归(iterative regression)[9],硬负挖掘(hard negative mining)[35],上下文建模(context modeling)[16],更强的数据增强(data augmentation)[22]等。这些改进是对FPNs的补充,应该会进一步提高精度。最近,FPN在COCO竞赛的所有赛道上都取得了新的最佳成绩,包括检测、实例分割和关键点估计。详见[14]。
6. Extensions: Segmentation Proposals
我们的方法是一种通用的金字塔表示,可用于对象检测以外的应用。在本节中,我们使用 FPN 生成分割提议,遵循 DeepMask/SharpMask 框架 [27, 28]。
DeepMask/SharpMask 在图像裁剪上进行了训练,以预测实例片段和对象/非对象分数。在推理时,这些模型以卷积方式运行以在图像中生成密集的建议。为了在多个尺度上生成片段,图像金字塔是必要的 [27, 28]。
图 4. 对象分段提议的 FPN。特征金字塔的构造与对象检测的结构相同。我们在 5×5 窗口上应用小型 MLP 以生成输出尺寸为 14×14 的密集对象段。橙色显示的是每个金字塔级别的掩码对应的图像区域的大小(此处显示级别 P3-5)。显示了相应的图像区域大小(浅橙色)和标准对象大小(深橙色)。半倍频程由 MLP 在 7×7 窗口 (7 ≈ 5√2) 上处理,此处未显示。详细信息在附录中。
很容易适应 FPN 来生成掩码提议。我们使用完全卷积设置进行训练和推理。我们构建了我们的特征金字塔,如第 2 节所述。 5.1 并设置 d = 128。在特征金字塔的每一层之上,我们应用一个小的 5×5 MLP 以完全卷积的方式预测 14×14 掩码和对象分数,见图 4。此外,受在 [27, 28] 的图像金字塔中使用每倍频程 2 个尺度,我们使用输入大小为 7×7 的第二个 MLP 来处理半倍频程(Half octaves)。这两个 MLP 在 RPN 中扮演着类似锚点的角色。该架构是端到端训练的;完整的实施细节在附录中给出。
6.1. Segmentation Proposal Results
结果如表 6 所示。我们在小、中和大对象上报告分段 AR 和分段 AR,总是针对 1000 个提案。我们使用单个 5×5 MLP 的基线 FPN 模型实现了 43.4 的 AR。切换到稍大的 7×7 MLP 后,准确度基本保持不变。同时使用两个 MLP 可将准确度提高到 45.7 AR。将掩码输出尺寸从 14×14 增加到 28×28 会增加 AR 另一个点(更大的尺寸开始降低准确性)。最后,将训练迭代加倍将 AR 增加到 48.1。
我们还报告了与 DeepMask [27]、SharpMask [28] 和 InstanceFCN [4] 的比较,它们是先前在掩模提案生成中最先进的方法。我们比这些方法的准确性高出 8.3 点以上的 AR。特别是,我们几乎将小物体的准确度提高了一倍。
现有的掩模提议方法 [27, 28, 4] 基于密集采样的图像金字塔(例如,在 [27, 28] 中按 2{−2:0.5:1} 缩放),这使得它们的计算成本很高。我们基于 FPN 的方法要快得多(我们的模型以 6 到 7 FPS 的速度运行)。这些结果表明,我们的模型是一个通用的特征提取器,可以替代图像金字塔来解决其他多尺度检测问题。
7. Conclusion
我们提出了一个简洁的框架,用于在 ConvNets 中构建特征金字塔。我们的方法显示出对几个强大的基线和竞赛获胜者的显著改进。因此,它为特征金字塔的研究和应用提供了一种实用的解决方案,而无需计算图像金字塔。最后,我们的研究表明,尽管深度卷积网络具有强大的表示能力及其对尺度变化的隐含鲁棒性,但使用金字塔表示明确解决多尺度问题仍然至关重要。
A. Implementation of Segmentation Proposals
我们使用我们的特征金字塔网络来有效地生成对象分割建议,采用一种流行的以图像为中心的训练策略,用于对象检测 [11, 29]。我们的 FPN 掩码生成模型继承了 DeepMask/SharpMask [27, 28] 的许多想法和动机。然而,与这些模型相比,这些模型在图像裁剪上进行训练并使用密集采样的图像金字塔进行推理,我们在特征金字塔上执行全卷积训练以进行掩码预测。虽然这需要更改许多细节,但我们的实现在精神上与 DeepMask 相似。具体来说,为了在每个滑动窗口定义掩码实例的标签,我们将这个窗口视为输入图像上的裁剪,允许我们从 DeepMask 继承正/负的定义。接下来我们将给出更多细节,另请参见图 4 的可视化。
我们使用与第 2 节中描述的相同架构构建具有 P2-6 的特征金字塔。 5.1。我们设置 d = 128。我们的特征金字塔的每个级别都用于预测不同尺度的掩码。与在 DeepMask 中一样,我们将遮罩的比例定义为其宽度和高度的最大值。具有 {32, 64, 128, 256, 512} 像素比例的掩码分别映射到 {P2, P3, P4, P5, P6},并由 5×5 MLP 处理。由于 DeepMask 使用半倍频程的金字塔,我们使用第二个稍大的 MLP,大小为 7×7 (7 ≈ 5√2) 来处理我们模型中的半倍频程(例如,128√2 比例的掩码由 7 ×7 MLP 在 P4)。中间比例的对象被映射到对数空间中最近的比例。
由于 MLP 必须在每个金字塔级别(特别是半个八度范围)的范围内预测对象,因此必须在规范对象大小周围给出一些填充。我们使用 25% 的填充。这意味着 {P2, P3, P4, P5, P6} 上的掩码输出映射到 5×5 MLP 的 {40, 80, 160, 320, 640} 大小的图像区域(对于7×7 MLP)。
特征图中的每个空间位置都用于预测不同位置的掩码。具体来说,在比例 Pk 上,特征图中的每个空间位置都用于预测其中心位于该位置 2k 像素内的掩码(对应于特征图中的 ±1 单元偏移)。如果没有对象中心落在此范围内,则该位置被视为负数,并且与 DeepMask 一样,仅用于训练分数分支而不是掩码分支。
我们用于预测掩码和分数的 MLP 相当简单。我们应用具有 512 个输出的 5×5 内核,然后是兄弟全连接层来预测 14×14 掩码( 1 4 2 14^2 142 个输出)和对象得分(1 个输出)。该模型以全卷积方式实现(使用 1×1 卷积代替全连接层)。用于处理半倍频程对象的 7×7 MLP 与 5×5 MLP 相同,只是其输入区域更大。
在训练期间,我们以 1:3 的正/负采样比随机抽取每个 mini-batch 的 2048 个样本(16 幅图像中的每幅图像 128 个样本)。掩码损失的权重是分数损失的 10 倍。该模型使用同步 SGD(每个 GPU 2 个图像)在 8 个 GPU 上进行端到端训练。我们从 0.03 的学习率开始训练 80k 小批量,在 60k 小批量后将学习率除以 10。在训练和测试期间图像比例设置为 800 像素(我们不使用比例抖动)。在推理过程中,我们的全卷积模型预测 1000 个得分最高的位置的所有位置和尺度以及掩码的分数。我们不执行任何非最大抑制(non-maximum suppression)或后处理。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/227289.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...