卷积神经网络5——GoogLeNet(含并行连结的网络)

GoogLeNet网络特点

  1. 引入了 Inception 结构(融合不同尺度的特征信息)
  2. 使用 1X1 的卷积核进行降维以及映射处理
  3. 丢弃全连接层,而使用平均池化层(这大大的减少了模型参数)
    大量的文献表明可以将稀疏矩阵聚类为较为密集的子矩阵来提高计算性能,就如人类的大脑是可以看做是神经元的重复堆积,因此,GoogLeNet团队提出了Inception网络结构,就是构造一种“基础神经元”结构,模仿视觉神经的局部敏感特征,在相邻神经元之间搭建联系,来搭建一个稀疏性、高计算性能的网络结构。
    在GoogLeNet中,基本的卷积块被称为Inception块,如下图所示,Inception块由四条并行路径组成,Inception块相当于⼀个有4条线路的子网络(四条路径不分先后)
    卷积神经网络5——GoogLeNet(含并行连结的网络)_第1张图片

前三条路径使用窗口大小为1×1、3×3和5×5的卷积层,从不同空间大小中提取信息。(卷积层的作用)

中间的两条路径在输入上执行1×1卷积,以减少通道数,从而降低模型的复杂性。(限制通道数)

第四条路径使用3×3最大汇聚层,然后使用1×1卷积层来改变通道数。(限制通道数)

这四条路径都使用合适的填充来使输入与输出的高和宽一致,最后我们将每条线路的输出在通道维度上连结,并构成Inception块的输出。

在Inception块中,通常调整的超参数是每层输出通道数,我们以此来控制模型的复杂度。

GoogLeNet一共使用9个Inception块和全局平均汇聚层的堆叠来生成其估计值
卷积神经网络5——GoogLeNet(含并行连结的网络)_第2张图片
Inception块之间的最大汇聚层可降低维度

现在,我们逐一实现GoogLeNet的每个模块。

第一个模块类似于AlexNet和LeNet,使用64个通道、7×7卷积层。

第二个模块使用两个卷积层:第一个卷积层是64个通道、1×1卷积层;第二个卷积层使用将通道数量增加三倍的3×3卷积层。 这对应于Inception块中的第二条路径。
卷积神经网络5——GoogLeNet(含并行连结的网络)_第3张图片
第三个模块串联两个完整的Inception块。 第一个Inception块的输出通道数为64+128+32+32=25664+128+32+32=25664+128+32+32=256,四个路径之间的输出通道数量比为64:128:32:32=2:4:1:164:128:32:32=2:4:1:164:128:32:32=2:4:1:1。 第二个和第三个路径首先将输入通道的数量分别减少到96/192=1/296/192=1/296/192=1/2和16/192=1/1216/192=1/1216/192=1/12,然后连接第二个卷积层。
第二个Inception块的输出通道数增加到128+192+96+64=480128+192+96+64=480128+192+96+64=480,四个路径之间的输出通道数量比为128:192:96:64=4:6:3:2128:192:96:64 = 4:6:3:2128:192:96:64=4:6:3:2。 第二条和第三条路径首先将输入通道的数量分别减少到128/256=1/2128/256=1/2128/256=1/2和32/256=1/832/256=1/832/256=1/8。
卷积神经网络5——GoogLeNet(含并行连结的网络)_第4张图片
第四模块更加复杂, 它串联了5个Inception块,其输出通道数分别是192+208+48+64=512192+208+48+64=512192+208+48+64=512、160+224+64+64=512160+224+64+64=512160+224+64+64=512、128+256+64+64=512128+256+64+64=512128+256+64+64=512、112+288+64+64=528112+288+64+64=528112+288+64+64=528和256+320+128+128=832256+320+128+128=832256+320+128+128=832。
这些路径的通道数分配和第三模块中的类似,首先是含3×33×33×3卷积层的第二条路径输出最多通道,其次是仅含1×11×11×1卷积层的第一条路径,之后是含5×55×55×5卷积层的第三条路径和含3×33×33×3最大汇聚层的第四条路径。 其中第二、第三条路径都会先按比例减小通道数。 这些比例在各个Inception块中都略有不同。

第五模块包含输出通道数为256+320+128+128=832256+320+128+128=832256+320+128+128=832和384+384+128+128=1024384+384+128+128=1024384+384+128+128=1024的两个Inception块。 其中每条路径通道数的分配思路和第三、第四模块中的一致,只是在具体数值上有所不同。 需要注意的是,第五模块的后面紧跟输出层,该模块同NiN一样使用全局平均汇聚层,将每个通道的高和宽变成1。 最后我们将输出变成二维数组,再接上一个输出个数为标签类别数的全连接层。

小结

  • Inception块相当于一个有4条路径的子网络。它通过不同窗口形状(超参数)的卷积层和最大汇聚层来并行抽取信息,并使用1×1卷积层减少每像素级别上的通道维数从而降低模型复杂度,从而降低计算复杂度。
  • GoogLeNet将多个设计精细的Inception块与其他层(卷积层、全连接层)串联起来。其中Inception块的通道数分配之比是在ImageNet数据集上通过大量的实验得来的。
  • GoogLeNet和它的后继者们一度是ImageNet上最有效的模型之一:它以较低的计算复杂度提供了类似的测试精度。
  • GoogLeNet使用了9个Inception块,这是第一个达到上百层的网络,且在后续有了一系列的改进。

你可能感兴趣的:(数据结构,cnn,网络,深度学习)