【模型解读】GoogLeNet中的inception结构,你看懂了吗
03
这是深度学习模型解读第3篇,本篇我们将介绍GoogLeNet v1到v3。
李健
武汉大学硕士,研究方向为机器学习与计算机视觉
作者 | 李健(微信号:lijian05170517)
编辑 | 李健
01
Inception V1【1】
GoogLeNet首次出现在2014年ILSVRC 比赛中获得冠军。这次的版本通常称其为Inception V1。Inception V1有22层深,参数量为5M。同一时期的VGGNet性能和Inception V1差不多,但是参数量也是远大于Inception V1。
Inception Module是GoogLeNet的核心组成单元。结构如下图:
Inception Module基本组成结构有四个成分。1*1卷积,3*3卷积,5*5卷积,3*3最大池化。最后对四个成分运算结果进行通道上组合。这就是Inception Module的核心思想。通过多个卷积核提取图像不同尺度的信息,最后进行融合,可以得到图像更好的表征。
如上图所示,假设我们要提取猫脸特征,而上面两张图的猫脸占比显然不一样,那么我们就得用不同卷积核提取不同信息。信息分布比较全局性的图像采用大卷积核,信息分布比较局部性的图像采用小卷积核。
图b是对图a的改进,即在3*3卷积,5*5卷积前加1*1卷积,目的是为了先进行降维,相比较于原来结构减少了较多参数。而把1*1卷积放在3*3最大池化之后,相比较放在前面,也是为了参数量的减少。
由Inception Module组成的GoogLeNet如下图:
对上图做如下说明:
1. 采用模块化结构,方便增添和修改。其实网络结构就是叠加Inception Module。
2.采用Network in Network中用Averagepool来代替全连接层的思想。实际在最后一层还是添加了一个全连接层,是为了大家做finetune。
3.依然使用Dropout层,防止过拟合。
4.另外增加了两个辅助的softmax分支,作用有两点,一是为了避免梯度消失,用于向前传导梯度。反向传播时如果有一层求导为0,链式求导结果则为0。二是将中间某一层输出用作分类,起到模型融合作用。最后的loss=loss_2 + 0.3 * loss_1 + 0.3 * loss_0。实际测试时,这两个辅助softmax分支会被去掉。
02
Inception V2【2】
1.学习VGGNet的特点,用两个3*3卷积代替5*5卷积,可以降低参数量。
2.提出BN算法。BN算法是一个正则化方法,可以提高大网络的收敛速度。简单介绍一下BN算法。就是对输入层信息分布标准化处理,使得规范化为N(0,1)的高斯分布,收敛速度大大提高。
03
Inception V3【3】
学习Factorization into small convolutions的思想,将一个二维卷积拆分成两个较小卷积,例如将7*7卷积拆成1*7卷积和7*1卷积。这样做的好处是降低参数量。paper中指出,通过这种非对称的卷积拆分,比对称的拆分为几个相同的卷积效果更好,可以处理更多,更丰富的空间特征。
本来还有Inception V4【4】的,考虑到借鉴了微软的ResNet网络结构思想,在后面介绍Resnet中的残差结构时再做介绍。
参考文献
【1】Szegedy C, Liu W, Jia Y, et al. Going deeper with convolutions[C]// IEEE Conference on Computer Vision and Pattern Recognition. IEEE, 2015:1-9.
Ioffe S, Szegedy C.
【2】Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift[J]. 2015:448-456.
【3】Szegedy C, Vanhoucke V, Ioffe S, et al. Rethinking the Inception Architecture for Computer Vision[J]. 2015:2818-2826.
【4】Szegedy C, Ioffe S, Vanhoucke V, et al. Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning[J]. 2016.