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
Deep Residual Learning的更多相关文章
- [论文阅读] Deep Residual Learning for Image Recognition(ResNet)
ResNet网络,本文获得2016 CVPR best paper,获得了ILSVRC2015的分类任务第一名. 本篇文章解决了深度神经网络中产生的退化问题(degradation problem). ...
- 论文笔记:Deep Residual Learning
之前提到,深度神经网络在训练中容易遇到梯度消失/爆炸的问题,这个问题产生的根源详见之前的读书笔记.在 Batch Normalization 中,我们将输入数据由激活函数的收敛区调整到梯度较大的区域, ...
- Deep Residual Learning for Image Recognition这篇文章
作者:何凯明等,来自微软亚洲研究院: 这篇文章为CVPR的最佳论文奖:(conference on computer vision and pattern recognition) 在神经网络中,常遇 ...
- 论文笔记——Deep Residual Learning for Image Recognition
论文地址:Deep Residual Learning for Image Recognition ResNet--MSRA何凯明团队的Residual Networks,在2015年ImageNet ...
- Deep Residual Learning for Image Recognition论文笔记
Abstract We present a residual learning framework to ease the training of networks that are substant ...
- 深度学习方法(五):卷积神经网络CNN经典模型整理Lenet,Alexnet,Googlenet,VGG,Deep Residual Learning
欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术感兴趣的同学加入. 关于卷积神经网络CNN,网络和文献中 ...
- Deep Residual Learning for Image Recognition
Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun Microsoft Research {kahe, v-xiangz, v-sh ...
- 【文献阅读】Deep Residual Learning for Image Recognition--CVPR--2016
最近准备用Resnet来解决问题,于是重读Resnet的paper <Deep Residual Learning for Image Recognition>, 这是何恺明在2016-C ...
- [论文理解]Deep Residual Learning for Image Recognition
Deep Residual Learning for Image Recognition 简介 这是何大佬的一篇非常经典的神经网络的论文,也就是大名鼎鼎的ResNet残差网络,论文主要通过构建了一种新 ...
随机推荐
- c#枚举使用详解
简介 1. 枚举(enum type)通常用来表示一组常量.由于枚举是强类型的,这在编程中给我们提供了极大的方便. 2. 枚举的定义: public enum Sex { 男 = 0, 女 = 1 } ...
- 浅谈javascript面向对象
我们常用的两种编程模式 POP--面向过程编程(Process-oriented programming) 面向过程编程是以功能为中心来进行思考和组织的一种编程方法,它强调的是系统的数据被加工和处理的 ...
- Todo list and 学习心得
1. 理论实践要区分起来学习,结合起来运用. 2. 内事不决问百度外事不决问谷歌 3. 一个人走的快,一群人走得远或者更快 2016-09-01 23:27:58 九月目标:对程序从编译到执行的整个 ...
- iOS:实现图片的无限轮播(二)---之使用第三方库SDCycleScrollView
iOS:实现图片的无限轮播(二)---之使用第三方库SDCycleScrollView 时间:2016-01-19 19:13:43 阅读:630 评论:0 收藏:0 ...
- ECharts学习(4)--仪表盘
1. ECharts中的仪表盘,要使用这个图表时把series中的type属性修改成'gauge',然后在detail中设置仪表盘详情,用于显示数据.最常用的是formatter(格式化函数或者字符串 ...
- Visual Studio 使用Web Deploy 3.6发布项目
工具:Web Deploy 3.6 点击下载 (强烈推荐使用独立的Web Deploy 安装包安装) 配置: 1.安装web deploy,安装好之后,点击IIS根目录,此处应有如下图标 另外,需要注 ...
- 使用DataTable更新数据库
简例: string connStr = string.Format("Driver={1}Microsoft Access Driver (*.mdb){2};DBQ={0};" ...
- XPatchLib 对象增量数据序列化及反序列化器 For .Net
在日常的软件开发和使用过程中,我们发现同一套系统的同一配置项在不同的客户环境中是存在各种各样的差异的.在差异较为分散时,如何较好的管理这些差异,使得维护过程能够更加安全和快速,一直在这样那样的困扰着开 ...
- [bigdata] hadoop 参数配置解析
ResourceManager相关配置参数 yarn-site.xml 中配置 yarn.resourcemanager.address ResourceManager 对客户端暴露的地址.客户端通过 ...
- C#------数字转中文
转载: http://www.jb51.net/article/8061.htm 方法二: static string ConvertToChinese(double x) { string s = ...