计算机视觉之 GoogLeNet 神经网络模型(v1 - v4)

357 阅读3分钟

算法简介

GoogLeNet 专注于加深网络结构,同时引入了新的基本结构————Inception模块,以增加网络的宽度。GoogLeNet一共22层,没有全连接层,在2014年的ImageNet图像识别挑战赛中获得了冠军。

GoogLeNet最初始的想法很简单,想要更好的预测效果,就要从网络深度和网络宽度2个角度出发增加网络的复杂度。但是这个思路有明显的问题:

  1. 更复杂的网络意味着更多的参数,就是ILSVRC这种有1000类标签的数据集也很容易过拟合。
  2. 更复杂的网络需要消耗更多的计算资源,卷积核的设计不合理,会导致卷积核中有大量的参数没有被完全利用(多数权重趋近于0),会导致大量计算资源的消耗。

Inception v1

GoogLeNet 引入了inception模块来解决上述问题,这里解释一下inception模块设计的思路

设计思路

首先,神经网络的权重矩阵是稀疏的,如果能将下列 (1)式的卷积运算 转化成 (2)+ (3)两个卷积运算,那么就可以大大降低运算量。

(1) [520000120000003740006400000050000000] \begin {bmatrix} {5} & {2} & {0} & {0}& {0}& {0}\\ {1} & {2} & {0} & {0}& {0}& {0}\\ {0} & {0} & {3} & {7}& {4}& {0}\\{0} & {0} & {6} & {4}& {0}& {0}\\{0} & {0} & {0} & {0}& {5}& {0}\\{0} & {0} & {0} & {0}& {0}& {0}\\ \end{bmatrix} \bigoplus [3422] \begin {bmatrix} {3} & {4} \\ {2} & {2}\end {bmatrix}

(2)[5212]\begin {bmatrix} {5} & {2} \\ {1} & {2} \end {bmatrix} \bigoplus [3422]\begin {bmatrix} {3} & {4} \\ {2} & {2} \end {bmatrix}

(3)[374640005]\begin {bmatrix} {3} & {7} & {4} \\ {6} & {4} & {0}\\ {0} & {0} & {5}\end {bmatrix} \bigoplus [3422]\begin {bmatrix} {3} & {4} \\ {2} & {2} \end {bmatrix}

同样的道理。应用在降低卷积神经网络的计算量上,就有了下图所示的Inception结构。在这个结构中,将原始矩阵的特征转换为不同尺度的聚类,就可以使计算更有效,收敛更快。

image.png

其次,inception结构仍然有很大的计算量,为了降低计算成本,作者在 3x3 和 5x5 卷积层之前添加了额外的 1x1 卷积层,来限制输入信道的数量。尽管添加额外的卷积操作似乎是反直觉的,但是 1x1 卷积比 5x5 卷积要廉价很多,而且输入信道数量减少也有利于降低算力成本。需要注意的是,1x1 卷积在最大池化层之后,而不是之前。添加了这些额外的 1x1 卷积之后,就构成了可实现降维的Inception模块:

image.png

结构图

image.png

Inception V2 - v4

Inception 第二版其实是在输入的时候增加了批量标准化操作(batch_normal)。加入标准化操作后,模型收敛更快,学习起来更高效。把5x5的卷积改成两个3x3的卷积串联,这样可以增加网络深度,并减少运算量。

image.png

第三版把GoogLeNet中的一些 7x7 卷积,变成了 1x7 和 7x1两层卷积串联。 3x3 变成了 1x3 和 3x1 两层卷积串联。这样做加速了计算,还增加了网络的非线性,较小过拟合的概率。另外,网络的输入特征图尺寸从 224x224 变成了 299x299。

第四版实在上一版的基础上增加了ResNet方法以及一些微小的改变。引入ResNet方法并不是为了提高深度和准确度,而是为了提高训练速度。

参考资料

v1 Going deeper with convolutions

v2 Batch Normalization: Accelerating Deep Network Training b y Reducing Internal Covariate Shift

v3 Rethinking the Inception Architecture for Computer Vision

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