Abstract
我们提出了一类名为 MobileNets 的高效模型,用于移动和嵌入式视觉应用。 MobileNet 基于流线型架构,使用深度可分离卷积来构建轻量级深度神经网络。 我们引入了两个简单的全局超参数,可以有效地在延迟和准确性之间进行权衡。 这些超参数允许模型构建者根据问题的约束为其应用程序选择合适大小的模型。 我们对资源和准确性权衡进行了广泛的实验,并且与其他流行的 ImageNet 分类模型相比表现出了强大的性能。 然后,我们展示了 MobileNet 在各种应用和用例中的有效性,包括对象检测、细粒度分类、人脸属性和大规模地理定位。
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]。 许多不同的方法通常可以分为压缩预训练网络或直接训练小型网络。 本文提出了一类网络架构,允许模型开发人员专门选择与其应用程序的资源限制(延迟、大小)相匹配的小型网络。 MobileNet 主要专注于优化延迟,但也产生小型网络。 许多关于小型网络的论文只关注大小而不考虑速度。
MobileNet 主要由深度可分离卷积构建而成,最初在 [26] 中引入,随后在 Inception 模型 [13] 中使用,以减少前几层的计算。 扁平网络[16]用完全分解的卷积构建了一个网络,并展示了极度分解网络的潜力。 独立于当前的论文,分解网络[34]引入了类似的分解卷积以及拓扑连接的使用。 随后,Xception 网络 [3] 演示了如何扩展深度可分离滤波器以超越 Inception V3 网络。 另一个小型网络是 Squeezenet [12],它使用瓶颈方法来设计一个非常小的网络。 其他减少计算的网络包括结构化变换网络 [28] 和深度卷积网络 [37]。
获得小型网络的另一种方法是缩小、分解或压缩预训练网络。 文献中已经提出了基于乘积量化[36]、散列[2]、剪枝、矢量量化和霍夫曼编码[5]的压缩。 此外,还提出了各种分解来加速预训练网络 [14, 20]。 训练小型网络的另一种方法是蒸馏[9],它使用较大的网络来训练较小的网络。 它是对我们方法的补充,并在第 4 节的一些用例中进行了介绍。另一种新兴方法是低位网络 [4,22,11]。
3. MobileNet Architecture
在本节中,我们首先描述 MobileNet 构建的核心层,即深度可分离滤波器。 然后,我们描述 MobileNet 网络结构,并以两个模型收缩超参数宽度乘数和分辨率乘数的描述作为结论。
3.1. Depthwise Separable Convolution
MobileNet 模型基于深度可分离卷积,它是分解卷积的一种形式,它将标准卷积分解为深度卷积和称为点卷积的 1×1 卷积。 对于 MobileNets,深度卷积将单个滤波器应用于每个输入通道。 然后,逐点卷积应用 1×1 卷积来组合深度卷积的输出。 标准卷积可以一步过滤输入并将其组合成一组新的输出。 深度可分离卷积将其分为两层,一个用于过滤的单独层和一个用于组合的单独层。 这种因式分解可以大大减少计算量和模型大小。 图 2 显示了标准卷积 2(a) 如何分解为深度卷积 2(b) 和 1 × 1 逐点卷积 2(c)。
标准卷积层将 DF × DF × M 特征图 F 作为输入,并生成 DF × DF × N 特征图 G,其中 DF 是方形输入特征图 1 的空间宽度和高度,M 是输入通道数( 输入深度),DG 是方形输出特征图的空间宽度和高度,N 是输出通道数(输出深度)。
标准卷积层由大小为 DK×DK×M×N 的卷积核 K 参数化,其中 DK 是假设为正方形的核的空间维度,M 是输入通道的数量,N 是前面定义的输出通道的数量。
假设步长为 1 且填充为标准卷积的输出特征图计算如下:
标准卷积的计算成本为:
其中计算成本乘法取决于输入通道数 M、输出通道数 N、内核大小 Dk × Dk 和特征图大小 DF × DF。 MobileNet 模型解决了这些术语及其相互作用。 首先,它使用深度可分离卷积来打破输出通道数和内核大小之间的相互作用。
标准卷积运算具有基于卷积核过滤特征并组合特征以产生新的表示的效果。 通过使用称为深度可分离卷积的分解卷积,可以将过滤和组合步骤分为两个步骤,从而大幅降低计算成本。
深度可分离卷积由两层组成:深度卷积和点卷积。 我们使用深度卷积为每个输入通道(输入深度)应用一个滤波器。 然后使用逐点卷积(简单的 1×1 卷积)创建深度层输出的线性组合。 MobileNets 对两个层都使用批归一化和 ReLU 非线性。
每个输入通道(输入深度)一个滤波器的深度卷积可以写为:
其中 K^ 是大小为 DK × DK × M 的深度卷积核,其中 K^ 中的第 m 个滤波器应用于 F 中的第 m 个通道,以生成滤波输出特征图 ^ G 的第 m 个通道。
深度卷积的计算成本为:
深度卷积相对于标准卷积非常有效。 然而,它仅过滤输入通道,不会将它们组合起来创建新功能。 因此,需要一个额外的层来通过 1 × 1 卷积计算深度卷积输出的线性组合,以生成这些新特征。
深度卷积和 1 × 1(逐点)卷积的组合称为深度可分离卷积,最初在[26]中引入。
深度可分离卷积成本:
这是深度卷积和 1×1 逐点卷积的总和。
通过将卷积表示为过滤和组合的两步过程,我们可以减少以下计算:
MobileNet 使用 3 × 3 深度可分离卷积,其计算量比标准卷积少 8 到 9 倍,而精度仅略有下降,如第 4 节所示。
空间维度上的额外分解(例如[16, 31])并不能节省太多额外的计算,因为在深度卷积中花费的计算量非常少。
3.2. Network Structure and Training
MobileNet 结构建立在上一节中提到的深度可分离卷积之上,除了第一层是全卷积之外。 通过用如此简单的术语定义网络,我们能够轻松探索网络拓扑以找到良好的网络。 MobileNet 架构的定义如表 1 所示。除了最后的全连接层没有非线性并馈入 softmax 层进行分类之外,所有层都遵循批量规范 [13] 和 ReLU 非线性。 图 3 将具有常规卷积、batchnorm 和 ReLU 非线性的层与具有深度卷积、1 × 1 逐点卷积以及每个卷积层之后的 batchnorm 和 ReLU 的分解层进行了对比。 下采样是通过深度卷积和第一层中的跨步卷积来处理的。 最终的平均池化在全连接层之前将空间分辨率降低到 1。 将深度卷积和逐点卷积算作单独的层,MobileNet 有 28 层。
简单地用少量的多添加来定义网络是不够的。 确保这些操作能够有效实施也很重要。 例如,除非稀疏度非常高,否则非结构化稀疏矩阵运算通常并不比稠密矩阵运算快。 我们的模型结构将几乎所有计算放入密集的 1×1 卷积中。 这可以通过高度优化的通用矩阵乘法 (GEMM) 函数来实现。 卷积通常由 GEMM 实现,但需要在内存中进行初始重新排序(称为 im2col),以便将其映射到 GEMM。 例如,这种方法被用在流行的 Caffe 包中 [15]。 1×1 卷积不需要在内存中进行这种重新排序,可以直接使用 GEMM 来实现,GEMM 是最优化的数值线性代数算法之一。 MobileNet 将 95% 的计算时间花在 1 × 1 卷积上,其中也有 75% 的参数,如表 2 所示。几乎所有附加参数都在全连接层中。
MobileNet 模型使用 RMSprop [33] 在 TensorFlow [1] 中进行训练,并采用类似于 Inception V3 [31] 的异步梯度下降。 然而,与训练大型模型相反,我们使用较少的正则化和数据增强技术,因为小型模型的过度拟合问题较少。 在训练 MobileNet 时,我们不使用侧头或标签平滑,并且通过限制大型 Inception 训练中使用的小作物的大小来额外减少图像的扭曲量 [31]。 此外,我们发现在深度滤波器上放置很少或不放置权重衰减(l2 正则化)非常重要,因为它们的参数很少。 对于下一节中的 ImageNet 基准测试,无论模型大小如何,所有模型都使用相同的训练参数进行训练。
3.3. Width Multiplier: Thinner Models
尽管基本的 MobileNet 架构已经很小且延迟很低,但很多时候特定用例或应用程序可能需要模型更小、更快。 为了构建这些更小、计算成本更低的模型,我们引入了一个非常简单的参数 α,称为宽度乘数。 宽度乘数 α 的作用是在每一层均匀地细化网络。 对于给定的层和宽度乘数 α,输入通道数 M 变为 αM,输出通道数 N 变为 αN。
宽度乘数 α 的深度可分离卷积的计算成本为:
其中 α ∈ (0, 1],典型设置为 1、0.75、0.5 和 0.25。α = 1 是基线 MobileNet,α < 1 是缩减的 MobileNet。宽度乘数具有平方降低计算成本和参数数量的效果 大约为 α*α。宽度乘数可以应用于任何模型结构,以定义一个具有合理精度、延迟和大小权衡的新的较小模型,它用于定义需要从头开始训练的新的简化结构。
3.4. Resolution Multiplier: Reduced Representation
降低神经网络计算成本的第二个超参数是分辨率乘数 ρ。 我们将其应用于输入图像,并且每个层的内部表示随后被相同的乘数减少。 在实践中,我们通过设置输入分辨率来隐式设置 ρ。
现在,我们可以将网络核心层的计算成本表示为具有宽度乘数 α 和分辨率乘数 ρ 的深度可分离卷积:
其中 ρ ∈ (0, 1] 通常隐式设置,以便网络的输入分辨率为 224、192、160 或 128。ρ = 1 是 MobileNet 的基线,ρ < 1 是减少计算的 MobileNet。分辨率乘法器的计算成本降低了ρ*ρ。
作为一个例子,我们可以看看MobileNet中的一个典型层,看看深度可分离卷积、宽度乘法器和分辨率乘法器是如何降低成本和参数的。表3显示了当架构收缩方法依次应用于层时,层的计算量和参数数量。第一行显示了一个完整卷积层的multi- add和参数,其输入特征映射的大小为14 × 14 × 512,核K的大小为3 × 3 × 512 × 512。我们将在下一节中详细讨论资源和准确性之间的权衡。
4. Experiments
在本节中,我们首先研究深度卷积的影响,以及通过减少网络的宽度而不是层数来收缩的选择。然后,我们展示了基于两个超参数(宽度乘法器和分辨率乘法器)减少网络的权衡,并将结果与许多流行的模型进行比较。然后,我们研究了mobilenet应用于许多不同的应用程序。
4.1. Model Choices
首先,我们展示了使用深度可分离卷积的MobileNet的结果,与使用完整卷积构建的模型进行了比较。在表4中,我们看到使用深度可分离卷积与完全卷积相比,在ImageNet上只降低了1%的精度,极大地节省了多加法和参数。
接下来,我们将展示使用宽度倍增器的较薄模型与使用较少层的较浅模型的比较结果。为了使MobileNet更浅,将表1中特征尺寸为14 × 14 × 512的5层可分离滤波器去除。表5显示,在相同的计算量和参数数量下,使mobilenet变薄比使其变浅好3%。
4.2. Model Shrinking Hyperparameters
表6显示了使用宽度乘法器α缩小MobileNet架构的精度、计算和大小权衡。精度平稳下降,直到结构在α = 0.25时变得太小。
表7显示了通过训练具有降低输入分辨率的mobilenet,不同分辨率乘法器的精度、计算和大小权衡。精度在分辨率上平稳下降。图4显示了宽度乘子α∈{1,0.75,0.5,0.25}和分辨率{224,192,160,128}的叉乘所得到的16个模型的ImageNet精度和计算之间的权衡。当模型在α = 0.25时非常小时,结果是对数线性的。图5显示了宽度乘数α∈{1,0.75,0.5,0.25}和分辨率{224,192,160,128}的叉乘所得到的16个模型的ImageNet精度和参数数量之间的权衡。
表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 b[12]好4%。
5. Conclusion
我们提出了一种新的基于深度可分离卷积的模型结构,称为MobileNets。我们研究了一些导致高效模型的重要设计决策。然后,我们演示了如何使用宽度乘法器和分辨率乘法器构建更小更快的mobilenet,通过权衡合理的精度来减少尺寸和延迟。然后,我们将不同的mobilenet与流行的模型进行了比较,展示了优越的尺寸、速度和准确性特征。最后,我们展示了MobileNet在应用于各种任务时的有效性。作为帮助采用和探索mobilenet的下一步,我们计划在Tensor Flow中发布模型。