GoogLeNet,作为 ILSVRC-2014的分类和检测任务的冠军,相比于当年分类任务第二名VGG Net的对于小卷积层(3x3)的简单堆叠,GoogLeNet提出更具创意的Inception模块,虽然网络结构比较复杂,但是模型参数量却降低了,仅为AlexNet的1/12,而VGGNet的参数量却是AlexNet的3倍,但模型精度却比VGG要跟高。
正是因为GoogLeNet的高性能,后续继续在Inception v1版本上继续优化,出现了Inception v2,Inception v3,Inception v4,Inception-ResNet v1,Inception-ResNet v2等优化模型,下面我们来具体看下。
一、Inception v1
首先,我们需要明确,提高深度神经网络性能最直接的方式是增加深度和宽度,但是这样会带来两个问题:
1.更大的尺寸通常意味着更多的参数,这会使增大的网络更容易过拟合,尤其是在训练集的标注样本有限的情况下。
2.会耗费大量计算资源。
GoogLeNet的设计理念为:
1.图像中的突出部分可能具有极大的尺寸变化。
2.信息位置的这种巨大变化,卷积操作选择正确的核大小比较困难。
3.对于较全局分布的信息,首选较大的核,对于较局部分布的信息,首选较小的核。
4.非常深的网络容易过拟合。它也很难通过整个网络传递梯度更新。
5.简单地堆叠大卷积运算导致计算复杂度较高
出于上面的考虑,提出了如下图所示的初始Inception 模块
对前一层的输入进行并行并行卷积操作,使用多个感受野大小的卷积(1x1, 3x3, 5x5).
但是上述初始Inception ,参数量过大,从而导致计算量过大。
受Network in Network的启发,作者使用1x1卷积对特征图通道数进行降维,这就是Inception v1的最终网络结构,如下: