针对图像识别的深度残差学习 Deep Residual Learning for Image Recognition ResNet

请配合原文食用。文中没有截图。有的翻译可能没有严格按照原文的词义来翻译,中英文的翻译重在意思,词义强引可能造成奇怪的感觉。有的段落不通顺不懂,可能需要结合原文和相关图表才好理解。每个人对英文感觉都不一样,所以请配合原文食用,文章仅仅帮助辅助理解。---l

针对图像识别的深度残差学习

摘要:更深的神经网络更难训练,我们提出了一个残差学习框架来减轻网络的训练,这个框架比以往使用过的网络在深得更彻底。我们将这些层明确地重定义为参照前一层的残差学习函数。而不是学习无参照的函数。我们提供全面的经验证据来展示这些残差网络更容易去优化,并且能从巨大的深度提升中获得更好的精度。在ImageNet数据集上,我们评估了高达152层深度残差网络,其深度比vgg深八倍。并且仍然有低复杂性。这些残差的组合在ImageNet上实现了3.57%的误差。这个结果赢得了ilsvrc2015分类任务的第一名。我们也展示了针对cifar-10数据集的分别为100和1000层网络结构的性能分析。

 

图像表示的深度对许多视觉检测任务来说有着非常重要的作用。得益于我们极其深层的网络表示,我们得到了一个针对coco目标检测数据集的高达28%的一个提升。深度残差网络是我们提交到ilsvrc和coco2015比赛的一个重要的基础。在这两门比赛上我们得到了ImageNet检测,ImageNet本地化,coco检测,coco分割第一的成绩。

  1. 引言

深度卷积神经网络已经为图像识别带来了一系列的技术突破。深度网络以端到端的错层方式自然集成了低、中、高级特征和分类。特征的水平可以通多堆叠深层网络来提升。最近的证据展示了深层网络是特别重要的。并且在ImageNet数据集上领跑的那些案例都开发了非常深层的模型。有十六层到三十层。许多其他可观的视觉检测任务也都从深层模型中得到了提升。

深度的重要性就带来了一个问题,学习更好的网络结构就像简单地堆层那样简单吗?回答这个问题就要提到梯度消失、爆炸这两个问题,它们都阻碍着网络从开始逐渐收敛。但是这个问题已经很大程度被归一化初值和中间归一化层解决了。它们都使得数十层网络用随机梯度下降和反向传播来收敛。

当深层网络能够开始收敛,退化问题就出现了。随着网络深度的增加,精确率达到饱和(这可能在意料之中),退化迅速。意料之外的是,这种退化不是由过拟合导致的,并且添加更多的层次来实现一个合适深度的模型导致了更高的训练误差,就像参考文献11,42中说的那样,并且我们也通过实验进行了彻底的验证。图一就显示了一个典型的例子。

训练精度的退化表明并不是所有的系统都一样容易去优化,让我们考虑一个更浅的结构和一个在它之上添加更多层的副本,通过构建深层模型的方式得到一个解决方案:增加的层是恒等映射,并且其他的层是从已经学习的浅层模型中拷贝而来的,这构建的解决方案表明一个更深的结构应该比它的浅层副本得到更低的训练误差。但是实现证明了我们目前手中的求解器不能够找到和构建解决方案差不多的甚至更好的解决方案。(或者说不能在可控时间内找到)

在此篇论文中,我们通过提出一个深度残差学习框架解决了一个退化问题。我们不在让堆叠层直接拟合一个我们想要的底层映射,我们直接让这些层拟合一个残差映射,形式上,将期望的底层映射表示为hx,我们让堆叠的非线性层拟合另一个映射:fx = hx – x,原始映射就重写为fx+x。我们假设训练这个残差映射比训练原始的,未引用的映射更加容易。极端来说,如果一个相同的映射是最优的,让残差部分训练到0比通过堆叠非线性层拟合一个相同的映射更加容易。Fx+x可以通过捷径连接的神经网络实现,捷径连接就是跳过一个或者多个网络层,在我们的例子中,捷径连接简单地表示了恒等映射,并且他们的输出被加到堆叠层的输出。(图2)恒等捷径连接既不增加模型参数,也不增加模型复杂度。整个网络仍然能通过反向传播的梯度下降进行端到端的训练。并且能通过常见库进行轻松的实现,而且不需要修改求解器。

我们展示了再ImageNet上全面的实验来展示这个退化问题并评估我们的模型。我们展示了:1、我们超深的残差网络很容易训练,但是对应的由堆叠层构建的plain网络在增加层的时候得到了更大的训练误差。2、我们的深度残差网络更容易从更深的模型中得到精确度的提升。达到比前代网络更好的结果。

类似的现象也在cifar数据集上出现。这表明了优化的难度和我们方法的作用并不是仅仅对特定的数据集有效。我们成功地展示了高达一百层的训练的模型在这个数据集上的效果。并发掘了一千层的网络。

在ImageNet分类数据集中,受益于极深的残差结构,我们得到了优秀的结果。我们152层深度的网络是在ImageNet上面有史以来最深的网络。而且比vgg网络复杂度更低。我们的团队在ImageNet测试集中达到了前五名的错误率3..57%,并且应得到ilsvrc2015分类竞赛的第一名。在其他图像识别任务中,这个深度表示也有着极其优秀的泛化表现。这也让我们赢得了更多的第一名:ImageNet检测,ImageNet本地化,coco检测,coco 在ilsvrc的分割比赛,和coco2015竞赛。这些强有力的证据展示了这个残差学习理论是通用的,并且我们希望它能应用到其他视觉或者说非视觉的任务当中。

2、相关工作

残差表示。vlad是一个用残差向量对字典编码的表示形式。费希尔向量可以被解释为vlad的概率形式。他们都是图像修复和分类强大的浅层表示。对于矢量量化,编码残差向量被证明比编码原始向量更加高效。

在低层视觉和计算机图形学中,对于求解偏微分方程,广泛应用的多网格方法将系统重新定义为多尺度子问题。其中每个子问题都对较粗或者较细尺度的残差解有影响。多重网格的一种替代方法是分层基础预处理,它依赖于代表两个尺度之间的残差向量的变量。证据表明,这些求解器比不知道解的剩余性质的标准求解器收敛得快得多。这些方法表明良好的重塑或预处理可以简化优化。

捷径连接。有捷径连接有关的实验和理论一直在研究。训练多层感知机的早期实践添加一个线性层连接输入和输出。在参考文献44,24中,很少的隐藏层直接连接到辅助分类器上来处理梯度消失或者梯度爆炸。第39,38,31,47项参考文献提出针对中间层响应,梯度,和误差的传播,应用快捷链接来解决的方法。在第44项参考文献中,有一种快捷分支何更深分支组成的“开端”层

在我们研究期间,高速公路网络展示了门控功能的快捷连接,这些门依赖于数据,并且相比于我们的没有参数的恒等快捷连接来说,它具有参数。当一个门短接被关闭(接近于0),高度公路网络中的层就表现为非残差功能,相反的是,我们的模型总是学习残差功能,我们的恒等快捷连接永远不会失效。并且所有的信息总是通过我们的快捷路径,并且学习附加的残差功能。另外,高速公路网络没有从深度提高中获得精确度的提高。

3、深度残差学习

3.1 残差学习

让我们来考虑hx为依赖几个堆叠层去拟合的底层映射(不必要为整个网络),其中x表示这些层的第一层。如果假设多个非线性层可以渐渐地逼近复杂函数,那么它就等于假设它可以渐渐逼近残差函数。也就是hx-x(假设输入输出是同维度的)。所以说,与其期待堆叠层去拟合hx,倒不如我们明确地让这些层去拟合一个fx:hx-x。这原始函数因此变为了hx+x。虽然两种函数都能见见拟合我们想要的函数(像假设那样),但是学习他们的难以可能会不同。

这种改写的灵感来源于有关退化的反直觉现象。向我们在引言中讨论的那样,如果增加的层可以被构建为恒等映射,那么高深的网络就会比它浅层副本具有更低的训练误差。退化问题表明,求解器可能很难通过多层非线性层去拟合恒等映射。随着残差学习的改写,如果恒等映射是最优的,求解器可能轻易驱使多层非线性层为零去拟合恒等映射。

在实际情况下,恒等映射不是最佳的,但是我们的改写能帮助解决这个先决难题。如果最优函数比起接近零映射,更接近恒等映射,那么在恒等映射的参考下,求解器就更同意找到这个小的差距,而不是学习一个全新的函数。我们通过实验7表明,学习到的残差函数通常具有很小的响应,这表明恒等映射起到了作用。

 

3.2捷径连接实现的恒等映射

我们对几个堆叠层采用残差学习,像图二那样构建,形式上,我们将一个构建模块定义为:y = f(x,{wi})+x,这里的x,y是所考虑层的输入输出向量,f就是需要学习的残差函数,对于图2中有两层网络的这个例子,F = W2σ(W1x)  其中σ表示ReLU激活函数,为了简化注释省略了偏差。F+x操作就是通过跳跃连接将两个元素相加,我们采用了相加后的第二次非线性变化。

在方程一中的挤不涉及额外的参数也不增加计算复杂度。这不仅在实践中诱人,而且在我们对普通网络和残差网络做对比是也很重要。我们可以公平地比较这两种网络,他们具有相同的参数,深度,宽度,和计算消耗(排除可忽略的元素相加操作)。

X和f的维度必须相等,如果不是这样(比如改变了输入输出通道),那么我们可以实现一个Ws参与的线性的转换来匹配这个维度:

Y = f(x,{Wi})+WsX

我们也可以用一个方阵ws在等式1中,但是我们会通过实验展示,恒等映射对于退化问题是行之有效的,也是非常经济的做法,因此ws只被用于改变维度。

残差函数f的形式是灵活的,本文的实验涉及两层或者三层的f。但是更多层也是可能的,但是如果f只有一层,等式一就好像线性层,y=wx+x,我们在此没有看到有什么作用。

我们也强调,即使上述记法简单得像全连接层,他们也可以用于卷积层,f函数可以代表多个卷积层,元素相加操作表示两个特征图的相加,一个通道一个通道地进行。

3.3 网络架构

我们测试了不同的普通和残差网络,并且得到了一致的现象,为了提供讨论实例,我们描述了在ImageNet上两个模型,如下。

普通网络、我们普通网络的基线主要是受vgg网络的启发。卷积层主要是3*3卷积,并且遵循两种简单的设计准则:为了同样的输出尺寸,卷积核个数要一样。如果特征图尺寸减半,卷积核的个数加倍为了保持每一层的时间复杂度。我们采用步长为2的卷积层进行下采样。网络的最后是全局平均池化和一千路softmax全连接层。有权重的层一共是34层。

值得注意的是,我们的模型比vgg具有更少的卷积核和更低模型复杂度,我们的34层基准有36亿个浮点运算,仅仅为vgg19的18%。

残差网络:在上面普通网络的基础上,我们插入快捷连接让它变为一个对应的残差网络版本,当输入输出维度一样,直接采用恒等映射,当维度增加,我们有两种考虑,a仍然执行恒等映射,增加的维度补0。这个选择不添加额外的参数。B公式2中的捷径映射被用于匹配维度。对于这两种选择,当捷径跨越两种尺寸的特征图,他们以2的步长运行。

3.4实现

我们的实现遵循21.41中的时间,图像通过短边在256-480中随机采样来放大的方式调整大小。224×224裁剪是从图像或其水平翻转中随机采样,并逐像素减去均值。我们也使用了21中的标准颜色增强。也针对卷积之后激活之前采用了批标准化。我们按照13中初始化权重并从零开始训练普通的和残差的网络。我们采用批量为256的随机梯度下降来训练。学习率从0.1开始,当误差稳定将之除以10。还有模型训练60万个迭代。我们使用的权重衰减为0.0001,动量为0.9。根据16的实践,我们不使用丢弃。

在测试阶段,为了比较学习我们采用标准的10-crop测试。对于最好的结果,我们采用如40,12中的全卷积形式,并在多尺度上对分数进行平均(图像调整尺寸至短边位于{224, 256, 384, 480, 640}中。

4、实验

4.1 ImageNet分类

 

我们在ImageNet2012分类数据集上评估我们的方法,这个数据集包涵了一千个类别。模型在128万章训练图片进行训练,并在2万验证图片上进行评估。我们也从测试服务器获得了一个在10万张测试图片上的最终测试结果。我们评估了第一个第五的错误率。

普通网络:我们首先评估了18层和34层的简单网络。34层的那个在图三,18层的简单网络是差不多的形式,详细结构请见表1.

图2的结果表明更深的34层普通网络对比18层的普通网络有一个更好的验证误差。为了展示原因,在图四种我们比较了他们的训练和验证误差。我们观察到退化问题,及时18层网络的解空间是34层那个网络解空间的子空间,但是34层简单网络在整个训练过程中都有更高的训练误差。

我们认为这种优化困难不太可能是由于梯度消失造成的,这些普通的网络包含了批量标准化,这保证了前向传播信号有非零方差。我们还验证了反向传播的梯度,它显示了符合BN的正常标准。所以说没有前向信号和反向信号消失。事实上,34层的普通网络仍然能够实现更好的准确率,这表明在某种程度上求解器仍然有用。我们猜测深度普通网络可能有指数级低收敛特性。这影响了训练误差的降低。这种优化困难的原因会在未来继续研究。

残差网络:接下来我们评估了十八层和34层的残差网络,基础架构还是跟上面的简单网络一样,预计每一个3*3卷积核都会添加快捷连接。在第一次比较(表2和图4右侧)中,我们对所有快捷连接都使用恒等映射和零填充以增加维度(选项A)。所以与对应的简单网络相比,它们没有额外的参数。

我们从表2和图4中看到了三个现象。首先,残留学习的结果变了——34层ResNet比18层ResNet更好(2.8%)。更重要的是,34层ResNet显示出较低的训练误差,并且可以泛化到验证数据。这表明在这种情况下,退化问题得到了很好的解决,我们从增加的深度中设法获得了准确性收益。

第二,与对应的简单网络相比,由于成功的减少了训练误差,34层ResNet降低了3.5%的top-1错误率。这种比较证实了在极深系统中残差学习的有效性。

最后,我们主要到十八层简单和残差网络的精确度差不多。但是18层残差网络收敛更快,当网络不太深的时候(就比如这里的十八层)随机梯度下降求解器仍然能够找到和普通网络一样好的效果。在这种情况下,残差网络通过早期的更快的收敛也优化了求解过程。

恒等和投影连接:我们已经展示了恒等连接没有参数,且有助于训练,接下来我们调查投影连接。在表3中,我们比较了三种选择,a补零被用于增加维度,并且所有的快捷连接都是没有额外参数的。b投影连接被用于增加维度,并且其他的快捷连接都是恒等映射。还有c所有的快捷连接都是投影连接。

表三展示了所有的这三种选择都比对应的简单网络要好。B稍微比a要好一些,我们认为这是因为a中补零的维度没有残差学习,c也稍微比b好一点,并且我们认为这种现象是因为许多投影连接引入了额外的参数。但是abc的三种小的不同代表投影连接并不是处理退化问题的关键。我们我们在论文后面不再使用c方案来减少时间和空间复杂度,还有模型尺寸。恒等映射对于不增加我们接下来介绍的瓶颈结构的复杂度是非常重要的。

更深的瓶颈结构:接下来我们将描述我们在ImageNet上使用更深的网络。受限于可接受的训练时间,我们将构建块改为瓶颈设计。对于每一个残差函数f,我们使用三层堆叠来代替两层,这三层分别使用1*1,3*3,1*1的卷积,这里面的1*1卷积用于减少维度再增加维度,3*3的瓶颈卷积层就有了更小的输入输出维度。图5展示了一个例子,例子中两种设计都有相同的时间复杂度。

这种无参数的恒等映射对于瓶颈结构来说,尤其重要。如果在图5中的恒等映射被替代为投影连接,则可以看出时间复杂度和模型尺寸都加倍了,因为快捷连接被连接到两个高纬度的端口。因此恒等映射为瓶颈设计带来了更加高效的模型。

50层的残差网络:我们用三层瓶颈块儿替换34层网络中的每一个两层块,得到了一个50层的resnet,我们使用选项b来增加维度,该模型有38亿浮点运算。

101层和152层resnet:我们使用更多的3层瓶颈块来构建101层和152层resnet。值的注意的是,尽管深度显著增加,但是152层的resnet仍然比vgg-16/19网络具有更低的复杂度。

50/101/152层残差网络比34层的残差网络要要准确得多。我们没有观察到退化现象,因此准确率的受益是来自于增加的网络深度。所有的评价指标都能证明这种深度的收益。

与最先进的方法比较:在表4中,我们比较以前最好的单一模型。我们基准的34层残差网络已经获得了非常有竞争力的准确度。我们的152层残差网络具有单模型4.49%的top-5模型错误率。这种单一模型的结果胜过以前所有的综合结果。我们结合了六种不同深度的模型去形成一个集合,这在测试集上得到了3.5%的top5错误率,这次提交在2015年ilsvrc中荣获了第一名。

4.2 cifar10和分析

我们针对cifar10数据集进行了更多的研究,它包含了五万张训练图片和一万张测试图片,一共十个类别。我们介绍了在训练集上的训练结果和在在测试集上进行了评价,我们的关注点在于极深网络的具体行为,但不是推动最先进的结果,所以我们有意使用如下的简单架构。

简单残差结构遵循图3的形式,网络输入是32*32的图像,每个像素都减去均值,第一层是3*3卷积层,然后我们使用3*3卷积核的6n个层堆叠,卷积尺寸分别为32.16.8.每一个特征图尺寸都为2n个层。滤波器数量分别为16.32.64.下采样由步长为2的卷积进行。网络最后是全局平均池化,一个10路全连接层和softmax作为结束。一共6n+2个堆叠权重层。下表总结了这个架构。

当快捷连接被应用,它们连接到成对的3*3卷积层上。在这个数据集上,我们在所有案例中使用恒等快捷连接。所以我们的残差模型和对应的普通模型有一样的深度,宽度和参数量。

我们使用的权重衰减为0.0001和动量为0.9,并采用12和BN中的权重初始化,但没有使用丢弃。这些模型在两个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中和MNIST中的现象,表明这种优化困难是一个基本的问题。

图6显示了残差网络的行为,仍然和ImageNet的情况相似,我们的残差网络成功克服了这种优化困难并展示了从深度增加中获得的精确度收益。

我们进一步探索了n=18、生成了110层的残差网络。在这种情况下,我们发现0.1的初始学习率对开始收敛有点稍微太大了。搜易我们采用0.01来慢慢训练指导训练误差小于80%(大约400个迭代)。然后回到0.1的学习率继续训练,剩余的学习率表就像前面那样完成。这一个110层的网络收敛得不错。它有比其他深窄网络,比如fitnet和高速路net,更少的参数。但是仍然处于最好的结果之间。

层响应分析。图7显示了层响应的标准偏差(std)。这些响应每个3×3层的输出,在BN之后和其他非线性(ReLU/加法)之前。对于ResNets,该分析揭示了残差函数的响应强度。图7显示ResNet的响应比其对应的简单网络的响应更小。这些结果支持了我们的基本动机(第3.1节),残差函数通常具有比非残差函数更接近零。我们还注意到,更深的ResNet具有较小的响应幅度,如图7中ResNet-20,56和110之间的比较所证明的。当层数更多时,单层ResNet趋向于更少地修改信号。

探索超过1000层。我们探索超过1000层的过深的模型。我们设置$n = 200$,得到了1202层的网络,其训练如上所述。我们的方法显示没有优化困难,这个10^3层网络能够实现训练误差<0.1%(图6,右图)。其测试误差仍然很好(7.93%,表6)。

但是,这种极深的模型仍然存在着开放的问题。这个1202层网络的测试结果比我们的110层网络的测试结果更差,虽然两者都具有类似的训练误差。我们认为这是因为过拟合。对于这种小型数据集,1202层网络可能是不必要的大(19.4M)。在这个数据集应用强大的正则化,如maxout或者dropout来获得最佳结果(9,25,24,34)。在本文中,我们不使用maxout/dropout,只是简单地通过设计深且窄的架构简单地进行正则化,而不会分散集中在优化难点上的注意力。但结合更强的正规化可能会改善结果,我们将来会研究。

4.3、在pascal和mscoco上的目标检测

我们的方法对其他识别任务有很好的泛化性能。表7和表8显示了PASCAL VOC 2007和2012以及COCO的目标检测基准结果。我们采用更快的R-CNN作为检测方法。在这里,我们感兴趣的是用ResNet-101替换VGG-16。使用这两种模式的检测实现(见附录)是一样的,所以收益只能归因于更好的网络。最显著的是,在有挑战性的COCO数据集中,COCO的标准度量指标(mAP@[.5,.95])增长了6.0%,相对改善了28%。这种收益完全是由于学习表示。

基于深度残差网络,我们在ILSVRC & COCO 2015竞赛的几个任务中获得了第一名,分别是:ImageNet检测,ImageNet定位,COCO检测,COCO分割。跟多细节请看附录。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值