作者
Kaiming He,Xiangyu Zhang,Shaoqing Ren,Jian Sun
(Microsoft Research {kahe, v-xiangz, v-shren, jiansun}@microsoft.com)
摘要
更深的神经网络更难训练。 我们提出了一种残差的学习框架,以简化比以前使用的网络更深入的网络训练。 我们显式地将层重新配置为参考层输入学习剩余函数,而不是学习未参考函数。 我们提供了全面的经验证据,表明这些残差网络更易于优化,并且可以通过深度的增加而获得准确性。 在ImageNet数据集上,我们评估深度最大为152层的残差网络-比VGG网络深8倍,但仍具有较低的复杂度。 这些残留网络的整体在ImageNet测试集上实现3.57%的误差。 该结果在ILSVRC 2015分类任务中获得第一名。 我们还将介绍具有100和1000层的CIFAR-10的分析。
表示的深度对于许多视觉识别任务至关重要。 仅由于我们的深度表示,我们在COCO对象检测数据集上获得了28%的相对改进。 深度残差网是我们向ILSVRC&COCO 2015竞赛1提交的基础,在该竞赛中,我们还获得了ImageNet检测,ImageNet本地化,COCO检测和COCO分割等任务的第一名。( http://image-net.org/challenges/LSVRC/2015/ and http://mscoco.org/dataset/#detections-challenge2015.)
1. 引言
深度卷积神经网络为图像分类带来了一系列突破。 深度网络自然地以端到端的多层方式集成了低/中/高级功能和分类器,并且功能的“级别”可以通过堆叠的层数(深度)来丰富。 最近的证据表明,网络深度至关重要,在具有挑战性的ImageNet数据集上的领先结果都采用了“非常深”的模型,深度为16到30。 许多其他非平凡的视觉识别任务也从非常深入的模型中受益匪浅。
在深度意义的驱动下,出现了一个问题:学习更好的网络是否像堆叠更多的层一样容易? 回答这个问题的一个障碍是臭名昭著的梯度消失/爆炸问题,从一开始就阻碍了收敛。 但是,此问题已通过归一化初始化层和中间归一化层得到了很大解决,这使具有数十个层的网络能够开始进行反向传播的随机梯度下降(SGD)收敛。
当更深的网络能够开始融合时,就会出现降级问题:随着网络深度的增加,精度达到饱和(这可能不足为奇),然后迅速降级。 出乎意料的是,这种降级不是由过度拟合引起的,并且在我们的实验中报告并充分验证了,将更多层添加到适当深度的模型中会导致更高的训练误差。 图1显示了一个典型示例。
图1. 在带有20层和56层“普通”网络的CIFAR-10上的训练错误(左)和测试错误(右)。 较深的网络具有较高的训练错误,从而导致测试错误。 ImageNet上的类似现象如图4所示
训练准确性的下降表明并非所有系统都同样容易优化。 让我们考虑一个较浅的体系结构及其更深的对应结构,它会在其上添加更多层。 通过构建更深层的模型,可以找到一种解决方案:添加的层是身份映射,而其他层是从学习的浅层模型中复制的。 该构造解决方案的存在表明,较深的模型不会比浅模型产生更高的训练误差。 但是实验表明,我们现有的求解器无法找到比构造的解决方案好或更好的解决方案(或无法在可行的时间内找到解决方案)。
在本文中,我们通过引入深度残差学习框架来解决退化问题。 而不是希望每个堆叠的层都直接适合所需的基础映射,我们明确让这些层适合残差映射。 形式上,将所需的基础映射表示为
,我们让堆叠的非线性层适合
的另一个映射。 原始映射将重铸为
。 我们假设优化残差映射比优化原始未引用映射要容易。 极端地,如果身份映射是最佳的,则将残差推到零比通过非线性层堆栈拟合身份映射要容易。
公式
可通过具有“快捷连接”的前馈神经网络来实现(图2)。快捷连接是跳过一层或多层的连接。 在我们的情况下,快捷方式连接仅执行身份映射,并将其输出添加到堆叠层的输出中(图2)。身份快捷方式连接既不增加额外的参数,也不增加计算复杂度。 整个网络仍然可以通过SGD反向传播进行端到端训练,并且可以使用通用库(例如Caffe)轻松实现,而无需修改求解器。
我们在ImageNet上进行了全面的实验,以显示退化问题并评估我们的方法。 我们表明:1)我们极深的残差网络很容易优化,但是当深度增加时,对应的“普通”网络(简单地堆叠层)显示出更高的训练误差; 2)我们的深层残差网络可以通过大大增加深度来轻松享受精度提升,从而产生比以前的网络更好的结果。
CIFAR-10集上也显示了类似的现象,这表明优化困难和我们方法的效果不仅类似于特定数据集。 我们在这个数据集上成功地训练了100多个层的模型,并探索了1000多个层的模型。
在ImageNet分类数据集中,我们通过极深的残差网络获得了出色的结果。 我们的152层残差网络是ImageNet上展示的最深的网络,同时其复杂度仍低于VGG网络。 我们的合奏在ImageNet测试集上的前5个错误的错误率为3.57%,并在ILSVRC 2015分类竞赛中获得第一名。 极深的表示法在其他识别任务上也具有出色的泛化性能,使我们在ILSVRC和COCO 2015竞赛中进一步赢得了第一名:ImageNet检测,ImageNet本地化,COCO检测和COCO细分。 有力的证据表明,残差学习原理是通用的,我们希望它适用于其他视觉和非视觉问题。
图2. 残差学习:构造块
2. 相关工作
残差表示。 在图像识别中,VLAD是通过相对于字典的残差矢量进行编码的表示形式,Fisher Vector可以表示为VLAD的概率版本。 它们都是用于图像检索和分类的有力的浅层表示。 对于矢量量化,编码残差矢量显示比编码原始矢量更有效。
在低级视觉和计算机图形学中,为了求解偏微分方程(PDE),广泛使用的Multigrid方法将系统重新构建为多个尺度的子问题,其中每个子问题都负责较大和较小尺度之间的残差解。 Multigrid的替代方法是分层基础预处理,它依赖于表示两个尺度之间残差矢量的变量。 已经表明,这些求解器的收敛速度比不知道解决方案剩余性质的标准求解器快得多。 这些方法表明,良好的重构或预处理可以简化优化过程。
**短路连接。**导致快捷连接的实践和理论已经研究了很长时间。 训练多层感知器(MLP)的早期实践是添加从网络输入连接到输出的线性层。 在[44,24]中,一些中间层直接连接到辅助分类器,以解决消失/爆炸梯度。 [39,38,31,47]的论文提出了通过快捷连接实现对层响应,梯度和传播误差进行居中的方法。 在[44]中,“起始”层由快捷分支和一些更深的分支组成。
与我们的工作同时,“高速公路网络”提供具有选通功能的快捷连接。 与我们的不带参数的身份快捷方式相反,这些门取决于数据并具有参数。 当封闭的快捷方式“关闭”(接近零)时,高速公路网络中的图层表示非残留功能。 相反,我们的公式总是学习残差函数。 我们的身份快捷键永远不会关闭,所有信息始终都会通过传递,还需要学习其他残余功能。 另外,高速公路网络还没有显示出深度极大增加(例如,超过100层)的准确性。
3. 深度残差学习
3.1 残差学习
让我们将
视为由一些堆叠层(不一定是整个网络)拟合的基础映射,其中x表示这些层中的第一层的输入。 如果假设多个非线性层可以渐近逼近复杂函数(但是,这个假设仍然是一个悬而未决的问题。 参见[28]),则等效于假设它们可以渐近逼近残差函数,即
(假设输入和输出的维数相同)。因此,我们没有让堆叠的层逼近
,而是明确让这些层逼近残差函数
。 因此,原始函数变为
。尽管两种形式都应能够渐近地逼近所需的函数(如假设),但学习的难易程度可能有所不同。
关于降级问题的反直觉现象促使这种重新形成(图1,左)。 正如我们在导言中讨论的那样,如果可以将添加的层构造为身份映射,则更深的模型的训练误差应不大于其较浅的对应部分。 退化问题表明,求解器可能难以通过多个非线性层来逼近身份映射。 通过残差学习的重构,如果身份映射是最佳的,则求解器可以简单地将多个非线性层的权重逼近零以逼近身份映射。
在实际情况下,身份映射不太可能是最佳的,但是我们的重新制定可能有助于解决问题。 如果最优函数比零映射更接近恒等映射,则求解器参考恒等映射来查找扰动应该比学习新函数更容易。 我们通过实验(图7)表明,所学习的残差函数通常具有较小的响应,这表明身份映射提供了合理的预处理。
3.2 通过短路方式进行身份映射
我们对每几个堆叠的层采用残差学习。构造块如图2所示。在形式上,在本文中,我们考虑定义为:
这里的
和
是所考虑层的输入和输出向量。函数
表示要学习的残差映射。对于图2中具有两层的示例,
,其中
表示ReLU,并且为了简化符号省略了偏置。
操作通过短路连接和逐元素加法执行。在加法之后我们采用第二个非线性度(即
,见图2)。
公式(1)中的短路连接既没有引入额外的参数,也没有引入计算复杂性。 这不仅在实践中具有吸引力,而且在我们比较普通网络和残差网络时也很重要。 我们可以公平地比较同时具有相同数量的参数,深度,宽度和计算成本(除了可以忽略的逐元素加法)的普通/残差网络。
x和F的维度在等式(1)中必须相等。 如果不是这种情况(例如,在更改输入/输出通道时),我们可以通过短路方式连接来执行线性投影
以匹配尺寸:
我们也可以在等式(1)中使用平方矩阵
。但是我们将通过实验证明,身份映射足以解决降级问题并且很经济,因此
仅在匹配尺寸时使用。
残差函数F的形式是灵活的。本文中的实验涉及一个具有两层或三层的函数F(图5),而更多的层是可能的。 但是,如果F仅具有单层,则等式(1)类似于线性层:
,对此我们没有观察到优点。
我们还注意到,尽管为简化起见,上述符号是关于全连接层的,但它们也适用于卷积层。 函数
可以表示多个卷积层。在两个功能图上逐个通道执行逐元素加法。
3.3 网络架构
我们已经测试了各种平原/残差网络,并观察到了一致的现象。为了提供讨论实例,我们描述了ImageNet的两个模型,如下所示。
普通网络。 我们简单的基线(图3,中间)主要受到VGG网络原理(图3,左)的启发。 卷积层通常具有3×3的过滤器,并遵循两个简单的设计规则:(i)对于相同的输出要素图大小,这些层具有相同的过滤器数; (ii)如果特征图的大小减半,则过滤器的数量将增加一倍,以保持每层的时间复杂度。 我们直接通过步长为2的卷积层执行下采样。网络以全局平均池化层和带有softmax的1000路全连接层结束。 图3中的加重层总数为34(中)。
值得注意的是,我们的模型比VGG网络具有更少的过滤器和更低的复杂度(图3,左)。 我们的34层基准具有36亿个FLOP(乘法加法),仅占VGG-19(196亿个FLOP)的18%。
图3. ImageNet的示例网络架构。 左:作为参考的VGG-19模型(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]中随机采样其较短的一面以进行缩放。 从图像或其水平翻转中随机采样224×224作物,并减去每像素均值。 使用[21]中的标准色彩增强。 在每次卷积之后和激活之前,我们都采用批量归一化(BN)[16]。 我们按照[13]中的方法初始化权重,并从头开始训练所有普通/残差网络。 我们使用最小批量为256的SGD。学习率从0.1开始,当误差平稳时除以10,并且训练模型的次数最多为
次迭代。 我们使用0.0001的权重衰减和0.9的动量。 按照[16]中的做法,我们不使用dropout。
在测试中,为了进行比较研究,我们采用了标准的10种作物测试。 为了获得最佳结果,我们采用[41,13]中的全卷积形式,并在多个尺度上平均分数(图像被调整大小,使得较短的边在{224,256,384,480,640}中)。
4. 实验
4.1 ImageNet图像分类
我们在包含1000个类的ImageNet 2012分类数据集中评估我们的方法。 在128万张训练图像上训练模型,并在50k验证图像上进行评估。 我们还将在测试服务器报告的10万张测试图像上获得最终结果。我们评估了top-1和top-5的错误率。
普通网络。 我们首先评估18层和34层普通网。 34层普通网在图3中(中)。 18层普通网具有类似的形式。 有关详细架构,请参见表1。
表2中的结果表明,较深的34层普通网比较浅的18层普通网具有更高的验证误差。 为了揭示原因,在图4(左)中,我们比较了他们在训练过程中的训练/验证错误。 我们已经观察到退化问题-尽管18层普通网络的解决方案空间是34层普通网络的子空间,但在整个训练过程中34层普通网络具有较高的训练误差。
我们认为,这种优化困难不太可能是由消失的梯度引起的。 这些普通网络使用BN进行训练,可确保前向传播的信号具有非零的方差。 我们还验证了向后传播的梯度具有BN的健康规范。 因此,前进或后退信号都不会消失。 实际上,34层普通网络仍然可以达到竞争精度(表3),这表明求解器在某种程度上可以工作。 我们推测,深平原网络可能具有指数级的收敛速度,这会影响训练误差的降低(我们已经尝试了更多的训练迭代(3x),并且仍然观察到了退化问题,这表明仅通过使用更多的迭代就无法解决该问题)。将来将研究这种优化困难的原因。
表1. ImageNet的体系结构。括号中显示了构造块(另请参见图5),其中堆叠了许多块。 下采样由conv3_1,conv4_1和conv5_1执行,步长为2
表2. ImageNet验证中的前1个错误(%,10次裁剪测试)。ResNet与参照网络相比没有额外的参数。图4显示了训练过程
图4. ImageNet训练。 细曲线表示训练误差,粗曲线表示中心农作物的验证误差。 左:18和34层的普通网络。 右:18和34层的ResNet。 在该图中,残差网络与普通网络相比没有额外的参数
残差网络。 接下来,我们评估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来减少内存/时间的复杂性和模型大小。 身份快捷方式对于不增加下面介绍的瓶颈架构的复杂性特别重要。
表3. ImageNet验证的错误率(%,10次裁剪测试)。 VGG-16基于我们的测试。 ResNet-50 / 101/152是选项B的选项,仅使用投影来增加尺寸
表4. ImageNet验证集上单模型结果的错误率(%)(测试集上报告的除外)
表5. 错误率(%)。 前5个错误位于ImageNet的测试集中,并由测试服务器报告
图5. ImageNet的更深的残差函数F。 左:ResNet-34的构造块(在56×56特征图上),如图3所示。右:ResNet-50 / 101/152的“瓶颈”构造块
更深的瓶颈架构。 接下来,我们将介绍ImageNet的更深层网络。 由于担心我们可以负担得起的培训时间,我们将构造块修改为瓶颈设计(更深的非瓶颈ResNets(例如,图5左)也可以通过增加深度来获得准确性(如CIFAR-10所示),但不如瓶颈ResNets经济。 因此,瓶颈设计的使用主要是出于实际考虑。 我们进一步注意到,瓶颈设计也见证了普通网的退化问题)。对于每个残差函数F,我们使用3层而不是2层的堆栈(图5)。 这三层是1×1、3×3和1×1卷积,其中1×1层负责减小然后增加(还原)尺寸,从而使3×3层成为输入/输出尺寸较小的瓶颈 。 图5显示了一个示例,其中两种设计都具有相似的时间复杂度。
无参数标识快捷方式对于瓶颈体系结构特别重要。 如果将图5(右)中的身份快捷方式替换为投影,则可以显示时间复杂度和模型大小增加了一倍,因为快捷方式连接到两个高维端。 因此,身份快捷方式可以为瓶颈设计提供更有效的模型。
**50层ResNet:**我们将3层瓶颈模块替换为34层网络中的每个2层模块,从而得到50层ResNet(表1)。 我们使用选项B来增加尺寸。 该模型具有38亿个FLOP。
101层和152层ResNet: 我们通过使用更多的3层块来构建101层和152层ResNet(表1)。 值得注意的是,尽管深度显着增加,但152层ResNet(113亿个FLOP)的复杂度仍低于VGG-16 / 19网(153.96亿个FLOP)。
50/101/152层ResNet比34层ResNet准确度高(表3和表4)。 我们没有观察到降级问题,因此深度的增加大大提高了精度。 所有评估指标都证明了深度的好处(表3和表4)。
与最新方法的比较。 在表4中,我们与以前的最佳单模型结果进行了比较。 我们的基准34层ResNet获得了非常具有竞争力的准确性。 我们的152层ResNet的单模型top-5验证错误为4.49%。 该单模型结果优于所有之前的整体结果(表5)。 我们将六个不同深度的模型组合在一起,形成一个整体(提交时只有两个152层模型)。 这导致测试集上3.5-5的top-5错误(表5)。该作品在ILSVRC 2015中获得第一名。
4.2 CIFAR-10与分析
我们对CIFAR-10数据集进行了更多研究,该数据集包含10个类别的5万个训练图像和1万个测试图像。 我们介绍在训练集上训练的实验,并在测试集上进行评估。 我们的重点是极度深度的网络的行为,而不是推动最先进的结果,因此我们有意使用了如下的简单架构。
普通/残留体系结构遵循图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中采用权重初始化,但是没有丢失。 这些模型在两个GPU上的最小批量为128。 我们从0.1的学习率开始,在32k和48k迭代中将其除以10,然后在64k迭代中终止训练,这是由45k / 5k的火车/ val分配决定的。 我们遵循[24]中的简单数据增强进行训练:在每侧填充4个像素,并从填充的图像或其水平翻转中随机采样32×32的作物。 为了进行测试,我们仅评估原始32×32图像的单个视图。
我们比较n = {3,5,7,9},得出20、32、44和56层网络。 图6(左)显示了普通网络的行为。 较深的平原网会增加深度,并且在深入时会表现出较高的训练误差。 这种现象类似于ImageNet(图4,左)和MNIST(参见[42])上的现象,表明这种优化困难是一个基本问题。
图6(中)显示了ResNets的行为。 同样类似于ImageNet的情况(图4,右),我们的ResNet设法克服了优化难题,并证明了深度增加时精度的提高。
我们进一步探索n = 18导致110层ResNet。 在这种情况下,我们发现初始学习速率0.1太大,无法开始收敛5。 因此,我们使用0.01来预热训练,直到训练误差低于80%(约400次迭代),然后返回0.1并继续训练。 其余的学习时间表与之前一样。 这个110层的网络可以很好地融合(图6,中间)。 它的参数比其他深层和瘦网络(例如FitNet和Highway)(表6)少,但仍属于最新结果(6.43%,表6)。
表6. CIFAR-10测试仪上的分类错误。 所有方法都具有数据增强功能。 对于ResNet-110,我们将其运行5次并显示为[best(mean±std)”,如[43]所示
响应层分析。 图7显示了层响应的标准偏差(std)。 响应是BN之后以及其他非线性(ReLU /加法)之前每个3×3层的输出。 对于ResNet,此分析揭示了残差函数的响应强度。 图7显示ResNet的响应通常比普通响应小。 这些结果支持我们的基本动机(第3.1节),即与非残差函数相比,残差函数通常可能更接近于零。 我们还注意到,更深的ResNet具有较小的响应幅度,如图7中ResNet-20、56和110的比较所证明的。当有更多层时,ResNets的单个层往往会较少地修改信号。
探索超过1000层。 我们探索了一个超过1000层的深度模型。 我们将n设置为200,这将导致1202层网络的运行,如上所述。 我们的方法没有优化困难,该
层网络能够实现训练误差<0.1%(图6,右)。其测试误差仍然相当不错(7.93%,表6)。
但是,在如此积极的深度模型上仍然存在未解决的问题。 尽管这两个1202层网络的训练误差相似,但它们的测试结果却比我们的110层网络的测试结果差。 我们认为这是由于过度拟合。 对于这个小的数据集,1202层网络可能会不必要地大(19.4M)。 应用强正则化(例如maxout或dropout)以在此数据集上获得最佳结果([10、25、24、35])。 在本文中,我们不使用maxout / dropout,而只是通过设计通过深度和精简架构强加正则化,而不会分散对优化困难的关注。 但是,结合更强的正则化可能会改善结果,我们将在以后进行研究。
图6. 在CIFAR-10上的训练。 虚线表示训练错误,而粗线表示测试错误。 左:普通网络。 Plain-110的错误高于60%,并且不显示。 中:ResNets。 右:具有110和1202层的ResNet
图7. CIFAR-10上层响应的标准偏差(std)。 响应是BN之后和非线性之前每个3×3层的输出。 顶部:图层以其原始顺序显示。 下:响应按降序排列
表7. 使用基准Faster R-CNN在PASCAL VOC 2007/2012测试集中进行的对象检测mAP(%)。 另请参见表10和11,以获得更好的结果
表8. 使用基线Faster R-CNN在COCO验证集上进行的对象检测mAP(%)。 另请参见表9,以获得更好的结果
4.3 PASCAL和MS COCO上的目标检测
我们的方法在其他识别任务上具有良好的泛化性能。 表7和8显示了PASCAL VOC 2007和2012以及COCO上的对象检测基准结果。 我们采用Faster R-CNN作为检测方法。 在这里,我们对用ResNet-101替换VGG-16的改进感兴趣。 使用这两种模型的检测实现方式(请参阅附录)是相同的,因此只能将收益归因于更好的网络。 最值得注意的是,在具有挑战性的COCO数据集上,我们的COCO标准指标(mAP @ [.5,.95])增加了6.0%,相对提高了28%。 该收益完全归因于所学的表示。
基于深层残差网络,我们在ILSVRC和COCO 2015竞赛的多个赛道上均获得了第一名:ImageNet检测,ImageNet本地化,COCO检测和COCO分割。 详细信息在附录中。
A. 目标检测基线
在本节中,我们介绍基于基线Faster R-CNN系统的检测方法。 这些模型由ImageNet分类模型初始化,然后根据目标检测数据进行微调。 在ILSVRC和COCO 2015检测竞赛时,我们已经对ResNet-50 / 101进行了试验。
与[32]中使用的VGG-16不同,我们的ResNet没有隐藏的fc层。 我们采用“ Conv特征图上的网络”(NoC)的思想来解决此问题。 我们使用图像上的步幅不大于16个像素的图层(即conv1,conv2_x,conv3_x和conv4_x,在ResNet-101中总共91个conv图层;表1)计算全图像共享conv特征图。 我们认为这些层类似于VGG-16中的13个conv层,这样做,ResNet和VGG-16都具有相同总步幅(16像素)的conv特征图。 这些层由区域提议网络(RPN,生成300个提议)和快速R-CNN检测网络共享。 RoI池在conv5_1之前执行。 在此RoI合并功能中,每个区域都采用了conv5_x和up的所有层,起到了VGG-16的fc层的作用。 最终的分类层被两个同级层替代(分类和框回归)。
对于BN层的使用,在预训练之后,我们为ImageNet训练集上的每个层计算BN统计信息(均值和方差)。 然后在微调过程中将BN层固定以进行对象检测。 这样,BN层变为具有恒定偏移量和比例的线性激活,并且不会通过微调更新BN统计信息。 我们修复BN层主要是为了减少Faster R-CNN训练中的内存消耗。
PASCAL VOC
按照[7,32],对于PASCAL VOC 2007测试集,我们使用VOC 2007中的5k火车图像和VOC 2012中的16k火车图像进行训练(“ 07 + 12”)。 对于PASCAL VOC 2012测试集,我们使用VOC 2007中的10k trainval + test图像和VOC 2012中的16k trainval图像进行训练(“ 07 ++ 12”)。 用于训练Faster R-CNN的超参数与[32]中的相同。 表7示出了结果。 与VGG-16相比,ResNet-101将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 R-CNN步骤均以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个预测结合在一起。 使用IoU阈值0.3将非最大抑制(NMS)应用于预测框的并集,然后进行框投票。 盒子精修可将mAP提高约2个点(表9)。
全局环境。 我们在快速R-CNN步骤中结合了全局上下文。 给定完整图像的转换特征图,我们通过全局空间金字塔池(带有“单级”金字塔)对特征进行池化,可以使用整个图像的边界框作为RoI来实现为“ RoI”池。 将此合并的功能馈入后RoI层以获得全局上下文功能。 此全局特征与原始的按区域特征连接在一起,然后是同级分类和框回归图层。 这种新结构经过端到端的培训。 全局环境将mAP @ .5提高了约1个点(表9)。
多尺度测试。 在上面,所有结果都是通过[32]中的单尺度训练/测试获得的,其中图像的短边是s = 600像素。 在[12,7]中通过从要素金字塔中选择比例来开发多尺度训练/测试,在[33]中通过使用maxout层来开发多尺度训练/测试。 在我们当前的实现中,我们根据[33]进行了多尺度测试; 由于时间有限,我们尚未进行多尺度培训。 此外,我们仅针对Fast R-CNN步骤(但尚未针对RPN步骤)执行多尺度测试。 通过训练有素的模型,我们可以在图像金字塔上计算出conv特征图,其中图像的短边为s∈{200,400,600,800,1000}。 我们从[33]之后的金字塔中选择两个相邻的比例尺。 RoI池和后续层在这两个比例尺的特征图上执行,并由maxout合并,如[33]中所述。 多尺度测试将mAP提高了2个百分点(表9)。
使用验证数据。 接下来,我们使用80k + 40k trainval集进行训练,并使用20k test-dev集进行评估。 测试开发集没有公开可用的基础事实,结果由评估服务器报告。 在此设置下,结果的mAP @ .5为55.7%,mAP @ [。5,.95]为34.9%(表9)。 这是我们的单模型结果。
集成。 在Faster R-CNN中,该系统旨在学习区域建议以及对象分类器,因此可以使用集成来完成这两项任务。 我们使用整体建议区域,建议的联合集由按区域分类的整体处理。 表9显示了基于3个网络的合计结果。 在测试开发集上,mAP分别为59.0%和37.4%。 该结果在COCO 2015的检测任务中获得了第一名。
PASCAL VOC
我们基于上述模型重新访问PASCAL VOC数据集。 使用COCO数据集上的单个模型(表9中的55.7%mAP @ .5),我们可以在PASCAL VOC集上微调该模型。 盒子改进,上下文和多尺度测试的改进也被采用。 这样一来,我们在PASCAL VOC 2007(表10)和PASCAL VOC 2012(表11)上实现了85.6%的mAP(http://host.robots.ox.ac.uk:8080/anonymous/3OJ4OJ.html,
提交于2015-11-26)。PASCAL VOC 2012的结果比以前的最新结果高10点。
表9. 使用Faster R-CNN和ResNet-101在MS COCO上的目标检测改进
表10. PASCAL VOC 2007测试集的检测结果。 基线是Faster R-CNN系统。 表9中的“基准+++”系统包括框优化,上下文和多尺度测试
表11. 在PASCAL VOC 2012测试集上的检测结果(http://host.robots.ox.ac.uk:8080/leaderboard/displaylb.php?challengeid=11&compid=4)。 基线是Faster R-CNN系统。 表9中的“基准+++”系统包括框优化,上下文和多尺度测试
表12. 我们在ImageNet检测数据集上的结果(mAP,%)。 我们的检测系统是Faster R-CNN,使用ResNet-101进行了表9的改进
ImageNet检测
ImageNet检测(DET)任务涉及200个对象类别。 精度由mAP @ .5评估。 我们针对ImageNet DET的对象检测算法与表9中针对MS COCO的对象检测算法相同。网络在1000类ImageNet分类集上进行了预训练,并在DET数据上进行了微调。 在[8]之后,我们将验证集分为两部分(val1 / val2)。 我们使用DET训练集和val1集微调检测模型。 val2集用于验证。 我们不会使用其他ILSVRC 2015数据。 我们使用ResNet-101的单个模型具有58.8%的mAP,而我们的3个模型的集合在DET测试集上具有62.1%的mAP(表12)。 该结果在ILSVRC 2015的ImageNet检测任务中获得了第一名,以8.5点(绝对值)超过了第二名。
表13. ImageNet验证上的本地化错误(%)。 在“ GT类的LOC错误”列中,使用了地面真实性类。 在“测试”列中,“ 1-crop”表示对224×224像素的中心作物进行测试,“ dense”表示密集(完全卷积)和多尺度测试
C. ImageNet本地化
ImageNet本地化(LOC)任务需要对对象进行分类和本地化。 [40,41]之后,我们假设首先采用图像级分类器来预测图像的类别标签,而定位算法仅根据预测的类别来说明边界框的预测。 我们采用“每班级回归”(PCR)策略,为每个班级学习边界框回归器。 我们预训练网络以进行ImageNet分类,然后对其进行微调以进行本地化。 我们在提供的1000级ImageNet训练集中训练网络。
我们的定位算法基于[32]的RPN框架,并做了一些修改。 与[32]中的与类别无关的方法不同,我们的本地化RPN是按类设计的。 该RPN以两个同级1×1卷积层结束,用于二进制分类(cls)和框回归(reg),如[32]所示。 与[32]相反,cls和reg层都属于每个类。 具体来说,cls层具有1000-d输出,并且每个维度都是用于预测是否为对象类的二进制逻辑回归。 reg层具有1000×4-d输出,该输出由1000类的框式回归组成。 如[32],我们的边界框回归是在每个位置参考多个平移不变的“锚”框。
与我们的ImageNet分类训练(第3.4节)一样,我们随机抽取224×224种作物进行数据增强。 我们使用256幅图像的小批量大小进行微调。 为避免负样本占主导地位,每个图像随机采样8个锚点,其中采样的正锚点和负锚点的比例为1:1。 为了进行测试,将网络完全卷积地应用到图像上。
表13比较了本地化结果。 继[41]之后,我们首先使用地面真理类作为分类预测来执行“ oracle”测试。 VGG的论文使用地面实况类报告了33.1%的中心裁剪误差(表13)。 在相同的设置下,我们使用ResNet-101 net的RPN方法将中心裁切误差显着降低到13.3%。 此比较证明了我们框架的出色性能。 通过密集(完全卷积)和多尺度测试,我们的ResNet-101使用地面真理类的错误率为11.7%。 使用ResNet-101预测类别(前5名分类错误为4.6%,表4),前5名本地化错误为14.4%。
以上结果仅基于Faster R-CNN中的提案网络(RPN)。 可以在Faster R-CNN中使用检测网络(Fast R-CNN)来改善结果。 但是我们注意到,在该数据集上,一张图像通常只包含一个主要对象,并且投标区域彼此高度重叠,因此具有非常相似的RoI合并特征。 结果,Fast R-CNN的以图像为中心的训练会生成小变化的样本,这对于随机训练而言可能是不希望的。 因此,在我们当前的实验中,我们使用以RoI为中心的原始R-CNN代替了Fast R-CNN。
我们的R-CNN实现如下。 我们在训练图像上应用如上训练的每类RPN,以预测地面实况类的边界框。 这些预测框起着与类有关的提议的作用。 对于每个训练图像,将获得最高评分的200个建议作为训练样本,以训练R-CNN分类器。 图像区域从提案中裁剪出来,变形为224×224像素,然后像R-CNN中一样输入到分类网络中。 该网络的输出由cls和reg的两个同级fc层组成,也是每类的形式。 该R-CNN网络在训练集上进行了微调,使用以RoI为中心的256的小批量大小。 为了进行测试,RPN为每个预测的课程生成得分最高的200个建议,并且R-CNN网络用于更新这些建议的分数和方框位置。
此方法将前5位的定位错误降低到10.6%(表13)。 这是我们在验证集上的单模型结果。 使用网络集成进行分类和本地化,我们在测试集上实现了9.0%的top-5本地化误差。 该数字明显优于ILSVRC 14结果(表14),相对误差降低了64%。 该结果在ILSVRC 2015的ImageNet本地化任务中获得了第一名。