深度学习第20讲:CNN经典论文研读之GoogLeNet Inception网络

简介:

在 2014 年 ILSVRC 比赛中,VGGNet 获得了当时的第二名的成绩,那么第一名是谁呢?当时的 VGGNet 就已经很厉害了,难得同届选手还有更厉害的?很不巧,还真有。当年度取得冠军的方案网络由谷歌团队研发,并且为了致敬 Yann Lecun 的 LeNet-5,将其命名为 GoogLeNet。GoogLeNet 在借鉴 1x1 卷积思想的基础上,通过滤波器组合构建 Inception 模块,使得网络可以走向更深且表达能力更强。从 2014 年获得当届 ILSVRC 冠军的 Inception v1 到现在,光 Inception 网络就已经更新到 v4 了,而后基于 Inception 模块和其他网络结构的组合而成的网络就更多了,比如说 Inception Resnet。

1x1 卷积

通过前面的学习大家都知道卷积操作是卷积神经网络的核心操作了,在之前我们通常会用到各种尺寸的卷积核,比如说 3x3 卷积、5x5 卷积、7x7 卷积等等。但今天我们需要提一下 1x1 卷积。这似乎有些蠢,直观上理解 1x1 卷积好像没什么用,就是简单的数字相乘而已,对于通道数较小的图片确实如此,但如果我们考虑一个 6x6x32 的图片呢?

考虑用一个 1x1x32 的卷积核对 6x6x32 的图片进行卷积。如下图所示,具体而言就是计算左图中 32 个数字和卷积核中 32 个数字对应元素乘积之和,然后进行激活操作。

2a8a038ef71c08fe5a5139079edb5637473269bd

滤波器中的通道数 32 可以这么理解:一个神经元的输入是 32 个数字,对输入图像做一个切片的话,即相同高度和宽度上某一切片上的 32 个数字具有不同的通道数,乘以滤波器的 32 个数字权重,然后应用激活函数得到 1x1 卷积结果。所以从这个角度看我们可以将 1x1 卷积理解为对这个不同通道上的 32 个数字应用一个全连接层,这个全连接层输入 32 个数字,输入为 6x6x滤波器个数。

所以 1x1 卷积的一个重要作用就是缩减通道数,对于一个 28x28x192 的输入,我们如何将其压缩成 28x28x32 的大小呢?利用 1x1 卷积的话就是使用 32 个大小为 1x1x192 的卷积核进行卷积,卷积结果大小为 28x28x32。这样就起到了压缩通道的作用了,这种压缩或保持通道数不变的方法在接下来我们要讲的 GoogLeNet 中的 Inception 模块中很有用,我们接着往下看。

Inception 模块

通常在构建卷积结构时,我们需要考虑是使用 1x1 卷积、3x3 卷积还是 5x5 卷积及其是否需要添加池化操作。而 GoogLeNet 的 Inception 模块就是帮你决定采用什么样的卷积结构。简单而言,Inception 模块就是分别采用了 1x1 卷积、3x3 卷积和 5x5 卷积构建了一个卷积组合然后输出也是一个卷积组合后的输出。如下图所示:

ab98c2b4bb84aaa6e96b9be885d448e55bf211af

对于 28x28x192 的像素输入,我们分别采用 1x1 卷积、3x3 卷积和 5x5 卷积以及最大池化四个滤波器对输入进行操作,将对应的输出进行堆积,即 32+32+128+64=256,最后的输出大小为 28x28x256。所以总的而言,Inception 网络的基本思想就是不需要人为的去决定使用哪个卷积结构或者池化,而是由网络自己决定这些参数,决定有哪些滤波器组合。

Inception 模块有两种形式,一种是原始模块,另一种是带有维度削减的模块。其结构如下图所示:

55de83da1934809b9fd37e9ce1cb0c609e404773

第二个版本的 Inception 模块采用了大量的 1x1 卷积,目的就是起到通道压缩作用。 Inception 网络

构建好 Inception 模块后,将多个类似结构的Inception模块组合起来便是一个Inception 网络,类似下图:

ef1680974c5c2bffc985e440768613179bc0df8c

一个完整的 Inception 网络结构如下所示:

b769a82354fe5fa59560e7bc5d94ba435ffd8ec3

以上便是 Inception 网络的基本构造。这是当年获得冠军的 Inception V1 版本,可以看到模型层数很深了,网络更深提取各种层级的特征更加充分。除此之外,Inception V1 在最后两个全连接层中采取了一个全局平均池化层来代替全连接层。因为全连接层的参数数量庞大,通常是导致过拟合的直接原因,这里用全局平均池化来代替,可以很大程度上缓解过拟合的情况。完整的 Inception V1 的结构信息如下表所示:

65e9a93f43088a6a2e9e39b5ca720adcef7f98ba

至于 Inception V1 的效果,当然是收割各种冠军和头名啦。

0b1926ac10990080414feadb978eeba404f01f71

Inception V1 之后,又在其基础上出现了 V2 V3 和 V4 版本以及 Xception,总之以 Inception 网络为主体的 GoogLeNet 不断优化和改进,称为深度卷积网络的一大重要分支。至于如何使用 Tensorflow 实现 Inception V1网络,GitHub 上有众多开源,笔者就不在此写了。


原文发布时间为:2018-10-16

本文作者:louwill

本文来自云栖社区合作伙伴“Python爱好者社区”,了解相关信息可以关注“Python爱好者社区”。

相关文章
|
9天前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
眼疾识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了4种常见的眼疾图像数据集(白内障、糖尿病性视网膜病变、青光眼和正常眼睛) 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Django框架搭建了一个Web网页平台可视化操作界面,实现用户上传一张眼疾图片识别其名称。
28 4
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
|
1月前
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
266 55
|
10天前
|
机器学习/深度学习 数据采集 算法
基于GA遗传优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
本项目基于MATLAB2022a实现时间序列预测,采用CNN-GRU-SAM网络结构。卷积层提取局部特征,GRU层处理长期依赖,自注意力机制捕捉全局特征。完整代码含中文注释和操作视频,运行效果无水印展示。算法通过数据归一化、种群初始化、适应度计算、个体更新等步骤优化网络参数,最终输出预测结果。适用于金融市场、气象预报等领域。
基于GA遗传优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
|
6天前
|
机器学习/深度学习 算法 计算机视觉
基于CNN卷积神经网络的金融数据预测matlab仿真,对比BP,RBF,LSTM
本项目基于MATLAB2022A,利用CNN卷积神经网络对金融数据进行预测,并与BP、RBF和LSTM网络对比。核心程序通过处理历史价格数据,训练并测试各模型,展示预测结果及误差分析。CNN通过卷积层捕捉局部特征,BP网络学习非线性映射,RBF网络进行局部逼近,LSTM解决长序列预测中的梯度问题。实验结果表明各模型在金融数据预测中的表现差异。
|
28天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于yolov4深度学习网络的公共场所人流密度检测系统matlab仿真,带GUI界面
本项目使用 MATLAB 2022a 进行 YOLOv4 算法仿真,实现公共场所人流密度检测。通过卷积神经网络提取图像特征,将图像划分为多个网格进行目标检测和识别,最终计算人流密度。核心程序包括图像和视频读取、处理和显示功能。仿真结果展示了算法的有效性和准确性。
62 31
|
18天前
|
机器学习/深度学习 数据采集 算法
基于PSO粒子群优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
本项目展示了基于PSO优化的CNN-GRU-SAM网络在时间序列预测中的应用。算法通过卷积层、GRU层、自注意力机制层提取特征,结合粒子群优化提升预测准确性。完整程序运行效果无水印,提供Matlab2022a版本代码,含详细中文注释和操作视频。适用于金融市场、气象预报等领域,有效处理非线性数据,提高预测稳定性和效率。
|
1月前
|
机器学习/深度学习 算法 信息无障碍
基于GoogleNet深度学习网络的手语识别算法matlab仿真
本项目展示了基于GoogleNet的深度学习手语识别算法,使用Matlab2022a实现。通过卷积神经网络(CNN)识别手语手势,如"How are you"、"I am fine"、"I love you"等。核心在于Inception模块,通过多尺度处理和1x1卷积减少计算量,提高效率。项目附带完整代码及操作视频。
|
1月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于深度学习网络的宝石类型识别算法matlab仿真
本项目利用GoogLeNet深度学习网络进行宝石类型识别,实验包括收集多类宝石图像数据集并按7:1:2比例划分。使用Matlab2022a实现算法,提供含中文注释的完整代码及操作视频。GoogLeNet通过其独特的Inception模块,结合数据增强、学习率调整和正则化等优化手段,有效提升了宝石识别的准确性和效率。
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
深入理解深度学习中的卷积神经网络(CNN)##
在当今的人工智能领域,深度学习已成为推动技术革新的核心力量之一。其中,卷积神经网络(CNN)作为深度学习的一个重要分支,因其在图像和视频处理方面的卓越性能而备受关注。本文旨在深入探讨CNN的基本原理、结构及其在实际应用中的表现,为读者提供一个全面了解CNN的窗口。 ##
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
深入理解深度学习中的卷积神经网络(CNN)
深入理解深度学习中的卷积神经网络(CNN)

热门文章

最新文章