GoogLeNetv4 论文研读笔记
Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning
摘要
向传统体系结构中引入残差连接使网络的性能变得更好,这提出了一个问题,即将Inception架构与残差连接结合起来是否能带来一些好处。在此,研究者通过实验表明使用残差连接显著地加速了Inception网络的训练。也有一些证据表明,相比没有残差连接的消耗相似的Inception网络,残差Inception网络在性能上具有微弱的优势。针对是否包含残差连接的Inception网络,本文同时提出了一些新的简化网络,同时进一步展示了适当的激活缩放如何使得很宽的残差Inception网络的训练更加稳定
引言
在本研究中,研究者研究了当时最新的两个想法:残差连接和最新版的Inception架构。他们研究了使用残差连接来代替Inception架构中的过滤连接阶段,这将使Inception架构保持它的计算效率的同时获得残差连接方法的好处。除了将两者直接集成,也研究了Inception本身能否通过加宽和加深来变得更高效。为此,他们设计了Inception v4,相比v3,它有更加统一简化的网络结构和更多的inception模块
在本文中,他们将两个纯Inception变体(Inception-v3和v4)与消耗相似的 Inception-ResNet混合版本进行比较。挑选的模型满足和非残差模型具有相似的参数和计算复杂度的约束条件。实验对组合模型的性能进行了评估,结果显示Inception-v4和Inception-ResNetv2的性能都很好,同时发现单个框架性能的提升不会引起组合性能大幅的提高
相关工作
残差连接的作者认为残差连接在训练深度卷积模型是很有必要的,但是至少在图像识别上,本研究并不支持这一点,该实验表明使用残差连接来训练深度网络也不是很难做到。不过,残差连接所带来的潜在优势可能需要在更深网络结构中来展现。但是,使用残差连接确实能够极大地提高训练速度,这一点很值得肯定。
残差连接

为减少计算而优化的ResNet连接

架构选择
纯Inception模块
以前的Inception模块为了能够在内存中对整个模型进行拟合,采用分布式训练的方法,该方法将每个副本划分成一个含多个子网络的模型。然而,Inception结构是高度可调的,这就意味着各层滤波器的数量可以有多种变化,而整个训练网络的质量不会受到影响。为了优化训练速度,他们对层的尺寸进行调整以平衡多模型子网络的计算。因为TensorFlow的引入和为了优化,本研究对Inception块的每个网格尺寸进行了统一。以下所有架构图中,卷积层没有标记"V"的表示使用相同的填充原则,即它们的输出网格尺寸与它们的输入相匹配。标记了"V"的卷积层使用valid填充,即每个单元输入块全部包含在前几层中,同时输出激活图(output activation map)的网格尺寸也相应地减少
Inception-v4网络整体架构

Inception-v4和Inception-ResNet-v2网络结构,这是输入部分(Fig3)

Inception-v4网络的35 * 35 网格模块,对应Inception-v4的Inception-A

Inception-v4网络的17 * 17 网格模块,对应Inception-v4的Inception-B

Inception-v4网络的8 * 8 网格模块,对应Inception-v4的Inception-C

35 * 35 -> 17 * 17 的降维模块(Fig7)

参数设置

17 * 17 -> 8 * 8 的网格缩减模块

残差Inception块
残差版本的Inception网络使用了比源Inception更廉价的Inception块。每个Inception块后紧连接着滤波膨胀层(没有激活函数的1×1卷积)以在相加之前放大滤波器组的维度,以实现输入的匹配。这样补偿了在Inception块中的降维。
Inception-ResNet-v1与Inception-v3的计算代价相近,Inception-ResNet-v2与Inception-v4的计算代价相近。另一个研究使用的残差和非残差变体技术上的不同是:在Inception-ResNet上仅在传统层的顶部而非所有层的顶部中使用batch-normalization。这是因为研究者想要保持每个模型副本在单个GPU上就可以训练,在部分层的顶部忽略 batch-normalization能够增加Inception块的数量
Inception-ResNet-v1和Inception-ResNet-v2网络完整架构

Inception-ResNet-v1
网络使用35*35网格模块(Inception-ResNet-A)

网络的17*17网格模块(Inception-ResNet-B)

使用Fig7作为Reduction-A
网络的17*17 -> 8*8网格缩减模块(Reduction-B)

网络的8*8网格模块(Inception-ResNet-C)

网络的主干(stem)

Inception-ResNet-v2
Fig3用于网络stem
网络35*35的网格模块(Inception-ResNet-A)

网络17*17网格模块(Inception-ResNet-B)

Fig7用于Reduction-A
网络17*17 -> 8*8网格缩减模块(Reduction-B)

网络8*8网格模块(Inception-ResNet-C)

对残差模块的缩放
研究者发现如果滤波器数量超过1000,残差网络开始出现不稳定,同时网络会在训练过程早期便会出现“死亡”,意即经过成千上万次迭代,在平均池化(average pooling) 之前的层开始只生成0。通过降低学习率,或增加额外的batch-normalizatioin都无法避免这种状况。同时,发现在将残差模块添加到activation激活层之前,对其进行放缩能够稳定训练,通常来说将残差放缩因子定在0.1-0.3,即使缩放并不是完全必须的,它似乎并不会影响最终准确率,但是放缩能有益于训练的稳定性
实验结果表明Inception-ResNet-v1,Inception-v4,Inception-ResNet-v2的错误率逐个降低并都比Inception-v3和BN-Inception表现的好
结论
本文详细呈现了三种新的网络结构
- Inception-ResNet-v1:混合Inception版本,它的计算效率与Inception-v3相近
- Inception-ResNet-v2:更加昂贵的混合Inception版本,明显改善了识别性能
- Inception-v4:没有残差连接的纯Inception变种,性能与Inception-ResNet-v2相近
研究者们研究了引入残差连接如何显著地提高Inception网络地训练速度。并且他们最新地模型仅仅凭借增加模型尺寸就能表现地优于他们现有的网络
总结
本文研究了将Inception和残差连接相结合的效果,实验表明结合ResNet可以加速训练,同时提高性能,在构建 Inception-ResNet 网络同时,还设计了一个更深更优化的 Inception v4 模型,能达到相媲美的性能
比较了一下文章中提到的三个网络的架构,然后发现,Inception-ResNet-v1与Inception-ResNet-v2,Inception-v4相比,最明显的差别是stem部分不同,特别是与Inception-ResNet-v2相比,其它部分几乎就只是卷积层数的变化,而在stem部分,其它两个使用相同的结构,使用的参数量的比较 4112 : 5344,同时v1这部分输出为35*35*256,其它两个输出为35*35*384,显然这里明显让v1吃亏了,其性能差的原因我觉得这个部分有很大的原因。之后Inception-ResNet-v2与Inception-v4相比,架构的总体结构可以看出是很相似的,最大的区别在于数据是否是直接传到下一层的,如下
Inception-v4(Inception-A)

Inception-ResNet-v2(Inception-A)

Inception-v4(Reduction-B)

Inception-ResNet-v2(Reduction-B)

个人感觉差别不是很大,很直观地可以看出因为Inception-ResNet-v2使用的变换较少,计算量较小,因而可以获得更好的性能吧,其它的更多是各种参数的问题
GoogLeNetv1 论文研读笔记
GoogLeNetv2 论文研读笔记
GoogLeNetv3 论文研读笔记
ResNet 论文研读笔记
GoogLeNetv4 论文研读笔记的更多相关文章
- GoogLeNetv3 论文研读笔记
Rethinking the Inception Architecture for Computer Vision 原文链接 摘要 卷积网络是目前最新的计算机视觉解决方案的核心,对于大多数任务而言,虽 ...
- GoogLeNetv2 论文研读笔记
Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift 原文链接 摘要 ...
- GoogLeNetv1 论文研读笔记
Going deeper with convolutions 原文链接 摘要 研究提出了一个名为"Inception"的深度卷积神经网结构,其目标是将分类.识别ILSVRC14数据 ...
- ResNet 论文研读笔记
Deep Residual Learning for Image Recognition 原文链接 摘要 深度神经网络很难去训练,本文提出了一个残差学习框架来简化那些非常深的网络的训练,该框架使得层能 ...
- < AlexNet - 论文研读个人笔记 >
Alexnet - 论文研读个人笔记 一.论文架构 摘要: 简要说明了获得成绩.网络架构.技巧特点 1.introduction 领域方向概述 前人模型成绩 本文具体贡献 2.The Dataset ...
- 《DSLR-Quality Photos on Mobile Devices with Deep Convolutional Networks》研读笔记
<DSLR-Quality Photos on Mobile Devices with Deep Convolutional Networks>研读笔记 论文标题:DSLR-Quality ...
- 论文阅读笔记 - YARN : Architecture of Next Generation Apache Hadoop MapReduceFramework
作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 更多论文阅读笔记 http:/ ...
- 论文阅读笔记 - Mesos: A Platform for Fine-Grained ResourceSharing in the Data Center
作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 更多论文阅读笔记 http:/ ...
- 论文阅读笔记 Word Embeddings A Survey
论文阅读笔记 Word Embeddings A Survey 收获 Word Embedding 的定义 dense, distributed, fixed-length word vectors, ...
随机推荐
- 第K大01背包
其实这个问题,真的挺好想的,但是我咋想了那么久呢~~ 很好理解,第K大01背包一定基于01背包,dp数组也很容易的想到由dp[V] ----> dp[V][K],来表示背包容量是V时候的第 ...
- iOS_URI跳转方式多种地图导航的代码实践
先来看一下我们要达到什么效果,就是当我们点导航的时候,会弹出下面这个选择列表. 当然,如果没有安装某个地图APP,那么对应的选项是不会出现的.检测APP是否安装,只要调用下面这个方法就可以了 [[UI ...
- mssql中按周进行表分区的方法
创建一个包含了一个持久化计算列的表,类似于下面.然后以这个列作为分区的依据. CREATE TABLE [dbo].[test] ( ) NOT NULL , [time] [DATETIME] NU ...
- SignalR2简易数据看板演示
软件环境: 1.vs2015.windows7..net4.5 演示说明: 当点击按钮的时候,柱状图数值加1并实时变化 1.首先打开vs2015创建一个mvc项目,并安装SignalR2,具体操作可参 ...
- C# 对象转XML 支持匿名类
在网上找了很多关于对象转XML的,大多不支持匿名类转换,今天在stackoverflow找了一篇文章 但是有些许BUG 已经修复 public static class ObjectToXML { ...
- ASP.NET Core CMS管理后台
ASP.NET Core+LayUI+MySql CMS管理后台,主要功能包括 登录.修改密码,账号管理,菜单管理,角色权限管理等 由于工作之外,抽时间写的,用于学习交流,请慎重用于生产环境 项目概要 ...
- linux下发送报警邮件(mailx)
本文章主要解决 linux下监控到系统状况后怎么发邮件报警的问题. 如果你是最小化安装的centos/redhat 系统,是没有自带mailx的,也就是没有mail 命令. 解决办法 yum -y i ...
- javascript之快速排序
快速排序思想其实还是挺简单的,分三步走: 1.在数组中找到基准点,其他数与之比较. 2.建立两个数组,小于基准点的数存储在左边数组,大于基准点的数存储在右边数组. 3.拼接数组,然后左边数组与右边数组 ...
- element-ui table 最后一行合计,单元格合并
接着写两个方法--最后一行合计的方法 --单元格合并的方法 先写一个rowspan方法,计算出spanArr数组是怎么单元格合并的,注意rowspan方法要在渲染完成之前使用,可以在mounted中使 ...
- 开发ASP.NET MVC 开发名片二维码生成工具 (原创)
在网上找了很多,都只能生成网址,不能生成名片二维码,于是自己动手. 第一步,写视图界面,主要代码如下: <script type="text/javascript"> ...