Deep Residual Learning

  最近在做一个分类的任务,输入为3通道车型图片,输出要求将这些图片对车型进行分类,最后分类类别总共是30个。

  开始是试用了实验室师姐的方法采用了VGGNet的模型对车型进行分类,据之前得实验结果是训练后最高能达到92%的正确率,在采用了ImageNet训练过的DataLayer之后,可以达到97%的正确率,由于我没有进行长时间的运行测试,运行了十几个小时最高达到了92%的样子。

  后来是尝试使用Deep Residual Learning的ImageNet(以后简称ResNet)的实现方法,十几个小时的训练可以达到94%的正确率,由于ResNet-50的模型太大,没有进行长时间的测试,不知道能否达到跟ImageNet最好结果差不多的效果。

  下面对ResNet的模型进行简单的介绍。

  ResNet的原理如下:

  首先假设我们简单的一层:输入——>中间层——>输出。那么假设中间层的函数为F(x),我们得到的结果就是F(x)。那么对于ResNet,我们假设我们要拟合的函数为H(x),我改变了一种方式,我将输入跳过中间层,直接与输出相连。如图:(论文原图)。

  即我们的F(x)是由这个公式得到的:F(x):=H(x)-x。也就是说,我们要拟合的函数是H(x)=F(x)+x。上述是一个简单的例子,在实际过程中,这H(x)等式右边的这两个分量是可以加上参数的。最终的公式为:Ws还有一个目的就是调整x的纬数,也就是当输入与输出纬数不相同时,Ws要负责将二者的纬数变为相同。

  那么这样做有什么好处?在之前的实验中,研究者们发现,理论上来说,一个层数越多的神经网络,那么它所能拟合的函数就越复杂,得出的错误率就应该越小,但是研究者们得出的结论却并不是这样。如图:                                                                                  

  在20-Layer和56-Layer的比较中发现,56 -Layer无论是Training error还是Test error都明显高于20-Layer,这与理论上的关系并不符合。这个问题叫做degradation problem。这个问题表示了不是所有的函数都是很容易去优化的。

  所以这个方法直接将x加到输出端,在理论上来说,如果这个Identity项是最优的,那么旁边的非线性层的参数应该全部为0,然后一层Identity Mapping就代表了最优函数,但是通常情况下,这个x不是最优的,但是通常情况下,如果Identity Mapping接近于最优函数,那么这一项可以很好的帮助优化。他对于更深层的网络传递到后来的误差就会越小。

  在我这次的实验中,采用了ResNet-50的模型。整个模型可参考:http://ethereon.github.io/netscope/#/gist/db945b393d40bfa26006

  这里我拿出一个部分进行介绍:

  在这是第一个Res层,最上面是一个输入层,紧接着一个MaxPooling。res2a_branch代表的是卷积层,BN代表的是BatchNormalization。在这里作者对Identity项也进行了一次卷积操作。这个卷积操作是1*1的卷积。在原文中,作者介绍了当输入输出纬数不同时,有两种选择:选择A,如果纬数不同,那么多余的纬数采用zero-padding,这样不会增加参数。选择B,如果纬数不同,那么采用1*1卷积来将纬数保持平衡。

在这个模型中采用的是选择B。

  当纬数相同的时候,输入是直接接到输出的,是没有左边这个模块的。

  经过测试,在训练相同时间(十余个小时)的情况下,VGG最高到92%,ResNet-50的TOP1为6%。

  全文参考Deep Residual Learning for Image Recognition,作者:Kaiming He Xiangyu Zhang Shaoqing Ren Jian Sun。

  附torch实现代码https://github.com/KaimingHe/deep-residual-networks

时间: 2024-08-28 08:17:19

Deep Residual Learning的相关文章

Deep Residual Learning for Image Recognition(MSRA-深度残差学习)

ABSTRACT: 1.Deeper neural networks are more difficult to train. 2.We present a residual learning framework to ease the training of networks that are substantially deeper than those used previously. 3.We explicitly reformulate the layers as learning r

论文学习:Deep residual learning for image recognition

目录 I. Overview II. Degradation III. Solution & Deep residual learning IV. Implementation & Shortcut connections Home page https://github.com/KaimingHe/deep-residual-networks TensorFlow实现: https://github.com/tensorpack/tensorpack/tree/master/exampl

Deep Residual Learning for Image Recognition (ResNet)

目录 主要内容 代码 He K, Zhang X, Ren S, et al. Deep Residual Learning for Image Recognition[C]. computer vision and pattern recognition, 2016: 770-778. @article{he2016deep, title={Deep Residual Learning for Image Recognition}, author={He, Kaiming and Zhang,

Deep Residual Learning for Image Recognition

Kaiming HeXiangyu ZhangShaoqing RenMicrosoft Research {kahe, v-xiangz, v-shren, jiansun}@microsoft.com Abstract Deeper neural networks are more difficult to train. Wepresent a residual learning framework to ease the trainingof networks that are subst

Paper | Deep Residual Learning for Image Recognition

目录 1. 故事 2. 残差学习网络 2.1 残差块 2.2 ResNet 2.3 细节 3. 实验 3.1 短连接网络与plain网络 3.2 Projection解决短连接维度不匹配问题 3.3 更深的bottleneck结构 ResNet的意义已经不需要我在这里赘述.该文发表在2016 CVPR,至今(2019.10)已有3万+引用.由于ResNet已经成为大多数论文的baseline,因此我们着重看其训练细节.测试细节以及bottleneck等思想. 核心: We explicitly

Deep Residual Learning for Image Recognition(残差网络)

深度在神经网络中有及其重要的作用,但越深的网络越难训练. 随着深度的增加,从训练一开始,梯度消失或梯度爆炸就会阻止收敛,normalized initialization和intermediate normalization能够解决这个问题.但依旧会出现degradation problem:随着深度的增加,准确率会达到饱和,再持续增加深度则会导致准确率下降.这个问题不是由于过拟合造成的,因为训练误差也会随着深度增加而增大. 假定输入是x,期望输出是H(x),如果我们直接把输入x传到输出作为初始

ResNet——Deep Residual Learning for Image Recognition

1. 摘要 更深的神经网络通常更难训练,作者提出了一个残差学习的框架,使得比过去深许多的的网络训连起来也很容易. 在 ImageNet 数据集上,作者设计的网络达到了 152 层,是 VGG-19 的 8 倍,但却有着更低的复杂性.通过集成学习模型最终取得了 3.57% 的错误率,获得了 ILSVRC 2015 比赛的第一名. 表示的深度对于许多视觉识别任务而言至关重要,仅仅由于特别深的表示,作者在 COCO 物体检测数据集上获得了 28% 的相对改进. 2. 介绍 深度神经网络通常集成了低层.

【阅读笔记】Suggestive Annotation: A Deep Active Learning Framework for Biomedical Image Segmentation

Suggestive Annotation: A Deep Active Learning Framework for Biomedical Image Segmentation 作者:Lin Yang, Yizhe Zhang, Jianxu Chen, Siyuan Zhang, Danny Z. Chen 针对问题: 1.医学方向训练集数据较少 2.仅专业人士能进行标注,耗费人力物力,数据集数量难以快速提升 贡献点: 1.提出了新的全卷积网络(FCN),在测试数据集上取得了很好的结果 2.

repost: Deep Reinforcement Learning

From: http://wanghaitao8118.blog.163.com/blog/static/13986977220153811210319/ accessed 2016-03-10 深度强化学习(Deep Reinforcement Learning)的资源 Google的Deep Mind团队2013年在NIPS上发表了一篇牛x闪闪的文章,亮瞎了好多人眼睛,不幸的是我也在其中.前一段时间收集了好多关于这方面的资料,一直躺在收藏夹中,目前正在做一些相关的工作(希望有小伙伴一起交流)