Xception: 使用深度可分离卷积的深度学习——Xception:Deep Learning with Depthwise Separable Convolutions

原文链接:

https://openaccess.thecvf.com/content_cvpr_2017/papers/Chollet_Xception_Deep_Learning_CVPR_2017_paper.pdficon-default.png?t=N7T8https://openaccess.thecvf.com/content_cvpr_2017/papers/Chollet_Xception_Deep_Learning_CVPR_2017_paper.pdf

0.摘要

        我们将卷积神经网络中的Inception模块解释为常规卷积和深度可分离卷积操作之间的中间步骤。在这个视角下,深度可分离卷积可以被理解为具有最大数量塔的Inception模块。这个观察引导我们提出了一个新颖的深度卷积神经网络架构,灵感来自Inception,其中Inception模块被深度可分离卷积所替代。我们展示了这个被称为Xception的架构,在ImageNet数据集上略优于Inception V3(Inception V3是为此设计的),并且在一个包含3.5亿张图片和17,000个类别的更大的图像分类数据集上明显优于Inception V3。由于Xception架构的参数数量与Inception V3相同,性能提升不是由于增加了容量,而是由于更有效地使用了模型参数。

1.引言

        卷积神经网络在近年来已成为计算机视觉中的主要算法,并且设计这些网络的方法一直受到广泛关注。卷积神经网络设计的历史始于LeNet风格的模型[10],它们是由简单的卷积层和空间子采样的最大池化操作堆叠而成。2012年,这些想法被进一步完善为AlexNet架构[9],其中卷积操作在最大池化操作之间被多次重复,使得网络能够在每个空间尺度上学习更丰富的特征。随之而来的是将这种网络风格越来越深的趋势,主要是受到每年的ILSVRC竞赛的推动;首先是在2013年由Zeiler和Fergus提出的网络[25],然后是在2014年由VGG提出的VGG架构[18]。在这一点上,出现了一种新的网络风格,即Inception架构,由Szegedy等人在2014年提出的GoogLeNet(Inception V1),后来又经过改进为Inception V2 [7],Inception V3 [21],最近是Inception-ResNet [19]。Inception本身受到了先前的网络中网络架构[11]的启发。自首次提出以来,Inception一直是在ImageNet数据集[14]以及Google内部使用的JFT [5]等数据集上表现最好的模型之一。Inception风格模型的基本构建块是Inception模块,有几个不同版本存在。在图1中,我们展示了Inception模块的典型形式,如在Inception V3架构中所使用。一个Inception模型可以被理解为一堆这样的模块。这与早期的VGG风格网络不同,后者是一堆简单的卷积层。虽然Inception模块在概念上类似于卷积(它们都是卷积特征提取器),但在实验上,它们似乎能够以较少的参数学习到更丰富的表示。它们是如何工作的,与常规卷积有何区别?Inception之后有哪些设计策略?

1.1.Inception假设

        一个卷积层试图在一个三维空间中学习滤波器,其中有两个空间维度(宽度和高度)和一个通道维度;因此,一个单独的卷积核同时处理跨通道的相关性和空间的相关性。Inception模块背后的思想是通过将这个过程明确地分解为一系列操作来使其更容易和更高效,这些操作分别独立地考虑跨通道的相关性和空间的相关性。更具体地说,典型的Inception模块首先通过一组1x1的卷积来考虑跨通道的相关性,将输入数据映射到比原始输入空间更小的3个或4个独立空间中,然后通过常规的3x3或5x5卷积在这些较小的三维空间中映射所有的相关性。这在图1中有所说明。实际上,Inception背后的基本假设是跨通道的相关性和空间的相关性是足够解耦的,因此最好不要将它们一起映射。考虑一个简化版的Inception模块,它只使用一个尺寸的卷积(例如3x3),并且不包括平均池化操作(图2)。这个Inception模块可以重新表述为一个大的1x1卷积,后面跟着在输出通道的非重叠分段上操作的空间卷积(图3)。这个观察自然地引出了一个问题:分段的数量(及其大小)对分割的效果有何影响?是否可以合理地做一个比Inception假设更强的假设,即跨通道的相关性和空间的相关性可以完全分开映射?

图1:典型的Inception模块(Inception V3)

图2:简化版的Inception模块。

1.2.卷积和可分离卷积之间的连续性

        基于这个更强的假设,一个“极端”的Inception模块首先使用一个1x1的卷积来映射跨通道的相关性,然后分别映射每个输出通道的空间相关性。这在图4中展示。我们注意到,这种极端形式的Inception模块几乎与深度可分离卷积完全相同,深度可分离卷积是自2014年以来就被用于神经网络设计的一种操作,自从2016年被纳入TensorFlow框架[1]后变得更加流行。深度可分离卷积,在TensorFlow和Keras等深度学习框架中通常称为“可分离卷积”,它由一个深度卷积和一个点卷积组成,深度卷积是指对输入的每个通道进行独立的空间卷积,然后点卷积是指一个1x1的卷积,将深度卷积输出的通道投影到一个新的通道空间中。这与空间可分离卷积不同,空间可分离卷积在图像处理领域也常称为“可分离卷积”。一个“极端”的Inception模块和深度可分离卷积之间的两个小差异是:

        • 操作的顺序:深度可分离卷积通常是先进行通道级的空间卷积,然后进行1x1卷积,而Inception先进行1x1卷积。

        • 第一个操作后是否存在非线性。在Inception中,这两个操作后都会跟随ReLU非线性,但是深度可分离卷积通常不包含非线性。 我们认为第一个差异不重要,特别是因为这些操作是在堆叠的设置中使用的。

        第二个差异可能很重要,我们在实验部分进行了研究(特别是参见图10)。我们还注意到,介于常规Inception模块和深度可分离卷积之间的其他中间形式的Inception模块也是可能的:实际上,有一个由用于执行空间卷积的独立通道空间段数参数化的离散光谱,介于常规卷积和深度可分离卷积之间。这个光谱的一个极端是常规卷积(在1x1卷积之前),对应于单一段的情况;深度可分离卷积对应于另一个极端,每个通道有一个段;Inception模块位于两者之间,将几百个通道分为3或4个段。这种中间模块的特性似乎还没有被探索过。 在这些观察的基础上,我们提出可以通过用深度可分离卷积替换Inception模块来改进Inception系列架构,即构建由深度可分离卷积堆叠而成的模型。这得益于TensorFlow中高效的深度卷积实现。接下来,我们将基于这个思想提出一个卷积神经网络架构,其参数数量与Inception V3相似,并在两个大规模图像分类任务上评估其性能与Inception V3的比较。

图3:简化的Inception模块的严格等价重组形式

图4:我们的Inception模块的“极端”版本,每个1x1卷积的输出通道都有一个空间卷积。

2.先前的研究

        本研究在以下领域中严重依赖先前的工作:

         • 卷积神经网络[10, 9, 25],特别是VGG-16架构[18],在某些方面与我们提出的架构类似。

         • Inception架构系列的卷积神经网络[20, 7, 21, 19],首次展示了将卷积分解为多个分支依次在通道和空间上操作的优势。

         • 深度可分离卷积,我们提出的架构完全基于此。虽然在神经网络中使用空间可分离卷积有着悠久的历史,至少可以追溯到2012年[12](但可能更早),深度可分离卷积是较新的。Laurent Sifre在2013年在Google Brain实习期间提出了深度可分离卷积,并在AlexNet中使用它们获得了较小的准确性提升和较大的收敛速度提升,以及显著减小的模型大小。他的工作概述首次在ICLR 2014的演示中公开[23]。详细的实验结果在Sifre的论文第6.2节中报道[15]。深度可分离卷积的这项初步工作受到Sifre和Mallat关于变换不变散射的先前研究的启发[16, 15]。后来,深度可分离卷积被用作Inception V1和Inception V2的第一层[20, 7]。在Google内部,Andrew Howard [6]使用深度可分离卷积引入了高效的移动模型MobileNets。2014年,Jin等人[8]和2016年,Wang等人[24]也进行了相关工作,旨在使用可分离卷积来减小卷积神经网络的大小和计算成本。此外,我们的工作之所以可行,还得益于TensorFlow框架中深度可分离卷积的高效实现[1]。

         • He等人在[4]中提出的残差连接,我们的提出的架构广泛使用了这一方法。

3.Xception架构

        我们提出了一种完全基于深度可分离卷积层的卷积神经网络架构。实际上,我们提出了以下假设:卷积神经网络中特征图中的跨通道相关性和空间相关性的映射可以完全解耦。由于这个假设是Inception架构假设的更强版本,我们将我们提出的架构命名为Xception,代表“极端Inception”。网络规格的完整描述如图5所示。Xception架构有36个卷积层,形成了网络的特征提取基础。在我们的实验评估中,我们将仅研究图像分类,因此我们的卷积基础之后将是一个逻辑回归层。可选地,可以在逻辑回归层之前插入全连接层,在实验评估部分中进行了探索(特别是参见图7和图8)。这36个卷积层被结构化为14个模块,除了第一个和最后一个模块外,所有模块周围都具有线性残差连接。简而言之,Xception架构是一个具有残差连接的深度可分离卷积层的线性堆叠。这使得架构非常容易定义和修改;使用高级库(如Keras [2]或TensorFlow-Slim [17])仅需30到40行代码,与VGG-16 [18]等架构相似,但与Inception V2或V3等架构不同,后者的定义要复杂得多。使用Keras和TensorFlow的Xception的开源实现作为Keras Applications模块的一部分提供,使用MIT许可证。

4.实验评估

        我们选择将Xception与Inception V3架构进行比较,因为它们在规模上非常相似:Xception和Inception V3的参数数量几乎相同(表3),因此任何性能差距都不能归因于网络容量的差异。我们在两个图像分类任务上进行了比较:一个是基于ImageNet数据集[14]的已知的1000类单标签分类任务,另一个是基于大规模JFT数据集的17,000类多标签分类任务。

4.1.JFT数据集

        JFT是Google内部的用于大规模图像分类的数据集,由Hinton等人在[5]中首次介绍,包含了超过3.5亿张高分辨率的图像,并使用来自一组17,000个类别的标签进行注释。为了评估在JFT上训练的模型的性能,我们使用了一个辅助数据集FastEval14k。FastEval14k是一个包含14,000张图像的数据集,其中包含约6,000个类别的密集注释(平均每张图像有36.5个标签)。我们使用平均精度均值(MAP@100)评估模型在该数据集上的性能,并使用一个评分来衡量每个类别对MAP@100的贡献,该评分估计了该类别在社交媒体图像中的普遍程度(因此也是重要性)。这个评估过程旨在捕捉模型在社交媒体中经常出现的标签的性能,这对于Google的生产模型非常重要。

4.2.优化配置

在ImageNet和JFT上使用了不同的优化配置:

  • 在ImageNet上:
    • 优化器:SGD
    • 动量:0.9
    • 初始学习率:0.045
    • 学习率衰减:每2个epoch衰减速率为0.94
  • 在JFT上:
    • 优化器:RMSprop [22]
    • 动量:0.9
    • 初始学习率:0.001
    • 学习率衰减:每3,000,000个样本衰减速率为0.9 对于这两个数据集,Xception和Inception V3都使用了完全相同的优化配置。请注意,这个配置是为了在Inception V3上获得最佳性能进行了调整;我们没有尝试调整Xception的优化超参数。由于这两个网络具有不同的训练特性(如图6所示),这可能不是最优的,尤其是在ImageNet数据集上,在这个数据集上使用的优化配置已经经过精心调整,以适应Inception V3的训练。此外,在推断时,所有模型都使用Polyak平均[13]进行评估。

4.3.正则化配置

        权重衰减:Inception V3模型使用了一个4e-5的权重衰减率(L2正则化),这是为在ImageNet上的性能进行了精心调整的。我们发现这个衰减率对于Xception来说相当不理想,所以我们将其设置为1e-5。我们没有对最佳权重衰减率进行详尽的搜索。在ImageNet实验和JFT实验中,使用了相同的权重衰减率。

         Dropout:在ImageNet实验中,两个模型在逻辑回归层之前都包含一个0.5的dropout层。对于JFT实验,由于数据集的规模较大,过拟合的可能性很低,因此没有包含dropout层。

         辅助损失塔:Inception V3架构可以选择包含一个辅助塔,它可以在网络中较早的位置反向传播分类损失,作为额外的正则化机制。为了简单起见,我们选择不在任何模型中包含这个辅助塔。

4.4.训练基础设施

        所有网络都是使用TensorFlow框架[1]实现的,并且每个网络都在60个NVIDIA K80 GPU上进行训练。对于ImageNet实验,我们使用了数据并行ism和同步梯度下降来实现最佳的分类性能,而对于JFT实验,我们使用了异步梯度下降来加快训练速度。每个ImageNet实验大约需要3天的时间,而每个JFT实验需要一个多月的时间。JFT模型没有被训练到完全收敛,否则每个实验需要超过三个月的时间。

图5. Xception架构:数据首先通过入口流,然后通过中间流,中间流重复八次,最后通过出口流。请注意,所有的卷积和可分离卷积层后面都跟着批归一化[7](图中未包含)。所有的可分离卷积层都使用深度乘数为1(没有深度扩展)。

4.5.与Inception V3的比较

4.5.1.分类表现

        所有评估都是使用单个剪裁的输入图像和单个模型进行的。ImageNet的结果是在验证集上报告的,而不是测试集(即在ILSVRC 2012验证集中的非黑名单图像上)。JFT的结果是在3000万次迭代(一个月的训练)之后报告的,而不是在完全收敛之后。结果在表1和表2以及图6、图7、图8中提供。在JFT上,我们测试了两个版本的网络,不包括任何全连接层,以及在逻辑回归层之前包括两个每个4096个单元的全连接层的版本。在ImageNet上,Xception的结果稍微优于Inception V3。在JFT上,Xception在FastEval14k MAP@100指标上显示出了4.3%的相对改进。我们还注意到,Xception在He等人报告的ResNet-50、ResNet-101和ResNet-152的ImageNet结果上表现更好。与ImageNet数据集相比,Xception架构在JFT数据集上显示出了更大的性能提升。我们认为这可能是因为Inception V3是专注于ImageNet开发的,因此可能被设计成过拟合于这个特定任务。另一方面,两种架构都没有针对JFT进行调优。很可能,在ImageNet上对Xception进行更好的超参数搜索(特别是优化参数和正则化参数)将带来显着的额外改进。

表1. ImageNet上的分类性能比较(单个剪裁,单个模型)。VGG-16和ResNet-152的数字仅作为提醒而包含。被基准测试的Inception V3版本不包括辅助塔。

表2. JFT上的分类性能比较(单个剪裁,单个模型)。

图6. ImageNet的训练概况。

图7. JFT的训练概况,不包括全连接层。

4.5.2.尺寸和速度

表3. 大小和训练速度比较。

图8. JFT的训练概况,包括全连接层。

        在表3中,我们比较了Inception V3和Xception的大小和速度。参数数量是在ImageNet(1000个类别,没有全连接层)上报告的,每秒训练步骤(梯度更新)的数量是在使用60个K80 GPU运行同步梯度下降的ImageNet上报告的。两种架构的大小大致相同(在3.5%以内),而Xception稍微慢一些。我们预计,在深度wise卷积操作的工程优化水平上,Xception在不久的将来会比Inception V3更快。两种架构几乎具有相同数量的参数,这表明在ImageNet和JFT上看到的改进并不是来自于增加的容量,而是来自于对模型参数的更有效利用。

4.6.残差链接的效果

图9. 带有和不带有残差连接的训练概况。

        为了量化Xception架构中残差连接的好处,我们在ImageNet上对不包含任何残差连接的Xception进行了基准测试。结果显示在图9中。残差连接在帮助收敛方面明显是必不可少的,无论是在速度上还是在最终的分类性能上。然而,我们需要指出的是,使用与残差模型相同的优化配置对非残差模型进行基准测试可能不够公正,更好的优化配置可能会产生更具竞争力的结果。此外,让我们注意到,这个结果仅仅显示了残差连接对于这个特定架构的重要性,并且残差连接并不是构建堆叠深度可分离卷积模型所必需的。我们还使用了非残差的VGG风格模型取得了出色的结果,其中所有的卷积层都被深度可分离卷积所替代(深度倍增因子为1),在相同的参数数量下,优于Inception V3在JFT上的结果。

4.7.在卷积后添加中间激活函数的效果

图10. 在可分离卷积层的深度可分离操作和点操作之间使用不同激活函数的训练概况。

        前面我们提到,深度可分离卷积和Inception模块之间的类比表明,深度可分离卷积可能在深度可分离操作和点操作之间包含一个非线性。在迄今为止的实验证明中,没有包含这样的非线性。然而,我们还实验性地测试了在中间添加ReLU或ELU [3]作为非线性,结果在ImageNet上报告如图10所示,显示在没有任何非线性的情况下,收敛速度更快,最终性能更好。这是一个非常引人注目的观察,因为Szegedy等人在[21]中报告了相反的结果,即对于Inception模块来说,非线性是有益的。可能是因为在应用空间卷积的中间特征空间的深度对非线性的有用性至关重要:对于深度特征空间(例如Inception模块中的特征空间),非线性是有帮助的,但对于浅层特征空间(例如深度可分离卷积的1通道深层特征空间),可能会产生负面影响,可能是由于信息的丢失。

5.未来方向

        我们前面提到正常卷积和深度可分离卷积之间存在一个离散光谱,由用于执行空间卷积的独立通道空间段的数量来参数化。Inception模块是该光谱上的一个点。我们在实证评估中展示了Inception模块的极端形式,即深度可分离卷积,可能优于常规的Inception模块。然而,并没有理由认为深度可分离卷积是最优的。可能在光谱上的中间点,介于常规Inception模块和深度可分离卷积之间的点,具有进一步的优势。这个问题留待未来研究。

6.结论

        我们展示了卷积和深度可分离卷积位于离散光谱的两个极端,而Inception模块则位于两者之间。这个观察引发了我们提出用深度可分离卷积替代Inception模块在神经计算机视觉架构中的想法。我们提出了一种基于这个思想的新型架构,命名为Xception,其参数数量与Inception V3相似。与Inception V3相比,Xception在ImageNet数据集上的分类性能略有提升,在JFT数据集上有很大的提升。我们预计深度可分离卷积将成为未来卷积神经网络架构设计的基石,因为它们具有与Inception模块类似的性能,但使用起来像常规卷积层一样简单。

7.参考文献

[1] M. Abadi, A. Agarwal, P. Barham, E. Brevdo, Z. Chen, C. Citro, G. S. Corrado, A. Davis, J. Dean, M. Devin, S. Ghemawat, I. Goodfellow, A. Harp, G. Irving, M. Isard, Y. Jia, R. Jozefowicz, L. Kaiser, M. Kudlur, J. Levenberg, D. Mane, R. Monga, S. Moore, D. Murray, C. Olah, M. Schuster, J. Shlens, B. Steiner, I. Sutskever, K. Talwar, P. Tucker, V. Vanhoucke, V. Vasudevan, F. Viegas, O. Vinyals, P. Warden, M. Wattenberg, M. Wicke, Y. Yu, and X. Zheng. TensorFlow: 大规模机器学习在异构系统上的应用, 2015. 软件可从tensorflow.org获取。

[2] F. Chollet. Keras. https://github.com/fchollet/keras, 2015.

[3] D.-A. Clevert, T. Unterthiner, 和 S. Hochreiter. 通过指数线性单元(ELUs)进行快速准确的深度网络学习. arXiv preprint arXiv:1511.07289, 2015. [4] K. He, X. Zhang, S. Ren, 和 J. Sun. 深度残差网络用于图像识别. arXiv preprint arXiv:1512.03385, 2015.

[5] G. Hinton, O. Vinyals, 和 J. Dean. 提取神经网络中的知识, 2015.

[6] A. Howard. MobileNet: 高效的卷积神经网络用于移动视觉应用. 即将发表.

[7] S. Ioffe 和 C. Szegedy. 批归一化: 通过减少内部协变量漂移加速深度网络训练. 在The 32nd International Conference on Machine Learning会议论文集中, pages 448–456, 2015.

[8] J. Jin, A. Dundar, 和 E. Culurciello. 用于前馈加速的扁平化卷积神经网络. arXiv preprint arXiv:1412.5474, 2014.

[9] A. Krizhevsky, I. Sutskever, 和 G. E. Hinton. 使用深度卷积神经网络进行ImageNet分类. 在Advances in neural information processing systems会议论文集中, pages 1097–1105, 2012.

[10] Y. LeCun, L. Jackel, L. Bottou, C. Cortes, J. S. Denker, H. Drucker, I. Guyon, U. Muller, E. Sackinger, P. Simard等. 分类学习算法: 手写数字识别的比较. Neural networks: the statistical mechanics perspective, 261: 276, 1995.

[11] M. Lin, Q. Chen, 和 S. Yan. 网络中的网络. arXiv preprint arXiv:1312.4400, 2013.

[12] F. Mamalet 和 C. Garcia. 简化用于快速学习的卷积神经网络. 在国际人工神经网络会议(ICANN 2012)论文集中, pages 58–65. Springer, 2012.

[13] B. T. Polyak 和 A. B. Juditsky. 通过平均加速随机逼近. SIAM J. Control Optim., 30(4): 838–855, July 1992.

[14] O. Russakovsky, J. Deng, H. Su, J. Krause, S. Satheesh, S. Ma, Z. Huang, A. Karpathy, A. Khosla, M. Bernstein等. ImageNet大规模视觉识别挑战. 2014.

[15] L. Sifre. 刚性运动散射用于图像分类, 2014. 博士论文. [16] L. Sifre 和 S. Mallat. 旋转、缩放和变形不变的散射用于纹理区分. 在2013 IEEE Conference on Computer Vision and Pattern Recognition会议中, pages 1233–1240, 2013.

[17] N. Silberman 和 S. Guadarrama. Tf-slim, 2016.(Tf-slim,2016年)

[18] K. Simonyan 和 A. Zisserman. 非常深的卷积神经网络用于大规模图像识别。arXiv预印本arXiv:1409.1556,2014年。

[19] C. Szegedy,S. Ioffe 和 V. Vanhoucke. Inception-v4,inception-resnet和残差连接对学习的影响。arXiv预印本arXiv:1602.07261,2016年。

[20] C. Szegedy,W. Liu,Y. Jia,P. Sermanet,S. Reed,D. Anguelov,D. Erhan,V. Vanhoucke 和 A. Rabinovich. 用卷积更深入。在IEEE计算机视觉与模式识别会议论文集中,第1-9页,2015年。

[21] C. Szegedy,V. Vanhoucke,S. Ioffe,J. Shlens 和 Z. Wojna. 重新思考计算机视觉中的Inception架构。arXiv预印本arXiv:1512.00567,2015年。

[22] T. Tieleman 和 G. Hinton. 除以最近幅度的梯度的平均值。COURSERA:神经网络的机器学习,第4讲,2012年。访问日期:2015年11月5日。

[23] V. Vanhoucke. 在规模上学习视觉表示。ICLR,2014年。

[24] M. Wang,B. Liu 和 H. Foroosh. 分解卷积神经网络。arXiv预印本arXiv:1608.04337,2016年。

[25] M. D. Zeiler 和 R. Fergus. 可视化和理解卷积网络。在计算机视觉-ECCV 2014中,第818-833页。Springer,2014年。

猜你喜欢

转载自blog.csdn.net/ADICDFHL/article/details/133296877