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

发布于:2025-07-06 ⋅ 阅读:(15) ⋅ 点赞:(0)

摘要

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

1. 引言

自从AlexNet[19]通过在2012年ImageNet挑战赛(ILSVRC 2012)中获胜而让深度卷积神经网络(CNN)广为人知以来,卷积神经网络已经在计算机视觉中变得无处不在。一般的趋势是通过加深网络的层数和增加网络的复杂性来提高准确性[27, 31, 29, 8]。然而,这些提高准确性的进展并不一定使得网络在大小和速度上变得更加高效。在许多现实应用中,如机器人、自驾车和增强现实,识别任务需要在计算资源有限的平台上及时完成。

本文描述了一种高效的网络架构和一组两个超参数,用于构建非常小的、低延迟的模型,能够轻松匹配移动和嵌入式视觉应用的设计需求。第二节回顾了构建小型模型的相关工作。第三节描述了MobileNet架构和两个超参数:宽度乘数和分辨率乘数,用于定义更小、更高效的MobileNets。第四节介绍了在ImageNet上的实验以及各种不同应用和用例。第五节总结并得出结论。

2. 相关工作

最近文献中对构建小型高效神经网络的兴趣不断上升,例如[16, 34, 12, 36, 22]。许多不同的方法可以大致分为两类:压缩预训练网络或直接训练小型网络。本文提出了一类网络架构,使得模型开发者能够根据应用的资源限制(延迟、大小)选择合适的小型网络。MobileNets主要集中在优化延迟,但也能生成小型网络。许多关于小型网络的论文只关注大小,而没有考虑速度。

MobileNets主要由深度可分离卷积构建,深度可分离卷积最早在[26]中提出,并随后在Inception模型[13]中使用,以减少前几层的计算量。扁平化网络[16]通过完全分解的卷积构建网络,并展示了极度分解网络的潜力。与本文无关的另一篇论文,Factorized Networks[34]引入了类似的分解卷积以及拓扑连接的使用。随后,Xception网络[3]展示了如何扩展深度可分离滤波器,从而超越Inception V3网络。另一个小型网络是Squeezenet[12],它通过瓶颈方法设计了一个非常小的网络。其他减少计算量的网络包括结构变换网络[28]和深度卷积神经网络[37]。

获得小型网络的另一种方法是压缩、因式分解或压缩预训练网络。基于乘积量化[36]、哈希[2]、剪枝、向量量化和霍夫曼编码[5]等方法在文献中有所提出。此外,已经提出了各种因式分解方法以加速预训练网络[14, 20]。另一种训练小型网络的方法是蒸馏[9],它使用较大的网络来训练较小的网络。它与我们的方法是互补的,并在第四节的一些用例中有所涉及。另一个新兴的方向是低位网络[4, 22, 11]。
在这里插入图片描述

3. MobileNet架构

在本节中,我们首先描述MobileNet所基于的核心层——深度可分离卷积。接着,我们描述MobileNet的网络结构,并最终介绍两个用于缩小模型的超参数:宽度乘数(width multiplier)和分辨率乘数(resolution multiplier)。

3.1. 深度可分离卷积

MobileNet模型基于深度可分离卷积,这是一种因式分解卷积的形式,它将标准卷积分解为深度卷积和一个1×1卷积(称为逐点卷积)。在MobileNet中,深度卷积对每个输入通道应用一个单独的滤波器。随后,逐点卷积应用1×1卷积,将深度卷积的输出进行合并。标准卷积同时进行滤波和合并操作,生成一个新的输出集合;而深度可分离卷积将这个过程分解为两层:一个单独的滤波层和一个单独的合并层。这种因式分解大大减少了计算量和模型大小。图2展示了标准卷积(图2a)是如何分解为深度卷积(图2b)和1×1的逐点卷积(图2c)。

标准卷积层的输入是一个尺寸为 D F × D F × M D_F \times D_F \times M DF×DF×M 的特征图 F F F,输出是一个尺寸为 D F × D F × N D_F \times D_F \times N DF×DF×N 的特征图 G S G_S GS,其中 D F D_F DF 是输入特征图的空间宽度和高度, M M M 是输入通道数(输入深度), D S D_S DS 是输出特征图的空间宽度和高度, N N N 是输出通道数(输出深度)。

标准卷积层由一个大小为 D K × D K × M × N D_K \times D_K \times M \times N DK×DK×M×N 的卷积核 K K K 参数化,其中 D K D_K DK 是卷积核的空间维度,假设其为正方形, M M M 是输入通道数, N N 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 } \quad(1) Gk,l,n=i,j,mKi,j,m,nFk+i1,l+j1,m(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 }\quad(2) DKDKMNDFDF(2)

其中,计算复杂度依赖于输入通道数 M M M、输出通道数 N N N、卷积核的大小 D K × D K D_K \times D_K DK×DK 和特征图的大小 D F × D F D_F \times D_F DF×DF。MobileNet通过使用深度可分离卷积来解决这些因素及其相互作用,首先通过深度可分离卷积将输出通道数与卷积核大小之间的相互作用解耦。

标准卷积操作通过卷积核对特征进行过滤,并将特征结合以生成新的表示。过滤和结合步骤可以通过使用因式分解卷积(称为深度可分卷积)来分开,从而显著减少计算成本。深度可分卷积由两层组成:深度卷积和逐点卷积。我们使用深度卷积为每个输入通道(输入深度)应用一个滤波器。然后,使用逐点卷积,一个简单的 1×1 卷积,来对深度层的输出进行线性组合。MobileNet 在两层中都使用批归一化(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 }\quad(3) G^k,l,m=i,jK^i,j,mFk+i1,l+j1,m(3)
其中, K ^ \hat { \mathbf { K } } K^ 是大小为 D K × D K × M D _ { K } \times D _ { K } \times M DK×DK×M 的深度卷积核,其中 m t h m _ { t h } mth 个滤波器应用于 F F F 中的第 m t h m _ { t h } mth 通道,从而生成过滤后的输出特征图 G ^ \hat { \mathbf { G } } G^ 的第 m t h m _ { t h } mth 通道。

深度卷积的计算成本为:
D K ⋅ D K ⋅ M ⋅ D F ⋅ D F ( 4 ) D _ { K } \cdot D _ { K } \cdot M \cdot D _ { F } \cdot D _ { F }\quad(4) DKDKMDFDF(4)
与标准卷积相比,深度卷积的计算效率极高。然而,它只过滤输入通道,而不结合它们以生成新的特征。因此,需要一个额外的层来通过 1 × 1 1 \times 1 1×1 卷积对深度卷积的输出进行线性组合,以生成这些新的特征。

深度卷积和 1 × 1 1 \times 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 }\quad(5) DKDKMDFDF+MNDFDF(5)
这是深度卷积和 1 × 1 1 \times 1 1×1 逐点卷积的总和。

通过将卷积表示为过滤和结合的两步过程,我们得到了计算上的降低:
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 = N ‾ 1 + 1 D K 2 \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 } } = _ { \overline { { N } } } ^ { 1 } + \frac { 1 } { D _ { K } ^ { 2 } } DKDKMNDFDFDKDKMDFDF+MNDFDF=N1+DK21
MobileNet 使用 3 × 3 的深度可分卷积,与标准卷积相比,计算量减少了 8 到 9 倍,同时准确度仅有小幅下降,如第 4 节所示。
在空间维度上进行额外的因式分解,例如在 [16, 31] 中所做的,实际上并不会节省太多计算,因为在深度卷积中消耗的计算量非常少。

在这里插入图片描述

3.2. 网络结构和训练

MobileNet 的结构基于前一节提到的深度可分卷积,唯一的例外是第一层,它是一个标准的卷积层。通过以如此简单的方式定义网络,我们能够轻松探索网络拓扑,从而找到一个合适的网络。MobileNet 的架构定义如表 1 所示。除最后一个全连接层外,所有层后都跟有批归一化(batchnorm)[13] 和 ReLU 非线性激活,最后的全连接层没有非线性激活,输出进入 softmax 层进行分类。图 3 对比了常规卷积层(包括批归一化和 ReLU 非线性激活)与因式分解层(包括深度卷积、1 × 1 逐点卷积,以及每个卷积层后的批归一化和 ReLU)。下采样通过在深度卷积以及第一层中使用步幅卷积(strided convolution)来处理。最终的平均池化层将空间分辨率减少到 1,之后是全连接层。将深度卷积和逐点卷积视为独立的层时,MobileNet 一共有 28 层。

仅仅根据少量的 Mult-Adds 来定义网络是不够的,确保这些操作可以高效实现也同样重要。例如,非结构化的稀疏矩阵运算通常并不比密集矩阵运算更快,除非稀疏度非常高。我们的模型结构将几乎所有的计算都放在密集的 1 × 1 卷积中。这可以通过高度优化的通用矩阵乘法(GEMM)函数来实现。通常,卷积是通过 GEMM 来实现的,但需要在内存中进行初步重排,称为 im2col,以便将其映射到 GEMM。例如,流行的 Caffe 包 [15] 就使用了这种方法。1 × 1 卷积不需要这种内存重排,可以直接通过 GEMM 实现,而 GEMM 是最优化的数值线性代数算法之一。MobileNet 将 95% 的计算时间花费在 1 × 1 卷积上,这也占据了 75% 的参数,如表 2 所示。几乎所有的额外参数都在全连接层中。
在这里插入图片描述

MobileNet 模型在 TensorFlow [1] 中使用 RMSprop [33] 和类似于 Inception V3 [31] 的异步梯度下降进行训练。然而,与训练大型模型不同,我们使用较少的正则化和数据增强技术,因为小型模型在过拟合方面问题较少。在训练 MobileNets 时,我们不使用侧头或标签平滑(label smoothing),并且通过限制在大规模 Inception 训练中使用的小裁剪的大小,减少图像失真的数量。此外,我们发现,对于深度卷积滤波器,由于其中的参数非常少,因此非常重要的一点是几乎不使用或完全不使用权重衰减(L2 正则化)。在接下来的 ImageNet 基准测试中,所有模型都使用相同的训练参数,无论模型的大小如何。

3.3. 宽度乘数:更精简的模型

尽管基础的 MobileNet 架构已经很小且延迟低,但许多特定的使用场景或应用可能需要模型更小、更快。为了构建这些更小且计算开销更低的模型,我们引入了一个非常简单的参数 α,称为宽度乘数。宽度乘数 α 的作用是均匀地在每一层对网络进行缩减。对于给定的层和宽度乘数 α,输入通道数 M 变为 α M αM αM,输出通道数 N 变为 α N αN αN
在这里插入图片描述

深度可分卷积的计算成本在宽度乘数 Q 下为:
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 }\quad(6) DKDKαMDFDF+αMαNDFDF(6)

温馨提示:
阅读全文请访问"AI深语解构" MobileNets: 高效的卷积神经网络用于移动视觉应用