[CVPR19]MnasNet: Platform-Aware Neural Architecture Search for Mobile

本篇发表于CVPR2019,作者为Google的Quoc V Le。本篇使用的额scale方法应该是ICML2019发表EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks的姊妹篇。不仅如此,本篇提出的架构也是在移动端十分硬核的应用。


Abstract

为移动设备设计卷积神经网络(CNN)是一个挑战,因为移动模型需要小而快,但仍然准确。尽管在所有方面都致力于设计和改进移动CNNs,但是当有如此多的架构可能性需要考虑时,手工平衡这些权衡是非常困难的。在本文中,我们提出了一种自动移动神经架构搜索(MNAS)方法,该方法将模型延迟显式地纳入到主要目标中,以便搜索能够识别出一个在精度和延迟之间实现良好权衡的模型。与之前的工作不同,延迟是通过另一个通常不准确的代理(例如FLOPS)来考虑的,我们的方法直接通过在移动电话上执行模型来测量实际的推理延迟。为了进一步在灵活性和搜索空间大小之间取得适当的平衡,我们提出了一种新的分解层次搜索空间,它鼓励整个网络的层多样性。实验结果表明,我们的方法始终优于最先进的移动CNN模型在多个视觉任务。在ImageNet分类任务中,我们的MnasNet在像素手机上实现了75.2%的top-1准确率,延迟为78ms,比MobileNetV2[29]快1.8,准确率提高0.5%,比NASNet[36]快2.3,准确率提高1.2%。我们的MnasNet在COCO对象检测方面也比MobileNets具有更好的mAP质量。代码是在[github]


1. Introduction

卷积神经网络(CNN)在图像分类、目标检测和许多其他应用领域取得了显著的进展。随着现代CNN模型变得越来越深、越来越大[31、13、36、26],它们也变得越来越慢,需要更多的计算。计算需求的增加使得在资源受限的平台上部署最先进的CNN模型变得困难例如移动设备或嵌入式设备。

由于移动设备上可用的计算资源有限,最近的许多研究都集中在设计和改进移动CNN模型上,通过降低网络的深度和使用更便宜的操作,如深度卷积[11]和组卷积[33]。然而,设计一个资源受限的移动模型是具有挑战性的:一个人必须小心地平衡准确性和资源效率,导致一个显着大的设计空间。

本文提出了一种用于移动CNN模型设计的自动神经结构搜索方法。图1显示了我们的方法的概述,其中与以前方法的主要区别是延迟感知多目标奖励和新的搜索空间。我们的方法基于两个主要思想。首先,我们将设计问题表示为一个多目标优化问题,同时考虑CNN模型的准确性和推理延迟。与以前使用FLOPS来近似推断延迟的工作[36,26,21]不同,我们直接通过在实际移动设备上执行模型来测量实际的延迟。我们的想法的灵感来源于失败,往往是一个不准确的代理:例如,MobileNet[11]和NASNet[36]有类似的失败(575M vs 564M),但是他们的延迟明显不同(113ms与183ms,细节表1)。其次,我们观察到以前的自动化方法主要是寻找一些类型的细胞,然后重复栈相同的细胞通过网络。这简化了搜索过程,但也排除了对计算效率很重要的层多样性。为了解决这个问题,我们提出了一种新的分解层次搜索空间,它允许层在架构上不同,但仍然在灵活性和搜索空间大小之间取得适当的平衡。

将所提出的方法应用于图像分类[28]和COCO对象检测[18]。图2总结了我们的MnasNet模型和其他最先进的移动模型之间的比较。与MobileNetV2[29]相比,我们的模型在谷歌像素手机上以类似的延迟将ImageNet的精度提高了3.0%。另一方面,如果我们限制目标精度,那么我们的MnasNet模型比MobileNetV2快1.8,比NASNet[36]快2.3,具有更好的精度。与广泛使用的ResNet-50[9]相比,我们的MnasNet模型在减少4.8个参数和10个乘法加法操作的情况下,精度略高(76.7%)。通过将我们的模型作为一个特征提取器插入SSD对象检测框架,我们的模型在MobileNetsV1和MobileNetV2上改进了COCO数据集的推理延迟和映射质量,并在42个较少的乘法添加操作下实现了与SSD300[22]相当的映射质量(23.0 vs 23.2)。

总之,我们的主要贡献如下:

1. 我们介绍了一种多目标神经结构搜索方法,它可以优化移动设备上的准确性和真实世界延迟。

2. 我们提出了一种新的分解层次搜索空间,使层的多样性,但仍然在灵活性和搜索空间大小之间取得适当的平衡。

3. 在典型的移动延迟约束下,我们展示了在ImageNet分类和COCO对象检测方面的最新精度。


2. Related Work

近年来,提高CNN模型的资源效率一直是一个活跃的研究课题。一些常用的方法包括:1)将基线CNN模型的权重和/或激活量化为低比特表示[8,16],或2)根据FLOPs[6,10]修剪不太重要的过滤器,或根据平台感知的指标(如[32]中引入的延迟)。然而,这些方法都是与基线模型相联系的,并且不专注于学习CNN操作的新组成部分。

另一种常见的方法是直接手工制作更高效的移动架构:SqueezeNet[15]通过使用更低成本的1x1卷积和减小滤波器尺寸来减少参数和计算量;MobileNet[11]广泛采用深度可分离卷积来最小化计算密度;ShuffleNets[33, 24]利用低成本的组卷积和信道洗牌;学习跨层连接群卷积;最近,MobileNetV2[29]通过使用资源效率高的反向残差和线性瓶颈,在移动尺寸的模型中取得了最先进的结果。不幸的是,考虑到潜在的巨大设计空间,这些手工制作的模型通常需要大量的人力。

近年来,利用神经结构搜索实现模型设计过程的自动化越来越受到人们的关注。这些方法主要基于强化学习[35,36,1,19,25]、进化搜索[26]、可微搜索[21]等学习算法[19,17,23]。虽然这些方法可以通过重复堆积一些搜索单元来生成移动大小的模型,但是它们并没有将移动平台约束合并到搜索过程或搜索空间中。与我们的工作密切相关的是MONAS[12]、dpm - net[3]、RNAS[34]和Pareto-NASH[4],它们在搜索CNNs时,试图优化模型大小和精度等多个目标,但它们的搜索过程在CIFAR等小任务上进行了优化。相比之下,本文针对的是实际的移动延迟约束,重点研究了ImageNet分类和COCO对象检测等较大的任务。


3. Problem Formulation

我们将设计问题表述为一个多目标搜索,目标是找到准确率高、推理延迟低的CNN模型。不像以前的架构搜索方法常常优化间接指标,比如FLOPS,我们考虑直接的真实世界的推理延迟,方法是在真实的移动设备上运行CNN模型,然后将真实世界的推理延迟合并到我们的目标中。这样做可以直接测量在实践中可以实现什么:我们早期的实验表明,由于移动硬件/软件特性的多样性,要接近真实世界的延迟是很有挑战性的。

给定模型m,令ACC(m)表示其对目标任务的准确性,LAT(m)表示目标移动平台上的推理延迟,T为目标延迟。一种常用的方法是将T作为硬约束,并在此约束下最大化精度:

\begin{array}{ll}{\underset{m}{\operatorname{maximize}}} & {A C C(m)} \\ {\text { subject to }} & {L A T(m) \leq T}\end{array}

然而,这种方法只最大化了一个度量,并没有提供多个Pareto最优解。非正式地说,如果模型具有不增加延迟的最高延迟,或者具有不降低精度的最低延迟,则称为Pareto最优[2]。考虑到执行架构搜索的计算成本,我们更感兴趣的是在单个架构搜索中找到多个pareto最优解。虽然文献[2]中有很多方法,但我们使用自定义加权乘积法1来近似Pareto最优解,优化目标定义为:

\underset{m}{\operatorname{maximize}} A C C(m) \times\left[\frac{L A T(m)}{T}\right]^{w}

其中w为权重因子,定义为:

w=\left\{\begin{array}{ll}{\alpha,} & {\text { if } L A T(m) \leq T} \\ {\beta,} & {\text { otherwise }}\end{array}\right.

α和β是特定于应用程序的常数。挑选α和β的经验法则是确保帕累托最优解决方案也有类似的奖励在不同accuracy-latency权衡。例如,我们根据经验观察到,延迟加倍通常会带来5%的相对准确度增益。给出两种模型:(1)M1具有延时l和精度a;(2)M2已经延迟2l和5%更高的精度(1 + 5%),他们应该也有类似的奖励:Reward(M 2)=a \cdot(1+5 \% )\cdot(2 l / T)^{\beta} \approx \operatorname{Reward}(M 1)=a \cdot(l / T)^{\beta})。解决这使β0.07。因此,我们在实验中使用α=β= 0.07,除非显式声明。

图3显示了目标函数的两个典型值(α,β)。在上面的图(α= 0,β= 1),我们只是使用精度作为客观价值如果测量延迟小于目标延迟T;否则,我们将严格惩罚目标值,以阻止模型违反延迟约束。底部图(α=β= 0.07)将目标延迟T作为一个软约束,并顺利调整客观价值基于测量延迟。


4. Mobile Neural Architecture Search

在这一部分,我们将首先讨论我们提出的新的分解层次搜索空间,然后总结我们基于强化学习的搜索算法。

4.1. Factorized Hierarchical Search Space

最近的研究表明[36,20],一个定义良好的搜索空间对于神经结构搜索是非常重要的。然而,大多数以前的方法[35,19,26]只搜索一些复杂的单元格,然后重复堆栈相同的单元格。这些方法不允许层多样性,这对于实现高精度和低延迟都是至关重要的。

与之前的方法不同,我们引入了一种新的分解层次搜索空间,它将CNN模型分解为独特的块,然后分别搜索每个块的操作和连接,从而允许在不同块中使用不同的层结构。我们的直觉是,我们需要根据输入和输出形状搜索最佳操作,以获得更好的精度权衡。例如,CNNs的早期阶段通常处理大量的数据,因此对推理延迟的影响比后期阶段大得多。形式上,考虑一个广泛使用的深度可分离卷积[11]内核,它表示为将大小(H, W, M, N) 2的输入转换为大小(H, W, N)的输出的四元组(K, K, M, N),其中(H, W)是输入分辨率,M, N是输入/输出滤波器大小。乘法相加的总数可以描述为

H * W * M *(K * K+N)

在这里,如果总计算量受到限制,我们需要小心地平衡内核大小K和过滤器大小N。例如,增加内核大小为K的层的接受域,必须与减少同一层的过滤器大小N或从其他层计算得到的结果保持平衡。

图4显示了搜索空间的基线结构。我们将CNN模型划分为一系列预定义的块,逐渐降低输入分辨率,并像许多CNN模型一样增加过滤器大小。每个块都有一组相同的层,它们的操作和连接由每个块子搜索空间决定。具体来说,块i的子搜索空间由以下选项组成

•卷积运算ConvOp:常规conv (conv)、深度conv (dconv)、移动倒瓶颈conv[29]。
卷积内核大小:3x3, 5x5。
•挤压-激励[13]比SERatio: 0,0.25。
•跳过ops SkipOp:池,身份剩余,或没有跳过。
•输出滤波器尺寸Fi。
•每个块Ni的层数。

ConvOp、KernelSize、SERatio、SkipOp、Fi决定一个层的架构,而Ni决定该层将为块重复多少次。例如,图4中block 4的每一层都有一个反向的瓶颈5x5卷积和一个单位剩余跳过路径,同一层重复N4次。我们使用MobileNetV2作为参考对所有搜索选项进行离散化:对于每个块中的#layer,我们基于MobileNetV2搜索{0,+1,-1};对于每层的过滤器大小,我们在{0.75,1.0,1.25}中搜索它相对于MobileNetV2[29]的大小。

我们的分层分解搜索空间在平衡层次的多样性和搜索空间的大小方面具有明显的优势。假设我们将网络划分为B个块,每个块有一个大小为S的子搜索空间,每个块平均有N层,那么我们的总搜索空间大小将是sb,与大小为sb N的平坦的每层搜索空间相比。一个典型的例子是S = 432, B = 5, N = 3,其中我们的搜索空间大小约为1013,而perlayer方法的搜索空间大小为1039。

4.2. Search Algorithm

受近期工作的启发[35,36,25,20],我们使用强化学习方法为我们的多目标搜索问题找到Pareto最优解。我们选择强化学习是因为它很方便,而且奖励也很容易定制,但是我们希望其他方法,比如evolution[26],也能奏效。

具体来说,我们遵循与[36]相同的思想,将搜索空间中的每个CNN模型映射到令牌列表。这些tokens是由一系列行动a1: T从强化学习代理根据其参数θ。我们的目标是使预期的报酬最大化

J=E_{P\left(a_{1 : T} ; \theta\right)}[R(m)]

其中m为作用a1:T确定的采样模型,R(m)为式2所定义的目标值。如图1所示,搜索框架由三个部分组成:一个基于递归神经网络(RNN)的控制器、一个获取模型精度的训练器和一个用于测量延迟的基于手机的推理引擎。我们遵循众所周知的sample-eval-update循环来训练控制器。每一步,控制器第一批样本使用当前的参数θ,一批模型从其RNN中基于softmax logits预测令牌序列。对于每一个采样的模型m,我们将其训练在目标任务上,得到其精度ACC(m),并在实际手机上运行,得到其推理延迟LAT(m)。然后用公式2计算奖励值R(m)。每一步结束时,控制器的参数θ更新通过最大化期望的奖励由方程5使用近端策略优化[30]。sample-evalupdate循环重复,直到达到最大数量的步骤或参数θ收敛。


5. Experimental Setup

直接搜索像ImageNet或COCO这样的大型任务的CNN模型是昂贵的,因为每个模型需要几天的时间来收敛。虽然以前的方法主要在较小的任务上执行架构搜索,比如CIFAR10[36,26],但是当考虑到模型延迟时,我们发现那些较小的代理任务不起作用,因为当应用于较大的问题时,通常需要扩展模型。在本文中,我们直接在ImageNet训练集上执行架构搜索,但是只需要较少的训练步骤(5个epoch)。作为一个惯例,我们保留随机选择50 k的图像训练集作为固定验证集。确保精度改进从我们的搜索空间,我们使用相同的RNN控制器NASNet[36]即使它不是有效的:每个架构搜索需要4.5天64 TPUv2设备。在训练过程中,我们通过在Pixel 1手机的单线程大CPU内核上运行来测量每个采样模型的实际延时。总的来说,我们的控制器在架构搜索过程中采样了大约8K个模型,但是只有15个性能最好的模型被转移到完整的ImageNet,只有1个模型被转移到COCO。

对于完整的ImageNet训练,我们使用RMSProp优化器,使用衰减0.9和动量0.9。在每个卷积层之后加入批量范数,动量为0.99,权值衰减为1e-5。最后一层应用Dropout rate 0.2。在[7]之后,学习率在前5个epoch从0增加到0.256,然后每2.4个epoch衰减0.97。我们使用批量大小4K和Inception预处理与图像大小224 224。对于COCO训练,我们将学习到的模型插入SSD检测器[22]中,使用与[29]相同的设置,包括输入大小为320 320。

6. Results

在本节中,我们研究了我们的模型在ImageNet分类和COCO对象检测方面的性能,并与其他最先进的移动模型进行了比较。

6.1. ImageNet Classification Performance

表1显示了我们的模型在ImageNet[28]上的性能。我们将目标延迟设置为T = 75ms,类似到MobileNetV2[29],并使用方程2α=β= -0.07作为我们的奖励在架构的搜索功能。然后,我们从相同的搜索实验中选择了三个性能最好的MnasNet模型,并将它们与现有的移动模型进行了比较。如表所示,我们的MnasNet A1模型达到了75.2%的top-1 / 92.5%的top-5精度,延迟为78ms,参数为3.9M / 312M乘加法,为这种典型的移动延迟约束实现了一种新的最先进的精度。

特别是,MnasNet在相同像素的手机上运行速度比MobileNetV2(1.4)[29]快1.8,准确率高0.5%。与自动搜索CNN模型相比,我们的MnasNet运行速度比移动尺寸的NASNet-A[36]快2.3倍,top1准确率高1.2%。值得注意的是,我们的稍微大一点的MnasNet-A3模型比ResNet-50[9]精度更高,但是参数更少,乘加成本更少10。考虑到挤压激励(SE[13])相对较新,现有的许多移动模型都没有这种额外的优化,我们还在表2的搜索空间中展示了没有SE的搜索结果;我们的自动化方法仍然显著优于MobileNetV2和NASNet。

6.2. Model Scaling Performance

考虑到现实世界中存在的无数应用程序需求和设备异构性,开发人员通常会将模型按比例放大或缩小,以牺牲准确性来换取延迟或模型大小。一种常用的缩放技术是使用深度乘法器[11]修改滤波器的大小。例如,深度乘法器0.5将每个层中的通道数减半,从而减少了延迟和模型大小。另一种常用的缩放技术是在不改变网络的情况下减小输入图像的大小。

图5通过改变深度乘子和输入图像大小,比较了MnasNet和MobileNetV2的模型缩放性能。当深度乘法器从0.35变为1.4时,推理延迟也从20ms变为160ms。如图5a所示,对于每个深度乘法器,我们的MnasNet模型始终比MobileNetV2获得更好的精度。

同样,我们的模型对输入大小的变化也很健壮,在96到224的所有输入图像大小中,它的性能始终优于MobileNetV2(精度提高了4.1%),如图5b所示。除了模型扩展,我们的方法还允许为任何延迟目标搜索新的体系结构。例如,一些视频应用程序可能需要低至25毫秒的延迟。我们可以缩小基线模型的规模,或者搜索专门针对这种延迟约束的新模型。

表4比较了这两种方法。为了公平比较,我们对所有图像使用相同的224x224大小模型。虽然我们的MnasNet在相同的缩放参数下已经优于MobileNetV2,但是我们可以通过针对22ms延迟约束的新架构搜索进一步提高准确性。

6.3. COCO Object Detection Performance

对于COCO对象检测[18],我们选取表2中的MnasNet模型作为SSDLite的特征提取器,这是SSD[29]的一个改进的资源高效版本。与[29]类似,我们将我们的模型与其他mobilesize SSD或YOLO模型进行比较。

表3显示了我们的MnasNet模型在COCO上的性能。YOLO和SSD的结果来自[27],MobileNets的结果来自[29]。我们在COCO trainval35k上培训我们的模型,并在testdev2017上通过将结果提交给COCO server进行评估。如表所示,我们的方法在MobileNet V1和V2上显著提高了精度。与标准的SSD300检测器[22]相比,我们的MnasNet模型在参数减少7.4、倍数增加42的情况下,实现了与SSD300相当的mAP质量(23.0 vs 23.2)。


7. Ablation Study and Discussion

在本节中,我们将研究延迟约束和搜索空间的影响,并讨论MnasNet体系结构细节和层多样性的重要性

7.1. Soft vs. Hard Latency Constraint

多目标搜索方法允许我们处理硬性和软性延迟约束通过设置α和β奖励方程2中不同的值。图6显示了典型的α和β的多目标搜索结果。

当α= 0时,β= 1,延迟是当作一个硬约束,所以控制器往往更关注速度模型,以避免延迟惩罚。另一方面,通过设置α=β= 0.07,控制器将目标延迟作为一个软约束,并试图寻找延迟模型在更大的范围。它在目标延迟值(75ms)附近采样了更多的模型,但也探索了延迟小于40ms或大于110ms的模型。这允许我们在单个架构搜索中从Pareto曲线中选择多个模型,如表1所示

7.2. Disentangling Search Space and Reward

为了理清我们的两个关键贡献的影响:多目标奖励和新的搜索空间,图5比较了它们的性能。从NASNet[36]开始,我们首先使用相同的单元基搜索空间[36],并使用我们建议的multipleobject奖励简单地添加延迟约束。结果表明,它通过将精度转换为延迟来生成更快的模型。然后,我们应用我们的多目标奖励和我们新的分解搜索空间,实现更高的准确性和更低的延迟,表明我们的搜索空间的有效性。

7.3. MnasNet Architecture and Layer Diversity

图7(a)说明了通过自动化方法找到的MnasNet-A1模型。正如预期的那样,它由网络中的各种层架构组成。

一个有趣的观察是,我们的MnasNet同时使用了3x3和5x5卷积,这与之前的移动模型都只使用3x3卷积不同。为了研究层多样性的影响,表6比较了MnasNet及其变体,它们只重复一种类型的层(固定的内核大小和扩展比)。我们的MnasNet模型比那些变体具有更好的精度-延迟权衡,这突出了资源受限CNN模型中层多样性的重要性。


8. Conclusion

提出了一种利用强化学习设计资源高效移动CNN模型的自动神经结构搜索方法。我们的主要想法是将平台感知的真实世界的延迟信息整合到搜索过程中,并利用一个新的分解层次搜索空间来搜索在准确性和延迟之间具有最佳权衡的移动模型。我们证明,我们的方法可以自动找到比现有方法明显更好的移动模型,并在典型的移动推理延迟约束下,在ImageNet分类和COCO对象检测方面实现新的最先进的结果。由此产生的MnasNet架构还提供了关于层多样性重要性的有趣发现,这将指导我们设计和改进未来的移动CNN模型。

发布了261 篇原创文章 · 获赞 137 · 访问量 20万+

猜你喜欢

转载自blog.csdn.net/weixin_37993251/article/details/91354813