深度学习图像分类网络(二):GoogLeNet(V1-V4)模型搭建解读

深度学习图像分类网络(二):GoogLeNet(V1-V4)模型搭建解读_第1张图片深度学习图像分类网络(二):GoogLeNet(V1-V4)模型搭建解读_第2张图片 

GoogLeNetV1-V4的模型结构都不是很简洁,参数设置上也没有什么规律可循,都是他们从大量实验中证明得到的。整体架构但是不难理解,都是重复的模块进行堆叠,所以理解了每一块的作用,整体来看就很简单。希望大家保持头脑清醒,否则觉得这一块的东西很混乱。V1、V2目前很少使用,V3、V4是使用最多的,本文主要讲解GoogLeNet - V4。正式介绍V4之前,一起回顾GoogLeNet V1-V3。

一、简介

GoogLeNet是2014年Christian Szegedy提出的一种全新的深度学习结构,GoogLeNet名字致敬了LeNet,因此大写了L。深度学习中有很多有趣的名字,他们在命名时很希望玩梗。在这之前的AlexNet、VGG等结构都是通过增大网络的深度(层数)来获得更好的训练效果,但层数的增加会带来很多负作用,比如overfit、梯度消失、梯度爆炸等。inception的提出则从另一种角度来提升训练结果:能更高效的利用计算资源,在相同的计算量下能提取到更多的特征,从而提升训练结果。

二、Inception块介绍

inception模块的基本结果如图1,整个inception结构就是由多个这样的inception模块串联起来的。inception结构的主要贡献有两个:一是使用1x1的卷积来进行升降维;二是在多个尺寸上同时进行卷积再聚合。

深度学习图像分类网络(二):GoogLeNet(V1-V4)模型搭建解读_第3张图片

1x1卷积

作用1:在相同尺寸的感受野中叠加更多的卷积,能提取到更丰富的特征。

这个观点来自于Network in Network,上图中的三个1x1卷积都起到了该作用。

作用2:使用1x1卷积进行降维,降低了计算复杂度。

当某个卷积层输入的特征数较多,对这个输入进行卷积运算将产生巨大的计算量;如果对输入先进行降维,减少特征数后再做卷积计算量就会显著减少。

深度学习图像分类网络(二):GoogLeNet(V1-V4)模型搭建解读_第4张图片

上图展示的是优化前后两种方案的乘法次数比较,同样是输入一组有192个特征、32x32大小,输出256组特征的数据,第一行中第一张图直接用3x3卷积实现,需要192x256x3x3x32x32=452984832次乘法;第二行中第二张图先用1x1的卷积降到96个特征,再用3x3卷积恢复出256组特征,需要192x96x1x1x32x32+96x256x3x3x32x32=245366784次乘法,使用1x1卷积降维的方法节省了一半的计算量

有人会问,用1x1卷积降到96个特征后特征数不就减少了么,会影响最后训练的效果么?

答案是否定的,只要最后输出的特征数不变(256组),中间的降维类似于压缩的效果,并不影响最终训练的结果。

多个尺寸上进行卷积再聚合

从inception模块结构示意图中,我们可以看到对输入做了4个分支,分别用不同尺寸的filter进行卷积或池化,最后再在特征维度上拼接到一起。这种全新的结构有什么好处呢?Szegedy从多个角度进行了解释:

解释1:在直观感觉上在多个尺度上同时进行卷积,能提取到不同尺度的特征。特征更为丰富也意味着最后分类判断时更加准确。

解释2:利用稀疏矩阵分解成密集矩阵计算的原理来加快收敛速度。

举个例子下图中左侧是个稀疏矩阵(很多元素都为0,不均匀分布在矩阵中),和一个2x2的矩阵进行卷积,需要对稀疏矩阵中的每一个元素进行计算;如果像下图中右图那样把稀疏矩阵分解成2个子密集矩阵,再和2x2矩阵进行卷积,稀疏矩阵中0较多的区域就可以不用计算,计算量就大大降低。这个原理应用到inception上就是要在特征维度上进行分解!

传统的卷积层的输入数据只和一种尺度(比如3x3)的卷积核进行卷积,输出固定维度(比如256个特征)的数据,所有256个输出特征基本上是均匀分布在3x3尺度范围上,这可以理解成输出了一个稀疏分布的特征集;而inception模块在多个尺度上提取特征(比如1x1,3x3,5x5),输出的256个特征就不再是均匀分布,而是相关性强的特征聚集在一起(比如1x1的的96个特征聚集在一起,3x3的96个特征聚集在一起,5x5的64个特征聚集在一起),这可以理解成多个密集分布的子特征集。这样的特征集中因为相关性较强的特征聚集在了一起,不相关的非关键特征就被弱化,同样是输出256个特征,inception方法输出的特征“冗余”的信息较少。用这样的“纯”的特征集层层传递最后作为反向计算的输入,自然收敛的速度更快。

深度学习图像分类网络(二):GoogLeNet(V1-V4)模型搭建解读_第5张图片

 解释3:Hebbin赫布原理。

Hebbin原理是神经科学上的一个理论,解释了在学习的过程中脑中的神经元所发生的变化,用一句话概括就是fire togethter, wire together。赫布认为“两个神经元或者神经元系统,如果总是同时兴奋,就会形成一种‘组合’,其中一个神经元的兴奋会促进另一个的兴奋”。比如狗看到肉会流口水,反复刺激后,脑中识别肉的神经元会和掌管唾液分泌的神经元会相互促进,“缠绕”在一起,以后再看到肉就会更快流出口水。用在inception结构中就是要把相关性强的特征汇聚到一起。这有点类似上面的解释2,把1x1,3x3,5x5的特征分开。因为训练收敛的最终目的就是要提取出独立的特征,所以预先把相关性强的特征汇聚,就能起到加速收敛的作用。

 在inception模块中有一个分支使用了max pooling,作者认为pooling也能起到提取特征的作用,所以也加入模块中。注意这个pooling的stride=1,pooling后没有减少数据的尺寸。

三、V1-V3回顾

1. GoogLeNet-V1 (Inception-V1):

借鉴NIN广泛应用1*1卷积,借鉴多尺度Gabor滤波器提出多尺度卷积的Inception结 构,开启多尺度卷积,1*1卷积时代

上面已经详细介绍,不再赘述。

2. GoogLeNet-V2

  • 1. 用两个3*3卷积代替5*5卷积,可以降低参数量。
  • 2. 提出BN算法,针对ICS(Internal Covariate Shift,内部协变量偏移)问题,提出Batch Normalization,加快整个深度学习的发展,让标准化层成为深度神经网络的标配

深度学习图像分类网络(二):GoogLeNet(V1-V4)模型搭建解读_第6张图片

3. GoogLeNet-V3(Inception-V2 and Inception-V3) 

大量实验,总结模型设计准则,提出卷积分解、高效特征图分辨率、标签平滑技巧,开始了针对性模块的设计思路,也导致Inception系列越走越窄。

在Inception V2的基础上,将一个二维卷积拆分成两个较小卷积,例如将7*7卷积拆成1*7卷积和7*1卷积,这样做的好处是降低参数量。Inception V2结构图如下所示

 深度学习图像分类网络(二):GoogLeNet(V1-V4)模型搭建解读_第7张图片

4.GoogLeNet-V4

从Inception-v3上看到Inception系列有些“走投无路” , 于是引入当时最火最热的Residual connection思想进行改进。借鉴了ResNet,引入了残差学习,残差结构示意图:

深度学习图像分类网络(二):GoogLeNet(V1-V4)模型搭建解读_第8张图片


四、GoogLeNet-V4

4.1  简介

论文:Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning

           (Inception-v4, Inception-ResNet,残差连接 对模型训练的影响)

4.2 论文摘要核心总结

  • 研究背景1:近年,深度卷积神经网络给图像识别带来巨大提升,例如Inception块
  • 研究背景2:最近,残差连接的使用使卷积神经网络得到了巨大提升,如ResNet, 自称ResNet与Inception-v3的精度差不多(dddd)
  • 提出问题:是否可以将Inception 与 残差连接结合起来,提高卷积神经网络呢?
  • 本文成果1:从实验经验得出,残差连接很大程度的加速了Inception的训练;提出了新的网络模型结构——streamlined architectures
  • 本文成果2:对于很宽的residual Inception网络,提出激活值缩放策略,以使网络训练稳定
  • 本文成果3:模型融合在ILSVRC上获得3.08%的top-5 error

 4.3  Inception-V4

深度学习图像分类网络(二):GoogLeNet(V1-V4)模型搭建解读_第9张图片

 Inception-v4可分为六大模块分别是: Stem、Inception-A、B、C、Reduction-A、B

每个模块都有针对性的设计,模型总共76层。Googlenet的结构总体很复杂但是不难,都是重复的模块堆积起来的,希望大家在看的时候,保持头脑情绪,要不然会觉得这个模型非常杂乱。大家加油!!我们接下来依次来看这六大模块。

V4模块一:Stem模块

Stem(9层):3个3*3卷积堆叠;高效特征图下降策略;非对称分解卷积

深度学习图像分类网络(二):GoogLeNet(V1-V4)模型搭建解读_第10张图片


 V4模块二:Inception - A模块 

Inception-A(3层):标准的Inception module

深度学习图像分类网络(二):GoogLeNet(V1-V4)模型搭建解读_第11张图片

  V4模块三:Reduction - A模块

Reduction-A(3层):采用3个分支,其中卷积核的参数 K, l, m, n分别为192, 224,256,38

深度学习图像分类网络(二):GoogLeNet(V1-V4)模型搭建解读_第12张图片

V4模块四:Inception - B模块 

Inception-B(5层) :非对称卷积操作部分,参考 Inception-v3

深度学习图像分类网络(二):GoogLeNet(V1-V4)模型搭建解读_第13张图片

V4模块五:Reduction - B模块

Reduction-B(4层) :非对称卷积操作部分,参考 Inception-v3

深度学习图像分类网络(二):GoogLeNet(V1-V4)模型搭建解读_第14张图片

V4模块六:Inception - C模块 

 Inception-C(4层) 

深度学习图像分类网络(二):GoogLeNet(V1-V4)模型搭建解读_第15张图片

 所以Inception-v4总共9+3*4+5*7+4*3+3+4+1 = 76层

4.4 Inception - ResNet 

Inception-ResNet V1 、V2 将ResNet中的residual connection思想加到Inception中。

根据Stem和卷积核数量的不同,设计出了Inception-ResNet-V1和V2 ,六大模块分别是: Stem、Inception-ResNetA、B、C、Reduction-A、B。结构图如下图所示:

深度学习图像分类网络(二):GoogLeNet(V1-V4)模型搭建解读_第16张图片

① V1 、V2中Stem模块对比

V1无分支(7层); V2与Inception-V4相同(9层)

深度学习图像分类网络(二):GoogLeNet(V1-V4)模型搭建解读_第17张图片深度学习图像分类网络(二):GoogLeNet(V1-V4)模型搭建解读_第18张图片

② V1 、V2中Inception - ResNet A模块对比

Inception-ResNet-A模块(4层): 均处理35*35大小的特征图

V1卷积核数量少 ;V2卷积核数量多

深度学习图像分类网络(二):GoogLeNet(V1-V4)模型搭建解读_第19张图片深度学习图像分类网络(二):GoogLeNet(V1-V4)模型搭建解读_第20张图片
③ V1 、V2中RuductionA模块对比 

Reduction-A模块(3层): 将35*35大小的特征图降低至17*17

Inception-V4和两个Inception-ResNet都一样,参考V4的ReductionA模块介绍

④ V1 、V2中 Inception - ResNet B模块对比

Inception-ResNet-B模块(4层): 处理17*17大小的特征图 V1卷积核数量少 V2卷积核数量多

深度学习图像分类网络(二):GoogLeNet(V1-V4)模型搭建解读_第21张图片深度学习图像分类网络(二):GoogLeNet(V1-V4)模型搭建解读_第22张图片

⑤ V1 、V2中Ruduction B模块对比

Reduction-B模块(3层): 将17*17大小的特征图降低至7*7

左图为V1 右图为V2,文中描述为 the wider Inception-ResNet-V1

深度学习图像分类网络(二):GoogLeNet(V1-V4)模型搭建解读_第23张图片深度学习图像分类网络(二):GoogLeNet(V1-V4)模型搭建解读_第24张图片⑥ V1 、V2中 Inception - ResNet C模块对比

Inception-ResNet-C模块(4层): 处理8*8大小的特征图

V1卷积核数量少 V2卷积核数量多

深度学习图像分类网络(二):GoogLeNet(V1-V4)模型搭建解读_第25张图片深度学习图像分类网络(二):GoogLeNet(V1-V4)模型搭建解读_第26张图片

总结

Inception-ResNet-V1共 7+5*4+3+10*4+3+5*4+1=94层

Inception-ResNet-V2共 9+5*4+3+10*4+3+5*4+1=96层

 4.5 激活值缩放 Activation Scaling

 为了让模型训练稳定,在残差模块中对残差进行数 值大小的缩放,通常乘以0.1至0.3之间的一个数。但是这个操作并不是必须的。

深度学习图像分类网络(二):GoogLeNet(V1-V4)模型搭建解读_第27张图片

 部分知识来源参考资料:百度百科 GoogLeNet

深度学习图像分类网络(二):GoogLeNet(V1-V4)模型搭建解读_第28张图片

 

你可能感兴趣的:(深度学习,深度学习,GoogLeNet,计算机视觉,人工智能,神经网络)