Xception网络是由inception结构加上depthwise separable convlution,再加上残差网络结构改进而来/
常规卷积是直接通过一个卷积核把空间信息和通道信息直接提取出来,结合了spatial dimensions和channels dimensions;xception这种是分开做的。
它最初的想法是从Incetpion来的,总体思想是把corss-channel correlations和spatial correlations充分解耦合;
将Inception modul拆分成一系列操作,独立处理spatial-correlations和cross-channel correlations,网络处理起来更加简单有效
步骤是:
- 首先通过‘1x1’卷积,处理跨通道相关性,拆分成3或者4组独立的空间
- 然后,通过‘3x3’或者‘5x5’卷积核映射到更小的空间上去
inception结构到xception的演变:
从1到2是一个简化过程,从2到3是把1*1的卷积核拼接起来,使得经过1*1的卷积之后可以将输入数据的channel维度上进行拆解; 最后一种是极端情况,3x3卷积在1x1卷积后的每一个通道上运行。
这种思想与depthwise separable convolution基本一样,只是再空间解耦合与通道解耦合的顺序不同,论文作者谈到这种模块再整体网络结构中都是相连的,顺序并没有太大影响。
Xception的网络结构:
核心部分是下图中的depthwise separable conv结构,很好的减少了参数量。右图是标准卷积过程。
逐通道卷积depthwise conv,再通道融合卷积pointwise
通道之间相互独立,故卷积核参数量为3*3*Ci (记忆技巧,输出通道数即为卷积核个数,卷积核个数乘以每个卷积核的参数即总参数) , 远少于标准卷积的 3*3*Ci*C0, 计算量为3*3*Ci*H*W。
逐通道卷积之后,再用1*1的卷积核进行通道间的特征融合
此时输入的特征图大小为H*W*Ci ,输出为H*W*C0
故后半部分卷积核参数量为1*1*C0*Ci, 计算量为1*1*C0*H*W*Ci, 可以记作从左到右pipeline Ci*1*1*H*W*C0
故深度可分离卷积的计算量为:3*3*Ci*H*W + 1*1*C0*H*W*Ci
是标准卷积的1/9,计算量大大减小。