这篇文章由谷歌在17年提出,受启发于何凯明提出的ResNet在深度网络上较好的表现影响,作者将Residual connection加入到Inception结构中形成2个Inception-ResNet版本的网络以及一个纯Inception-v4网络。

参考目录:
①:论文补充版本(主要是补充一些图)
②:从Inception v1到Inception-ResNet,一文概览Inception家族的「奋斗史」
③:论文笔记1
④:论文笔记2

截至这篇文章发表,谷歌提出的关于Inception块组成的GoogleNet经历了如下五个版本:
具体过程详见上述参考文档②。
Note:

  1. 其中v1 → \to →v2的过程中滤波器组扩展指的是Inception块内部结构中网络变得更宽而不是更深,从而解决表征性瓶颈问题。
  2. 分解卷积指的是比如说 3 × 3 3\times 3 3×3卷积分解成 1 × 3 1\times 3 1×3和 3 × 1 3\times 1 3×1卷积2个过程,作者指出这样会节约资源消耗。

Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning

  • Abstract
  • 1 Introduction
  • 2 Related Work
  • 3 Architectural Choices
    • 3.1 Pure Inception blocks
    • 3.2 Residual Inception Blocks
    • 3.3 Scaling of the Residuals
  • 4 Training Methodology
  • 5 Experimental Results
  • 6 Conclusions

Abstract

GoogleNet凭借着较低的计算资源损耗、通过Inception块中多个不同窗口形状的卷积层获取多尺度特征而闻名,而当时推出的Inception-v3版本和何凯明的Residual网络都取得了很好的表现,因此本文起源于作者的一个问题:如果将残差连接加入到Inception块理会怎么样?作者经过实验得出:

  1. residual connections有利于加速Inception网络的训练速度。
  2. 相同计算资源下,拥有残差连接的Inception只比没有残差连接的Inception网络表现出色一点点。这也似乎是谷歌想告诉大家:不是每次遇到深度网络就要想起用残差网络来解决。

本文的贡献如下:

  1. 作者推出了Inception-v4Inception-ResNet-v1Inception-ResNet-v2三种网络结构。
  2. 作者推出了residual scaling来稳定residual-based网络的训练。

1 Introduction

这篇文章中,总体来看作者主要做了2件事:

  1. 使用Residual网络的残差连接取代原本Inception块中池化层部分,使得filter-concatenation变成了求和相加的形式。
  2. 将Inception-v3进化到Inception-v4(注意:这都是无residual-connection的版本),相比v3,v4拥有更简洁的结构、有更多的Inception块以及在输入和首个Inception块之间引入stem模块。

2 Related Work

以往我们为深度网络的训练而发愁时,都只会想到用Residual Network来解决问题。但是作者指出,他们的实验显示了在没有skip connection的条件下,也可以取得和有残差连接时候差不多的效果;作者也严谨的说道也许是关于Residual Network更深更多的实验才能完全理解residual connection的价值。虽然有残差下的Inception网络和无残差的Inception相比表现力提升不大,但是residual connection确实可以提升Inception的训练速度。

3 Architectural Choices

这一节主要介绍:

  1. Inception-v4网络。
  2. Inception-ResNet-v1、Inception-ResNet-v2网络。
  3. Residual Scaling。

3.1 Pure Inception blocks

首先来看Inception-v4的结构:

Note:

  1. Inception-v4引入了stem模块,如上图红色框所示,其中的filter concat和Inception块中的一样,是将不同滤波器运算过的feature map做通道上的合并。

  2. 3个输入图像宽高分别是 35 × 35 、 17 × 17 、 8 × 8 35\times 35、17\times 17、8\times 8 35×35、17×17、8×8的Inception块内部结构如下:

  3. 2个缩减块(reduction block)的内部结构如下:

3.2 Residual Inception Blocks

接下来介绍ResNet和Inception的合体:

  1. Inception-ResNet-v1:这是一种和Inception-v3具有相同计算损耗的结构。
  2. Inception-ResNet-v2:这是一种和Inception-v4具有相同计算损耗的结构,但是训练速度要比纯Inception-v4要快。

相比纯Inception网络,Inception-ResNet网络具有以下3个特点:

  1. Inception块的构造更加简单。
  2. 采用filter-expansion layer(其实就是 1 × 1 1\times 1 1×1卷积层)去扩大因为Inception块损失的通道数,因为过多地减少维度可能会造成信息的损失(表征性瓶颈)。
  3. 关于BN的使用。Inception-ResNet为了减小BN带来的存储消耗,只在stem模块中使用,而不是像之前在每个Inception块中使用。

Inception-ResNet结构如下:

Note:

  1. 两个版本的总体结构相同,不同的是stem、Inception块、缩减块。
  2. 2个版本的3个Inception块如下:从上面结构中可以看出Inception-ResNet用残差连接取代了原Inception块中的filter concatenation,或者说残差连接代替了Inception中的池化层。
  3. 2个版本的缩减块结构如下:从上图中可以看出原Inception中被取代的池化层部分其实是转移到了缩减块中。

3.3 Scaling of the Residuals

这一节介绍的是在残差汇合之前,对残差进行缩减来稳定训练。作者指出,当卷积核的数量超过1000时,那么残差网络就会变得不稳定,具体表现为几万次迭代之后,平均池化层之前的最后一层开始产生0的输出,使得网络崩溃坏死,这种现象通过降低学习率或者增加BN都无法解决。
因此作者决定采用residual scaling,取一个 [ 0.1 , 0.3 ] [0.1,0.3] [0.1,0.3]区间之内的缩减常数去减小Inception网络输出的方差,增加稳定性,一定程度上也可以避免模型过拟合。

具体结构如下:

Note:

  1. 这个缩减结构可以适用于任何具有残差连接的网络。
  2. 缩减指数一般取0.1左右,且网络越深,这个值最好是越小。
  3. 作者指出残差缩减非但不会影响最好的表现力,而且还会增加训练的稳定性。

引用一段代码(开篇引用文档③)来解释这个过程:

 def forward(self, x):out = self.conv2d(x)  # 这里可以是卷积层、可以是Inception模块等任意sub-networkout = out * self.scale + x  # 乘以一个比例系数再相加out = self.relu(out)return out

4 Training Methodology

主要是理一理网络的结构,故略。

5 Experimental Results

主要是理一理网络的结构,故实验略。

6 Conclusions

论文一口气输出3个新的结构,分别是:

  1. Inception-v4:Inception-v3的进化版,增加了stem块(其实就是输入到第一个Inception的处理过程)。
  2. Inception-ResNet-v1:将Residual connection和Inception网络结合在一起,并引入residual scaling稳定训练,其计算消耗和Inception-v3类似。
  3. Inception-ResNet-v2:将Residual connection和Inception网络结合在一起,并引入residual scaling稳定训练,其计算消耗和Inception-v4类似,但训练速度更快;相比Inception-ResNet-v1,v2版本的网络参数更多,结构也略微复杂一丢丢。

深度学习之Inception-ResNet相关推荐

  1. Halcon 深度学习自定义网络模型-ResNet通用网络产生器

    Halcon 深度学习自定义网络模型-ResNet通用网络产生器 备注: 版本要求:halcon21.05++ Python下的ResNet网络模型源码: import torch import to ...

  2. 深度学习网络篇——ResNet

    ResNet 作者:Kaiming He ,Xiangyu Zhang ,Shaoqing Ren ,Jian Sun 研究机构:Microsoft Research About Kaiming He ...

  3. 深度学习——残差神经网络ResNet在分别在Keras和tensorflow框架下的应用案例

    原文链接:https://blog.csdn.net/loveliuzz/article/details/79117397 一.残差神经网络--ResNet的综述 深度学习网络的深度对最后的分类和识别 ...

  4. PyTorch 深度学习实战 | 基于 ResNet 的花卉图片分类

    "工欲善其事,必先利其器".如果直接使用 Python 完成模型的构建.导出等工作,势必会耗费相当多的时间,而且大部分工作都是深度学习中共同拥有的部分,即重复工作.所以本案例为了快 ...

  5. 【深度学习】后ResNet时代的顶流EfficientNet

    感兴趣的可以直接看视频,第一次做视频有很多瑕疵 其实,我对于EfficientNet流派的网络是排斥的,暴力搜索的方法看起来跟创新背道而驰,总觉得不太光彩,这对于深度学习的良性发展会产生一定的负面影响 ...

  6. PyTorch深度学习实战 | 基于ResNet的人脸关键点检测

    人脸关键点检测指的是用于标定人脸五官和轮廓位置的一系列特征点的检测,是对于人脸形状的稀疏表示.关键点的精确定位可以为后续应用提供十分丰富的信息.因此,人脸关键点检测是人脸分析领域的基础技术之一.许多应 ...

  7. 【深度学习】Inception模型结构解析,关键词:Inception-v1、v2、v3、v4、Inception-ResNet-v1、Inception-ResNet-v2

    目录 1.Inception-v1 1.1 Introduction 1.2 Inception结构 1.3 GoogLeNet 参考文献 2.Inception-v2 2.1 introductio ...

  8. 深度学习——残差网络(ResNet)

    随着卷积神经网络的发展和普及,我们了解到增加神经网络的层数可以提高模型的训练精度和泛化能力,但简单地增加网络的深度,可能会出现"梯度弥散"和"梯度爆炸"等问题. ...

  9. 深度学习 101-搭建 ResNet 识别鲜花图像

    1 前言 ResNet 是一种经典的图像识别领域模型,在 2015 年图像识别领域多个竞赛中排行第一,并且性能上相较第二有大幅提升.在这篇文章里,我们就站在巨人们的肩膀上,搭建一个基于 ResNet ...

  10. bottleneck resnet网络_深度学习|图像分类:ResNet(二)

    接着上一讲,我们来看下ResNet的代码,代码的github链接为:ry/tensorflow-resnet,代码基于tensorflow编写. 网络结构的代码如下: import skimage.i ...

最新文章

  1. 大龄屌丝自学笔记--Java零基础到菜鸟--028
  2. 网站图片做SEO优化的技巧有哪些?
  3. NVIDIA Jetson 系列产品开发相关文档,TAO、TLT、NGC
  4. Springboot整合swagger指南
  5. Qt 判断一个点是否落在三角形内(算法)
  6. 打包jar文件 外部调用资源 so等
  7. UE4 Hello Slate
  8. 书籍python科学工程介绍 Python for Science and Engineering - 2019
  9. php时间戳转换日期24,php时间戳怎么转换回日期
  10. 文字绘制——pygame之旅
  11. linux uwf开放80端口,SELinux - osc_a3uwfsx7的个人空间 - OSCHINA - 中文开源技术交流社区...
  12. Wireshark 301: Spying on what people are downloading (Part 1 of 2)
  13. 这3款在线PS工具,得试试
  14. 有赞 CTO 崔玉松:我想打造出中国最好的技术团队
  15. 【AI能否取代设计师】「Stable Diffusion」AI绘画黑科技将告诉你答案
  16. go每日新闻(2021-12-01)——Go 1.18新特性前瞻:原生支持Fuzzing测试
  17. net程序员面试题,基本上是基础概念题
  18. python-定时给指定微信女朋友发送天气预报和每日一句自动聊天抢红包抢票
  19. 【Hexo搭建个人博客】(十三)Next主题中添加首页文章置顶功能及置顶图标
  20. 企业级无代码,掀起10倍速效率革命!

热门文章

  1. 浅谈张量分解(五):稀疏张量的CP分解
  2. IDC机房专业除尘技术详解
  3. UE4布料 Cloth
  4. [RK3288][Android7.1]调试笔记 --- 修改串口节点/dev/ttyS*
  5. 邢台数控编程培训学校分享断屑问题处理
  6. JAVA基础-U7 面向对象编程(基础部分)-可变参数
  7. icloud连接服务器时出现问题_苹果icloud连接超时怎么办 icloud服务器连接超时解决方法...
  8. EAUML日拱一卒 用例泛化关系
  9. 无线智能插座java环境配置详细教程
  10. 导入/导入 MySQL数据库