图解十大 CNN 架构!

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


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

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

  • “这种进步大多不来自于更强大的硬件、更多的数据集和更大的模型,而主要来源于新的想法、算法和优化的网络结构。”(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个参数。

⭐️创新点

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

📝发表

2. AlexNet

AlexNet结构,引自他们的论文

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

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

⭐️创新点

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

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

📝发表

3. VGG-16 (2014)

VGG-16架构

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

⭐️创新点

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

📝发表

4. Inception-v1 (2014)

Inception-v1架构

图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论文)。

  4. 作者还引入了两个辅助分类器,以使分类器在较浅层的网络部分也进行识别,以增加反向传播的梯度信息,并提供额外的正则化。辅助网络(连接到辅助分类器的分支)在推断时被丢弃。

注意:模块的名称(Stem和Inception)一直没有采用Inception,直到后来的版本,即Inception-v4 和Inception-ResNets,才用于这个Inception版本。我把它们加在这里是为了便于比较。
⭐️创新点

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

📝发表

  • 论文: 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)

图5:Inception-v3架构。这个CNN有一个辅助网络(在推理时被丢弃)。*注意:所有卷积层后面都是batch norm和ReLU激活。架构引自他们的GitHub代码。

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版本。我把它们加在这里是为了便于比较。

⭐️创新点

  1. 引入BN层(为了简单起见,没有反映在上面的图中 )。

✨与之前的版本 Inception-v1 相比,有什么改进?

  1. 将n×n卷积分解为非对称卷积:1×n和n×1卷积

  2. 将5×5卷积分解为两个3×3卷积运算

  3. 将7×7卷积替换为一系列3×3个卷积

📝发表

6. ResNet-50 (2015)

图6:ResNet-50架构,基于keras-team的GitHub代码

这就是本篇文章开头问题的答案。在前几个CNNs中我们发现他们是通过增加层数来获得更好的性能,但是随着网络深度的增加,准确度达到饱和(这可能并不令人惊讶),然后迅速下降。微软研究院的研究人员使用ResNet解决了这个问题——使用skip connections(又叫 shortcut connections, residuals),同时构建更深层次的模型。

ResNet是最早采用批量标准的一批架构((Ioffe和Szegedy在2015年向ICML提交了批量标准化论文)上面显示的是ResNet-50,参数为26M。

ResNets的基本构建块是conv和identity块。因为它们看起来很像,您可以这样简化ResNet-50(不要引用我的话):
image

⭐️创新点

  1. 推广了skip connections (他们不是最开始用skip connections的人;

  2. 设计更深层的CNNs(多达152层),而不损害模型的泛化能力;

  3. 首批使用批量标准化。

📝发表

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。这与用通道独立卷积替换初始模块相同。

⭐️创新点

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

📝发表

8. Inception-v4 (2016)


图8: Inception-v4架构。这个CNN有一个辅助网络(在推理时被丢弃)。*注意:所有卷积层后面都是batch norm和ReLU激活。架构引自他们的GitHub代码。

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

✨与之前的版本 Inception-v3 相比,有什么改进?

  1. 更换了Stem模块

  2. 添加了更多的Inception 模块

  3. incep -v3模块 统一选择,意味着为每个模块使用相同数量的过滤器

📝发表

9. Inception-ResNet-V2 (2016)

图9:incepated - resnet - v2架构。*注意:所有卷积层后面都是batch norm和ReLU激活。架构引自他们的GitHub代码。</spanmicrosoft>

在发表 Inception-v4网络的同一篇文章中,作者还介绍了Inception-ResNets网络家族—Inception-ResNet-v1和Inception-ResNet-v2。后者有56M个参数。

✨与前一个版本 Inception-v3 相比,有什么改进?

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

  2. 加入更多的Inception模块。

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

📝发表

10. ResNeXt-50 (2017)

Fig. 10: ResNeXt架构, 引自对应论文.

你可能会联想到ResNets,没错,它们是相关的。ResNeXt-50有25M (ResNet-50有25.5M)。ResNeXts的不同之处在于在每个模块中添加了并行塔/分支/路径,如上面的“总共32个塔”所示。

⭐️ 创新点:
在一个模块中增加并行塔的数量(“基数”)(我的意思是,Inception网络已经对此进行了探索……)

📝发表:

附录:Network In Network (2014)

回想一下,在卷积中,像素的值是滤波器和当前滑动窗口中权重的线性组合。作者提出用一个隐层的微型神经网络代替这种线性组合。这就是他们创造的Mlpconv。这里我们要处理的是卷积神经网络中的一个隐层网络。

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

参考:https://www.yanxishe.com/TextTranslation/1983

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,864评论 6 494
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,175评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,401评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,170评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,276评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,364评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,401评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,179评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,604评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,902评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,070评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,751评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,380评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,077评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,312评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,924评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,957评论 2 351

推荐阅读更多精彩内容