【CV】MobileNet:使用深度可分离卷积实现用于嵌入式设备的 CNN 架构

论文名称:MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
论文下载:https://arxiv.org/abs/1704.04861
论文年份:2017
论文被引:12977(2022/05/10)
论文代码:https://github.com/tensorflow/tensorflow/blob/v2.4.1/tensorflow/python/keras/applications/mobilenet.py

论文总结

MobileNets 是一个轻量且高效的通用架构,可以与多种计算机视觉任务的模型结合。其由一个高效的网络架构和两个模型收缩超参数组成。具体地,核心层由 深度可分离卷积 组成,两个参数为宽度乘数和分辨率乘数。其中,宽度参数用于减小卷积核的尺寸,分辨率乘数用于减小输入图像的尺寸。MobileNets 可以轻松地满足移动和嵌入式视觉应用的设计要求。

深度可分离卷积(depthwise separable convolutions)是一种分解卷积的形式,它将标准卷积分解为深度卷积(depthwise)和一个 1×1 的点卷积(pointwise)。对于 MobileNets,深度卷积将单个滤波器应用于每个输入通道。然后逐点卷积应用 1 × 1 卷积来组合深度卷积的输出。标准卷积在一个步骤中滤波并将输入组合成一组新的输出。深度可分离卷积将其分为两层,一个用于滤波的单独层和一个用于组合的单独层。这种分解具有显著减少计算量和模型大小的效果。

Abstract

We present a class of efficient models called MobileNets for mobile and embedded vision applications. MobileNets are based on a streamlined architecture that uses depthwise separable convolutions to build light weight deep neural networks. We introduce two simple global hyperparameters that efficiently trade off between latency and accuracy. These hyper-parameters allow the model builder to choose the right sized model for their application based on the constraints of the problem. We present extensive experiments on resource and accuracy tradeoffs and show strong performance compared to other popular models on ImageNet classification. We then demonstrate the effectiveness of MobileNets across a wide range of applications and use cases including object detection, finegrain classification, face attributes and large scale geo-localization.

我们提出了一类称为 MobileNets 的高效模型,用于移动和嵌入式视觉应用。 MobileNets 基于流线型架构,使用深度可分离卷积来构建轻量级深度神经网络。我们引入了两个简单的全局超参数,可以有效地在延迟和准确性之间进行权衡。这些超参数允许模型构建者根据问题的约束为其应用程序选择合适大小的模型。我们对资源和准确性权衡进行了广泛的实验,并与 ImageNet 分类上的其他流行模型相比表现出强大的性能。然后,我们展示了 MobileNets 在广泛的应用和用例中的有效性,包括目标检测,细粒度分类,人脸属性和大规模地理定位。

在这里插入图片描述

1. Introduction

自从 AlexNet [19] 通过赢得 ImageNet 挑战赛:ILSVRC 2012 [24] 推广深度卷积神经网络以来,卷积神经网络在计算机视觉中变得无处不在。总的趋势是制作更深、更复杂的网络以实现更高的准确度 [27, 31, 29, 8]。然而,这些提高准确性的进步并不一定会使网络在规模和速度方面更有效率。在机器人、自动驾驶汽车和增强现实等许多现实世界应用中,识别任务需要在计算能力有限的平台上及时执行

本文描述了一种高效的网络架构和一组两个超参数,以构建非常小的、低延迟的模型,可以轻松地满足移动和嵌入式视觉应用的设计要求。第 2 节回顾了构建小型模型的先前工作。第 3 节描述了 MobileNet 架构和两个超参数宽度乘数和分辨率乘数,以定义更小、更高效的 MobileNet。第 4 节描述了 ImageNet 上的实验以及各种不同的应用程序和用例。第 5 节以总结和结论结束。

2. Prior Work

在最近的文献中,人们对构建小型高效神经网络的兴趣日益浓厚,例如 [16, 34, 12, 36, 22]。许多不同的方法通常可以分为压缩预训练网络或直接训练小型网络。本文提出了一类网络架构,允许模型开发人员专门选择一个与其应用程序的资源限制(延迟,大小)相匹配的小型网络。MobileNets 主要专注于优化延迟,但网络较小。许多关于小型网络的论文只关注规模而不考虑速度。

MobileNets 主要由最初在 [26] 中引入的深度可分离卷积构建,随后用于 Inception 模型 [13] 以减少前几层的计算

  • Flattened networks [16] 用完全分解的卷积构建了一个网络,并展示了极度分解网络的潜力。
  • 与当前的论文无关,Factorized Networks[34] 引入了类似的分解卷积以及拓扑连接的使用。
  • 随后,Xception 网络 [3] 演示了如何扩展深度可分离滤波器以超越 Inception V3 网络。
  • 另一个小型网络是 Squeezenet [12],它使用瓶颈(bottleneck)方法来设计一个非常小的网络。
  • 其他简化计算网络包括结构化变换(structured transform)网络 [28] 和 deep fried convnets 网络 [37]。

获得小型网络的另一种方法是缩小、分解或压缩预训练网络

  • 基于乘积量化的压缩 [36],哈希 [2],剪枝,向量量化和霍夫曼编码 [5] 已在文献中提出。
  • 此外,已经提出了各种分解来加速预训练网络 [14, 20]。
  • 训练小型网络的另一种方法是蒸馏 [9],它使用较大的网络来训练较小的网络。它是我们方法的补充,并在第 4 节中的一些用例中进行了介绍。
  • 另一种新兴方法是低比特网络 [4,22,11]。

3. MobileNet Architecture

在本节中,我们首先描述构建 MobileNet 的核心层,这些核心层是深度可分离滤波器。然后我们描述了 MobileNet 网络结构,最后描述了两个模型收缩超参数——宽度乘数和分辨率乘数。

3.1. Depthwise Separable Convolution

在这里插入图片描述

之前的博客已经介绍过不同卷积类型。这里再总结一下深度可分离卷积的实现:

img

MobileNet 模型基于深度可分离卷积(depthwise separable convolutions),这是一种分解卷积的形式,它将标准卷积分解为深度卷积(depthwise)和一个 1×1 的点卷积(pointwise)。对于 MobileNets,深度卷积将单个滤波器应用于每个输入通道。然后逐点卷积应用 1 × 1 卷积来组合深度卷积的输出标准卷积在一个步骤中滤波并将输入组合成一组新的输出。深度可分离卷积将其分为两层,一个用于滤波的单独层和一个用于组合的单独层。这种分解具有显著减少计算量和模型大小的效果。图 2 显示了如何将标准卷积 2(a) 分解为深度卷积 2(b) 和 1 × 1 点卷积 2©。

标准卷积层将 D F × D F × M D_F × D_F × M DF×DF×M 特征图 F \mathbf{F} F 作为输入,并生成 D F × D F × N D_F × D_F × N DF×DF×N 特征图 G \mathbf{G} G,其中 D F D_F DF 是正方形输入特征图的空间宽度和高度, M M M 是输入通道数(输入深度), D G D_G DG 是正方形输出特征图的空间宽度和高度, N N N 是输出通道数(输出深度)。

标准卷积层由大小为 D K × D K × M × N D_K ×D_K ×M ×N DK×DK×M×N 的卷积核 K \mathbf{K} K 参数化,其中 D K D_K DK 是假定为正方形的卷积核的空间维度, M M M 是输入通道数, N N N 是前面定义的输出通道数。

假设步幅为 1 和填充的标准卷积的输出特征图计算如下:
在这里插入图片描述

标准卷积的计算成本为:
在这里插入图片描述

解释:经过卷积(有padding)之后的特征图大小为 D F × D F D_F × D_F DF×DF,其中每个像素的计算量为: D K × D K × M × N D_K × D_K × M × N DK×DK×M×N

其中计算成本乘法地取决于输入通道的数量 M M M、输出通道的数量 N N N、卷积核大小 D K × D K D_K ×D_K DK×DK 和特征图大小 D F × D F D_F × D_F DF×DF。 MobileNet 模型解决了这些术语及其相互作用。首先,它使用深度可分离卷积来打破输出通道数和卷积核大小之间的相互作用

标准卷积操作具有基于卷积核滤波特征并组合特征以产生新表示的效果。滤波和组合步骤可以通过使用称为深度可分离卷积的分解卷积分为两个步骤,以显著降低计算成本。

深度可分离卷积由两层组成:深度卷积和点卷积

  • 使用深度卷积为每个输入通道(输入深度)应用一个滤波器

  • 一个简单的 1×1 点卷积,然后用于创建深度层输出的线性组合

MobileNets 对两个层都使用了 batch norm 和 ReLU 非线性。

每个输入通道(输入深度)的一个滤波器的深度卷积可以写成:
在这里插入图片描述
其中 K ^ \hat{K} K^ 是大小为 D K × D K × M D_K × D_K × M DK×DK×M 的深度卷积核,其中 K ^ \hat{K} K^ 中的第 m m m 个滤波器应用于 F F F 中的第 m m m 个通道,以生成滤波后的输出特征图 G ^ \hat{G} G^ 的第 m m m 个通道。

深度卷积的计算成本为:
在这里插入图片描述
相对于标准卷积,深度卷积非常有效。然而,它只滤波输入通道,并没有组合它们来创建新特征。因此,需要一个额外的层,通过 1 × 1 卷积计算深度卷积输出的线性组合,以生成这些新特征。

深度卷积和 1×1(逐点)卷积的组合称为深度可分离卷积,最初是在 [26] 中引入的。

深度可分离卷积成本:
在这里插入图片描述
这是 depthwise 和 1×1 pointwise 卷积的总和。

通过将卷积表示为滤波和组合的两步过程,可以减少以下计算:
在这里插入图片描述
MobileNet 使用 3 × 3 深度可分离卷积,它使用的计算量比标准卷积少 8 到 9 倍,而准确度仅略有降低,如第 4 节所示

空间维度的额外分解,例如 [16, 31] 并没有节省太多额外的计算,因为在深度卷积中花费的计算很少。

3.2. Network Structure and Training

在这里插入图片描述
MobileNet 结构建立在上一节中提到的深度可分离卷积之上,但第一层是全卷积。通过以如此简单的术语定义网络,我们能够轻松地探索网络拓扑以找到一个好的网络。 MobileNet 架构在表 1 中定义。所有层都遵循 batch norm [13] 和 ReLU 非线性,但最终全连接层除外,它没有非线性激活,输入到 softmax 层进行分类。图 3 具有常规卷积,batchnorm 和 ReLU 非线性的层与具有深度卷积,1×1 逐点卷积以及每个卷积层之后的 batchnorm 和 ReLU 的分解层进行了对比。在深度卷积和第一层中使用跨步卷积处理下采样。最终的平均池化在全连接层之前将空间分辨率降低到 1将深度卷积和点卷积计算为单独的层,MobileNet 有 28 层
在这里插入图片描述
仅仅根据少量的多加(Mult-Adds)来定义网络是不够的。确保这些操作可以有效实施也很重要。例如,非结构化稀疏矩阵运算通常不会比密集矩阵运算快,直到非常高的稀疏度。我们的模型结构将几乎所有的计算都放入密集的 1 × 1 卷积中。这可以通过高度优化的通用矩阵乘法 (GEMM) 函数来实现。卷积通常由 GEMM 实现,但需要在内存中进行名为 im2col 的初始重新排序,以便将其映射到 GEMM。例如,这种方法用于流行的 Caffe 包 [15]。1×1 卷积不需要在内存中进行这种重新排序,并且可以直接使用 GEMM 实现,它是最优化的数值线性代数算法之一。如表 2 所示,MobileNet 将 95% 的计算时间用于 1 × 1 卷积,其中也有 75% 的参数几乎所有附加参数都在全连接层中
在这里插入图片描述
MobileNet 模型在 TensorFlow [1] 中使用 RMSprop [33] 进行训练,该模型具有类似于 Inception V3 [31] 的异步梯度下降。然而,与训练大型模型相反,我们使用较少的正则化和数据增强技术,因为小型模型在过拟合方面的问题较少。在训练 MobileNets 时,我们不使用侧头或标签平滑,并通过限制大型 Inception 训练中使用的小作物的大小来额外减少图像失真量 [31]。此外,我们发现在深度滤波器上放置很少或没有权重衰减(l2 正则化)非常重要,因为它们中的参数非常少。对于下一节中的 ImageNet 基准测试,所有模型都使用相同的训练参数进行训练,而不管模型的大小。

3.3. Width Multiplier: Thinner Models

尽管基本的 MobileNet 架构已经很小且延迟很低,但很多时候特定的用例或应用程序可能需要模型更小更快。为了构建这些更小、计算成本更低的模型,我们引入了一个非常简单的参数 α,称为宽度乘数。宽度乘数 α 的作用是在每一层均匀地细化(thin)网络。对于给定的层和宽度乘数 α,输入通道的数量 M 变为 αM,输出通道的数量 N 变为 αN

具有宽度乘数 α 的深度可分离卷积的计算成本为:
在这里插入图片描述
其中 α ∈ ( 0 , 1 ] α ∈ (0, 1] α(0,1],典型设置为 1 , 0.75 , 0.5 , 0.25 1, 0.75, 0.5, 0.25 1,0.75,0.5,0.25。α = 1 是基线 MobileNet,α < 1 是缩减的 MobileNets。宽度乘数具有降低计算成本和二次方参数数量的效果大约 α 2 α^2 α2。宽度乘数可以应用于任何模型结构,以定义一个新的更小的模型,具有合理的精度,延迟和大小权衡。它用于定义一个需要从头开始训练的新的缩减结构。

3.4. Resolution Multiplier: Reduced Representation

降低神经网络计算成本的第二个超参数是分辨率乘数 ρ ρ ρ。我们将其应用于输入图像,并且每一层的内部表示随后被相同的乘数减少。在实践中,我们通过设置输入分辨率来隐式设置 ρ ρ ρ

我们现在可以将网络核心层的计算成本表示为具有宽度乘数 α α α 和分辨率乘数 ρ ρ ρ 的深度可分离卷积:
在这里插入图片描述
其中 ρ ∈ ( 0 , 1 ] ρ ∈ (0, 1] ρ(0,1] 通常是隐式设置的,因此网络的输入分辨率为 224 , 192 , 160 , 128 224,192,160,128 224,192,160,128 ρ = 1 ρ = 1 ρ=1 是基线 MobileNet, ρ < 1 ρ < 1 ρ<1 是减少计算 MobileNets。分辨率乘数具有将计算成本降低 ρ 2 ρ^2 ρ2 的效果

作为示例,我们可以查看 MobileNet 中的一个典型层,并了解深度可分离卷积、宽度乘数和分辨率乘数如何降低成本和参数。表 3 显示了层的计算和参数数量,因为架构收缩方法依次应用于层。第一行显示了一个完整卷积层的 Mult-Adds 和参数,输入特征图大小为 14 × 14 × 512 14 × 14 × 512 14×14×512,卷积核 K K K 大小为 3 × 3 × 512 × 512 3 × 3 × 512 × 512 3×3×512×512。我们将在下一节中详细介绍在资源和准确性之间进行权衡。
在这里插入图片描述

4. Experiments

在本节中,我们首先研究深度卷积的影响以及通过减少网络宽度而不是层数来选择收缩。然后,我们展示了基于两个超参数减少网络的权衡:宽度乘数和分辨率乘数,并将结果与许多流行模型进行比较。然后,我们研究了应用于许多不同应用程序的 MobileNets。

4.1. Model Choices

首先,我们展示了具有深度可分离卷积的 MobileNet 与使用全卷积构建的模型相比的结果。在表 4 中,我们看到,与全卷积相比,使用深度可分离卷积只会将 ImageNet 上的准确率降低 1%,从而极大地节省了多重加法和参数
在这里插入图片描述
接下来,我们展示了将具有宽度乘数的较薄模型与使用较少层的较浅模型进行比较的结果。为了使 MobileNet 更浅,去除了表 1 中特征大小为 14×14×512 的 5 层可分离滤波器。表 5 显示,在相似的计算和参数数量下,使 MobileNets 更薄比使其更浅 3% 好

4.2. Model Shrinking Hyperparameters

表 6 显示了使用宽度乘数 α 缩小 MobileNet 架构的准确性、计算量和大小权衡。准确度平稳下降,直到架构在 α = 0.25 时变得太小。
在这里插入图片描述
表 7 显示了通过训练具有降低的输入分辨率的 MobileNets 对不同分辨率乘数的精度、计算和大小权衡。精度在分辨率范围内平稳下降。
在这里插入图片描述
图 4 显示了由宽度乘数 α ∈ {1, 0.75, 0.5, 0.25} 和分辨率 {224, 192, 160, 128} 的叉积构成的 16 个模型的 ImageNet Accuracy 和计算之间的权衡。当模型在 α = 0.25 处变得非常小时,结果是对数线性的,并带有跳跃
在这里插入图片描述
图 5 显示了由宽度乘数 α ∈ {1, 0.75, 0.5, 0.25} 和分辨率 {224, 192, 160, 128} 的叉积制成的 16 个模型的 ImageNet Accuracy 和参数数量之间的权衡

表 8 将完整的 MobileNet 与原始的 GoogleNet [30] 和 VGG16 [27] 进行了比较。 MobileNet 几乎与 VGG16 一样准确,同时体积小 32 倍,计算密集度低 27 倍。它比 GoogleNet 更准确,同时体积更小,计算量减少 2.5 倍以上
在这里插入图片描述
表 9 比较了宽度乘数 α = 0.5 和分辨率降低 160 × 160 的缩减 MobileNet。缩减 MobileNet 比 AlexNet [19] 好 4%,同时比 AlexNet 小 45 倍,计算量少 9.4 倍。在大小相同且计算量减少 22 倍的情况下,它也比 Squeezenet [12] 好 4%

4.3. Fine Grained Recognition

我们训练 MobileNet 在斯坦福狗数据集 [17] 上进行细粒度识别。我们扩展了 [18] 的方法,并从网络上收集了比 [18] 更大但噪声更大的训练集。我们使用嘈杂的网络数据来预训练细粒度的狗识别模型,然后在斯坦福狗训练集上微调模型。斯坦福狗测试集的结果在表 10 中。MobileNet 几乎可以在大大减少计算量和大小的情况下达到 [18] 的最新结果。
在这里插入图片描述

4.4. Large Scale Geolocalizaton

PlaNet [35] 将确定照片拍摄地点的任务作为分类问题。该方法将地球划分为作为目标类的地理单元格,并在数百万张带有地理标签的照片上训练卷积神经网络。 PlaNet 已被证明可以成功地定位大量照片,并且在完成相同任务的情况下优于 Im2GPS [6, 7]
在这里插入图片描述
我们使用 MobileNet 架构对相同数据重新训练 PlaNet。而基于 Inception V3 架构 [31] 的完整 PlaNet 模型具有 5200 万个参数和 57.4 亿个多重加法。 MobileNet 模型只有 1300 万个参数,通常 300 万个用于主体,1000 万个用于最后一层和 58 万个多重加法如表 11 中所示,MobileNet 版本的性能与 PlaNet 相比仅略有下降,尽管它更加紧凑。此外,它仍然大大优于 Im2GPS

4.5. Face Attributes

MobileNet 的另一个用例是压缩具有未知或深奥训练程序的大型系统。在人脸属性分类任务中,我们展示了 MobileNet 和蒸馏 [9] 之间的协同关系,蒸馏 [9] 是一种用于深度网络的知识迁移技术。我们寻求减少具有 7500 万个参数和 16 亿个多重加法的大型人脸属性分类器。分类器在类似于 YFCC100M [32] 的多属性数据集上进行训练
在这里插入图片描述
我们使用 MobileNet 架构提取人脸属性分类器Distillation [9] 通过训练分类器来模拟更大模型的输出而不是真实标签,从而能够从大型(并且可能是无限的)未标记数据集进行训练。结合蒸馏训练的可扩展性和 MobileNet 的简约参数化,终端系统不仅不需要正则化(例如权重衰减和提前停止),而且还展示了增强的性能。从表 12 中可以看出,基于 MobileNet 的分类器对激进的模型收缩具有弹性:它实现了与内部相似的跨属性平均精度(平均 AP),同时仅消耗 1% 的 Multi-Adds

4.6. Object Detection

MobileNet 也可以部署为现代目标检测系统中的有效基础网络。我们根据最近赢得 2016 年 COCO 挑战赛 [10] 的工作报告了针对 COCO 数据进行对象检测训练的 MobileNet 的结果。在表 13 中,MobileNet 在 Faster-RCNN [23] 和 SSD [21] 框架下与 VGG 和 Inception V2 [13] 进行了比较。在我们的实验中,SSD 使用 300 输入分辨率(SSD 300)进行评估,Faster-RCNN 与 300 和 600 输入分辨率(FasterRCNN 300,Faster-RCNN 600)进行了比较。 Faster-RCNN 模型对每张图像评估 300 个 RPN 提议框。这些模型在 COCO train+val 上进行训练,不包括 8k minival 图像,并在 minival 上进行评估。对于这两个框架,MobileNet 实现了与其他网络相当的结果,而计算复杂度和模型大小只有一小部分。
在这里插入图片描述

4.7. Face Embeddings

FaceNet 模型是最先进的人脸识别模型 [25]。它基于三元组损失(triplet loss)构建人脸嵌入。为了构建移动 FaceNet 模型,我们使用蒸馏法通过最小化 FaceNet 和 MobileNet 在训练数据上输出的平方差来进行训练。非常小的 MobileNet 模型的结果可以在表 14 中找到。
在这里插入图片描述

5. Conclusion

我们提出了一种基于深度可分离卷积的称为 MobileNets 的新模型架构。我们调查了一些导致高效模型的重要设计决策。然后,我们演示了如何使用宽度乘数和分辨率乘数来构建更小更快的 MobileNet,方法是权衡合理的准确度以减小大小和延迟。然后,我们将不同的 MobileNets 与流行的模型进行了比较,展示了卓越的尺寸、速度和准确性特征。最后,我们展示了 MobileNet 在应用于各种任务时的有效性。作为帮助采用和探索 MobileNets 的下一步,我们计划在 TensorFlow 中发布模型。

猜你喜欢

转载自blog.csdn.net/weixin_39653948/article/details/124691121