第三十周:综述阅读+文献阅读+pytorch学习
- 摘要
- Abstract
- 1. 深度可分离卷积
- 1.1 文献摘要
- 1.2 引言
- 1.3 Inception 模块
- 1.4 Inception模块与深度可分离卷积的差别
- 1.5 Xception架构
- 1.6 实验
- 1.7 总结
- 1.8 创新点
摘要
深度可分离卷积是一种卷积神经网络(CNN)中的卷积操作,其设计目的是在保持性能的同时减少参数量和计算复杂度。这种卷积操作通常分为两个步骤:深度卷积(Depthwise Convolution)和逐点卷积(Pointwise Convolution)。由于深度卷积只在每个通道上进行卷积,而不是在所有通道上同时进行,因此参数量大大减少。这有助于减小模型大小,提高模型在资源有限的环境中的可用性。本文将通过 Xception: Deep Learning with Depthwise Separable Convolutions ,我们深入了解深度可分离卷积
Abstract
Deeply separable convolution is a convolution operation in convolutional neural networks (CNNs) designed to reduce the number of parameters and computational complexity while maintaining performance. This convolution operation is usually divided into two steps: depthwise convolution and pointwise convolution. The number of parameters is greatly reduced because deep convolution is performed only on each channel, not on all channels simultaneously. This helps in reducing the model size and improves the usability of the model in resource constrained environments. In this article, through Xception: Deep Learning with Depthwise Separable Convolutions , we take a deeper look at deep separable convolution
1. 深度可分离卷积
文献来源:Xception: Deep Learning with Depthwise Separable Convolutions
1.1 文献摘要
作者将卷积神经网络中的 Inception 模块解释为常规卷积和深度可分离卷积运算(深度卷积后跟点卷积)之间的中间步骤。从这个角度来看,深度可分离卷积可以理解为具有最大数量塔的 Inception 模块。作者在该文献中证明,这种被称为 Xception 的架构在 ImageNet 数据集(Inception V3 的设计目标)上稍微优于 Inception V3,并且在包含 3.5 亿张图像和 17,000 个类别的更大图像分类数据集上显着优于 Inception V3。由于 Xception 架构具有与 Inception V3 相同数量的参数,因此性能提升并不是由于容量的增加,而是由于更有效地使用模型参数。
1.2 引言
近年来,卷积神经网络已成为计算机视觉领域的主要算法,并且开发设计它们的方法已成为备受关注的主题。卷积神经网络设计的历史始于 LeNet 式模型,它是用于特征提取的简单卷积堆栈和用于空间子采样的最大池化操作。 2012 年,这些想法被细化为 AlexNet 架构,其中卷积操作在最大池化操作之间重复多次,从而使网络能够在每个空间尺度上学习更丰富的特征。
Inception 类型模型的基本构建块是 Inception 模块,该模块存在多个不同的版本。在下图中,展示了 Inception 模块的规范形式,如 Inception V3 架构中所示。 Inception 模型可以理解为此类模块的堆栈。这与早期的 VGG 式网络不同,早期的 VGG 式网络是简单卷积层的堆栈。
1.3 Inception 模块
卷积层尝试学习 3D 空间中的滤波器,具有 2 个空间维度(宽度和高度)和一个通道维度;因此,单个卷积核的任务是同时映射跨通道相关性和空间相关性。
Inception 模块是通过将其显式分解为一系列操作来使该过程变得更容易、更高效,这些操作将独立地查看跨通道相关性和空间相关性。更准确地说,典型的 Inception 模块首先通过一组 1x1 卷积查看跨通道相关性,将输入数据映射到小于原始输入空间的 3 或 4 个独立空间,然后将所有相关性映射到这些较小的 3D 空间中,通过常规 3x3 或 5x5 卷积。如上图所示。
考虑 Inception 模块的简化版本,该模块仅使用一种尺寸的卷积(例如 3x3),并且不包括平均池塔。该 Inception 模块可以重新表述为一个大型 1x1 卷积,然后是对输出通道的非重叠段进行操作的空间卷积。
基于这个更强的假设,Inception 模块的“极端”版本将首先使用 1x1 卷积来映射跨通道相关性,然后分别映射每个输出通道的空间相关性。如下图所示。Inception 模块的这种极端形式几乎与深度可分离卷积(一种已在神经网络中使用的操作)相同。
深度可分离卷积,在 TensorFlow 和 Keras 等深度学习框架中通常称为“可分离卷积”,由深度卷积组成,即在输入的每个通道上独立执行的空间卷积,然后是逐点卷积,即 1x1 卷积,将深度卷积输出的通道投影到新的通道空间上。不要将其与空间可分离卷积混淆,空间可分离卷积在图像处理社区中通常也称为“可分离卷积”。
1.4 Inception模块与深度可分离卷积的差别
- 操作顺序:通常实现的深度可分离卷积(例如在 TensorFlow 中)首先执行通道空间卷积,然后执行 1x1 卷积,而 Inception 首先执行 1x1 卷积
- 第一次操作后是否存在非线性。在 Inception 中,这两个操作都遵循 ReLU 非线性,但是深度可分离卷积通常在没有非线性的情况下实现。
位于常规 Inception 模块和深度可分离卷积之间的 Inception 模块的其他中间公式也是可能的:实际上,常规卷积和深度可分离卷积之间存在离散谱,由独立通道空间的数量参数化用于执行空间卷积的段。常规卷积(前面是 1x1 卷积)处于该范围的一个极端,对应于单段情况;深度可分离卷积对应于另一个极端,其中每个通道有一个段; Inception 模块位于两者之间,将数百个通道分为 3 或 4 个部分。这种中间模块的特性似乎尚未被探索过。
做出这些观察后,作者建议可以通过用深度可分离卷积替换 Inception 模块来改进 Inception 系列架构,即通过构建深度可分离卷积堆栈的模型。 TensorFlow 中有效的深度卷积实现使这一点变得实用。作者提出了一种基于此思想的卷积神经网络架构,其参数数量与 Inception V3 相似,并在两个大规模图像分类任务上针对 Inception V3 评估了其性能。
1.5 Xception架构
作者提出了一种完全基于深度可分离卷积层的卷积神经网络架构。可以做出以下假设:卷积神经网络特征图中跨通道相关性和空间相关性的映射可以完全解耦。因为这个假设是 Inception 架构底层假设的更强版本,所以作者将提出的架构命名为 Xception。
下图给出了网络规格的完整描述。Xception 架构有 36 个卷积层,构成网络的特征提取基础。在作者的实验评估中,将专门研究图像分类,卷积基础后面将是逻辑回归层。 也可以在逻辑回归层之前插入全连接层。 36 个卷积层被构造为 14 个模块,除了第一个和最后一个模块外,所有模块周围都有线性残差连接。
简而言之,Xception 架构是具有残差连接的深度可分离卷积层的线性堆栈。
1.6 实验
作者选择将 Xception 与 Inception V3 架构进行比较,因为它们的规模相似:Xception 和 Inception V3 的参数数量几乎相同,因此任何性能差距都不能归因于网络容量的差异。数据集ImageNet 数据集和JFT 数据集。
JFT 是 Google 内部的大规模图像分类数据集,由 Hinton 等人首次提出。 ,其中包含超过 3.5 亿张高分辨率图像,并用来自 17,000 个类的集合的标签进行注释。为了评估在 JFT 上训练的模型的性能,我们使用辅助数据集 FastEval14k。
FastEval14k 是一个包含 14,000 张图像的数据集,其中包含来自约 6,000 个类别的密集注释(平均每个图像 36.5 个标签)。在此数据集上,我们使用前 100 个预测的平均精度 (MAP@100) 来评估性能,并通过一个分数来衡量每个类别对 MAP@100 的贡献,并评估该类别在社交媒体图像中的常见程度(因此也很重要) 。此评估程序旨在捕获社交媒体中频繁出现的标签的表现,这对于 Google 的生产模型至关重要。
所有网络均使用 TensorFlow 框架 实现,并分别在 60 个 NVIDIA K80 GPU 上进行训练。对于ImageNet实验,作者使用数据并行和同步梯度下降来实现最佳分类性能,而对于JFT作者使用异步梯度下降来加速训练。
所有评估均使用单次输入图像和单个模型进行。 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 等人报告的 ImageNet 结果。对于 ResNet-50、ResNet-101 和 ResNet。
1.7 总结
本文展示了卷积和深度可分离卷积如何位于离散谱的两个极端,而 Inception 模块是两者之间的中间点。这一观察结果促使我们建议在神经计算机视觉架构中用深度可分离卷积替换 Inception 模块。我们基于这个想法提出了一种新颖的架构,名为 Xception,它具有与 Inception V3 类似的参数数量。与 Inception V3 相比,Xception 在 ImageNet 数据集上的分类性能提升较小,但在 JFT 数据集上的分类性能提升较大。我们预计深度可分离卷积将成为未来卷积神经网络架构设计的基石,因为它们提供与 Inception 模块类似的属性,但与常规卷积层一样易于使用。
1.8 创新点
- 分离空间特征学习和通道间特征学习: 深度可分离卷积将传统的卷积操作分解为两个步骤:深度卷积(Depthwise Convolution)和逐点卷积(Pointwise Convolution)。深度卷积对每个输入通道进行卷积,而逐点卷积则在通道间进行线性组合。这种分离的方式使得网络可以更有效地学习空间特征和通道特征,从而减少参数量和计算复杂度。
- 减少参数数量: 深度可分离卷积减少了模型的参数数量。由于深度卷积只在每个通道上进行卷积,而不是在所有通道上同时进行,因此参数量大大减少。这有助于减小模型大小,提高模型在资源有限的环境中的可用性。
- 计算效率提高: 分离的卷积操作减少了计算的复杂度。深度卷积的计算成本相对较低,逐点卷积的计算量也相对较小。因此,深度可分离卷积在移动设备和嵌入式系统等资源受限的环境中更加高效。
- 更好的泛化能力: 由于深度可分离卷积能够更有效地学习空间和通道特征,它在许多视觉任务中表现出更好的泛化能力。这种结构有助于网络更好地捕获输入数据的层次性和抽象特征。
总的来说,深度可分离卷积通过创新地分离通道特征学习和空间特征学习,以及减少参数数量和计算复杂度,提高了卷积神经网络的效率和性能。这种结构在许多现代神经网络中广泛应用,特别是在移动端和嵌入式设备上,以实现轻量级和高性能的深度学习模型。