GoogLeNet网络详解

本篇文章的重点就是介绍GoogLeNet的网络架构,它也经历了多个版本的改进。

GoogLeNet,即Inception模块化后进行模块的串接。论文:https://arxiv.org/abs/1409.4842

一、网络结构

GoogLeNet网络详解_第1张图片

 二、Inception结构图GoogLeNet网络详解_第2张图片

原始Inception 结构采用3种卷积核的卷积层进行并行提取特征,这可以加大网络模型的宽度,不同大小的卷积核也就意味着原始Inception 结构可以获取到不同大小的感受野,上图中的最后拼接就是将不同尺度特征进行深度融合。

a.上一层输出后,将所得到的特征矩阵同时输入到4个分支中进行处理,再将4个分支的特征矩阵按深度进行拼接,得到一个输出特征矩阵。

注意:每个分支所得的特征矩阵高和宽维度必须相同,否则将无法在深度方向进行拼接。

b.1✖1卷积核起降维作用,详情如下:

深度是512,不用1✖1卷积核得到819200个参数,使用了降维处理后,一次处理后深度变24,再用64个卷积核处理后,很明显参数下降了,计算量会变小。

GoogLeNet网络详解_第3张图片

在3x3pooling->1x1conv虽然用了池化核,但是具体的操作更像卷积。以往的池化操作步长stride是与卷积核kernel大小相同的,并且不进行填充,这样HxW的特征图经过池化层后大小就变成H/s x W/s;这里的池化操作stride=1,padding=1,kernel=3,实际上经过池化操作后特征图大小并不会改变,仅仅是利用池化层来提取与卷积操作不同的特征表达。

三、辅助分类器

GoogLeNet网络详解_第4张图片

第一层是平均池化下采样操作,池化核大小是5✖5,stride大小是3,这里有2个分类器,分别是由Inception(4a)与4d的输出,以第一个为例:由下方表格可知,4a的输出特征矩阵是14✖14✖512,则in(size)是14,池化核大小是5,padding是0,stride大小是3,即(14-5+2*0)/ 3 = 4,得到了4✖4✖512的输出特征矩阵,因为池化层不会改变特征矩阵的深度,4d同理。

最后通过softmax激活函数得到概率分布。

四、特征表

output size是输出特征矩阵的shape,#1✖1到后面对于Inception,#3✖3 deduce起降维作用

GoogLeNet网络详解_第5张图片

五、优点

  1. 模型又准又轻。
  2. 深度加到22层,引入Inception模块,利用不同卷积核提取不同程度的信息。
  3. 采用1x1 卷积进行降维以及映射处理减少了计算量,增加模型深度提高非线性表达能力。
  4. GAP, 每一个通道求平均即平均池化层,不用FC,减少了参数量。
  5. 在训练时有辅助分类器。

GoogLeNet网络详解_第6张图片

你可能感兴趣的:(深度学习,深度学习)