GoogLeNet 是非常具有代表性的卷积神经网络之一,此网络由谷歌公司的 Christian Szegedy 等人设计提出1,并在 2014 年 ImageNet 挑战赛(图片分类)上夺取第一名桂冠2。GoogLeNet 不同于之前的经典网络,如 AlexNet,LeNet 或 VGG,它的设计更加颠覆传统。比如,它引入了 1x1 卷积核,使得整个网络虽然更深(22 层 Inception 网络层),但只需要训练很少的参数(500万),训练参数个数只有 AlexNet 的十分之一。

GoogLeNet 中的字母 L 之所以大写,据说是为了向前面的经典网络 LeNet 网络致敬。

1x1 卷积核的意义

前篇文章介绍,卷积神经网络的卷积核大小通常是 奇数x奇数 的模式,并且以 3x3, 5x5, 7x7 为常见大小,这些卷积核能够识别出固定像素区域内的特征。试想一下,当我们使用 1x1 大小的卷积核时,其实就意味着后续的输出尺寸与原输出尺寸相同,只不过在深度上有所改变(与 filter 个数相关)。下面的图展示了 1x1 卷积核的运行结果。

因此,人们一般在网络中设置 1x1 的 filter 用来改变前一层神经网络的深度(即 Input 的 32)。在 Inception 网络层中,人们使用 1x1 的网络主要是为了减少所需的运算次数(当然,也有观点认为使用 1x1 卷积核使得感受野能堆叠更多的卷积,从而学习到更多的特征)。

朴素版 Inception 网络层

Inception 的朴素版网络结构如下图所示,左侧部分描述了 Inception 的具体连接方式,右侧图是 Inception 的概要结构。假设输入是一个 28x28x192 的立方体,首先 Inception 会并行的进行点乘操作,对象分别是 3 种不同尺寸的filter,依次是 1x1x32, 3x3x325x5x32,他们的个数依次是 64,12832。其中,3x3 和 5x5 的 filter 均使用了 Same Convolution 的填充方式保证其输出结果也是 28x28 的大小。此外,Inception 还增加了一个 Max pooling 的池化操作(当然,也使用了 Same Convolution 式的填充),该池化得到的结果是 28x28x192 的立方体。

最终,将 4 种类型的立方体 “连接” 起来,构成了 Inception 网络的最终输出,其大小为 28x28x416。

改进版 Inception 网络层

朴素版的 Inception 网络层的一个很大的缺陷在于 5x5 卷积层上的计算量过大。如下左图所示,一个 28x28x192 的输入层,点乘 32 个 5x5x192 尺寸的 filter ,最终得到 28x28x32 的输出立方体,其所需要的乘法计算量为,

( 28 × 28 × 32 ) × ( 5 × 5 × 192 ) ≈ 1.2 亿 (28\times28\times32)\times(5\times5\times192) \approx 1.2 亿 (28×28×32)×(5×5×192)≈1.2亿

研究人员于是通过添加 1x1 的 filter 来巧妙地在不降低质量的情况下,降低计算量(如下右图所示),。首先输入连接 16 个大小为 1x1x192 的卷积核降低信道个数;其次再连接 32 个 5x5x16 的卷积核得到最终输出,其所需要的计算量为,

( 28 × 28 × 32 ) × ( 5 × 5 × 16 ) + ( 28 × 28 × 16 ) × ( 1 × 1 × 192 ) ≈ 1240 万 (28\times28\times32)\times(5\times5\times16) + (28\times28\times16)\times(1\times1\times192) \approx 1240 万 (28×28×32)×(5×5×16)+(28×28×16)×(1×1×192)≈1240万

由这个例子可知,可以通过 1x1 的卷积核降低信道个数,后面再接 5x5 或 3x3 的卷积核,这样会极大的减少网络的计算量。这就是改进版 Inception 的灵感来源。


再版 Inception 网络层的整体结果如下,他在 3x3,5x5 的卷积核之前还连接了 1x1 的卷积核。此外,在 Max-pooling 池化层的后面添加了 1x1 的卷积核,最终输出结果是 28x28x256 的输出立方体。

GoogLeNet 网络基本结构

在了解完 Inception 网络层(或 Inception 模块)后,理解 GoogLeNet 会更加的容易。总的来说,GoogLeNet 其实就是一层层 Inception 网络层的循环连接,一环套一环。

输入部分: 在 GoogLeNet 的最左侧是其输入部分,通过放大可以发现,输入(input)之后连接有 2 个卷积层,第一层使用 7x7 的卷积核以及 3x3 的最大池化层,第二层使用 1x1,3x3 的卷积层。图中绿色的 LocalRespNorm(LRN)指的是一种归一化的操作3,现在用的比较少了。

输出层: 输出层其实就是之前的 Inception 的堆叠,值得注意的是此处 GoogLeNet 的输出有 3 处,每次都会套用一个 Softmax 回归进行输出或辅助输出。

GoogLeNet 的细节细节请参见 45 等博客 ,总的来讲,GoogLeNet 的灵感就在于 Inception 模块的设计。后续的 GoogLeNet 也有很多改进的版本,如 v2,v3,v4,涉及到了更深层次的技术,如卷及分解,残差网络等等。个人觉得 1x1 矩阵的运用在 GoogLeNet (起码在 v1 版本)中起到了很重要的作用,这也使得神经网络的设计不再一味的追求深度,而是同时注重改进。


  1. Christian Szegedy et al., “Going deeper with convolutions.” (ArXiv 2014) Link ↩︎

  2. ImageNet. “Large Scale Visual Recognition Challenge 2014.” (Website) Link ↩︎

  3. Tensorflow Team. “tf.nn.local_response_normalization” (API Doc) Link ↩︎

  4. 雪饼. “大话CNN经典模型:GoogLeNet 从Inception v1到v4的演进” Link ↩︎

  5. 战争热诚. “tensorflow学习笔记——GoogLeNet”. Link ↩︎

卷积神经网络 (GoogLeNet 的灵感)相关推荐

  1. 深度学习入门(三十一)卷积神经网络——GoogLeNet

    深度学习入门(三十一)卷积神经网络--GoogLeNet 前言 卷积神经网络--GoogLeNet 课件 最好的卷积层超参数? Inception:全都要 Inception块 GoogLeNet 段 ...

  2. 图像分类经典卷积神经网络—GoogLeNet论文翻译(中英文对照版)—Going Deeper with Convolutions(走向更深的卷积神经网络)

    图像分类经典论文翻译汇总:[翻译汇总] 翻译pdf文件下载:[下载地址] 此版为中英文对照版,纯中文版请稳步:[GoogLeNet纯中文版] Going Deeper with Convolution ...

  3. 图像分类经典卷积神经网络—GoogLeNet论文翻译(纯中文版)—Going Deeper with Convolutions(走向更深的卷积神经网络)

    图像分类经典论文翻译汇总:[翻译汇总] 翻译pdf文件下载:[下载地址] 此版为纯中文版,中英文对照版请稳步:[GoogLeNet纯中英文对照版] Going Deeper with Convolut ...

  4. 深度学习之卷积神经网络 GoogleNet

    GoogLeNet Incepetion V1 这是GoogLeNet的最早版本,出现在2014年的<Going deeper with convolutions>.之所以名为" ...

  5. Pytorch:卷积神经网络-GoogLeNet

    Pytorch: 含并行连结的网络-GoogLeNet Copyright: Jingmin Wei, Pattern Recognition and Intelligent System, Scho ...

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

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

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

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

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

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

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

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

最新文章

  1. vue-music 音乐网站
  2. 后台开发经典书籍--大话设计模式
  3. 其实我就是个技术迷-自身定位及展望
  4. 指向类的数据成员和函数指针
  5. oracle诊断,Oracle 诊断事件列表
  6. java tcp链接慢_jmeter tcp长连接性能测试
  7. strrstr php,php之字符串
  8. matlab 调制识别,调制方式识别仿真
  9. 网络操作系统发展历程
  10. idea 搭建flutter 安卓开发环境(因为有idea就不需安装Android Studio)
  11. 页眉设置为章节名(WPS)
  12. 几行代码,搞定 SpringBoot 接口恶意刷新和暴力请求!
  13. Vue项目实战05:18n实现多语言自动切换-浏览器语言设置
  14. 柯美文件服务器,柯尼卡美能达复印机共享SMB文件扫描
  15. 深入浅出matplotlib(101):研究最有名的滤波函数:sinc函数
  16. 关于在工作中遇到的问题及解决方案
  17. 海南大学838信号与系统专业课的感悟
  18. 英语口语428之每日二十个英语单词
  19. php simplexmlelement object 数组,php中将SimpleXMLElement Object数组转化为普通数组
  20. python函数是一段具有特定功能的语句组_超星《用相声演绎中国文化》网课答案...

热门文章

  1. html 自动滚动通知,利用CSS3实现文字滚动通知动画特效
  2. AIGC迈向通用人工智能时代
  3. 德鲁克用7段人生经历,告诉你如何突破自我
  4. 自由职业的方向:一个人活成一家公司
  5. 计算机软件著作权登记哪家比较好?阿里云计算机软件著作权登记好吗?
  6. Node.js开发入门—Express安装与使用
  7. 在线校核计算机械在线,三排滚子转盘轴承的校核计算方法-中国机械工程.pdf
  8. conda command not found的两种解决方案
  9. (02)Cartographer源码无死角解析-(49) 2D点云扫描匹配→相关性暴力匹配1:SearchParameters
  10. 用户运营体系中,用户精细化运营闭环是怎样的