DeepLearning-L7-GoogLeNet

简介: DeepLearning-L7-GoogLeNet

2014年,谷歌的Szegedy等人在《Going deeper with convolutions》提出GoogLeNet(据说是为了致敬“LeNet)。


1. Inception


一般来说,提升网络性能最直接的办法就是增加网络深度和宽度,深度指网络层次数量、宽度指神经元数量。但这种方式存在以下问题:


参数太多,如果训练数据集有限,很容易产生过拟合;

参数越多,计算复杂度高;

网络越深,容易出现梯度消失,难以优化模型。

解决这些问题的方法就是在增加网络深度和宽度的同时减少参数,为了减少参数,自然就想到将全连接变成稀疏连接。但全连接变成稀疏连接后实际计算效率并不会有质的提升,因为大部分硬件是针对密集矩阵计算优化的,稀疏矩阵虽然数据量少,但是计算所消耗的时间却很难减少。


可将稀疏矩阵聚类为较为密集的子矩阵来提高计算性能,如人类的大脑可看做是神经元的重复堆积,因此,GoogLeNet团队提出了Inception网络结构,构造一种“基础神经元”结构,既保持网络结构的稀疏性,又不降低模型的计算性能。Inception结构对前一层网络的综合采用不同大小的卷积核提取特征,并结合最大化池化进行特征融合。


原始Inception结构

20200531102132312.png

该结构将CNN中常用的卷积(1 × 1,3 × 3 ,5 × 5 )、池化操作(3 × 3 )堆叠在一起(卷积、池化后的尺寸相同,将通道相加),一方面增加了网络的宽度,另一方面也增加了网络对尺度的适应性。


网络卷积层中的网络能够提取输入的每一个细节信息,同时5 × 5的滤波器也能够覆盖大部分接受层的的输入。还可以进行一个池化操作,以减少空间大小,降低过度拟合。在这些层之上,在每一个卷积层后都要做一个ReLU操作,以增加网络的非线性特征。


Inception v1的网络结构



20200531102140962.png

假设网络输入28 × 28 × 192 28 \times 28 \times 19228×28×192


使用32个5 × 5 × 192 5 \times 5 \times 1925×5×192的卷积核,输出为28 × 28 × 32 28 \times 28 \times 3228×28×32,计算量为5 × 5 × 192 × 28 × 28 × 32 = 120 , 422 , 400 5 \times 5 \times 192 \times 28 \times 28 \times 32 = 120,422,4005×5×192×28×28×32=120,422,400。


使用1 × 1 卷积:先用16个 1 × 1 × 192 的卷积核,输出为28 × 28 × 16,再用32个 5 × 5 × 16 6卷积核,输出为28 × 28 × 32


第一次计算量为1 × 1 × 192 × 28 × 28 × 16 = 2 , 408 , 448

第二次计算量为5 × 5 × 16 × 28 × 28 × 32 = 10 , 035 , 200

总计算量为12 , 443 , 648 ,计算量大大减低。


2. 网络结构


GoogLeNet采用了模块化的结构(Inception结构),方便增添和修改。网络最后采用了average pooling(平均池化)来代替全连接层(虽然移除了全连接,但是网络中依然使用了Dropout ),该想法来自NIN(Network in Network),事实证明这样可以将准确率提高0.6%。实际在后还是加了一个全连接层,主要是为了方便对输出进行灵活调整。


为了避免梯度消失,网络额外增加了2个辅助的softmax用于向前传导梯度(辅助分类器)。辅助分类器是将中间某一层的输出用作分类,并按一个较小的权重(0.3)加到最终分类结果中,这样相当于做了模型融合,同时给网络增加了反向传播的梯度信号,也提供了额外的正则化,对于整个网络的训练很有裨益。而在实际测试的时候,这两个额外的softmax会被去掉。


20200531102153524.jpg



各层输入输出及参数数量如下(表中“#3x3 reduce”,“#5x5 reduce”表示在3 × 3 ,5 × 5卷积操作之前使用了1 × 1卷积的数量。):


20200531102204585.png

2014至2016年,GoogLeNet团队发表了多篇关于GoogLeNet的经典论文《Going deeper with convolutions》、《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》、《Rethinking the Inception Architecture for Computer Vision》、《Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning》。


Inception V2修改Inception的内部计算逻辑,提出了比较特殊的“卷积”计算结构。

Inception V3一个最重要的改进是分解(Factorization),将7 × 7 分解成两个一维的卷积(1 × 7 , 7 × 1 ),3 × 3 也是一样(1 × 3 , 3 × 1 ),这样的好处,既可以加速计算,又可以将1个卷积拆成2个卷积,使得网络深度进一步增加,增加了网络的非线性(每增加一层都要进行ReLU)。另外,网络输入从224 × 224变为了299 × 299

Inception V4主要利用残差连接(Residual Connection)来改进V3结构

相关文章
|
4月前
|
机器学习/深度学习 编解码 TensorFlow
【Keras+计算机视觉+Tensorflow】生成对抗神经网络中DCGAN、CycleGAN网络的讲解(图文解释 超详细)
【Keras+计算机视觉+Tensorflow】生成对抗神经网络中DCGAN、CycleGAN网络的讲解(图文解释 超详细)
54 0
|
机器学习/深度学习 编解码 自然语言处理
【18】Vision Transformer:笔记总结与pytorch实现
【18】Vision Transformer:笔记总结与pytorch实现
678 0
【18】Vision Transformer:笔记总结与pytorch实现
|
11月前
|
机器学习/深度学习 传感器 自然语言处理
论文笔记:SpectralFormer Rethinking Hyperspectral Image Classification With Transformers_外文翻译
 高光谱(HS)图像具有近似连续的光谱信息,能够通过捕获细微的光谱差异来精确识别物质。卷积神经网络(CNNs)由于具有良好的局部上下文建模能力,在HS图像分类中是一种强有力的特征提取器。然而,由于其固有的网络骨干网的限制,CNN不能很好地挖掘和表示谱特征的序列属性。
111 0
|
11月前
|
Web App开发 机器学习/深度学习 数据挖掘
深度学习论文阅读图像分类篇(六):SENet《Squeeze-and-Excitation Networks》
卷积神经网络建立在卷积运算的基础上,通过融合局部感受野内 的空间信息和通道信息来提取信息特征。为了提高网络的表示能力, 许多现有的工作已经表明增强空间编码的好处。
295 0
|
11月前
|
机器学习/深度学习 数据挖掘 Go
深度学习论文阅读图像分类篇(五):ResNet《Deep Residual Learning for Image Recognition》
更深的神经网络更难训练。我们提出了一种残差学习框架来减轻 网络训练,这些网络比以前使用的网络更深。我们明确地将层变为学 习关于层输入的残差函数,而不是学习未参考的函数。我们提供了全 面的经验证据说明这些残差网络很容易优化,并可以显著增加深度来 提高准确性。在 ImageNet 数据集上我们评估了深度高达 152 层的残 差网络——比 VGG[40]深 8 倍但仍具有较低的复杂度。这些残差网络 的集合在 ImageNet 测试集上取得了 3.57%的错误率。这个结果在 ILSVRC 2015 分类任务上赢得了第一名。我们也在 CIFAR-10 上分析 了 100 层和 1000 层的残差网络。
163 0
|
机器学习/深度学习
DeepLearning-L6-VGG16
DeepLearning-L6-VGG16
DeepLearning-L6-VGG16
|
机器学习/深度学习
DeepLearning-L4-LeNet5
DeepLearning-L4-LeNet5
DeepLearning-L4-LeNet5
|
机器学习/深度学习 数据挖掘 计算机视觉
DeepLearning-L5-AlexNet
DeepLearning-L5-AlexNet
DeepLearning-L5-AlexNet
|
机器学习/深度学习 PyTorch API
【PyTorch基础教程13】GoogleNet和ResNet
上节课主要讲了CNN的架构(如下图的LetNet5), 定义一个卷积层:输入通道数、输出通道数、卷积核的大小(长和宽)。卷积层要求输入输出是四维张量(B,C,W,H),全连接层的输入与输出都是二维张量(B,Input_feature)。
265 0
【PyTorch基础教程13】GoogleNet和ResNet