图解十大 CNN 架构

2019 年 8 月 2 日 AI科技评论

CNN 取得的大多数进展并非源自更强大的硬件、更多的数据集和更大的模型,而主要是由新的想法和算法以及优化的网络结构共同带来的结果。

原标题 | Illustrated: 10 CNN Architectures

翻译 | 廖颖、had_in(电子科技大学)、爱曼纽•西蒙(东南大学)

编辑 | Pita   (注:相关链接可点击阅读原文访问)

你了解不同的卷积神经网络(CNNs)吗?近年来,我们见证了无数CNNs的诞生。这些网络已经发展得如此深入,以至于很难将整个模型可视化。我们不再细究它们的原理,而是把它们当作黑盒模型。  

也可能你并不了解,但依然很感兴趣,那么你来对地方了!本文展示了10种常见CNN架构的可视化,可任您挑选。这些可视化图使我们对整个模型有了 更加清晰的了解,而不需要向下滚动几次才可以看到softmax层。除了这些可视化图,我对网络如何随着时间“进化”进行了简要说明  ——从5到50卷积层,从单纯的卷积层到模块层,模块网络拓扑个数从2 - 3个到32个,卷积大小从7⨉7到5⨉5——稍后将详细介绍这些。

所谓“常见”,我指的是那些深度学习库(如TensorFlow、Keras和PyTorch)共享的有预训练权重的模型,以及通常在课堂上所讲的模型。其中一些模型在ImageNet大规模视觉识别挑战赛(ILSVRC)等竞赛中取得了成功。  


将讨论的10个架构及对应论文的年份


我们将讨论在Keras中具有预训练模型的6种架构。上图改编自Keras文档中的一个表。 

写这篇文章的初心是考虑到目前没有太多图解网络结构的博客和文章(如果你知道相关的文章,请分享给我吧)。所以我决定写一篇文章来作为参考。出于这样的目的,我阅读了许多论文和代码(大多来自TensorFlow和Keras)来完成这篇文章。

补充一点,我们平时看到的卷积神经网络架构是很多因素的结果——升级的计算机硬件、ImageNet比赛、处理特定的任务、新的想法等等。Google 研究员 Christian Szegedy曾提到:

CNN 取得的大多数进展并非源自更强大的硬件、更多的数据集和更大的模型,而主要是由新的想法和算法以及优化的网络结构共同带来的结果。(Christian Szegedy等人,2014)

现在我们继续介绍,看看网络结构是如何慢慢优化起来的。

关于可视化图的说明:可视化图中没有再标注卷积核数量、padding、stride、dropout和拉平操作。


  目录 (按发表年份排序)

  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”——神经网络的名称通常是由它们拥有的卷积层和全连接层的数量派生出来的)。我们现在所知道的平均池化层被称为子采样层,它具有可训练的权重(和当前设计CNNs不同)。这个架构有大约60,000个参数。

⭐️创新点:

这种架构已经成为标准的“模板”:叠加卷积层和池化层,并以一个或多个全连接层结束网络。

📝发表:

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

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

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


  2. AlexNet

图2:AlexNet结构,引自他们的论文

AlexNet网络有6千万个参数,8个网络层——5个卷积层和3个全连接层。相比于LeNet-5,AlexNet只是堆了更多的网络层。

在论文发表时,作者指出AlexNet是“在ImageNet子集上训练的最大的卷积神经网络之一。”

⭐️创新点:

1.他们首次实现将线性整流函数(ReLus)作为激活函数。

2.使用卷积神经网络的重叠池化。

📝发表:

  • 论文:深度卷积神经网络用于ImageNet分类

  • 作者:Alex Krizhevsky, IIya Sutskever, Geoffrey Hinton. 加拿大,多伦多大学

  • 发表于:2012年神经信息处理系统会议(NeurIPS 2012)


  3. VGG-16 (2014)

图3:VGG-16架构,引自他们的论文  

你现在应该已经注意到CNNs开始变得越来越深了。这是因为提高深度神经网络性能最直接的方法是增加它们的大小(Szegedy et. al)。Visual Geometry Group (VGG)的工作人员提出了VGG-16,它有13个卷积层和3个全连接层,继续采用了AlexNet的ReLU激活函数。同样,这个网络只是在AlexNet上堆叠了更多的层。它有138M的参数,占用大约500mb的磁盘空间😱。他们还设计了一种更深的变型,VGG-19。

⭐️创新点:

正如他们在摘要中提到的,本文的贡献在于设计了更深层次的网络(大约是AlexNet的两倍)。  

📝发表:

  • 论文:Very Deep Convolutional Networks for Large-Scale Image Recognition
  • 作者:Karen Simonyan, Andrew Zisserman. University of Oxford, UK.
  • arXiv 印本, 2014


  4. Inception-v1 (2014)

图4:Inception-v1架构。这个CNN有两个辅助网络(在推断时被丢弃)。体系结构引自论文中的图3。
这个22层网络架构具有5M的参数,被称为 Inception-v1 网络 。这个架构,如论文中所述,大量使用了Network In Network(参见附录)方法。这是通过“Inception 模块”实现的。Inception模块的架构设计是对稀疏结构近似研究的产物(更多信息请阅读论文)。每个模块有3个点改进:
1.使用不同卷积的并行拓扑结构,然后进行连接,获得1×1、3×3和5×5卷积提取的不同特征,从而对它们进行“归并”。这一想法的灵感来自Arora等人在论文Provable bounds for learning some deep representations,改论文提出了一种逐层构建的方法,即分析最后一层的相关统计数据,并将其归并成具有高相关性的单元组。  
2.采用1×1卷积进行降维,消除计算瓶颈。  
3.1×1卷积在卷积层中加入非线性(基于Network In Network论文)。  
作者还引入了两个辅助分类器,以使分类器在较浅层的网络部分也进行识别,以增加反向传播的梯度信息,并提供额外的正则化。辅助网络(连接到辅助分类器的分支)在推断时被丢弃。  
注意: 模块的名称(Stem和Inception)一直没有采用 Inception,直到后来的版本,即Inception-v4 和Inception-ResNets,才用于这个Inception版本。我把它们加在这里是为了便于比较。  

⭐️创新点:

使用稠密modules/blocks构建网络。我们并非堆叠卷积层,而是堆叠modules或blocks,其中包含卷积层。Inception得名于2010年由莱昂纳多·迪卡普里奥主演的科幻电影《盗梦空间》。  

📝发表:
  • 论文:Going Deeper with Convolutions
  • 作者: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)


Inception-v3是 Inception-v1的后续版本,具有24M的参数。等等,Inception-v2在哪?不用担心——这是v3的早期原型,因此它与v3非常相似,但并不常用。当作者们提出 Inception-v3时,他们对其进行了许多实验,并记录了一些成功的调整。Inception-v3  是包含这些调整的网络(优化器的调整、损失函数以及向辅助网络中的辅助层添加BN层)。  
注意:模块的名称(Stem, Inception-A, Inception-B等)一直没有采用Inception,直到后来的版本,即Inception-v4 和Inception-ResNets,才用于这个Inception版本。我把它们加在这里是为了便于比较。  
⭐️创新点:
引入BN层(为了简单起见,没有反映在上面的图中 )。  
✨与之前的版本 Inception-v1 相比,有什么改进? 
将7×7卷积替换为一系列3×3个卷积  
📝发表:
  • 论文:Rethinking the Inception Architecture for Computer Vision

  • 作者: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)



⭐️创新点:

推广跳连接结构skip connections ( 首批使用批标准化的)。  

📝发表:


  • 论文:Deep Residual Learning for Image Recognition

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

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


  7. Xception(2016)


图7:Xception 架构,基于keras-team在GitHub上的代码。通道独立卷积层被记作'conv sep'。
Xception是从Inception上改进,Inception模块用通道独立卷积层替换。它与Inception-v1的参数数量大致相同(23M)。
Xception将Inception假设引入eXtreme(因此而得名)。那么什么是Inception假设?谢天谢地,文章中明确提到了这一点(感谢François!)
  • 首先,通过1x1卷积核捕获跨通道(或交叉特征映射)相关性。
  • 其次,通过常规3x3或5x5卷积捕获每个通道内的空间相关性。
将这个想法运用到极致意味着对每个通道执行1x1卷积,然后对每个输出执行3x3。这与用通道独立卷积替换初始模块相同。

⭐️创新点:

引入完全基于通道独立卷积层的CNN。 

📝发表:

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

  • 作者:François Chollet. Google.

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


  8. Inception-v4 (2016)


来自谷歌的人员再次使用有 43M个参数的Inception-v4网络进行了进一步改进。同样,这是  Inception-v3 的一个改进。主要的区别是Inception-C模块中的Stem块和一些微小的变化。作者还“为每个网格大小的 Inception块做了统一的选择”。他们还提到,拥有“残差连接可以显著提高训练速度。”

📝发表:  

  • 论文:Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning
  • 作者:Christian Szegedy, Sergey Ioffe, Vincent Vanhoucke, Alex Alemi. Google.
  • 发表于:Proceedings of the Thirty-First AAAI Conference on Artificial Intelligence


  9. Inception-ResNet-V2 (2016)


在发表 Inception-v4网络的同一篇文章中,作者还介绍了 Inception-ResNets网络家族——Inception-ResNet-v1和Inception-ResNet-v2。后者有56M个参数。  
✨与前一个版本  Inception-v3  相比,有什么改进? 

1.将 Inception模块转化为Residual Inception模块。

2.加入更多的Inception模块。

3.在Stem模块之后添加一个新的Inception模块(Inception-A)。  

📝发表:
  • 论文:Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning
  • 作者:Christian Szegedy, Sergey Ioffe, Vincent Vanhoucke, Alex Alemi. Google
  • 发表于:Proceedings of the Thirty-First AAAI Conference on Artificial Intelligence


  10. ResNeXt-50 (2017)


Fig. 10: ResNeXt架构, 引自对应论文.
📝发表:
  • 论文:Aggregated Residual Transformations for Deep Neural Networks
  • 作者: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)

Mlpconv的这种思想类似于1×1卷积,并成为Inception架构的主要特性。  
⭐️创新点:

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

2.全局平均池化(取每个特征map的平均值,并将结果向量输入softmax层)  

📝发表:
  • 论文: Network In Network
  • 作者: Min Lin, Qiang Chen, Shuicheng Yan. National University of Singapore
  • arXiv印本, 2013

这里把10个网络结构的可视化图再罗列一下,作简单的回顾:

LeNet-5

AlexNet

VGG-16

Inception-v1


Inception-v3


Inception-v4


Inception-ResNet-V2


Xception


ResNet-50


ResNeXt-50


  神经网络可视化资源

这里有一些资源可以让你可视化你的神经网络: 
  • Netron 😍(https://lutzroeder.github.io/netron/)
  • TensorBoard API by TensorFlow(https://www.tensorflow.org/tensorboard/r1/overview)
  • plot_model API by Keras(https://keras.io/visualization/)
  • pytorchviz package(https://github.com/szagoruyko/pytorchviz)


  类似文章

  • CNN Architectures: LeNet, AlexNet, VGG, GoogLeNet, ResNet and more ….

  • A Simple Guide to the Versions of the Inception Network


  参考

我使用了提出了上述网络体系结构的论文作为参考。除此之外,这里还有一些我在本文中引用的文章:  
  • 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)

via https://towardsdatascience.com/illustrated-10-cnn-architectures-95d78ace614d

 点击 阅读原文,查看本文相关内容

登录查看更多
0

相关内容

在数学(特别是功能分析)中,卷积是对两个函数(f和g)的数学运算,产生三个函数,表示第一个函数的形状如何被另一个函数修改。 卷积一词既指结果函数,又指计算结果的过程。 它定义为两个函数的乘积在一个函数反转和移位后的积分。 并针对所有shift值评估积分,从而生成卷积函数。
【干货书】高级应用深度学习,294页pdf
专知会员服务
147+阅读 · 2020年6月20日
CVPR2020 | 商汤-港中文等提出PV-RCNN:3D目标检测新网络
专知会员服务
43+阅读 · 2020年4月17日
卷积神经网络的概述论文:分析、应用和展望,21页pdf
专知会员服务
89+阅读 · 2020年4月7日
【综述】金融领域中的深度学习,附52页论文下载
专知会员服务
161+阅读 · 2020年2月27日
CNN网络结构的发展(最全整理)
极市平台
72+阅读 · 2019年11月2日
卷积神经网络数学原理解析
算法与数学之美
19+阅读 · 2019年8月23日
一文概览用于图像分割的CNN
论智
13+阅读 · 2018年10月30日
深度剖析卷积神经网络
云栖社区
7+阅读 · 2018年5月27日
卷积神经网络的最佳解释!
专知
12+阅读 · 2018年5月1日
从LeNet到SENet——卷积神经网络回顾
AI科技评论
13+阅读 · 2018年2月15日
【CNN】一文读懂卷积神经网络CNN
产业智能官
18+阅读 · 2018年1月2日
最全的DNN概述论文:详解前馈、卷积和循环神经网络技术
Arxiv
17+阅读 · 2019年4月5日
W-net: Bridged U-net for 2D Medical Image Segmentation
Arxiv
19+阅读 · 2018年7月12日
Arxiv
6+阅读 · 2018年2月6日
Arxiv
7+阅读 · 2018年1月24日
Arxiv
5+阅读 · 2016年1月15日
VIP会员
相关资讯
CNN网络结构的发展(最全整理)
极市平台
72+阅读 · 2019年11月2日
卷积神经网络数学原理解析
算法与数学之美
19+阅读 · 2019年8月23日
一文概览用于图像分割的CNN
论智
13+阅读 · 2018年10月30日
深度剖析卷积神经网络
云栖社区
7+阅读 · 2018年5月27日
卷积神经网络的最佳解释!
专知
12+阅读 · 2018年5月1日
从LeNet到SENet——卷积神经网络回顾
AI科技评论
13+阅读 · 2018年2月15日
【CNN】一文读懂卷积神经网络CNN
产业智能官
18+阅读 · 2018年1月2日
最全的DNN概述论文:详解前馈、卷积和循环神经网络技术
相关论文
Arxiv
17+阅读 · 2019年4月5日
W-net: Bridged U-net for 2D Medical Image Segmentation
Arxiv
19+阅读 · 2018年7月12日
Arxiv
6+阅读 · 2018年2月6日
Arxiv
7+阅读 · 2018年1月24日
Arxiv
5+阅读 · 2016年1月15日
Top
微信扫码咨询专知VIP会员