We present an interpretation of Inception modules in convolutional neural networks as being an intermediate step in-between regular convolution and the depth wise separable convolution operation(a depth wise convolution followed by a point wise convolution).
思想
基于Inception系列网络结构的基础上,结合depthwise separable convolution
- 假设:
- 卷积在3个维度上进行学习,因此卷积需要既要考虑空间相关性,又要考虑channel相关性:
- spatial dimensions(width and height)
- channel dimension
- corss-channel correlations和spatial correlations是充分解耦合的,没有必要将他们叠加在一起
注:关于空间width和height解耦合可以参考Inception V3论文
- 卷积在3个维度上进行学习,因此卷积需要既要考虑空间相关性,又要考虑channel相关性:
思想:将Inception modul拆分成一系列操作,独立处理spatial-correlations和cross-channel correlations,网络处理起来更加简单有效
- 首先通过‘1x1’卷积,将输入数据拆分cross-channel相关性,拆分成3或者4组独立的空间
- 然后,通过‘3x3’或者‘5x5’卷积核映射到更小的空间上去
Q:为什么Inception module可以用depthwise separable convolution替代?
首先,对于原始的Inception模块,如Inception V3,结构如下:
模块中,基本上先通过一系列1x1卷积降维,然后再通过3x3卷积提取特征。如果我们将上述结构再进行简化,可以得到如下简化结构:
从上图中我们可以看出,1x1卷积将输入数据的channel维度上进行了拆解,再输送到空间卷积3x3,改写成下图:
可以考虑一种更加极端的情况:3x3卷积在1x1卷积后的每一个通道上运行,则有:
我们可以从上图上,看到该模块将输入数据在channel维度上进行解耦合,该模块称之为‘extreme’version of Inception module,这个思想和depthwise separable convolution非常相似。
- 操作顺序不同:
- depth wise separable convolutions:先进行channel-wise 空间卷积,然后1x1卷积进行融合
- Inception:先进行1x1卷积,然后进行channel-wise空间卷积
- 非线性激励函数:
- depthwise separable convolution:两个操作之间没有激励函数
- Inception:两个操作之间,添加了ReLU非线性激励
但是,作者介绍说,上述两个不同点中,第一个并不是太重要,原因在与整个结构模型是Inception模块不断叠加的,从而改变一下结构中的模块划分顺序,两者基本上就等价了。而对于第二点就比较重要了。基本上,整个网络结构就是把Inception module换成了depthwise separable convlution,但是里面的深层次含义却很重要。
网络结构
整个网络结构,不仅借鉴了depthwise separable convolution的思想,也结合了ResNet的思想,最后作者也比较了ResNet在其中的作用。结构如下:
说明:
- 整个网络结构具有14个模块,36个卷积
- 残差连接
- 最后采用logistic regression
效果分析
- 实验参数:
name | ImageNet | JFT |
---|---|---|
Optimizer | SGD | RMsprop |
Momentum | 0.9 | 0.9 |
Initial learning rate | 0.045 | 0.001 |
Learning rate decay | decay of rate 0.94 every 2 epochs | decay of rate 0.9 every 3,000,000 samples |
注:ImageNet数据集为单标签,JFT数据集为多标签
- 正则化
operation | value |
---|---|
weight decay | InceptionV3 L2 regularization(4e-5)/Xception(1e-5) |
dropout | ImageNet rate=0.5/JFT no dropout |
Auxiliary loss tower | InceptionV3 included/Xception not included |
注:使用tensorflow, 60块NVIDIA K80显卡
实验1:
与InceptionV3对比
参数个数
注:两者在参数个数和速度上相差不大- ImageNet上的精度
注:Xception的效果最好 - 收敛速度
注:Xception收敛速度更快
实验2:
full-connected layer的影响
- 在JFT上的效果
- with fully-connected layers
- without fully-connected layers
注:相比较与ImageNet数据集,Xception在JFT数据集上的效果更加明显
实验3:
残差连接的作用
- 带有残差连接的网络不仅收敛更加快,效果也更加好
注:作者对这种对比结果也提出了质疑,这种效果仅针对这个特殊的网络结构
实验4:
激活函数的作用:在depthwise与pointwise之间使用不同的激活函数
- 不带激活函数的网络结构,效果更好
注:和《InceptionV3》中的结论相反,可能和特征空间的深度有关- 网络特征比较深的时候,非线性激活有帮助
- 网络结构比较浅的时候,非线性激活反而有害
参考文献
https://arxiv.org/pdf/1610.02357.pdf
http://blog.csdn.net/KangRoger/article/details/69929915
https://www.leiphone.com/news/201708/KGJYBHXPwsRYMhWw.html
http://blog.csdn.net/tangzy_/article/details/53672620