Inception 网络是 CNN 分类器发展史上一个重要的里程碑。在 Inception 出现之前,大部分流行 CNN 仅仅是把卷积层堆叠得越来越多,使网络越来越深,以此希望能够得到更好的性能。例如第一个得到广泛关注的 AlexNet,它本质上就是扩展 LeNet 的深度,并应用一些 ReLU、Dropout 等技巧。AlexNet 有 5 个卷积层和 3 个最大池化层,它可分为上下两个完全相同的分支,这两个分支在第三个卷积层和全连接层上可以相互交换信息。与 Inception 同年提出的优秀网络还有 VGG-Net,它相比于 AlexNet 有更小的卷积核和更深的层级。VGG-Net 的泛化性能非常好,常用于图像特征的抽取目标检测候选框生成等。VGG 最大的问题就在于参数数量,VGG-19 基本上是参数量最多的卷积网络架构。这一问题也是第一次提出 Inception 结构的 GoogLeNet 所重点关注的,它没有如同 VGG-Net 那样大量使用全连接网络,因此参数量非常小。

Inception-v1就是2014年ImageNet竞赛的冠军-GoogLeNet,它的名字也是为了致敬较早的LeNet网络。GoogLeNet 最大的特点就是使用了 Inception 模块,它的目的是设计一种具有优良局部拓扑结构的网络,即对输入图像并行地执行多个卷积运算或池化操作,并将所有输出结果拼接为一个非常深的特征图。因为 1*1、3*3 或 5*5 等不同的卷积运算与池化操作可以获得输入图像的不同信息,并行处理这些运算并结合所有结果将获得更好的图像表征。

1、图像中的问题

(1)图像中突出部分的大小差别很大。例如,狗的图像可以是以下任意情况。每张图像中狗所占区域都是不同的。

从左到右:狗占据图像的区域依次减小。由于信息位置的巨大差异,为卷积操作选择合适的卷积核大小就比较困难。信息分布更全局性的图像偏好较大的卷积核,信息分布比较局部的图像偏好较小的卷积核。非常深的网络更容易过拟合。将梯度更新传输到整个网络是很困难的。简单地堆叠较大的卷积层非常消耗计算资源。

(2)解决方案:

为什么不在同一层级上运行具备多个尺寸的滤波器呢?网络本质上会变得稍微「宽一些」,而不是「更深」。作者因此设计了 Inception 模块。下图是「原始」Inception 模块。它使用 3 个不同大小的滤波器(1x1、3x3、5x5)对输入执行卷积操作,此外它还会执行最大池化。所有子层的输出最后会被级联起来,并传送至下一个 Inception 模块。原始的Inception模块如下图所示:

(3)如前所述,深度神经网络需要耗费大量计算资源。为了降低算力成本,作者在 3x3 和 5x5 卷积层之前添加额外的 1x1 卷积层,来限制输入信道的数量。尽管添加额外的卷积操作似乎是反直觉的,但是 1x1 卷积比 5x5 卷积要廉价很多,而且输入信道数量减少也有利于降低算力成本。不过一定要注意,1x1 卷积是在最大池化层之后,而不是之前。GoogLenet在Inception模块基础上进行改进,如下所示:

利用实现降维的 Inception 模块可以构建 GoogLeNet(Inception v1),其架构如下图所示:

(4)详解:

Inception模块会将之前层的激活或者输出作为它的输入,上图中这是一个28×28×192的输入。

  • 第一行:直接通过一个1×1的卷积层,这时就不必在后面再跟一个1×1的层了,这样的话过程就只有一步,假设这个层的输出是28×28×64。
  • 第二行:为了在这个3×3的卷积层中节省运算量,先通过一个1×1的层,再通过一个3×3的层,这样的话3×3的层将会输出28×28×128。
  • 第三行:先通过一个1×1的层,再通过一个5×5的层,1×1的层可能有16个通道,而5×5的层输出为28×28×32,共32个通道。
  • 第四行:最后是池化层。

为了能在最后将这些输出都连接起来,我们会使用same类型的padding来池化,使得输出的高和宽依然是28×28。但注意,如果你进行了最大池化,即便用了same padding,3×3的过滤器,stride为1,其输出将会是28×28×192,其通道数(the number of channels)或者说深度(depth)与这里的输入(通道数)相同。所以看起来它会有很多通道,我们实际要做的就是再加上一个1×1的卷积层,去进行我们在1×1卷积层的操作,将通道的数量缩小,缩小到28×28×32。也就是使用32个维度为1×1×192的过滤器,所以输出的维度其通道数缩小为32。这样就避免了最后输出时,池化层占据所有的通道。这些操作之后,将这些方块全都连接起来(do channel concatenation)。在这过程中,把得到的各个层的通道都加起来,最后得到一个28×28×256的输出。这就是一个Inception模块(Inception module),而Inception网络所做的就是将这些模块都组合到一起。

2、网络架构

上图是一张取自Szegety et al的论文中关于Inception网络的图片,图中有许多重复的模块,可能整张图看上去很复杂,但如果你只截取其中一个环节,就会发现这是Inception模块。

具体网络结构如下所示:

3、扩展

目前Inception系列具体网络结构包括:

代码:GitHub - murufeng/awesome_lightweight_networks: The implementation of various lightweight networks by using PyTorch. such as:MobileNetV2,MobileNeXt,GhostNet,ParNet,MobileViT、AdderNet,ShuffleNetV1-V2,LCNet,ConvNeXt,etc. ⭐⭐⭐⭐⭐The implementation of various lightweight networks by using PyTorch. such as:MobileNetV2,MobileNeXt,GhostNet,ParNet,MobileViT、AdderNet,ShuffleNetV1-V2,LCNet,ConvNeXt,etc. ⭐⭐⭐⭐⭐ - GitHub - murufeng/awesome_lightweight_networks: The implementation of various lightweight networks by using PyTorch. such as:MobileNetV2,MobileNeXt,GhostNet,ParNet,MobileViT、AdderNet,ShuffleNetV1-V2,LCNet,ConvNeXt,etc. ⭐⭐⭐⭐⭐https://github.com/murufeng/awesome_lightweight_networks#inception

参考:

Inception网络_DLANDML的博客-CSDN博客_inception网络

Inception网络(Inception Network)_双木的木的博客-CSDN博客_inception网络

一文详解Inception的前世今生(从InceptionV1-V4、Xception)附全部代码实现 - 知乎

【3】卷积神经网络之GoogLeNet和Inception相关推荐

  1. 卷积神经网络补充—GoogleNet

    复杂神经网络的问题 简单神经网络 我们注意这样的一个问题,我们在之前的学习当中使用的都是简单的一条龙走下来的方式进行学习,这种是比较基础的,没有分叉,没有循环,就是一条路走完.可以看到之前学的都是特别 ...

  2. torch学习 (二十四):卷积神经网络之GoogleNet

    文章目录 引入 1 Inception块 2 GoogleNet模型 3 模型训练 完整代码 util.SimpleTool 引入   GoogleNet吸收了NIN网络串联网络的思想,并在此基础上做 ...

  3. 曹健老师 TensorFlow2.1 —— 第五章 卷积神经网络

    第一章 第二章 第三章 第四章 本章目的:用图卷积神经网络实现离散数据的分类 ( 以图像分类为例 ) . 5.1 卷积计算过程 在实际项目中,输入神经网络的是具有更高分辨率的彩色图片,使得送入全连接网 ...

  4. 大白话讲解卷积神经网络工作原理

    本文介绍了计算机视觉常用工具:卷积神经网络.用大白话讲解了其应用领域.卷积.池化(下采样).全连接.梯度下降.反向传播算法.并用三维可视化工具展示了手写字体识别的卷积神经网络案例,最后介绍了几个经典的 ...

  5. 从LeNet到GoogLeNet:逐层详解,看卷积神经网络的进化

    「免费学习 60+ 节公开课:投票页面,点击讲师头像」 作者 | MrCharles 来源 | CSDN原力计划获奖作品 (*点击阅读原文,查看作者更多文章) 前言 深度学习的兴起使卷积神经网络在计算 ...

  6. 基于Pytorch再次解读GoogLeNet现代卷积神经网络

    个人简介:CSDN百万访问量博主,普普通通男大学生,深度学习算法.医学图像处理专攻,偶尔也搞全栈开发,没事就写文章,you feel me? 博客地址:lixiang.blog.csdn.net 基于 ...

  7. 一网打尽深度学习之卷积神经网络的经典网络(LeNet-5、AlexNet、ZFNet、VGG-16、GoogLeNet、ResNet)

    看过的最全最通俗易懂的卷积神经网络的经典网络总结,在此分享,供更多人学习. 一.CNN卷积神经网络的经典网络综述 下面图片参照博客:http://blog.csdn.net/cyh_24/articl ...

  8. Pytorch之CNN:基于Pytorch框架实现经典卷积神经网络的算法(LeNet、AlexNet、VGG、NIN、GoogleNet、ResNet)——从代码认知CNN经典架构

    Pytorch之CNN:基于Pytorch框架实现经典卷积神经网络的算法(LeNet.AlexNet.VGG.NIN.GoogleNet.ResNet)--从代码认知CNN经典架构 目录 CNN经典算 ...

  9. 深度学习——卷积神经网络 的经典网络(LeNet-5、AlexNet、ZFNet、VGG-16、GoogLeNet、ResNet)

    1. CNN卷积神经网络的经典网络综述 下面图片参照博客:http://blog.csdn.net/cyh_24/article/details/51440344 2. LeNet-5网络 输入尺寸: ...

最新文章

  1. HDU 6185 Covering 矩阵快速幂 递推
  2. Timer和TimerTask
  3. 【ZooKeeper Notes 28】ZooKeeper典型应用场景一览
  4. 面试之Java知识整理
  5. 统计学习:基本常用公式(1)
  6. SAP ABAP实用技巧介绍系列之Debug XSLT transformation
  7. cisco LAP upgrade to Fat AP
  8. ArcGIS(A column was specified that does not exist)
  9. 做三维模型_这几款倾斜实景三维裸眼3D采集软件你了解吗?
  10. sf | 空间矢量对象的几何信息处理方法
  11. java有常函数_Java开发笔记(十一)常见的数学函数
  12. 如何在Cell里画出虚线?
  13. php公众号开发文档,微信公众平台的开发者文档
  14. 4线电阻屏linux驱动,TQ2440四线电阻式触摸屏驱动程序的分析
  15. error: exportArchive: No signing certificate “iOS Distribution“ found
  16. 学籍管理系统制作教程第一天
  17. 英语词根、词根、前缀、后缀大全
  18. 颠覆你想象的企业报表软件——思迈特软件Smartbi
  19. 这就是传说中的一行代码一句注释?Python每日一练----种花
  20. matlab多元变量最优解,模拟退火算法确定多个变量的最优解

热门文章

  1. python中sorted用法_Python中sorted()方法的用法
  2. 通过实现Runnable接口创建,开启,休眠和中断线程。
  3. Runnable和Thread比较
  4. “数据星河”系列沙龙——走进ABC科创企业•哈勃智远活动成功举办
  5. linux各种重启方式
  6. PHP安装__GongWei1997
  7. 帆软报表获取服务器信息,帆软报表中数据查询取数的介绍
  8. 我的世界服务器死亡信息汉化,我的世界1.5.2-1.8.8尸体插件
  9. ImageView详解
  10. 网站前置审批是什么样的?网站备案需要前置审批有哪些?