Paper : Xception: Deep Learning with Depthwise Separable Convolutions
Code : unofficial
摘要
如果先看了这篇文章blog,那么Xception其实就是一种特例情况。Xception 可以从组卷积的角度进行重新理解,而不是考虑Xception自己提出的“depthwise separate convolution”
网络结构
在 Inception 中,特征可以通过1*1卷积,3*3卷积,5*5卷积,pooling 等进行提取,Inception 结构将特征类型的选择留给网络自己训练,也就是将一个输入同时输给几种提取特征方式,然后做 concat
对 Inception-v3 进行简化,去除 Inception-v3 中的 avg pool 后,输入的下一步操作就都是 1*1 卷积:
提取 1*1 卷积的公共部分,之后 3*3 相当于对 1*1 输出的不同通道分别进行卷积
极端情况下,对 1*1 卷积(pointwise convolution)的输出的每个通道分别进行3*3卷积(spatial convolution),被称作是Xception
Depthwise Separable Convolution : 相比于Xception将pointwise conv与spatial conv交换,先对每一通道进行conv3*3,再将输出结果concatenate后通过conv1*1
作者发现,在Xception模块中,用于学习空间相关性的 3*3 的卷积,和用于学习通道间相关性的 1*1 卷积之间,不使用非线性激活函数时,收敛过程更快、准确率更高
Xception 结构如下
核心观点
- 通道之间的相关性 与 空间相关性 最好要分开处理。采用 Separable Convolution来替换原来 Inception-v3中的卷积操作。
- 将组卷积的思想引入到神经网络中,为IGCNets的提出打下了基础