【第26篇】MobileNets:用于移动视觉应用的高效卷积神经网络

举报
AI浩 发表于 2022/01/25 22:04:54 2022/01/25
【摘要】 MobileNets:用于移动视觉应用的高效卷积神经网络 摘要我们提出了一类称为 MobileNets 的高效模型,用于移动和嵌入式视觉应用。 MobileNets 基于流线型架构,使用深度可分离卷积来构建轻量级深度神经网络。 我们引入了两个简单的全局超参数,可以有效地在延迟和准确性之间进行权衡。 这些超参数允许模型构建者根据问题的约束为其应用程序选择合适大小的模型。 我们在资源和准确性权...

MobileNets:用于移动视觉应用的高效卷积神经网络

摘要

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

一、简介

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

image-20220125070613063

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

二、前期工作

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

MobileNets 主要专注于优化延迟,但也产生小型网络。许多关于小型网络的论文只关注规模而不考虑速度。 MobileNets 主要由最初在 [26] 中引入的深度可分离卷积构建,随后用于 Inception 模型 [13] 以减少前几层的计算。 Flattened networks [16] 用完全分解的卷积构建了一个网络,并展示了极度分解网络的潜力。与当前的论文无关,Factorized Networks[34] 引入了类似的分解卷积以及拓扑连接的使用。随后,Xception 网络 [3] 演示了如何扩展深度可分离滤波器以超越 Inception V3 网络。另一个小型网络是 Squeezenet [12],它使用瓶颈方法来设计一个非常小的网络。其他简化计算网络包括结构化变换网络 [28] 和油炸卷积网络 [37]。

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

三、MobileNet 架构

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

3.1、深度可分离卷积

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

image-20220125070647221

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

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

假设步幅为 1 和填充的标准卷积的输出特征图计算如下:

G k , l , n = i , j , m K i , j , m , n F k + i 1 , l + j 1 , m (1) \mathbf{G}_{k, l, n}=\sum_{i, j, m} \mathbf{K}_{i, j, m, n} \cdot \mathbf{F}_{k+i-1, l+j-1, m} \tag{1}

标准卷积的计算成本为:

D K D K M N D F D F (2) D_{K} \cdot D_{K} \cdot M \cdot N \cdot D_{F} \cdot D_{F} \tag{2}

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

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

深度可分离卷积由两层组成:深度卷积和点卷积。 我们使用深度卷积为每个输入通道(输入深度)应用一个过滤器。 点卷积,一个简单的 1×1 卷积,然后用于创建深度层输出的线性组合。 MobileNets 对两个层都使用了 batchnorm 和 ReLU 非线性。

每个输入通道(输入深度)一个滤波器的深度卷积可以写成:

G ^ k , l , m = i , j K ^ i , j , m F k + i 1 , l + j 1 , m (3) \hat{\mathbf{G}}_{k, l, m}=\sum_{i, j} \hat{\mathbf{K}}_{i, j, m} \cdot \mathbf{F}_{k+i-1, l+j-1, m} \tag{3}

其中 K ^ \hat{\mathbf{K}} 是大小为 D K × D K × M D_{K}\times D_{K}\times M 的深度卷积核,其中 K ^ \hat{\mathbf{K}} 中的第 m 个滤波器应用于 F 中的第 m t h m_{th} 个通道,以生成过滤后的输出特征图 G ^ \hat{\mathbf{G}} 的第 m 个通道。

深度卷积的计算成本为:

D K D K M D F D F (4) D_{K} \cdot D_{K} \cdot M \cdot D_{F} \cdot D_{F} \tag{4}

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

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

深度可分离卷积计算成本:

D K D K M D F D F + M N D F D F (5) D_{K} \cdot D_{K} \cdot M \cdot D_{F} \cdot D_{F}+M \cdot N \cdot D_{F} \cdot D_{F} \tag{5}

这是depthwise和1×1 pointwise卷积的总和。

通过将卷积表示为过滤和组合的两步过程,我们可以减少以下计算:

D K D K M D F D F + M N D F D F D K D K M N D F D F = 1 N + 1 D K 2 \begin{aligned} & \frac{D_{K} \cdot D_{K} \cdot M \cdot D_{F} \cdot D_{F}+M \cdot N \cdot D_{F} \cdot D_{F}}{D_{K} \cdot D_{K} \cdot M \cdot N \cdot D_{F} \cdot D_{F}} \\ =& \frac{1}{N}+\frac{1}{D_{K}^{2}} \end{aligned}

MobileNet 使用 3 × 3 深度可分离卷积,它使用的计算量比标准卷积少 8 到 9 倍,而准确度仅略有降低,如第 4 节所示。

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

3.2、网络结构和训练

MobileNet 结构建立在上一节中提到的深度可分离卷积之上,但第一层是全卷积。通过以如此简单的术语定义网络,我们能够轻松地探索网络拓扑以找到一个好的网络。 MobileNet 架构在表 1 中定义。

image-20220125175313205

所有层都遵循 batchnorm [13] 和 ReLU 非线性,但最终全连接层除外,它没有非线性并馈送到 softmax 层进行分类。图 3 将具有常规卷积、batchnorm 和 ReLU 非线性的层与具有深度卷积、1×1 逐点卷积以及每个卷积层之后的 batchnorm 和 ReLU 的分解层进行了对比。在深度卷积和第一层中使用跨步卷积处理下采样。最终的平均池化在全连接层之前将空间分辨率降低到 1。将深度卷积和点卷积计算为单独的层,MobileNet 有 28 层。

image-20220125175049382

仅仅根据少量的多加来定义网络是不够的。确保这些操作可以有效实施也很重要。例如,非结构化稀疏矩阵运算通常不会比密集矩阵运算快,直到非常高的稀疏度。我们的模型结构将几乎所有的计算都放入密集的 1 × 1 卷积中。这可以通过高度优化的通用矩阵乘法 (GEMM) 函数来实现。卷积通常由 GEMM 实现,但需要在内存中进行名为 im2col 的初始重新排序,以便将其映射到 GEMM。例如,这种方法用于流行的 Caffe 包 [15]。 1×1 卷积不需要在内存中进行这种重新排序,并且可以直接使用 GEMM 实现,它是最优化的数值线性代数算法之一。如表 2 所示,MobileNet 将 95% 的计算时间用于 1 × 1 卷积,其中也有 75% 的参数。几乎所有附加参数都在全连接层中。

image-20220125175356517

MobileNet 模型在 TensorFlow [1] 中使用 RMSprop [33] 进行训练,该模型具有类似于 Inception V3 [31] 的异步梯度下降。 然而,与训练大型模型相反,我们使用较少的正则化和数据增强技术,因为小型模型过拟合的问题较少。 在训练 MobileNets 时,我们不使用侧头或标签平滑,并通过限制大型 Inception 训练中使用的小作物的大小来额外减少图像失真量 [31]。 此外,我们发现在深度滤波器上放置很少或没有权重衰减(l2 正则化)非常重要,因为它们中的参数非常少。 对于下一节中的 ImageNet 基准,所有模型都使用相同的训练参数进行训练,而不管模型的大小。

3.3、宽度乘数:更薄的模型

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

具有宽度乘数 α 的深度可分离卷积的计算成本为:

D K D K α M D F D F + α M α N D F D F (6) D_{K} \cdot D_{K} \cdot \alpha M \cdot D_{F} \cdot D_{F}+\alpha M \cdot \alpha N \cdot D_{F} \cdot D_{F} \tag{6}

其中 α ( 0 , 1 ] \alpha \in(0,1] 典型设置为 1, 0.75, 0.5 和 0.25。α = 1 是基线 MobileNet,α < 1 是缩减的 MobileNets。宽度乘数具有降低计算成本和二次方参数数量的效果 大约 a 2 a^{2} 。宽度乘数可以应用于任何模型结构,以定义一个新的更小的模型,具有合理的精度、延迟和大小权衡。它用于定义一个需要从头开始训练的新的缩减结构。

3.4、分辨率乘数:减少表示

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

我们现在可以将网络核心层的计算成本表示为具有宽度乘数 α 和分辨率乘数 ρ 的深度可分离卷积:

D K D K α M ρ D F ρ D F + α M α N ρ D F ρ D F (7) D_{K} \cdot D_{K} \cdot \alpha M \cdot \rho D_{F} \cdot \rho D_{F}+\alpha M \cdot \alpha N \cdot \rho D_{F} \cdot \rho D_{F}\tag{7}

其中 ρ ( 0 , 1 ] \rho \in(0,1] 通常是隐式设置的,因此网络的输入分辨率为 224、192、160 或 128。ρ = 1 是基线 MobileNet,ρ < 1 是减少计算 MobileNets。分辨率乘数具有 将计算成本降低 ρ 2 \rho^{2} 的效果。

image-20220125181421083

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

四、实验

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

4.1、模型选择

首先,我们展示了具有深度可分离卷积的 MobileNet 与使用全卷积构建的模型相比的结果。 在表 4 中,我们看到与全卷积相比,使用深度可分离卷积仅将 ImageNet 上的准确率降低了 1%,从而极大地节省了多重加法和参数。

image-20220125211017227

接下来,我们展示了将具有宽度乘数的较薄模型与使用较少层的较浅模型进行比较的结果。 为了使 MobileNet 更浅,去除了表 1 中特征大小为 14×14×512 的 5 层可分离滤波器。 表 5 显示,在相似的计算和参数数量下,使 MobileNets 更薄比使它们更浅 3% 好。

image-20220125211031048

4.2、模型收缩超参数

image-20220125211233713

表 6 显示了使用宽度乘数 α 缩小 MobileNet 架构的精度、计算量和大小权衡。 精度平稳下降,直到架构在 α = 0.25 时最小。

image-20220125211343670

表 7 显示了通过训练具有降低的输入分辨率的 MobileNets 对不同分辨率乘数的精度、计算和大小权衡。 精度在分辨率范围内平稳下降。

image-20220125211820734

图 4 显示了由宽度乘数 α { 1 , 0.75 , 0.5 , 0.25 } \alpha \in\{1,0.75,0.5,0.25\} 和分辨率 { 224 , 192 , 160 , 128 } \{224,192,160,128\} 。 当模型在 α = 0.25 时变得非常小时,结果是对数线性的,并带有跳跃。

image-20220125213202997

图 5 显示了 ImageNet 准确率 和16个模型在宽度系数 α { 1 , 0.75 , 0.5 , 0.25 } \alpha \in\{1,0.75,0.5,0.25\} 和分辨率 { 224 , 192 , 160 , 128 } \{224,192,160,128\} 参数数量之间的权衡。

image-20220125213836662

表 8 将完整的 MobileNet 与原始的 GoogleNet [30] 和 VGG16 [27] 进行了比较。 MobileNet 几乎与 VGG16 一样准确,同时体积小 32 倍,计算密集度低 27 倍。 它比 GoogleNet 更准确,同时体积更小,计算量减少 2.5 倍以上。

image-20220125213855076

表 9 比较了宽度乘数 α = 0.5 和分辨率降低 160 × 160 的缩减 MobileNet。缩减 MobileNet 比 AlexNet [19] 好 4%,同时比 AlexNet 小 45 倍,计算量少 9.4 倍。 在大小相同且计算量减少 22 倍的情况下,它也比 Squeezenet [12] 好 4%。

4.3、细粒度识别

image-20220125214030180

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

4.4、大规模地理定位

PlaNet [35] 将确定照片拍摄地点的任务作为分类问题。 该方法将地球划分为作为目标类的地理单元格,并在数百万张带有地理标签的照片上训练卷积神经网络。 PlaNet 已被证明可以成功地定位大量照片,并且在完成相同任务的情况下优于 Im2GPS [6, 7]。

image-20220125214648241

我们使用 MobileNet 架构对相同数据重新训练 PlaNet。 而基于 Inception V3 架构 [31] 的完整 PlaNet 模型具有 5200 万个参数和 57.4 亿个多重加法。 MobileNet 模型只有 1300 万个参数,通常 300 万个用于主体,1000 万个用于最后一层和 58 万个多重加法。 如表 11 所示,与 PlaNet 相比,MobileNet 版本的性能仅略有下降,尽管它更紧凑。 此外,它仍然大大优于 Im2GPS。

4.5、人脸属性

MobileNet 的另一个用例是压缩具有未知或深奥训练程序的大型系统。在人脸属性分类任务中,我们展示了 MobileNet 和蒸馏 [9] 之间的协同关系,蒸馏 [9] 是一种用于深度网络的知识转移技术。我们寻求减少具有 7500 万个参数和 16 亿个多重加法的大型人脸属性分类器。这 分类器在类似于 YFCC100M [32] 的多属性数据集上进行训练。

image-20220125215659849

我们使用 MobileNet 架构提取人脸属性分类器。 Distillation [9] 通过训练分类器来模拟更大模型的输出而不是真实标签,从而能够从大型(并且可能是无限的)未标记数据集进行训练。结合蒸馏训练的可扩展性和 MobileNet 的简约参数化,终端系统不仅不需要正则化(例如权重衰减和提前停止),而且还展示了增强的性能。从表中可以看出。从表12 可以看出,基于 MobileNet 的分类器对激进的模型收缩具有弹性:它实现了与内部相似的跨属性平均精度(平均 AP),同时仅消耗 1% 的 Multi-Adds。

4.6、物体检测

image-20220125215713175

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、人脸嵌入

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

五、结论

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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。