4. 实验
4.1 ImageNet分类数据集
我们使用含有1000个类别的ImageNet 2012分类数据集[35]验证了我们的方法。各模型利用128万张图像训练集进行训练,再利用5万张验证集进行评估。然后测试服务器使用10万张图形测试集测试出最终结果。同时还分别验证了top 1和top 5的错误率。
普通网络。我们首先评估了18层和34层的普通网络。34层的普通网络如图3(中图)所示,18层的普通网络也是类似的形式。表1中给出了网络架构的细节。 表1.ImageNet上的架构,下采样使用conv3_1,conv4_1和conv5_1,步长为2 图4.在ImageNet上的训练过程.细线表示训练误差,粗线表示验证误差.左图为18层和34层普通网络的情况, 右图为18层和34层残差网络的情况.在本图中,残差网络和普通网的参数变量是一样的
表2中的结果表明,较深的34层普通网络的验证集误差要高于较浅的18层普通网络。为揭示其原因,在图4(左图)中我们比较了训练过程中训练误差和验证误差的变化情况。我们观察到了退化问题——在整个的训练过程中,34层的普通网络有着较高的训练误差,尽管18层普通网络是34层普通网络的一部分。 表2.ImageNet上验证集的top 1误差,残差网络和普通网的参数变量是一样的.图4展示了训练过程
我们认为这种优化困难不太像是由于梯度消失造成的。这些普通网络的训练是基于BN[16]的,这确保了前向传播的参数具有非零方差。同时,我们确认了在使用BN时反向传播过程的梯度是正常的。即无论是前向传播还是反向传播过程中的参数都没有出现梯度消失的现象。事实上,34层的普通网络仍然可以取得有竞争力的精度(见表3),这表明这个方法是可行的。我们猜测深度普通网络可能具有较低的收敛速度,而影响了训练误差的减小。这种优化困难的原因在未来还会进一步探究。 表3.ImageNet上的验证集误差. VGG-16 基于我们的测试。 ResNet-50/101/152 属于选项 B,仅使用投影来增加维度
残差网络。现在我们来验证18层和34层的残差网络。除了在每对3×3的过滤器间增加了捷径连接(图3(右图)),残差网络的基本结构和上述的普通网络是相同的。在第一个对比中(表2和图4(右图)),我们对所有捷径使用恒等映射,使用零填充来增加维度(选项 A)。 因此,与同样的普通网络相比,残差网络没有额外的参数。
对表2和图4,我们主要进行了3个观察结果。首先,在使用残差学习方法时情况发生了好转——34层的残差网络的效果优于18层的残差网络(提高了约2.8%)。更重要的是,34层的残差网络表现出较低的训练误差,而且这一现象也在验证集中有着体现。这表明退化问题在这种设置中得到了较好的解决,而且我们在增加网络深度的过程中获得更高的准确率。 表4. ImageNet 验证集上单模型结果的错误率 (%)
其二,相对于普通网络,34层的残差网络降低了约3.5%的top1 误差(见表2),这得益于训练误差的降低(对比图4(右图)和图4(左图))。这个对比证实了残差学习对于深度学习系统是有效的。 表5.集合的错误率 (%).在ImageNet的测试集上的top-5误差,由测试服务器得出.
最后,我们认为18层的普通网络和残差网络的精确度是接近的(见表2),然而18层的残差网路的收敛速度更快些(对比图4中的右图和左图) 。当网络不是“太深”时(这里是18层),现有的SGD求解方法仍然可以在普通网络上得到一个较好的结果。在这种情况下,ResNet 在早期提供更快的收敛来简化了优化的过程。
identity shortcut和projection shortcut的对比。我们已经证明无参数的identity shortcut有助于训练。接下来,接下来我们研究projection shortcut(Eqn.(2))。在表3中我们比较了三个方案: (A) 零填充捷径用于增加维度,并且所有捷径都是无参数的(与表2和图4右相同);(B) projection shortcut用于增加维度,以及其他捷径是identity shortcut;(C ) 所有的捷径都是projection shortcut。 图5. ImageNet的更深的残差函数F。左:ResNet-34的构建块(在56×56特征图上)如图3所示。右图:ResNet-50/101/152的“瓶颈”构建块。
表3显示所有三个选项都比普通选项好得多。B略好于A。我们认为这是因为A中的零填充维度确实没有残差学习。C略好于B,我们将此归因于许多(13个)projection shortcut引入的额外参数。但是A/B/C之间的微小差异表明projection shortcut对于解决退化问题并不是必不可少的。所以我们在本文的其余部分不使用选项 C,以减少内存/时间复杂度和模型大小。identity shortcut对于不增加以下介绍的瓶颈架构的复杂性特别重要。
更深的瓶颈架构。接下来我们描述ImageNet更深层的网络。基于我们可以承受的训练时间考虑,我们将构建块修改为瓶颈设计。对于每个残差函数F,我们使用3层而不是2层的堆栈(图 5)。这三层分别是1×1、3×3和1×1 卷积,其中 1×1 层负责减少然后增加(恢复)维度,使 3×3层成为输入/输出维度较小的瓶颈。图5展示了一个例子,两种设计都具有相似的时间复杂度。
无参数identity shortcut对于瓶颈架构尤为重要。 如果将图 5(右)中的identity shortcut替换为projection shortcut,一个可以发现的现象是时间复杂度和模型大小将会加倍,因为捷径连接到两个高维端。因此,identity shortcut可以为瓶颈设计带来更有效的模型。
50层残差网络:我们将34层网络中的每个2层块替换为3层瓶颈块,从而得到50层残差网络(表 1)。我们使用B方案来增加维度。这个模型有38亿次 FLOPs。 101层和152层的残差网络:我们通过使用更多的3层块构建101层和152层残差网络(表 1)。值得注意的是,虽然深度显着增加,但152层的残差网络(113亿FLOPs)的复杂度仍然低于VGG-16/19网络(15.3/196亿FLOPs)。
50/101/152层的残差网络比34层的残差网络有着更高的精确度(表3和表4)。我们没有观察到退化问题,于是从显著增加的深度中得到了更高的精确度提升。所有评估指标都反映了增加深度的好处(表3和表4)。
与最先进方法的比较。在表4中,我们与之前的最佳单模型运行的结果进行了比较。我们34层的残差网络已经具有了非常有竞争力的精确度。我们的152层残差网络的单模型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}的特征图上分别使用6n层和3×3卷积,每个特征图大小有2n层。过滤器的数量分别为 {16, 32, 64}。子采样通过步长为2的卷积执行。网络以全局平均池化、10路全连接层和softmax结束。总共有6n+2个堆叠的加权层。下表总结了架构:
当使用捷径时,它们连接到成对的3×3层(总共 3n 个捷径)。 在这个数据集上,我们都使用identity shortcuts(即选项 A),因此我们的残差模型具有与普通模型完全相同的深度、宽度和参数数量。
我们使用0.0001的权重衰减和0.9的动量,并采用未dropout的方式对[12]和BN [16]中的权重初始化。这些模型在两个GPU上以最小为128的批次进行训练。我们从学习率为0.1的值开始,在32k和48k次迭代时将其除以10,并在 64k次迭代后终止训练,这取决于45k/5k训练/验证拆分。我们遵循[24]中的简单数据增强进行训练:每个边填充4个像素,并从填充图像或其水平翻转中进行随机32×32裁剪。为了测试,我们只评估原始的32×32 图像。 图5. ImageNet的更深的残差函数F。左:ResNet-34的构建块(在56×56特征图上)如图3所示。右图:ResNet-50/101/152的“瓶颈”构建块。
我们比较n = {3, 5, 7, 9},得到20、32、44和56层网络。图6(左)显示了普通网络的行为。当普通网络的深度增加,并且在更深时会表现出更高的训练误差。这种现象同样类似出现在ImageNet(图 4,左)和MNIST(参见 [41])上,表明这种优化的困难是一个常见的问题。
图 6. CIFAR-10训练示意图。虚线表示训练误差,粗线表示测试误差。左:普通网络。plain-110 的误差高于60% 不显示。中间:ResNets。右图:110层和1202层的ResNet。
图6显示了残差网络的行为。同样与ImageNet案例(图 4,右)类似,我们的残差网络克服了优化的困难,并在深度增加时提高了精确率。
我们进一步探索n = 18时的110层残差网络。在这种情况下,我们发现当0初始学习率为0.1,由于学习率太大而无法正常收敛。所以我们使用学习率0.01来进行学习率预热,直到训练误差低于80%(大约400次迭代),然后再回到 学习率0.1继续训练。在其余的训练完成之前。这个110层的网络收敛得很好(图 6,中间)。它的参数少于其他深层和浅层网络,例如FitNet [34]和 Highway [41](表 6)这些优的结果(6.43%,表 6)。
图 7. CIFAR-10层响应的标准偏差(std)。层响应是每个3×3的输出层,在BN之后和非线性之前。顶部:图层以其原始顺序显示。底部:层响应按降序排列。
层响应分析。图7显示了层响应的标准偏差 (std)。层响应是每个3×3层的输出,在BN之后和其他非线性(ReLU/加法)之前。对于残差网络,该分析揭示了残差函数的响应强度。图7显示,残差网络的响应通常比普通的响应小。这些结果支持我们的基本设想(第 3.1 节),即残差函数可能通常比非残差函数更接近于零。我们还注意到,更深的残差网络的响应幅度更小,如图 7 中ResNet-20、56和110之间的比较所展现的那样。当层数更多时,残差网络的单个层往往对信号的修改更少。
探索超过1000层的网络。我们探索了一个超过1000层的深层模型。我们将n = 200设置为1202层的网络,该网络的训练如上所述。我们的方法没有遇到优化困难,这个超过1000层的网络能够实现训练误差<0.1%(图 6,右)。它的测试误差也相当好(7.93%,表6)。
表 7. 使用基线Faster R-CNN在PASCAL VOC 2007/2012测试集上的目标检测mAP (%)。更全面的结果另见附录。
但是在这种激进的深层模型仍然存在一些未解决的问题。这个1202层的网络的测试结果比我们的110层网络差,尽管两者都有相似的训练误差。我们认为这是因为过拟合。对于这个小数据集,1202层的网络可能没必要这么大(19.4M)。我们采用了诸如maxout [9]或dropout [13]之类的强正则化方法来在该数据集上获得最佳结果 ([9, 25, 24, 34])。在本文中,我们不使用maxout或者dropout,只是通过深度和简要架构简单地施加正则化,以此减少对优化困难的关注。但是使用更强的正则化方法可能会改善预测的结果,我们将在未来研究。 表 8. 使用基线 Faster R-CNN在COCO验证集上的目标检测mAP (%)。更全面的结果另见附录。
4.3. 在PASCAL和MS COCO上使用目标检测
我们的方法在其他识别任务上具有良好的泛化性能。表7和表8显示了PASCAL VOC 2007和2012 [5]和COCO [26]上的目标检测基线结果。我们采用 Faster R-CNN [32]作为检测方法。在这里,我们使用ResNet-101替换VGG-16 [40]来优化模型。使用两种模型的检测实现(见附录)是相同的,因此训练的结果只能归因于更好的网络。更值得注意的是,在具有挑战性的COCO数据集上,我们获得了COCO的标准度量 (mAP@[.5,.95]) 6.0%的增长,这是28%的相对提升。这种提升完全是由于学习成果的表示。
基于深度残差网络,我们在ILSVRC & COCO 2015比赛的多个赛道中获得第一名:ImageNet检测、ImageNet定位、COCO检测和COCO分割。详细信息在附录中。
|