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表现的好

结论

本文详细呈现了三种新的网络结构

  1. Inception-ResNet-v1:混合Inception版本,它的计算效率与Inception-v3相近
  2. Inception-ResNet-v2:更加昂贵的混合Inception版本,明显改善了识别性能
  3. 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 论文研读笔记的更多相关文章

  1. GoogLeNetv3 论文研读笔记

    Rethinking the Inception Architecture for Computer Vision 原文链接 摘要 卷积网络是目前最新的计算机视觉解决方案的核心,对于大多数任务而言,虽 ...

  2. GoogLeNetv2 论文研读笔记

    Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift 原文链接 摘要 ...

  3. GoogLeNetv1 论文研读笔记

    Going deeper with convolutions 原文链接 摘要 研究提出了一个名为"Inception"的深度卷积神经网结构,其目标是将分类.识别ILSVRC14数据 ...

  4. ResNet 论文研读笔记

    Deep Residual Learning for Image Recognition 原文链接 摘要 深度神经网络很难去训练,本文提出了一个残差学习框架来简化那些非常深的网络的训练,该框架使得层能 ...

  5. < AlexNet - 论文研读个人笔记 >

    Alexnet - 论文研读个人笔记 一.论文架构 摘要: 简要说明了获得成绩.网络架构.技巧特点 1.introduction 领域方向概述 前人模型成绩 本文具体贡献 2.The Dataset ...

  6. 《DSLR-Quality Photos on Mobile Devices with Deep Convolutional Networks》研读笔记

    <DSLR-Quality Photos on Mobile Devices with Deep Convolutional Networks>研读笔记 论文标题:DSLR-Quality ...

  7. 论文阅读笔记 - YARN : Architecture of Next Generation Apache Hadoop MapReduceFramework

    作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 更多论文阅读笔记 http:/ ...

  8. 论文阅读笔记 - Mesos: A Platform for Fine-Grained ResourceSharing in the Data Center

    作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 更多论文阅读笔记 http:/ ...

  9. 论文阅读笔记 Word Embeddings A Survey

    论文阅读笔记 Word Embeddings A Survey 收获 Word Embedding 的定义 dense, distributed, fixed-length word vectors, ...

随机推荐

  1. Oracle开发包被锁解决办法-终极办法

    http://www.itpub.net/forum.php?mod=viewthread&tid=1761963 以前在数据库维护中,基本都是碰到表被锁的情况,然后就是查找被锁的表相关的信息 ...

  2. unigui 设置单元格颜色

    procedure TF_Resource2.UniDBGrid1DrawColumnCell(Sender: TObject; ACol,  ARow: Integer; Column: TUniD ...

  3. 在 Ubuntu 16.04上安装 vsFTPd

    在 Ubuntu 16.04上安装 vsFTPd Ubuntu vsFTPd 关于 vsFTPd vsFTPd 代表 Very Secure File Transfer Protocol Daemon ...

  4. [翻译] ASP.NET WebAPI 中的异常处理

    原文链接:https://docs.microsoft.com/en-us/aspnet/web-api/overview/error-handling/exception-handling 本文介绍 ...

  5. re模块 模块

    import re findall()  烦的奥 import re # 1. findall 查找所有结果,数据不是特别庞大 lst = re.findall('a','abcsdfasdfa') ...

  6. webstorm “Unterminated statement”

    使用webstorm的时候,写console.log,或者一些其他语句的时候  偶尔会出现这种提示,不是报错,就是看着别扭,应该是写法规范问题. 解决办法: 在下面空一行就行了

  7. JavaScript getter和setter

    对象的属性是由属性名name,值key,和其他特性(可读写性 writable,可枚举性enumerable,可配置性configurable)组成的.从ES5开发,提供了getter和setter ...

  8. Nginx安装使用及与tomcat实现负载均衡

    1. 背景 基于nginx强大的功能,实现一种负载均衡,或是不停机更新程序等.nginx相比大家基本上都知道是什么来头了,具体的文章大家可以去搜索相关文章学习阅读,或是可以查看Nginx中文文档和Ng ...

  9. golang 并发顺序输出数字

    参考 package main import ( "fmt" "sync/atomic" "time" ) func main() { va ...

  10. python批量拷贝文件

    普通批量拷贝文件 import os import shutil import logging from logging import handlers from colorama import Fo ...