点击 机器学习算法与Python学习 选择加星标

精彩内容不迷路

作者 | Raimi Karim,出品 | AI科技大本营(ID: rgznai100)

本文精心选取了 10 个 CNN 体系结构的详细图解进行讲述。由作者精心挑选。这些图解展示了整个模型的精华,无需去逐个浏览那些 Softmax 层。除了这些示意图,作者还提供了一些注释,阐述了它们是如何不断演变的——卷积层从 5 到 50 个、从普通的卷积层到卷积模块、从 2~3 tower 到 32 tower 、卷积核从 7⨉7 到 5⨉5 。

所谓“常见”,是指这些模型的预训练权重通常被深度学习库(如 TensorFlow PyTorch )所共享,提供给开发者使用,这些模型通常会在课堂上讲授。其中一些模型已经在竞赛(如 ILSVRC ImageNet 大规模图像识别挑战)中取得了成功。

将要讨论的10个架构与相应的论文发布时间

6个网络架构的预训练权重可以在 Keras 中获得,参见https://keras.io/applications/?source=post_page

写这篇文章的原因在于没有多少博客和文章提到这些紧凑的结构图解。因此,作者决定自己写一篇作为参考。出于这个目的,作者阅读了本文提到的论文和代码(绝大部分是 TensorFlow 和 Keras ),得到了这些成果。这里还要特别指出,这些 CNN 网络结构的来源五花八门——计算机硬件性能的提高、ImageNet 竞赛、解决特定问题、新想法等等。一位在 Google 工作的研究员 Christian Szegedy 曾经提到:

“这个进程绝大多数不只是由于更强大的硬件、更大的数据集和更大的模型,更是一系列新想法、算法和网络结构的改进”。

现在让我们来看看这些“巨兽”般的网络架构是如何逐渐演变的。

【作者注】对可视化的注释:请注意,在这些示意图中,作者略去了一些信息,如卷积过滤器的数量、Padding、Stride、Dropout 和 flatten 操作。

目录(按发表时间排序)

  1. LeNet-5

  2. AlexNet

  3. VGG-16

  4. Inception-v1

  5. Inception-v3

  6. ResNet-50

  7. Xception

  8. Inception-v4

  9. Inception-ResNets

  10. ResNeXt-50

图例

1. LeNet-5 (1998)   

       图1 : LeNet-5 网络结构

LeNet-5 一个最简单的网络架构。它有 2 个卷积层和 3 个全连接层(总共 5 层,这种命名方式在神经网络中很常见,这个数字代表卷积层和全连接层的总和)。Average-Pooling 层,我们现在称之为亚采样层,有一些可训练的权重(现在设计 CNN 网络时已经不常见了)。这个网络架构有大约 6 万个参数。

有哪些创新?

这个网络架构已经成为标准的“模板”:堆栈式卷积和池化层,以一个或多个全连接层作为网络的末端。

相关论著

  • 论文: Gradient-Based Learning Applied to Document Recognition

    链接:http://yann.lecun.com/exdb/publis/index.html?source=post_page

  • 作者:  Yann LeCun, Léon Bottou, Yoshua Bengio, and Patrick Haffner

  • 发表在:  Proceedings of the IEEE (1998)

2. AlexNet (2012)

图2: AlexNet 网络结构

AlexNet 有 60 M 个参数,共有 8 层:5 个卷积层和 3 个全连接层。AlexNet 只是在 LeNet-5 中堆叠了更多的层。在该论文发表时,论文作者指出他们的网络架构是“当前最大的 ImageNet 子集卷积神经网络之一”。

有哪些创新?

1. 他们的网络架构是首个采用 ReLU 作为激活函数的 CNN ;

2. 在 CNN 中采用交织池化(Overlapping pooling)。

相关论著

  • 论文: ImageNet Classification with Deep Convolutional Neural Networks

    链接:https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks?source=post_page

  • 作者:  Alex Krizhevsky, Ilya Sutskever, Geoffrey Hinton. University of Toronto, Canada.

  • 发表在: NeurIPS 2012

3. VGG-16 (2014)

图3: VGG-16 网络结构

你应该已经注意到,CNN 开始变得越来越深。这是因为提高深度神经网络性能最直接的方法就是增加它们的规模( Szegedy et. al. )。视觉几何研究小组( VCG )的研究人员发明了 VCG-16 ,拥有 13 个卷积层和 3 个全连接层,继承了 AlexNet 的 ReLU 传统。它由 138 M 个变量组成,要占用 500 MB 存储空间。他们也设计了一个更深的版本 VCG-19 。

有哪些创新?

  1. 正如他们在论文摘要中所提到的,该论文的贡献是设计更深的网络(大约是 AlexNet 深度的两倍)。

相关论著

  • 论文: Very Deep Convolutional Networks for Large-Scale Image Recognition

    链接:https://arxiv.org/abs/1409.1556?source=post_page

  • 作者: Karen Simonyan, Andrew Zisserman. University of Oxford, UK.

  • 发表在 arXiv preprint, 2014

4. Inception-v1 (2014)

图 4: Inception-v1 网络结构. 这个 CNN 有两个辅助网络(在推断时被丢弃),网络结构基于论文中的图3。

这个 22 层的网络架构有 5 M 参数,被称之为 Inception-v1 。在这个架构中,大量应用了 Network in Network 方法(参见附录),实现方法是采用 Inception Module 。模块的架构设计是通过对稀疏结构预估进行研究完成。

每个模块体现了 3 个思想:

  1. 采用不同过滤器的并行卷积塔,然后进行堆叠,采用 1×1、3×3 、5×5 卷积核,识别不同特征,从而对其进行“聚类”。这个想法受到 Arora 等人的论文“ Provable bounds for learning some deep representations ”启发,建议采用逐层构建的方式,这样可以分析最后一层的相关统计,并把它们聚类到高相关的各单元组。

  2. 1×1 卷积核用来进行维度裁减,以避免计算瓶颈。

  3. 1×1 卷积核在一个卷积内增加了非线性。

  4. 该论文作者也引入了两个辅助分类器,以在分类器的最后阶段扩大差异,增加了反向传播的网格信号,提供了额外的正则化。辅助网络(与辅助分类分类器相连的分支)在推理时被丢弃。

值得注意的是,"这个网络架构的主要成果是提高网络内部计算资源的利用率"。

作者注:模块的命名( Stem Inception )在这个版本的 Inception 网络架构中还没有提出,直到后面一些版本即 Inception-v4 Inception-ResNet 中才正式使用。作者把这些加入到这里是为了更容易进行比较。

有哪些创新?

  1. 采用紧密模块/板块构建网络。不采用堆叠卷积层的方法,而是堆叠由卷积层组成模块的方法。Inception 这一名字来自于科幻电影《盗梦空间》

相关论著

  • 论文:  Going Deeper with Convolutions

    链接:https://arxiv.org/abs/1409.4842?source=post_page

  • 作者:  Christian Szegedy, Wei Liu, Yangqing Jia, Pierre Sermanet, Scott Reed, Dragomir Anguelov, Dumitru Erhan, Vincent Vanhoucke, Andrew Rabinovich. Google, University of Michigan, University of North Carolina

  • 发表在:  2015 IEEE Conference on Computer Vision and Pattern Recognition (CVPR)

5. Inception-v3 (2015)

图 5: Inception-v3 网络架构  这个 CNN 有两个辅助网络(在推理时被丢弃)。注: 所有卷积层之后采用 batch norm 和 ReLU 激活

Inception-v3 是 Inception-v1 的后续版本,有 24 M 个参数。Inception-v2 去哪里了?别担心,它只不过是 v3 的一个早期原型,因此与 v3 十分相似,但不常被使用。该论文作者在提出 Inception-v2 时,在上面做了很多实验,并记录了一些成功经验。Inception 是这些成功经验的结晶(如对优化器、损失函数的改进,在辅助网络中对辅助层增加批量正则等等)。

提出 Inception-v2 和 Inception-v3 的原因是要避免表示瓶颈(这意味着大幅度地降低了下一层的输入维度),并通过采用分片方法提高了计算效率。

模块的命名( Stem 和 Inception )在这个版本的 Inception 网络架构中还没有提出,直到后面一些版本即 Inception-v4 和 Inception-ResNet 中才正式使用。作者把这些加入到这里是为了更容易进行比较。

有哪些创新?

  1. 首先采用批量正则化(为了简化,上图中未反映这一点)的设计者之一。

与之前的 Inception-v1 版本相比,有哪些改进?

  1. 把 n×n 卷积分解成不对称的卷积n and n×1 卷积。

  2. 把 5×5 卷积分解成 2 个 3×3 卷积操作

  3. 把 7×7 卷积替换成一系列 3×3 卷积。

相关论著

  • 论文: Rethinking the Inception Architecture for Computer Vision

    链接:https://arxiv.org/abs/1512.00567?source=post_page

  • 作者: Christian Szegedy, Vincent Vanhoucke, Sergey Ioffe, Jonathon Shlens, Zbigniew Wojna. Google, University College London

  • 发表在: 2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR)

6. ResNet-50 (2015)

图 6: ResNet-50 网络架构

对,这就是对文章开头问题的回答。

在上面的几个 CNN 中,我们只是看到设计时增加了层数,就达到了更好的性能。但是,“网络深度不断增加,精度达到了饱和(这一点并不奇怪),因此网络性能开始快速下降”。微软研究院的专家在构建更深的网络时,采用 ResNet ( 残差网络 ) 解决这个问题,可以不再采用全连接的方式。

ResNet 是最早采用批量正则化( Ioffe 和 Szegey 在2015提交给 ICML 的批量正则化论文)的网络之一。上图中是 ResNet-50 的网络架构,采用了 26 M 个参数。

ResNet 的基本建构单元是 conv 层和识别板块。因为它们看上去很相似,你可以把 ResNet 简化成下图:

有哪些创新?

  1. 大量避免使用全连接(他们不是第一个这么做的)。

  2. 设计更深的 CNN 网络(最大可达 152 层),而不必损失网络的生成能力。

  3. 首先采用批量正则化的网络架构之一。

相关论著

  • 论文: Deep Residual Learning for Image Recognition

    链接:https://arxiv.org/abs/1512.03385?source=post_page

  • 作者:  Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun. Microsoft

  • 发表在:  2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR)

7. Xception (2016)

图 7: Xception 网络架构  注:深度可分解卷积用 conv sep 指代

Xception 是 Inception 网络结构的一个应用,其中 Inception 模块被替换成深度可分解卷积。它和 Inception-v1 有大致相当数量的参数(23M)。

Xcpetion 采用了对 eXtreme 的 Inception 假设:

  • 首先,交叉信道(或交叉特征图)相关性可以被 1×1 卷积探测到。

  • 因此,每个信道的空间相关性可以通过常规的 3×3 或 5×5 卷积探测到。

把这个思想推到极致,意味着对每个信道进行 1×1 卷积,对每个输出进行 3×3 卷积。这等同于将 Inception 模块替换成深度可分解卷积。

有哪些创新?

  1. 完全基于深度可分解卷积层,引入 CNN。

相关论著

  • 论文: Xception: Deep Learning with Depthwise Separable Convolutions

    链接:https://arxiv.org/abs/1610.02357?source=post_page

  • 作者: François Chollet. Google.

  • 发表在: 2017 IEEE Conference on Computer Vision and Pattern Recognition (CVPR)

8. Inception-v4 (2016)

图 8: Inception-v4 网络架构 这个 CNN 有两个辅助网络(在推理时会被丢弃)。注: 所有卷积层采用 batch norm 和 ReLU 激活。

Google 的研究人员再次提出了 Inception-v4(43M个参数)。这是对 Inception-v3 的一次改进,主要的差别是 Stem 组和对 Inception-C 模块的小改动。该论文的作者也“对每种网格大小的 Inception 板块增加了 Uniform 选择”。他们也提到采用“残差连接可以大幅度提高训练速度”。

总之,值得注意的是,论文提到 Inception-v4 因为模型规模增大效果更好。

与之前的 Inceptio-v3 版本相比,有哪些改进?

  1. 改变了 Stem 模块。

  2. 增加了更多的 Inception 模块。

  3. 采用了 Inception-v3 的 Uniform 选择,意味着在每个模块中采用了相同数量的过滤器。

相关论著

  • 论文: Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning

    链接:https://arxiv.org/abs/1602.07261?source=post_page

  • 作者: Christian Szegedy, Sergey Ioffe, Vincent Vanhoucke, Alex Alemi. Google.

  • 发表在:Proceedings of the Thirty-First AAAI Conference on Artificial Intelligence

9. Inception-ResNet-V2 (2016)

图 9:  Inception-ResNet-V2 网络结构。注:所有卷积层采用 batch norm 和 ReLU 激活。

在提出 Inception-v4 的同一篇论文中,作者们也提出了 Inception-ResNet:Inception-ResNet-v1 和 nception-ResNet-v2 网络系列,v2 系列有 56M 个参数。

与之前的 Inception-v3 版本相比,有哪些改进?

  1. 把 Inception 模块转换为残差 Inception 模块。

  2. 增加了更多的 Inception 模块。

  3. 在 Stem 模块后面,增加了一种新型的 Inception 模块(Inception-A)。

相关论著

  • 论文: Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning

    链接:https://arxiv.org/abs/1602.07261?source=post_page

  • 作者: Christian Szegedy, Sergey Ioffe, Vincent Vanhoucke, Alex Alemi. Google

  • 发表在: Proceedings of the Thirty-First AAAI Conference on Artificial Intelligence

10. ResNeXt-50 (2017)

图 10: ResNeXt 网络架构

如果你想起了 ResNet,对,它们是相关的。ResNeXt 有 25 M 个参数(ResNet-50 有 25.5M 个)。它们之间的差别是 ResNeXt 在每个模块上增加了并行塔/分支、路径。上图总计有 32 个 tower。

有哪些创新?

  1. 在一个模块中增加了并行塔的数量(基数)。

相关论著

  • 论文: Aggregated Residual Transformations for Deep Neural Networks

    链接:https://arxiv.org/abs/1611.05431?source=post_page

  • 作者: Saining Xie, Ross Girshick, Piotr Dollár, Zhuowen Tu, Kaiming He. University of California San Diego, Facebook Research

  • 发表在: 2017 IEEE Conference on Computer Vision and Pattern Recognition (CVPR)

附录:Network In Network (2014)

我们注意到,在一个卷积中,像素的值是过滤器中权重和当前滑动窗口的线性组合。考虑一个只有 1 个隐藏层的 mini 神经网络。这是他们为什么把它叫做  Mlpconv 的原因。我们要处理的网络就是一个只有 1 个隐藏层的(卷积神经)网络。

Mlpconv 的思想和 1×1 卷积核密切相关,成为 Inception 网络架构的主要特征。

有哪些创新?

  1. MLP 卷积层, 1×1 卷积。

  2. 全局平均池化(对每个特征图进行平均,把结果向量反馈到 Softmax 层)。

相关论著

  • 论文: Network In Network

    链接:https://arxiv.org/abs/1312.4400?source=post_page

  • 作者: Min Lin, Qiang Chen, Shuicheng Yan. National University of Singapore

  • 发表在:arXiv preprint, 2013

下面列出了可以让你对神经网络可视化的相关资源:

  • Netron

  • TensorBoard API by TensorFlow

  • plot_model API by Keras

  • pytorchviz package

参考文献

作者在文中使用了提出这些 CNN 网络结构的论文作为参考文献。除了这些论文,作者列出了一些本文中的其它参考文献:

  • https://github.com/tensorflow/models/tree/master/research/slim/nets(github.com/tensorflow)

  • Implementation of deep learning models from the Keras team(github.com/keras-team)

  • Lecture Notes on Convolutional Neural Network Architectures: from LeNet to ResNet (slazebni.cs.illinois.edu)

  • Review: NIN — Network In Network (Image Classification)(towardsdatascience.com)

  • 你点的每个“在看”,我都认真当成了AI

图解10大CNN网络架构,通俗易懂!相关推荐

  1. 通俗易懂:图解10大CNN网络架构

    作者 | Raimi Karim 译者 | Major 编辑 | 赵雪 出品 | AI科技大本营(ID: rgznai100) 导语:近年来,许多卷积神经网络( CNN )跃入眼帘,而随着其越来越深的 ...

  2. 「多图」图解10大CNN架构

    大家好,我是K同学啊! 你是否一直在关注不同的卷积神经网络 (CNN)?近年来,我们见证了无数CNN的诞生.这些网络已经变得如此之深,以至于很难将整个模型可视化.我们不再跟踪它们,而是将它们视为黑盒模 ...

  3. 【知乎直播】千奇百怪的CNN网络架构等你来

    大家知道有三从很久很久之前就致力于CNN网络架构相关的研究,至今公众号已经写过很多的文章,知乎也回答过相关的问题,直播也做过几次分享,首先我们回顾一下已有的内容,然后再看看今天发布的新的直播预告! 1 ...

  4. 神经网络模型之CNN网络架构

    CNN网络架构 神经网络架构发展纵览 从1998年开始,近18年来深度神经网络的架构发展情况如下: 上图,横坐标是操作的复杂度,纵坐标是精度. 模型设计一开始的时候模型权重越多模型越大,其精度越高,后 ...

  5. CV之IG:基于CNN网络架构+ResNet网络进行DIY图像生成网络

    CV之IG:基于CNN网络架构+ResNet网络进行DIY图像生成网络 目录 设计思路 实现代码 设计思路 实现代码 # 定义图像生成网络:image, training,两个参数# Less bor ...

  6. CNN网络架构演进:从LeNet到DenseNet

    原文来源:https://www.cnblogs.com/skyfsm/p/8451834.html 卷积神经网络可谓是现在深度学习领域中大红大紫的网络框架,尤其在计算机视觉领域更是一枝独秀.CNN从 ...

  7. 图解10大机器学习算法

    今天给大家分享一篇机器学习算法的文章,利用图解的方式介绍了10大常见的机器学习算法.看正文: 在机器学习领域,有种说法叫做"世上没有免费的午餐",简而言之,它是指没有任何一种算法能 ...

  8. CNN网络架构学习:Chapter-5-ResNet(附代码tensorflow)

    ResNet(Residual Neural Network)由微软研究院的Kaiming He等人提出,通过使用ResNet Unit成功训练出了152层的神经网络,并在ILSVRC2015比赛中取 ...

  9. 10大顶级网络监控软件和可见性工具

    如果您需要了解网络中发生了什么,这些工具可以帮到您. 网络性能监视和诊断(NPMD)软件无论作为独立设备运行还是嵌入在网络设备中,都可以帮助企业内部用户以及与外部网络进行交互时减少生产力低下的问题. ...

最新文章

  1. matlab登录界面密码,关于MATLAB中密码登录界面的问题
  2. 东北能源大数据中心正式成立,一期将建设2.4万平方米数据中心
  3. python socket发送组播数据_Python socket 如何实现广播单播切换
  4. python如何调用c编译好可执行程序
  5. 一个简单的插件框架示例
  6. 接口调试利器Postman
  7. [Violation] Added non-passive event listener to a scroll-blocking ‘mousewheel‘ event.
  8. 会议 | 2019 全国知识图谱与语义大会 (CCKS 2019)
  9. 操作系统之进程管理:15、哲学家进餐问题
  10. html没有代码补全 vscode_借助clangd实现VSCode C++代码补全
  11. ipv6详解_modbus之libmodbus库详解
  12. PHP之webservice调用接口
  13. unix环境高级编程读后感
  14. 局域网计算机文件共享推理,行测技巧:类比推理的“第二规律”
  15. 子网掩码换算 - 在线工具
  16. php 汉字转拼音 [包含20902个基本汉字+5059生僻字]
  17. matlab 太阳角,matlab – 来自太阳位置和观察者位置的时间
  18. python的两种执行方式,python的两种运行方式
  19. 018 参数估计之点估计法:矩估计法、最大似然估计
  20. 第五章 定积分及其应用

热门文章

  1. 网络基础笔记--看一眼睡意盎然
  2. NAudio音频相关开发
  3. 谷歌浏览器设置特定网页为启动页面但无效的解决方案
  4. 2021全球电影行业市场规模及分布情况:全球电影市场规模约3282亿美元,同比6.21% [图]
  5. 极品飞车20 CPU占用率很恐怖
  6. 出海淘金成必然,中东10大短视频应用9个“中国造”
  7. 安装Origin提示your origin installation requires a license file to run,please……
  8. php删除文件夹(临时文件)代码
  9. Android调用自带文件管理器,文件管理器(com.zsorg.piyell.filemanager) - 2.4.3 - 应用 - 酷安...
  10. android 动画动态消失,Android 控件逐渐出现,逐渐消失的动画