[Reading] Xception: Deep Learning with Depthwise Separable Convolutions

Xception: Deep Learning with Depthwise Separable Convolutions (2016/10)

1. 概述

  文章的主要贡献有:

  • 指出通过控制对 $1 \times 1$ 卷积输出的分段数量,可以得到一系列结构,标准卷积和深度可分离卷积是分别位于两个极端。
  • 通过将 Inception 模块替换为深度可分离卷积,文章给出了 Xception 网络架构,Xception 的参数数量与 Inception V3 相近,在 ImageNet 数据集上的性能略优于 Inception V3,在 JFT 数据集上的性能大幅优于 Inception V3。
  • 指出深度可分离卷积具有与 Inception 模块类似的属性,但更容易使用,将成为未来网络架构设计的基石。文章同时指出,在这一系列结构中,深度可分离卷积并不一定是最优的,更好的结构可能存在于中间的某个位置,有待进一步研究。

2. 极限的 Inception 模块

  传统的卷积层使用三维的过滤器,包括两个空间维度(宽和高)和通道维度,同时对空间和通道间的相关关系进行映射。而 Inception 模块则尝试将这一过程分解为一系列操作,独立地对空间的相关和通道间的相关分别进行处理。如 Figure 1 所示的 Inception 模块来自 Inception V3 中的 Figure 5,它首先通过 $1 \times 1$ 卷积处理通道间的相关,然后将输入数据分成 3 到 4 个较小的空间,然后使用如 $3 \times 3$ 或 $5 \times 5$ 的卷积来处理这些小空间中的所有相关关系。Inception 的基础假设是,通道间的相关和空间的相关能够充分解耦,最好不要同时映射。

Figure 1, 2
Figure 1, 2

  Figure 2 所示的简化的 Inception 模块移除了池化,可以将此种结构看成是一个大的 $1 \times 1$ 卷积,将其输出分成若干个不重叠的区段,作为后续一系列空间卷积的输入,如 Figure 3 所示。由此引出两个问题:分段的数量和每段的尺寸对性能有什么影响,以及是否可以提出一个更强的假设:通道间和空间的相关可以完全独立地进行映射。由此文章提出了一个极限版本的 Inception 模块,$1 \times 1$ 卷积输出的每个通道都有一个单独的空间卷积进行处理,如 Figure 4 所示。

Figure 3, 4
Figure 3, 4

  Figure 4 所示的结构和深度可分离卷积相似,但二者有两点差异:

  • 层的顺序:深度可分离卷积先进行逐通道的空间卷积(depthwise 卷积),然后进行 $1 \times 1$ 卷积(pointwise 卷积),而 Inception 先进行 $1 \times 1$ 卷积。在实际网络中,通常会堆叠使用相同的结构,这两种卷积的顺序是相对的,因此这一顺序差异并不重要。
  • 第一个操作后是否使用非线性:深度可分离卷积中通常不使用非线性,而 Inception 在两个操作后都会使用 ReLU。

  通过调整分段的数量,可以得到不同的 Inception 模块,构成了一个离散的谱系。一个极限是只有一个分段,即在 $1 \times 1$ 卷积后只使用一个常规卷积;另一个极限是每个通道一个分段,即深度可分离卷积。常规的 Inception 模块位于中间,使用 3 到 4 个分段。文章认为,通过将 Inception 模块替换为深度可分离卷积,即使用深度可分离卷积堆叠,可以提升 Inception 系列网络的性能。

3. Xception 网络架构

  文章基于特征图中通道间和空间相关的映射可以完全解耦的假设,提出了一个完全基于深度可分离卷积的网络架构,如 Figure 5 所示。这一假设比 Inception 的假设更强,因此将网络命名为 Xception,表示“Extreme Inception”。网络主要由线性堆叠的深度可分离卷积和残差连接组成,非常简单。

Figure 5
Figure 5

4. 实验结果

  文章主要在 ImageNet 和 JFT 数据集上,对 Xception 和 Inception V3 这两个参数数量相近的网络进行了比较。JFT 数据集包含 3.5 亿张图片和 17000 个分类,对应的验证集 FastEval14k 包含 14000 张图片和 6000 个分类(平均每张图片有 36.5 个分类),计算前 100 个预测的 mAP,并使用类别在社交媒体图片中的常见程度进行加权,来评价对社交媒体中常见类别的识别性能。

  Xception 和 Inception V3 在 ImageNet 和 JFT 上的性能分别如 Table 1、2 所示,训练过程如 Figure 6、7、8 所示。可见 Xception 在 ImageNet 上的性能略优于 Inception V3,而在 JFT 上较 Inception V3 的性能提升更大。文章认为这是因为 Inception V3 是针对 ImageNet 开发的,因此过拟合于 ImageNet。通过对超参数进行调优,Xception 在 ImageNet 上还可以获得更好的性能。

Table 1, 2
Table 1, 2
Figure 6, 7, 8
Figure 6, 7, 8

  Table 3 比较了 Xception 和 Inception V3 的参数数量和每秒钟训练的步数,可见二者参数数量接近,但 Xception 稍慢。文章认为未来对 depthwise 实现上的优化可以进一步提高 Xception 的速度。

Table 3
Table 3

  为了验证残差连接的影响,文章对比了带残差连接和不带残差连接的 Xception,结果如 Figure 9 所示。可见残差连接对收敛非常重要,可以提升收敛速度和分类性能。同时文章也指出,这一结果只是说明残差连接对特定网络架构非常重要,并不意味着它是必须的。

Figure 9
Figure 9

  为了验证 pointwise 卷积后激活函数的影响,文章对比了使用不同激活函数和不使用激活函数的网络的性能,如 Figure 10 所示。可见不使用激活函数可以获得更快的收敛速度和更高的准确率,这一结果与 Inception V3 中的结果相反,文章认为是中间特征的深度,即空间卷积输入的通道数决定了非线性的作用,对于如 Inception 模块这样较深的特征空间,使用非线性是有益的;而对于如深度可分离卷积这样较浅的特征空间,空间卷积的输入只有一个通道,信息较少,使用非线性会带来损害。之后 MobileNetV2 中的 linear bottleneck 也没有在 $1 \times 1$ 卷积后使用非线性。

Figure 10
Figure 10