Xception: Deep Learning with Depthwise Separable Convolutions
1.前言
卷积神经网络学习路线这个系列旨在盘点从古至今对当前CV影响很大的那些经典网络。为了保证完整性我会将之前漏掉的一些网络补充下去,已经介绍了非常多的经典网络,这个系列可能也快要迎来完结了。接着卷积神经网络学习路线(九)| 经典网络回顾之GoogLeNet系列 也就是Inception V3之后,Google提出了XceptionNet,这是对Inception V3的一种改进,主要使用了深度可分离卷积来替换掉Inception V3中的卷积操作。
2. 铺垫
为了更好的说明Xception网络,我们首先需要从Inception V3来回顾一下。下面的Figure1展示了Inception V3的结构图。可以看到Inception的核心思想是将多种特征提取方式如 1 × 1 1\times 1 1×1卷积, 3 × 3 3\times 3 3×3卷积, 5 × 5 5\times 5 5×5卷积, p o o l i n g pooling pooling等产生的特征图进行了concate,达到融合多种特征的效果。
然后,从Inception V3的结构联想到了一个简化的Inception结构,如Figure2所示。
再然后将Figure2的结构进行改进,就获得了Figure3所示的结构。可以看到,在这个结构中先用一个 1 × 1 1\times 1 1×1卷积,然后连接三个 3 × 3 3\times 3 3×3卷积,这三个 3 × 3 3\times 3 3×3卷积只将前面 1 × 1 1\times 1 1×1卷积的一部分(这里是 1 3 \frac{1}{3} 31的通道)作为每个 3 × 3 3\times 3 3×3卷积的输出。同时Figure4则为我们展示了将这一想法应用到极致,即每个通道接一个 3 × 3 3\times 3 3×3卷积的结构。
3. Xception原理
Xception中主要采用了深度可分离卷积。这个卷积我们之前已经介绍的很清楚了,请看这篇推文:【综述】神经网络中不同种类的卷积层 。那么深度可分离卷积和上面Figure4中的极致Inception结构有什么区别呢?
- 极致的Inception。
- 第一步:普通的 1 × 1 1\times 1