GoogLeNet提出了Inception结构,并且有四次更新分别为Inception v1、v2、v3、v4
GoogLeNet Incepiton v1
论文地址:Going Deeper with Convolutions
文中提到说,想要更高的识别率,很自然的想到增加网络的层数(网络更深)和每层卷积数量(网络更宽),但是这样会导致两个问题:第一个就是参数太大了,容易导致over-fitting(过拟合),特别是在数据集数量有限的情况下,而有效的数据集获取非常困难,需要大量人的人力进行标定;另外一个缺点就是会导致很多重复计算。想要解决这个问题就是使用更加稀疏的网络结构,但是现在的计算设备对于分布不均匀并且稀疏的计算比较困难
Inception结构就是为了近似稀疏分布提出来的,主要思想就是考虑如何近似一个局部最优的稀疏卷积视觉网络结构
上图是提出的Inception的原始结构,虽然这个结构可能会提供最优空间结构,但是因为同时使用多个不同尺寸的卷积核,很没有效率会提高很大计算量
为了解决(a)中原始结构计算量过大的问题,提出了带维度减少的Inception结构,也就是在进行3*3、5*5卷积之前,先使用了1*1的卷积减少维度,这样就会减少3*3、5*5的参数和计算量
为了解决深层网络梯度传递问题,GoogLeNet加入了两个辅助分类器(auxiliary classifiers),连接在网络的中部(4a、4d),并且以0.3的权重参与到最后的loss梯度反向传递中,在测试过程中这两个辅助分类器被弃用
辅助分类器:
1、一个5*5size、stide为3的平均pooling层,(4a)的输出为4*4*512,(4d)的输出为4*4*528
2、128个1*1的卷积用来减少维度和ReLU
3、1024个节点的全连接层和ReLU
4、70%的dropout
5、用于分类的softmax层
盗图来自:https://blog.csdn.net/qq_31531635/article/details/72232651
GoogLeNet Incepiton v2
论文地址:Rethinking the Inception Architecture for Computer Vision
文中提到说大尺寸的卷积太消耗计算量和内存,比如一个5*5的卷积核,使用两个3*3的卷积来代替,效果相同而且计算量和参数量更小,如下图所示,两个3*3的卷积替代5*5的卷积
如下两图(左图为之前的Inception结构,右图为提出使用两个3*3替代5*5的卷积)
GoogLeNet Incepiton v3
论文地址:Rethinking the Inception Architecture for Computer Vision
然后文中还提到,既然3*3的卷积来代替5*5的卷积效果好还能减少参数和计算量,那么使用2*2的卷积呢,文中指出使用两个2*2的卷积不如使用1*3和3*1的不平衡卷积来代替3*3的卷积,使用1*3和3*1的卷积能带来33%的减少,而使用两个2*2的卷积只能带来11%的减少
在理论上,我们可以使用所有1*n和n*1来代替n*n,如下图所示
但是根据实践表明,这种方式在早期的卷积层中表现的不好,但是在中等网格尺寸(grid-size)(m*m的future map中,m为12-20)之间表现很好。在那些层使用1*7和7*1表现的很好
关于辅助分类器(Auxiliary Classifiers),文章中说道他们发现,在训练的开始阶段并没有提供什么效果,但是在训练的末尾阶段,辅助分类器提高了收敛效率并且达到更好的效果。移除低层的辅助分类器在最终的结果上并没有什么区别,但是文章指出辅助分类器还具有正则化的效果,在他们实验中发现如果辅助分类器使用BN或者dropout,主分类器会有更好的效果
关于网格尺寸缩小,本文提出了上图所示的方法,左图为操作,右图为尺寸变化
至此我们根据以上的小模块的构建来搭建了一种新的网络结构
GoogLeNet Incepiton v4
论文地址:Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning
Inception v4
Stem
Inception-A
Reduction-A
k=192、l=224
Inception-B
Reduction-B
Inception-C
Inception-ResNet-v1
stem
Inception-ResNet-A
Reduction-A
k=192、l=192
Inception-ResNet-B
Reduction-B
Inceptioin-ResNet-C
Inception-ResNet-v2
stem
Inception-ResNet-A
Reduction-A
k=256、l=256
Inception-ResNet-B
Reduction-B
Incepiton-ResNet-C
Scaling of the Residuals
文章中提到,他们发现在filter的数量大于1000的时候,残差网络表现的不稳定并且网络在训练中会早早的died,意味着在global average pooling之前的最后一层在经过上万次的迭代之后,只是在处理0。这种问题无法使用降低learning rate和加入额外的Batch normalization来解决
作者发现在激活层之前缩小残差可以稳定训练,一般选取0.1-0.3的缩放因子