ResNet中文翻译(Deep Residual Learning for Image Recognition)

news2024/9/21 20:42:44

Deep Residual Learning for Image Recognition

用于图像识别的深度残差学习

原文:https://arxiv.org/abs/1512.03385

摘要

更深层次的神经网络更难训练。我们提出了一个残差学习框架,以简化比以前使用的网络更深的网络训练。我们明确地将层重新表示为参考层输入的学习残差函数,而不是学习未引用的函数。我们提供了全面的经验证据,表明这些残差网络更容易优化,并且可以通过显着增加的深度来获得准确性。在 ImageNet 数据集上,我们评估深度高达 152 层的残差网络,比 VGG 网络 [41] 深 8 倍,但复杂度仍然较低。这些残差网络的集合在 ImageNet 测试集上实现了 3.57% 的误​​差。该结果在 ILSVRC 2015 分类任务中获得第一名。我们还对 100 层和 1000 层的 CIFAR-10 进行了分析。

表示的深度对于许多视觉识别任务至关重要。仅仅由于我们极深的表示,我们在 COCO 目标检测数据集上获得了 28% 的相对改进。深度残差网络是我们提交 ILSVRC 和 COCO 2015 竞赛的基础,我们还在 ImageNet 检测、ImageNet 定位、COCO 检测和 COCO 分割任务中获得了第一名。

一、简介

深度卷积神经网络 [22, 21] 为图像分类带来了一系列突破 [21, 50, 40]。深度网络自然地以端到端的多层方式集成低/中/高级特征[50]和分类器,并且特征的“级别”可以通过堆叠层的数量(深度)来丰富。最近的证据 [41, 44] 表明网络深度至关重要,并且在具有挑战性的 ImageNet 数据集 [36] 上取得的领先结果 [41, 44, 13, 16] 都利用了“非常深”[41] 模型,具有深度为十六[41]至三十[16]。许多其他重要的视觉识别任务 [8,12,7,32,27] 也极大地受益于非常深入的模型。

在深度重要性的驱动下,出现了一个问题:学习更好的网络是否像堆叠更多层一样容易?回答这个问题的一个障碍是臭名昭著的梯度消失/爆炸问题 [1, 9],它从一开始就阻碍了收敛。然而,这个问题已在很大程度上通过归一化初始化 [23,9,37,13] 和中间归一化层 [16] 得到解决,这使得具有数十层的网络能够开始收敛,以实现具有反向传播的随机梯度下降(SGD)[22] ]。

当更深的网络能够开始收敛时,退化问题就暴露出来了:随着网络深度的增加,准确性变得饱和(这可能并不奇怪),然后迅速退化。出乎意料的是,这种退化并不是由过度拟合引起的,并且向适当深度的模型添加更多层会导致更高的训练误差,如[11, 42]中所报告的,并经过我们的实验彻底验证。图 1 显示了一个典型示例。

图 1. 使用 20 层和 56 层“普通”网络的 CIFAR-10 的训练误差(左)和测试误差(右)。更深的网络具有更高的训练误差,因此测试误差也更高。 ImageNet 上的类似现象如图 4 所示。

(训练准确性)的下降表明并非所有系统都同样容易优化。让我们考虑一个较浅的架构及其在其上添加更多层的较深层的对应架构。存在一种通过构建更深层次模型的解决方案:添加的层是恒等映射,其他层是从学习的较浅层模型中复制的。这种构造的解决方案的存在表明,更深的模型不应比其更浅的对应模型产生更高的训练误差。

但实验表明,我们现有的求解器无法找到与构建的解决方案相当或更好的解决方案(或无法在可行时间内完成)。

在本文中,我们通过引入深度残差学习框架来解决退化问题。我们不希望每几个堆叠层都直接适合所需的底层映射,而是明确让这些层适合残差映射。形式上,将所需的基础映射表示为 H(x),我们让堆叠的非线性层拟合 F(x) := H(x)−x 的另一个映射。原始映射被重铸为F(x)+x。我们假设优化残差映射比优化原始的、未引用的映射更容易。极端情况下,如果恒等映射是最优的,则将残差推至零比通过一堆非线性层拟合恒等映射更容易。

F(x) +x 的公式可以通过具有“快捷连接”的前馈神经网络来实现(图 2)。

图 2. 残差学习:构建块。

快捷连接[2,34,49]是那些跳过一层或多层的连接。在我们的例子中,快捷连接只是执行恒等映射,并且它们的输出被添加到堆叠层的输出中(图 2)。身份快捷方式连接既不会增加额外的参数,也不会增加计算复杂性。整个网络仍然可以通过 SGD 通过反向传播进行端到端训练,并且可以使用通用库(例如 Caffe [19])轻松实现,而无需修改求解器。

我们在 ImageNet [36] 上进行了全面的实验,以展示退化问题并评估我们的方法。我们表明:1)我们的极深残差网络很容易优化,但是当深度增加时,对应的“普通”网络(简单地堆叠层)表现出更高的训练误差; 2)我们的深度残差网络可以轻松地从大大增加的深度中获得精度增益,产生比以前的网络更好的结果。

类似的现象也出现在 CIFAR-10 集 [20] 上,这表明我们的方法的优化难度和效果不仅仅类似于特定的数据集。我们在此数据集上展示了超过 100 层的成功训练模型,并探索了超过 1000 层的模型

在 ImageNet 分类数据集 [36] 上,我们通过极深的残差网络获得了出色的结果。我们的 152 层残差网络是 ImageNet 上有史以来最深的网络,同时仍然比 VGG 网络 [41] 具有更低的复杂性。我们的集成在 ImageNet 测试集上的 top-5 错误率为 3.57%,并在 ILSVRC 2015 分类竞赛中获得第一名。极深的表示在其他识别任务上也具有出色的泛化性能,并带领我们在 ILSVRC & COCO 2015 竞赛中进一步赢得了 ImageNet 检测、ImageNet 定位、COCO 检测和 COCO 分割方面的第一名。这个有力的证据表明残差学习原理是通用的,我们期望它适用于其他视觉和非视觉问题。

2.相关工作

残差表示。在图像识别中,VLAD [18] 是通过残差向量相对于字典进行编码的表示,Fisher Vector [30] 可以表示为 VLAD 的概率版本 [18]。它们都是用于图像检索和分类的强大浅层表示[4, 48]。对于矢量量化,编码残差矢量[17]被证明比编码原始矢量更有效。

在低级视觉和计算机图形学中,为了求解偏微分方程(PDE),广泛使用的多重网格方法[3]将系统重新表述为多个尺度的子问题,其中每个子问题负责较粗和较精细之间的残差解规模。多重网格的替代方法是分层基础预处理 [45, 46],它依赖于表示两个尺度之间残差向量的变量。研究表明 [3,45,46],这些求解器比不知道解的残差性质的标准求解器收敛得快得多。这些方法表明良好的重新配制或预处理可以简化优化。

捷径连接。导致捷径连接的实践和理论[2,34,49]已经被研究了很长时间。训练多层感知器 (MLP) 的早期实践是添加一个从网络输入连接到输出的线性层 [34, 49]。在[44, 24]中,一些中间层直接连接到辅助分类器以解决梯度消失/爆炸问题。 [39,38,31,47]的论文提出了通过快捷连接实现的居中层响应、梯度和传播误差的方法。在[44]中,“初始”层由一个快捷分支和一些更深的分支组成。

与我们的工作同时,"高速公路网络"[42, 43] 提出了具有门控功能的捷径连接[15]。这些门是与数据相关的,并且有参数,而我们的识别捷径则没有参数。

当门控捷径 "关闭"(趋近于零)时,高速公路网络中的层就代表了非剩余函数。相反,我们的公式总是能学习残差函数;我们的身份捷径永远不会关闭,所有信息都会通过,并学习额外的残差函数。此外,高速公路网络并没有显示出与深度大大增加(例如,超过100层)。

3.深度残差学习

3.1.残差学习

让我们把 H(x)看作是由几个堆叠层(不一定是整个网络)拟合的底层映射,x 表示这些层中第一个层的输入。如果假设多个非线性层可以渐近地逼近复杂函数2 ,那么就等同于假设它们可以渐近地逼近残差函数,即 H(x) - x(假设输入和输出的维数相同)。因此,我们并不期望堆叠层逼近 H(x),而是明确地让这些层逼近残差函数 F(x) := H(x) - x。虽然两种形式都能渐近地逼近所需的函数(如假设的那样),但学习的难易程度可能有所不同。

这种重新表述的动机是退化问题的反直觉现象(图 1 左)。正如我们在引言中所讨论的,如果添加的层可以构建为同一映射,那么较深的模型的训练误差应该不会大于较浅的模型。退化问题表明,求解器在通过多个非线性层逼近同一映射时可能会遇到困难。通过残差学习重构,如果同一映射是最优的,求解器可以简单地将多个非线性层的权重推向零,以接近同一映射。

在实际情况中,同一映射不太可能是最优的,但我们的重构可能有助于为问题提供先决条件。如果最优函数更接近同一映射而非零映射,那么求解器参照同一映射找到扰动应该比学习新函数更容易。我们通过实验(图 7)发现,学习到的残差函数一般反应较小,这表明同一映射提供了合理的前提条件。

3.2.通过捷径方式进行身份映射

我们对每几个堆叠层采用残差学习。图 2 显示了一个构件。在本文中,我们考虑的构件形式定义如下:

这里 x 和 y 分别是各层的输入和输出向量。函数 F(x; fWig) 表示要学习的残差映射。对于图 2 中有两层的例子,F =𝑊2σ(𝑊1𝑥) 其中 σ 表示ReLU,为了简化符号偏差被省略。运算 F + x 通过快捷连接和逐元素加法来执行。我们采用相加后的第二个非线性(即 σ(y),见图 2)。

方程(1)中的快捷连接既不引入额外的参数,也不引入额外的计算复杂度。这不仅在实践中有吸引力,而且在我们比较普通网络和残差网络时也很重要。我们可以公平地比较同时具有相同数量的参数、深度、宽度和计算成本的普通/残差网络(除了可忽略的逐元素加法)。

式(1)中x和F的尺寸必须相等。如果情况并非如此(例如,当更改输入/输出通道时),我们可以通过快捷连接执行线性投影 Ws 以匹配尺寸:

我们还可以在方程(1)中使用方阵Ws。但我们将通过实验证明恒等映射足以解决退化问题并且经济,因此Ws仅在匹配维度时使用。

残差函数F的形式是灵活的。本文中的实验涉及具有两层或三层的函数 F(图 5),但更多层也是可能的。但如果 F 只有单层,则方程(1)类似于线性层:y = 𝑊1x + x,我们尚未观察到其优点。

我们还注意到,尽管为了简单起见,上述符号是关于全连接层的,但它们适用于卷积层。函数F(x; fWig)可以表示多个卷积层。逐元素相加是在两个特征图上逐个通道执行的。

3.3.网络架构

我们测试了各种普通/残差网络,并观察到了一致的现象。为了提供讨论实例,我们描述了 ImageNet 的两个模型如下。

普通网络。我们的简单基线(图 3,中)主要受到 VGG 网络 [41](图 3,左)哲学的启发。卷积层大多具有 3×3 滤波器,并遵循两个简单的设计规则:

(i)对于相同的输出特征图大小,层具有相同数量的滤波器;

 (ii)如果特征图大小减半,滤波器的数量加倍,以保持每层的时间复杂度。我们直接通过步长为 2 的卷积层执行下采样。网络以全局平均池化层和带有 softmax 的 1000 路全连接层结束。图3(中)中加权层的总数为34。

值得注意的是,我们的模型比 VGG 网络 [41] 具有更少的滤波器和更低的复杂性(图 3,左)。我们的 34 层基线有 36 亿次 FLOP(乘加),仅为 VGG-19(196 亿次 FLOP)的 18%。

图 3.ImageNet 的网络架构示例。左:VGG-19 模型 [41](196 亿次 FLOP)作为参考。中:具有 34 个参数层的普通网络(36 亿次 FLOP)。

右图:具有 34 个参数层的残差网络(36 亿次 FLOP)。虚线快捷方式增加了维度。表 1 显示了更多详细信息和其他变体

残差网络。基于上述普通网络,我们插入快捷连接(图 3,右),将网络变成其对应的残差版本。当输入和输出具有相同维度时,可以直接使用恒等快捷方式(方程(1))(图3中的实线快捷方式)。当维度增加时(图 3 中的虚线快捷方式),我们考虑两种选择:

(A)快捷方式仍然执行恒等映射,并填充额外的零条目以增加维度。该选项不引入额外的参数;

 (B) 方程 (2) 中的投影快捷方式用于匹配维度(通过 1×1 卷积完成)。对于这两个选项,当快捷方式穿过两种尺寸的特征图时,它们的步幅为 2。

3.4.执行

我们对 ImageNet 的实现遵循 [21, 41] 中的实践。图像的大小被调整,其短边在 [256; 中随机采样; 480]用于规模扩大[41]。

从图像或其水平翻转中随机采样 224×224 裁剪,并减去每个像素的平均值[21]。使用[21]中的标准颜色增强。我们在每次卷积之后和激活之前采用批量归一化(BN)[16],如下[16]。我们按照[13]中的方式初始化权重,并从头开始训练所有普通/残差网络。我们使用小批量大小为 256 的 SGD。学习率从 0.1 开始,当误差达到稳定水平时除以 10,模型的迭代次数最多为 60 × 104。我们使用 0.0001 的权重衰减和 0.9 的动量。我们不使用 dropout [14],遵循[16]中的做法。

在测试中,为了进行比较研究,我们采用标准的 10 作物测试 [21]。为了获得最佳结果,我们采用[41, 13]中的全卷积形式,并在多个尺度上平均分数(调整图像大小,使短边位于 {224, 256, 384, 480, 640})。

4. 实验

4.1. ImageNet 分类

我们在包含 1000 个类的 ImageNet 2012 分类数据集 [36] 上评估我们的方法。这些模型在 128 万张训练图像上进行训练,并在 5 万张验证图像上进行评估。我们还获得了测试服务器报告的 100k 测试图像的最终结果。

我们评估 top-1 和 top-5 错误率。

普通网络。我们首先评估 18 层和 34 层普通网络。 34层素网如图3(中)。 18层平网也是类似的形式。详细架构请参见表 1。

表 1.ImageNet 架构。构建块显示在括号中(另参见图 5),并显示堆叠的块数。下采样由 conv3 1、conv4 1 和 conv5 1 执行,步长为 2。

表 2. ImageNet 验证的 Top-1 错误(%,10 裁剪测试)。

与普通的 ResNet 相比,这里的 ResNet 没有额外的参数。图4显示了训练过程。

表2中的结果表明,较深的34层普通网络比较浅的18层普通网络具有更高的验证误差。为了揭示原因,在图 4(左)中,我们比较了训练过程中的训练/验证错误。我们观察到了退化问题—尽管 18 层普通网络的解空间是 34 层网络解空间的子空间,但 34 层普通网络在整个训练过程中具有较高的训练误差。

图 4. ImageNet 上的训练。细曲线表示训练误差,粗曲线表示中心作物的验证误差。

左:18 层和 34 层的普通网络。

右:18 层和 34 层的 ResNet。在此图中,与普通网络相比,残差网络没有额外的参数。

我们认为这种优化困难不太可能是由梯度消失引起的。这些普通网络使用 BN [16] 进行训练,确保前向传播的信号具有非零方差。我们还验证了反向传播梯度与 BN 表现出健康的规范。因此,前向或后向信号都不会消失。事实上,34 层普通网络仍然能够达到有竞争力的精度(表 3),这表明该求解器在一定程度上发挥了作用。我们推测,深层平原网络的收敛速度可能呈指数级低,这会影响训练误差的减少。未来将研究造成这种优化困难的原因。

表 3. ImageNet 验证的错误率(%,10-crop 测试)。

VGG-16 基于我们的测试。 ResNet-50/101/152 属于选项 B,仅使用投影来增加维度。

残差网络。接下来我们评估 18 层和 34 层残差网络 (ResNets)。基线架构与上述普通网络相同,只是在每对 3×3 滤波器中添加了快捷连接,如图 3(右)所示。在第一个比较中(表 2 和图 4 右),我们对所有快捷方式使用恒等映射,并使用零填充来增加维度(选项 A)。因此,与普通的对应物相比,它们没有额外的参数。

从表 2 和图 4 中我们得到了三个主要观察结果。首先,残差学习的情况发生了逆转——34 层 ResNet 优于 18 层 ResNet(提高了 2.8%)。更重要的是,34 层 ResNet 表现出相当低的训练误差,并且可推广到验证数据。这表明退化问题在此设置中得到了很好的解决,并且我们设法通过增加深度来获得精度增益。

其次,与普通的对应物相比,34 层ResNet 将 top-1 误差降低了 3.5%(表 2)(图 4 右图与左图)。成功降低了训练误差,这一比较验证了残差学习在极深系统上的有效性。

最后,我们还注意到 18 层普通/残差网络相当准确(表 2),但 18 层 ResNet 收敛速度更快(图 4 右与左)。当网络“不太深”(此处为 18 层)时,当前的 SGD 求解器仍然能够为普通网络找到良好的解决方案。在这种情况下,ResNet 通过在早期提供更快的收敛来简化优化。

身份与投影捷径。我们已经证明无参数的身份快捷方式有助于训练。接下来我们研究投影捷径(方程(2))。在表3中,我们比较了三个选项:

(A)使用零填充快捷方式来增加维度,并且所有快捷方式都是无参数的(与表2和图4右相同);

 (B) 投影捷径用于增加维度,其他捷径为恒等;

 (C) 所有捷径都是投影。

表 3 显示所有三个选项都比普通选项好得多。 B 比 A 稍好。我们认为这是因为 A 中的零填充维度确实没有残差学习。 C 比 B 稍好一些,我们将其归因于许多(十三个)投影快捷方式引入的额外参数。但 A/B/C 之间的微小差异表明投影捷径对于解决退化问题并不是必需的。因此,我们在本文的其余部分不使用选项 C,以减少内存/时间复杂度和模型大小。身份快捷方式对于不增加下面介绍的瓶颈架构的复杂性特别重要。

更深层次的瓶颈架构。接下来我们描述 ImageNet 的更深网络。由于担心我们可以负担的训练时间,我们将构建块修改为瓶颈设计4。对于每个残差函数 F,我们使用 3 层而不是 2 层的堆栈(图 5)。这三个层分别是 1×1、3×3 和 1×1 卷积,其中 1×1 层负责减少然后增加(恢复)维度,而 3×3 层则成为输入/输出维度较小的瓶颈。图 5 显示了一个示例,其中两种设计具有相似的时间复杂度。

图 5.ImageNet 的更深残差函数 F。左:ResNet34 的构建块(在 56×56 特征图上),如图 3 所示。右:ResNet-50/101/152 的“瓶颈”构建块。

无参数恒等快捷方式对于瓶颈架构尤其重要。如果将图 5(右)中的恒等快捷方式替换为投影,可以看出时间复杂度和模型大小加倍,因为快捷方式连接到两个高维端。因此,身份快捷方式可以为瓶颈设计带来更有效的模型。

50 ResNet:我们 3用 层瓶颈块替换在34 层网络中的每个 2 层块,形成 50 层 ResNet(表 1)。我们使用选项 B 来增加维度。该模型有 38 亿次 FLOP。

101层和152层ResNet:我们通过使用更多的3层块构建101层和152层ResNet(表1)。值得注意的是,尽管深度显着增加,但 152 层 ResNet(113 亿 FLOPs)的复杂度仍然低于 VGG-16/19 网络(15.3/196 亿 FLOPs)。

50/101/152 层 ResNet 比 34 层 ResNet 更准确(表 3 和表 4)。我们没有观察到退化问题,因此从显着增加的深度中获得了显着的精度增益。所有评估指标都体现了深度的好处(表 3 和表 4)

表 4. ImageNet 验证集上单模型结果的错误率 (%)(测试集上报告的 y 除外)。

表 5. 集成的错误率 (%)。 top-5错误出现在ImageNet的测试集上,由测试服务器报告。

与最先进方法的比较。在表 4 中,我们与之前最好的单模型结果进行了比较。我们的基线 34 层 ResNet 已经实现了非常有竞争力的精度。我们的 152 层 ResNet 的单模型 top-5 验证误差为 4.49%。该单模型结果优于之前所有的集成结果(表 5)。我们将六个不同深度的模型组合起来形成一个集成(提交时只有两个 152 层的模型)。这导致测试集上的 top-5 错误率为 3.57%(表 5)。该作品荣获ILSVRC 2015第一名。

4.2. CIFAR-10 和分析

我们对 CIFAR-10 数据集 [20] 进行了更多研究,该数据集由 10 个类别的 50k 训练图像和 10k 测试图像组成。我们提出了在训练集上训练并在测试集上评估的实验。我们的重点是极深网络的行为,而不是推动最先进的结果,因此我们有意使用如下简单的架构。

普通/残差架构遵循图 3 中的形式(中/右)。网络输入是 32×32 图像,减去每个像素的平均值。第一层是3×3卷积。然后我们在大小为 {32 ,16, 8} 的特征图上使用具有 3×3 卷积的 6n 层堆栈,每个特征图大小有 2n 层。滤波器数量分别为  {16, 32, 64} 。子采样通过步长为 2 的卷积来执行。网络以全局平均池化、10 路全连接层和 softmax 结束。总共有 6n+2 个堆叠的加权层。下表总结了该架构:

当使用捷径连接时,它们连接到成对的 3×3 层(总共 3n 个捷径)。在此数据集上,我们在所有情况下都使用身份快捷方式(即选项 A),因此,我们的残差模型具有与普通模型完全相同的深度、宽度和参数数量。

我们使用 0.0001 的权重衰减和 0.9 的动量,并采用 [13] 和 BN [16] 中的权重初始化,但没有 dropout。这些模型在两个 GPU 上使用 128 的小批量进行训练。我们从 0.1 的学习率开始,在 32k 和 48k 迭代时将其除以 10,并在 64k 迭代时终止训练,这是根据 45k/5k 训练/验证分割确定的。我们遵循[24]中的简单数据增强进行训练:每侧填充 4 个像素,并从填充图像或其水平翻转中随机采样 32×32 裁剪。为了进行测试,我们仅评估原始 32×32 图像的单个视图。

我们比较 n ={3, 5, 7, 9},导致20、32、44和56层网络。图 6(左)显示了普通网络的行为。深层平原网络会受到深度增加的影响,并且当更深时会表现出更高的训练误差。这种现象与 ImageNet(图 4,左)和 MNIST(参见[42])上的现象类似,表明这种优化难度是一个根本问题。

图 6.在CIFAR-10 训练。虚线表示训练误差,粗线表示测试误差。左:普通网络。 plain-110的错误率高于60%,不显示。中:ResNet。右:具有 110 层和 1202 层的 ResNet。

图 6(中)显示了 ResNet 的行为。与 ImageNet 案例(图 4,右)类似,我们的 ResNet 设法克服了优化困难,并在深度增加时展示了准确性的提高。

表 6. CIFAR-10 测试集上的分类错误。所有方法都带有数据增强。对于 ResNet-110,我们运行 5 次并显示“最佳(平均值±标准差)”,如[43]中所示。

我们进一步探索 n = 18,从而得到 110 层的 ResNet。在这种情况下,我们发现初始学习率 0.1 稍微太大而无法开始收敛5。所以我们用0.01来预热训练,直到训练误差低于80%(大约400次迭代),然后回到0.1继续训练。其余的学习计划如前所述。这个 110 层网络收敛得很好(图 6,中)。与FitNet[35]、Highway[42]等其他深、薄参数网络相比,它的参数更少(表6),但仍属于最先进的结果(6.43%,表6)。

层响应分析。图 7 显示了各层响应的标准偏差 (std)。响应是每个 3×3 层的输出,位于 BN 之后和其他非线性(ReLU/加法)之前。对于 ResNets,此分析揭示了残差函数的响应强度。

图 7. CIFAR10 上层响应的标准偏差 (std)。响应是 BN 之后、非线性之前每个 3×3 层的输出。顶部:图层按其原始顺序显示。底部:响应按降序排列。

图 7 显示 ResNet 的响应通常比普通网络的响应更小。这些结果支持我们的基本动机(第 3.1 节),即残差函数通常可能比非残差函数更接近于零。我们还注意到,更深的 ResNet 具有较小的响应幅度,如图 7 中 ResNet-20、56 和 110 之间的比较所证明的那样。当层数较多时,ResNet 的单个层往往对信号的修改较小。

探索超过 1000 。我们探索了一个超过 1000 层的深度模型。我们设置 n = 200,得到一个 1202 层的网络,该网络的训练如上所述。我们的方法没有表现出优化难度,并且这个 103 层网络能够实现训练误差 <0.1%(图 6,右)。其测试误差还是相当不错的(7.93%,表6)。

但如此深入的模型仍然存在悬而未决的问题。这个1202层网络的测试结果比我们的110层网络差,虽然两个都有类似的训练误差。我们认为这是因为过度拟合。对于这个小数据集,1202 层网络可能太大(19.4M)。应用强正则化(例如 maxout [10] 或 dropout [14])以获得此数据集上的最佳结果([10,25,24,35])。在本文中,我们不使用 maxout/dropout,只是通过设计简单地通过深结构和精简结构施加正则化,而不会分散对优化困难的关注。但与更强的正则化相结合可能会改善结果,我们将在未来研究这一点。

4.3. PASCAL MS COCO 上的物体检测

我们的方法在其他识别任务上具有良好的泛化性能。表 7 和表 8 显示了 PASCAL VOC 2007 和 2012 [5] 以及 COCO [26] 上的目标检测基线结果。我们采用 Faster R-CNN [32] 作为检测方法。这里我们感兴趣的是用 ResNet-101 替换 VGG-16 [41] 的改进。使用两种模型的检测实现(参见附录)是相同的,因此收益只能归因于更好的网络。

最值得注意的是,在具有挑战性的 COCO 数据集上,我们获得了 COCO 标准指标 (mAP@[.5, .95]) 6.0% 的增长,这是 28% 的相对改进。这种增益完全归功于学习到的表示。

基于深度残差网络,我们在 ILSVRC & COCO 2015 竞赛中的几个赛道上获得了第一名:ImageNet 检测、ImageNet 定位、COCO 检测和 COCO 分割。详情见附录。

附录

A. 物体检测基线

在本节中,我们介绍基于基线 Faster R-CNN [32] 系统的检测方法。这些模型由 ImageNet 分类模型初始化,然后根据对象检测数据进行微调。我们在 ILSVRC & COCO 2015 检测竞赛时尝试了 ResNet-50/101。

与[32]中使用的VGG-16不同,我们的ResNet没有隐藏的fc层。我们采用“Conv特征图上的网络”(NoC)[33]的想法来解决这个问题。我们使用图像上的步幅不大于 16 个像素的那些层(即 conv1、conv2 x、conv3 x 和 conv4 x,ResNet-101 中总共 91 个卷积层)计算全图像共享卷积特征图;表 1 )。我们认为这些层类似于 VGG-16 中的 13 个卷积层,通过这样做,ResNet 和 VGG-16 都具有相同总步长(16 像素)的卷积特征图。这些层由区域提议网络(RPN,生成 300 个提议)[32] 和 Fast R-CNN 检测网络 [7] 共享。 RoI pooling [7] 在 conv5 1 之前执行。在这个 RoI-pooled 特征上,每个区域采用 conv5 x 及以上的所有层,扮演 VGG-16 的 fc 层的角色。最终的分类层被两个兄弟层取代(分类和框回归[7])。

对于 BN 层的使用,预训练后,我们计算 ImageNet 训练集上每一层的 BN 统计数据(均值和方差)。然后在物体检测的微调过程中固定 BN 层。因此,BN 层成为具有恒定偏移和尺度的线性激活,并且 BN 统计数据不会通过微调进行更新。我们修复 BN 层主要是为了减少 Faster R-CNN 训练中的内存消耗。

PASCAL VOC

按照[7, 32],对于PASCAL VOC 2007测试集,我们使用VOC 2007中的5k trainval图像和VOC 2012中的16k trainval图像进行训练(“07+12”)。对于PASCAL VOC 2012测试集,我们使用VOC 2007中的10k trainval+测试图像和VOC 2012中的16k trainval图像进行训练(“07++12”)。训练 Faster R-CNN 的超参数与[32]中的相同。结果如表7所示。 ResNet-101 比 VGG-16 将 mAP 提高了 >3%。这一增益完全是因为 ResNet 学习到的特征得到了改进。

MS COCO

MS COCO数据集[26]涉及80个对象类别。我们评估 PASCAL VOC 指标 (mAP @ IoU = 0.5) 和标准 COCO 指标 (mAP @ IoU = .5:.05:.95)。我们使用训练集上的 80k 图像进行训练,使用 val 集上的 40k 图像进行评估。我们的 COCO 检测系统与 PASCAL VOC 的检测系统类似。我们使用 8-GPU 实现来训练 COCO 模型,因此 RPN 步骤的小批量大小为 8 个图像(即每个 GPU 1 个),而 Fast R-CNN 步骤的小批量大小为 16 个图像。 RPN 步骤和 Fast RCNN 步骤均以 0.001 的学习率训练 240k 次迭代,然后以 0.0001 的学习率训练 80k 次迭代。

表 8 显示了 MS COCO 验证集上的结果。 ResNet-101 的 mAP@[.5, .95] 比 VGG-16 提高了 6%,相对提高了 28%,这完全是由更好的网络学习到的特征贡献的。值得注意的是,mAP@[.5, .95] 的绝对增幅 (6.0%) 几乎与 mAP@.5 (6.9%) 一样大。这表明更深的网络可以提高识别和定位。

B. 物体检测改进

为了完整起见,我们报告了比赛的改进。这些改进基于深层特征,因此应该受益于残差学习。

MS COCO

方框细化。我们的方框细化部分沿用了 [6] 中的迭代定位方法。在 Faster R-CNN 中,最终输出是一个回归盒,它与其提议盒不同。因此,在推理时,我们从回归框中汇集一个新特征,得到一个新的分类分数和一个新的回归框。我们将这 300 个新的预测结果与原来的 300 个预测结果结合起来。使用 0.3 的 IoU 阈值[8],对预测框的联合集进行非最大抑制(NMS),然后进行框投票[6]。方框细化将 mAP 提高了约 2 个点(表 9)。

全局上下文。我们在快速 R-CNN 步骤中结合了全局上下文。给定全图 conv 特征图后,我们通过全局空间金字塔汇集法 [12](使用 "单层 "金字塔)汇集一个特征,该方法可作为 "RoI "汇集法实施,使用整个图像的边界框作为 RoI。汇集后的特征被输入到后 RoI 层,以获得全局上下文特征。这个全局特征与原始的每个区域特征相连接,然后进入同级分类和盒式回归层。这种新结构是端到端训练。全局上下文将 mAP@.5 提高了约 1 个点(表 9)。

多尺度测试。在上文中,所有结果都是通过单尺度训练/测试获得的,如文献[32],其中图像的较短边为 s = 600 像素。多尺度训练/测试在文献[12, 7]中是通过从特征金字塔中选择一个尺度来实现的,在文献[33]中是通过使用最大输出层来实现的。在我们目前的实施中,我们按照[33]的方法进行了多尺度测试;由于时间有限,我们没有进行多尺度训练。此外,我们只对快速 R-CNN 步骤(尚未对 RPN 步骤)进行了多尺度测试。利用训练好的模型,我们在图像金字塔上计算 conv 特征图,其中图像的短边为 s ∈ {200, 400, 600, 800, 1000}。

我们按照 [33] 的方法从金字塔中选择两个相邻的尺度。在这两个尺度的特征图上进行 RoI 池和后续层[33],并按照[33]中的 maxout 方法进行合并。多尺度测试使 mAP 提高了 2 个点以上(表 9)。

使用验证数据。接下来,我们使用 80k+40k trainval 集进行训练,并使用 20k test-dev 集进行评估。testdev 集没有公开的地面实况,其结果由评估服务器报告。在这种设置下,结果是 mAP@.5 为 55.7%,mAP@[.5, .95] 为 34.9%(表 9)。这就是我们的单一模型结果。

集合。在 Faster R-CNN 中,系统设计用于学习区域建议和对象分类器,因此可以使用集合来提高这两项任务的效率。我们使用一个集合来提出区域建议,并由每个区域分类器的集合来处理建议的联合集。表 9 显示了我们基于 3 个网络组合的结果。在测试-开发集上,mAP 分别为 59.0% 和 37.4%。这一结果赢得了 COCO 2015 检测任务的第一名。

表 9. 使用 Faster R-CNN 和 ResNet-101 对 MS COCO 进行物体检测的改进。

PASCAL VOC

表 10. PASCAL VOC 2007 测试集上的检测结果。基线是 Faster R-CNN 系统。系统“基线+++”包括表9中的框细化、上下文和多尺度测试。

表 11. PASCAL VOC 2012 测试集上的检测结果 (PASCAL VOC Challenge performance evaluation server Faster R-CNN 系统。系统“基线+++”包括表9中的框细化、上下文和多尺度测试。

我们根据上述模型重新研究了 PASCAL VOC 数据集。利用 COCO 数据集上的单一模型(表 9 中的 55.7% mAP@.5),我们在 PASCAL VOC 数据集上对该模型进行了微调。我们还采用了方框细化、上下文和多尺度测试等改进方法。这样做在 PASCAL VOC 2007(表 10)和 PASCAL VOC 2012(表 11)6 中,我们的 mAP 分别达到 85.6% 和 83.8% 。PASCAL VOC 2012 的结果比之前最先进的结果高出 10 个百分点[6]。

ImageNet检测

ImageNet 检测 (DET) 任务涉及 200 个对象类别。精度通过mAP@.5进行评估。我们的 ImageNet DET 对象检测算法与表 9 中的 MS COCO 的对象检测算法相同。网络在 1000 类 ImageNet 分类集上进行预训练,并在 DET 数据上进行微调。我们按照[8]将验证集分为两部分(val1/val2)。我们使用 DET 训练集和 val1 集微调检测模型。 val2 集用于验证。我们不使用其他 ILSVRC 2015 数据。我们使用 ResNet-101 的单一模型具有mAP 为 58.8%,我们的 3 个模型的集合在 DET 测试集上的 mAP 为 62.1%(表 12)。该结果在 ILSVRC 2015 的 ImageNet 检测任务中获得第一名,超越第二名 8.5 分(绝对值)。

表 12.我们在 ImageNet 检测数据集上的结果(mAP,%)。我们的检测系统是 Faster R-CNN [32],并使用 ResNet-101 进行了表 9 中的改进。

C. ImageNet 本地化

ImageNet 定位(LOC)任务 [36] 需要对对象进行分类和定位。根据[40, 41],我们假设首先采用图像级分类器来预测图像的类标签,并且定位算法仅考虑基于预测类来预测边界框。我们采用“每类回归”(PCR)策略[40, 41],为每个类学习一个边界框回归器。我们预先训练用于 ImageNet 分类的网络,然后对其进行微调以进行本地化。我们在提供的 1000 类 ImageNet 训练集上训练网络。

我们的定位算法基于[32]的 RPN 框架,并进行了一些修改。与[32]中与类别无关的方式不同,我们的本地化 RPN 是以每个类的形式设计的。该 RPN 以两个兄弟 1×1 卷积层结尾,用于二元分类 (cls) 和框回归 (reg),如 [32] 中所示。与 [32] 相比,cls 和 reg 层都位于每个类中。具体来说,cls层有1000维的输出,每个维度都是二元逻辑回归,用于预测是否是一个对象类; reg 层有一个 1000×4-d 的输出,由 1000 个类的框回归器组成。如[32]中所示,我们的边界框回归参考每个位置的多个平移不变“锚”框。

正如在 ImageNet 分类训练(第 3.4 节)中一样,我们随机采样 224×224 作物以进行数据增强。我们使用 256 个图像的小批量大小进行微调。为了避免负样本占主导地位,每张图像随机采样8个anchor,其中采样的正负anchor的比例为1:1[32]。为了进行测试,网络以全卷积方式应用于图像。

表 13. ImageNet 验证的定位误差 (%)。在“GT 类上的 LOC 错误”一栏中([41]),使用了真实值类。在“测试”列中,“1-crop”表示对 224×224 像素的中心裁剪进行测试,“dense”表示密集(全卷积)和多尺度测试。

表 13 比较了本地化结果。遵循[41],我们首先使用地面实况类作为分类预测来执行“oracle”测试。

VGG的论文[41]重新使用地面真值类别得出的中心裁剪误差为 33.1%(表 13)。在相同的设置下,我们使用 ResNet-101 网络的 RPN 方法将中心裁剪误差显着降低至 13.3%。这一比较证明了我们框架的出色性能。通过密集(全卷积)和多尺度测试,我们的 ResNet-101 使用地面实况类的错误率为 11.7%。使用 ResNet-101 预测类别(top-5 分类误差为 4.6%,表 4),top-5 定位误差为 14.4%。

上述结果仅基于Faster R-CNN [32]中的提议网络(RPN)。可以使用 Faster R-CNN 中的检测网络(Fast R-CNN [7])来改善结果。但我们注意到,在这个数据集上,一张图像通常包含一个主导对象,并且提议区域彼此高度重叠,因此具有非常相似的 RoI 池化特征。因此,Fast R-CNN [7] 以图像为中心的训练会生成小变化的样本,这对于随机训练来说可能是不需要的。受此启发,在我们当前的实验中,我们使用以 RoI 为中心的原始 RCNN [8] 来代替 Fast R-CNN。

我们的 R-CNN 实现如下。我们将如上所述训练的每类 RPN 应用于训练图像来预测地面实况类的边界框。这些预测框起着依赖于类的建议的作用。

对于每个训练图像,提取得分最高的 200 个提案作为训练样本来训练 R-CNN 分类器。图像区域是从提案中裁剪出来的,扭曲为 224×224 像素,然后输入到分类网络中,如 R-CNN [8] 中那样。该网络的输出由 cls 和 reg 的两个同级 fc 层组成,也是按类形式。

该 R-CNN 网络以以 RoI 为中心的方式使用 256 的小批量大小在训练集上进行微调。为了进行测试,RPN 为每个预测类别生成得分最高的 200 个提案,并使用 R-CNN 网络更新这些提案的得分和框位置。

表 14. ImageNet 数据集上的定位误差 (%) 与最先进方法的比较。

该方法将 top-5 定位误差降低至 10.6%(表 13)。这是我们在验证集上的单模型结果。使用网络集成进行分类和定位,我们在测试集上实现了 9.0% 的前 5 名定位误差。该数字显着优于 ILSVRC 14 结果(表 14),显示误差相对减少了 64%。该结果在 ILSVRC 2015 的 ImageNet 定位任务中获得第一名。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1132419.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

考研专业课程管理系统 JAVA开源项目 毕业设计

1. 项目介绍 基于JAVAVueSpringBootMySQL 的考研专业课程管理系统&#xff0c;包含了考研课程、考研专业、考研注册、考研院校和高校教师模块&#xff0c;还包含系统自带的用户管理、部门管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块&…

React 图片瀑布流

思路&#xff1a; 根据浏览器宽度&#xff0c;确定列数&#xff0c;请求的图片列表数据是列数的10倍&#xff0c;按列数取数据渲染 Index.js: import React from react import { connect } from react-redux import { withRouter } from react-router-dom import { SinglePag…

22 行为型模式-状态模式

1 状态模式介绍 2 状态模式结构 3 状态模式实现 代码示例 //抽象状态接口 public interface State {//声明抽象方法,不同具体状态类可以有不同实现void handle(Context context); }

PyQt5入门4——给目标检测算法构建一个简单的界面

PyQt5入门4——给目标检测算法构建一个简单的界面 学习前言要构建怎么样的界面实例使用1、窗口构建a、按钮&#xff1a;获取图片b、Inputs、Outputs文本提示c、Inputs、Outputs图片显示d、箭头显示e、整点祝福 2、主程序运行 全部代码 学习前言 搞搞可视化界面哈&#xff0c;虽…

外汇天眼:CySEC向塞浦路斯投资公司的董事会成员发出警告

塞浦路斯证券与交易委员会&#xff08;CySEC&#xff09;已警告塞浦路斯投资公司&#xff08;CIFs&#xff09;的董事会成员&#xff0c;提醒他们加强履行职责&#xff0c;推动诚信和高道德标准的文化&#xff0c;此前监管行动揭示了合规方面的差距。 CySEC已经在加强监管措施…

国产破局、引领三维未来 | 大势智慧2023秋季新品发布会来了!

国产破局、引领三维未来 全国产、真安全 大势智慧2023秋季新品发布会 10.27 | 14:30 扫码预约 敬请期待 #实景三维##三维重建##国产替代##新品发布# ​​​

ts声明文件

1 背景 对于为第三方模块/库写声明文件之前&#xff0c;我们需要知道第三方模块/库&#xff0c;是否需要声明文件&#xff0c;或者是否已有声明文件。 若第三方模块/库&#xff0c;是ts编写且无声明文件&#xff0c; 可以使用--declaration配置选项来生成&#xff1b;可以在命…

什么是SpringCloud Alibaba Nacos注册中心

&#x1f600;前言 本篇博文是关于SpringCloud Alibaba Nacos的基本介绍和使用&#xff0c;希望你能够喜欢 &#x1f3e0;个人主页&#xff1a;晨犀主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是晨犀&#xff0c;希望我的文章可以帮助到大家&#xff0c;您的满…

【Java系列】ArrayList

ArrayList 添加元素访问元素修改元素删除元素计算大小迭代数组列表其他的引用类型ArrayList 排序Java ArrayList 方法系列文章系列文章版本记录 引言 ArrayList 类是一个可以动态修改的数组&#xff0c;与普通数组的区别就是它是没有固定大小的限制&#xff0c;我们可以添加或删…

wxPython 布局调试技巧

在Show()与MainLoop()直接加入以上代码 import wx.lib.inspection ...frame.Show() wx.lib.inspection.InspectionTool().Show() app.MainLoop()启动后会弹出布局查看工具

家用洗地机哪种好?2023年最好用的洗地机

洗地机已经成为现代家庭不可或缺的家电之一&#xff0c;可以大大减轻家庭清洁的负担&#xff0c;使我们的生活更加轻松和便捷。但面对市场上众多品牌和型号的洗地机&#xff0c;我们如何选择最适合自己的呢?本文将为您介绍2023年最好用的洗地机&#xff0c;详细比较它们的特点…

Git不常用命令(持续更新)

今日鸡汤&#xff1a;当你最满足的时候&#xff0c;通常也最孤独&#xff1b;当你最愤慨的时候&#xff0c;通常也最可怜。 此博文会列出一些平时不常用&#xff0c;但是能提高效率的git命令&#xff0c;后续会出IDEA对应的操作步骤 快看看你是不是都用过... 分支&#xff08;…

HarmonyOS 多音频播放并发政策及音频管理解析

音频打断策略 多音频并发&#xff0c;即多个音频流同时播放。此场景下&#xff0c;如果系统不加管控&#xff0c;会造成多个音频流混音播放&#xff0c;容易让用户感到嘈杂&#xff0c;造成不好的用户体验。为了解决这个问题&#xff0c;系统预设了音频打断策略&#xff0c;对…

微信群发消息的正确打开方式,让你的社交更高效!

在当今的社交媒体时代&#xff0c;微信已经成为了我们生活中必不可少的一部分。而微信的群发消息功能&#xff0c;让我们可以方便地将信息一次性发送给多个联系人。然而&#xff0c;微信的群发消息功能有一个限制&#xff0c;即每次只能群发200个联系人。这对于需要发送消息给大…

【网安大模型专题10.19】※论文5:ChatGPT+漏洞定位+补丁生成+补丁验证+APR方法+ChatRepair+不同修复场景+修复效果(韦恩图展示)

Keep the Conversation Going: Fixing 162 out of 337 bugs for $0.42 each using ChatGPT 写在最前面背景介绍自动程序修复流程Process of APR (automated program repair)1、漏洞程序2、漏洞定位模块3、补丁生成4、补丁验证 &#xff08;可以学习的PPT设计&#xff09;经典的…

Jmeter(十三):jmeter第三方插件管理工具安装详细步骤

jmeter第三方插件管理工具安装 第一步&#xff1a;下载 jmeter-plugins-manager-1.6.jar 第二步&#xff1a;把该jar包放置到:jmeter安装路径/lib/ext下 第三步&#xff1a;重启jmeter,在选项下可以看见插件管理 同时&#xff0c;我也准备了一份软件测试视频教程&#xff08;…

(10_24)【有奖体验】AIGC小说创作大赛开启!通义千问X函数计算部署AI助手

一个 AI 助手到底能做什么&#xff1f; 可以书写小说 可以解析编写代码 可以鼓舞心灵 提供职业建议 还有更多能力需要您自己去探索。接下来我们将花费 5 分钟&#xff0c;基于函数计算X通义千问部署一个 AI 助手&#xff0c;帮你撰写各类文案。 领取函数计算试用额度 首次开…

折纸问题

折纸的次数 —— 从上到下的折痕 本质上是中序遍历的问题&#xff0c;因为每一次在已有的折痕后折的时候&#xff0c;当前折痕上的折痕一定为凹&#xff0c;当前折痕下的折痕一定为凸 。实际模拟了一个不存在的二叉树结构的中序遍历。 注&#xff1a;折纸折几次整颗二叉树就有…

Jmeter的接口自动化测试

在去年实施了一年的三端&#xff08;PC、无线M站、无线APP【Android、IOS】&#xff09;后&#xff0c;今年7月份开始&#xff0c;我们开始进行接口自动化的实施&#xff0c;目前已完成了整个框架的搭建以及接口的持续测试集成。今天做个简单的分享。 在开始自动化投入前&#…

独家揭秘微信视频号下载提取器,使用方法!

1&#xff1a;微信视频号下载提取器&#xff0c;需要先确认自己手机电脑版本是否支持视频号的观看和浏览 2:需要下载视频号的作品发给视频下载小助手&#xff0c;聊天窗口 3&#xff1a;打开小助手解析视频号视频链接&#xff0c;保存到手机相册或者电脑上 注意视频号电脑版…