MnasNet论文解读

论文链接:https://arxiv.org/pdf/1807.11626v1.pdf
代码链接:https://github.com/tensorflow/tpu/tree/master/models/official/mnasnet

摘要

由于移动和嵌入式平台需要模型小、快且精度高,所以设计针对移动平台的模型是一件很有挑战的事情。尽管在设计移动端CNNs上已经做了很大努力,但是当有很多结构可能性需要考虑时还是很难在这些因素之间做平衡的。在本篇论文中,我们提出了一个自动移动神经网络架构搜索方法(MNAS),它明确地将模型延迟考虑进主要目标中以致于可以得到一个在精度和延迟之间达到平衡的模型。不像之前的网络,我们没有选择延迟的一个不精确的度量——比如FLOPS,而是直接通过在移动手机上推理模型来衡量真实的延迟。为了进一步在灵活性和搜索空间尺寸上取得平衡,我们提出了一个新颖的分解式层次搜索空间,它鼓励整个网络层的多样性,实验结果表明展示了我们的网络在多个视觉任务上都达到了先进的性能,在ImageNet
分类任务上,我们的MnasNet实现了75.2%的top-1精度,延迟为78ms,这笔MobileNetV2快了1.8倍,精度提升了0.5%;比NASNet快了2.3倍,精度提升了1.2%。我们的MnasNet同样在COCO目标检测上也取得了比MobileNets更好的MAP。

1. Introduction

在计算资源受限的移动设备上运行模型,目前的研究都聚焦于减小网络深度和利用诸如组卷积和深度卷积这样的开销小的操作。然而平衡好精度和资源效率仍然是一件很有挑战的工作,因为它的设计空间太大了。

本篇论文的主要贡献:

  1. 首先将设计问题公式化成一个多目标的优化问题,要同时考虑精度和推理延迟。不像之前的工作中用FLOPS来近似延迟,但这并不准确(MobileNet和NASNet有相似的FLOPS——575M vs. 564M,但它们的延迟相当不同——113ms vs. 183ms),我们直接通过在移动设备上运行模型来衡量真实的延迟;
  2. 第二点,我们观察到之前的自动搜索主要是搜索一些类型的单元,然后就重复堆叠相同单元构成网络结构,这样做虽然简化了搜索过程,但是也排除了层的多样性,而层的多样性对于计算效率是很重要的,为了解决这个问题,我们提出了一种分解式层次搜索空间,它允许各层的结构不同,并且最终在灵活性和搜索空间大小上取得平衡;
  3. 第三点,将我们搜索得到的网络用于目标分类和COCO目标检测,效果都比较好;

2. Related Work

最近几年,提高CNN模型的资源效率已经变成了一个积极的研究领域。目前的一些常用的方法包括:

  • 1)量化:对baseline CNN模型的权重和激活值量化到低精度;
  • 2)剪枝:根据对FLOPS或者时间延迟的要求,将一些不重要的卷积核剪掉;

然而,这些方法都是在已经有的baseline模型上做压缩,并不关注如何学习到新颖的CNN操作的组合,即更好的CNN baseline模型。

另一种通用的方法就是直接人工设计更加高效的移动结构:SqueezeNet通过使用低成本的 1x1 卷积和减小卷积核尺寸来降低参数量和计算量;MobileNet使用深度分离卷积来减小计算密度;ShuffleNets使用低成本的组卷积和通道清洗;Condensenet学习跨层连接组卷积层。最近,MobileNetV2通过使用倒置的残差块和线性的瓶颈层来实现比较好的结果,不幸的是,由于潜在的设计空间太大,这些人工设计的模型通常需要大量的工作量。

最近,人们越来越对使用神经架构搜索自动设计模型感兴趣,这些方法主要基于强化学习、进化搜索、可微分搜索和一些其他的学习算法。尽管这些方法可以通过重复堆叠搜索到的小单元产生适用于移动端的模型,但是它们没有将移动平台的约束考虑进搜索过程或者搜索空间。与我们工作相关联的有MONAS、DPP-Net、RNAS和Pareto-NASH,努力优化模型尺寸和精度的mutiple objectives,但是他们的搜索进程都是在像CIFAR这样的小数据集上优化。相反,这篇论文添加了真实的延迟约束,并且关注的是像ImageNet分类和COCO目标检测这样的数据集。

3. Problem Formulation

我们将设计问题公式化为一个multi-objective的搜索,旨在发现高精度和低推理延迟的CNN模型。不像之前的架构搜索方法中将FLOPS作为一个不直接的衡量的标准,我们直接考虑在移动端运行CNN模型的真实推理延迟,然后将其考虑到我们的目标中。通过这样做到底实现了什么呢?我们早期的工作展示了由于移动硬件/软件特性的多样性,近似真实的延迟是一件很有挑战的事情!

给定一个模型m,我们让 A C C ( m ) ACC(m) ACC(m)表示在目标任务上的精度, L A T ( m ) LAT(m) LAT(m)表示在目标移动平台上的推理延迟, T T T是目标延迟,即我们允许的最大的延迟时间。我们可以将T作为一个约束条件,在这个约束条件下最大化模型精度:
在这里插入图片描述

从上面的目标函数可以看出来,这是一个多目标规划问题,我们是想同时优化精度和延迟时间两个目标,这种问题一般是不存在绝对最优解的,即同时让延迟最小和精度最高的解;通俗来讲,我们可以通过帕累托改进达到帕累托最优——“从此之后,非损人不能利己”的状态。一种可行的方法是利用“评价函数”将多目标规划问题转化为单目标规划问题,设计合适的评价函数使得单目标优化问题的最优解是多目标优化问题的有效解/弱有效解。我们使用的是自定义加权法来近似帕累托最优问题,优化目标可以定义为:
在这里插入图片描述

这里的 α , β \alpha,\beta α,β都是特定的常量。挑选 α , β \alpha,\beta α,β的经验规则就是确保在不同的 accurancy-latency 权衡下帕累托优化应该有近似的reward。举个例子,我们实验观察到延迟时间加倍将会带来精度上5%的提升,有两个模型:(1) M 1 M1 M1模型的延迟时间和精度分别为 l 和 a l和a la;(2) M 2 M2 M2模型的延迟时间为 2 l 2l 2l,精度提升了5%达到 ( 1 + 5 (1+5 (1+5% ) a )a )a。他们应该有相似的reward: R e w a r d ( M 2 ) = a ⋅ ( 1 + 5 Reward(M2)=a\cdot (1+5 Reward(M2)=a(1+5% ) ( 2 l T ) β ≈ R e w a r d ( M 1 ) = a ⋅ ( l T ) β )(\frac{2l}{T})^{\beta}\approx Reward(M1)=a\cdot (\frac{l}{T})^{\beta} )(T2l)βReward(M1)=a(Tl)β,解得 α = β = − 0.07 \alpha=\beta=-0.07 α=β=0.07
在这里插入图片描述

Figure 3展示了两种典型的 ( α , β ) (\alpha,\beta) (α,β)取值对目标函数的影响,横坐标为延迟时间,纵坐标为目标函数值。 ( α = 0 , β = − 1 ) (\alpha=0,\beta=-1) (α=0,β=1)是上面的那幅图,可以看出来,当延迟时间小于目标延迟 T T T时,目标函数的取值不随延迟而改变,只是精度的函数。 ( α = − 0.07 , β = − 0.07 ) (\alpha=-0.07,\beta=-0.07) (α=0.07,β=0.07)是下面的那幅图,可以看出来,它是将目标延迟T作为软约束,基于不同的延迟时间平滑地调整目标函数的取值。

4. Mobile Neural Architecture Search

在本节中,我们首先讨论了我们提出的新颖的分解层次搜索空间,然后总结了基于搜索算法的强化学习。

4.1. Factorized Hierarchical Search Space

据最近研究表明,定义好的搜索空间对于神经架构搜索是非常重要的。然而,大多数之前的方法都是仅仅搜索一些复杂的单元,然后重复堆叠相同单元。这些方法忽略了层的多样性,但其实这对于实现高精度和低延迟是很重要的。

与之前的方法相比,我们引入了一种新颖的分解式层次搜索空间,将一个CNN模型分解为不同的块然后针对每个块搜索操作和块与块的连接关系,因此允许不同块有不同的层结构。我们的直觉是我们需要基于输入输出的不同形状来搜索最好操作以获得更好的 accurate-latency 平衡。举个例子,CNN的早期stages通常需要处理大量的数据,因此对于推理延迟比之后的stages影响更高。正式来讲,考虑广泛应用的深度分离卷积(深度卷积+逐点卷积),输入feature map尺寸为 ( H , W , M ) (H,W,M) (H,W,M),先用维度为(K,K,M)的卷积核做深度卷积输出feature map尺寸为 ( H , W , M ) (H,W,M) (H,W,M),再用维度为 ( 1 , 1 , M , N ) (1,1,M,N) (1,1,M,N)的卷积核做逐点卷积, ( H , W ) (H,W) (H,W)为输入分辨率, M / N M/N M/N为卷积核的个数。乘加操作的总数为:
在这里插入图片描述

当整体计算资源 受限时,我们需要仔细平衡kernel的尺寸K和filter的个数N。举个例子,增大感受野必须通过增加卷积层kernel尺寸K的同时减少同层卷积核的个数N,或者减少其他层的计算量。
在这里插入图片描述
Figure 4展示了我们搜索空间的baseline结构,我们将CNN模型划分为一组预先定义的blocks,逐渐减少输入分辨率和增加卷积核个数。每个块有一列相同的层,操作和连接都由每个块的子搜索空间决定,具体来讲,对于一个块i的子搜索空间由以下选择组成:

  • 卷积操作ConvOp:常规卷积(conv)、深度卷积(dconv)和移动倒置瓶颈卷积;
  • 卷积核的kernel size: 3 × 3 , 5 × 5 3\times 3,5\times 5 3×3,5×5
  • Squeeze-and-Excitation ratio SE ratio:0,0.25(具体可见SENet);
  • Skip操作SkipOp:池化,恒等残差块、no skip;
  • 输出的 f i l t e r s i z e F i filter size F_{i} filtersizeFi
  • 每个块包含的层数 N i N_{i} Ni

C o n v O p , K e r n e l S i z e , S E R a t i o , S k i p O p , F i ConvOp,KernelSize,SERatio,SkipOp,F_{i} ConvOp,KernelSize,SERatio,SkipOp,Fi决定了一个层的结构, N i N_{i} Ni决定了第i个块内层重复的数量。举个例子,Figure 4中block 4的每层有一个倒置的瓶颈 5x5 卷积层、恒等残差,这样的层重复了 N 4 N_{4} N4次。我们使用MobileNetV2作为参考网络,将所有的搜索选择离散化:对于块内的每个层,我们基于MobileNetV2搜索 { 0 , + 1 , − 1 } \left \{ 0,+1,-1 \right \} {0,+1,1};对于每个层的filter size,我们搜索MobileNetV2的相关尺寸的 { 0.75 , 1.0 , 1.25 } \left \{ 0.75,1.0,1.25 \right \} {0.75,1.0,1.25}

我们的分解式层次搜索空间有一个直接优势,就是可以平衡层的多样性和整个搜索空间的尺寸。假设我们将网络划分为B个块,每个块平均N个层的子搜索空间为S,那么整个搜索空间为 S B S^{B} SB,将每个层展开的搜索空间为 S B ∗ N S^{B*N} SBN,一个典型情况就是 S = 432 , B = 5 , N = 3 S=432,B=5,N=3 S=432,B=5,N=3,我们的搜索空间大小为 1 0 13 10^{13} 1013,每个层展开后的搜索空间大小为 1 0 39 10^{39} 1039

4.2. Search Algorithm

受最近的工作的启发,我们使用强化学习算法来寻找多目标搜索问题的帕累托最优解,我们选择强化学习,因为它很方便而且reward易于定制,但是我们想类似于进化这样的方法应该也是工作的。

具体来说,我们将搜索空间中的每个CNN模型映射到一系列tokens,这些tokens由基于基于它的参数 θ \theta θ的强化学习agent的一组动作 a 1 : T a_{1:T} a1:T决定。我们的目标时最大化期望奖励:
在这里插入图片描述

这里的m是由动作 a 1 : T a_{1:T} a1:T决定的模型,R(m)是由等式(2)定义的目标函数值。

正如Figure 1所示,搜索框架由三部分组成:循环神经网络RNN控制器,一个训练器来获得模型精度和在移动端运行模型的推理延迟。我们遵循众所周知的sample-eval-update循环来训练控制器,在每个step,控制器首先使用它现在的参数 θ \theta θ来采样一组模型,基于来自RNN的softmax logits预测一组tokens。对于每个采样模型m,我们直接在目标任务上训练得到它的精度 A C C ( m ) ACC(m) ACC(m),在真实的手机平台 上运行模型得到它的推理延迟 L A T ( m ) LAT(m) LAT(m)。接着我们利用等式(2)计算奖励值 R ( m ) R(m) R(m),在每个step的最后,控制器的参数 θ \theta θ使用近似的策略优化最大化期望奖励等式(5)。sample-eval-update loop一直循环直到它达到最大的steps或者参数 θ \theta θ收敛。

5. Experiment Setup

直接在如ImageNet或者COCO这样的大任务上搜索CNN模型是很昂贵的,每个模型都需要数天才能收敛。之前的方法主要是在如CIFAR-10这样的小任务上做架构搜索,我们发现通常将模型延迟考虑进去在小模型上不起作用(我理解是在小任务上网络结构本身就小,延迟时间不会超过目标延迟时间),当要应用到大模型上时就需要放大模型。在本篇论文中,我们直接在ImageNet上搜索我们的结构,但是少了5个epochs的训练。作为一种常见做法,我们随机从训练集中保留5万张图片作为验证集,为例确保精度提升是因为我们的搜索空间,我们使用和NASNet相同的RNN控制器,即使它并不十分高效:在64 TPUv2设备上每个结构搜索要花费4.5天。在训练期间,我们通过在移动手机上运行模型来衡量真实延迟,总的来说,我们的控制器在结构搜索期间总共采样了8k个模型,但是只有15个表现最好的模型被迁移到ImageNet上,仅有一个模型被迁移到COCO。

在整个ImageNet训练期间,实验设置:
在这里插入图片描述

6. Results

6.1 ImageNet Classification Performance

Table 1展示了我们的模型在ImageNet上的表现,我们将目标延迟设置为 T = 75 m s T=75ms T=75ms,类似于MobileNetV2,在架构搜索期间我们的reward函数中的 α = β = − 0.07 \alpha=\beta=-0.07 α=β=0.07。之后,挑选出三个性能最好的MnasNet模型——来自同一个搜索实验的不同的精度—延迟平衡,并将其与存在的移动模型相比较。
在这里插入图片描述
squeeze-and-excitation(SE)模块其实就是利用了attention的机制,许多已经存在的方法中并没有这项优化,我们也在Table 2中展示了没有SE的搜索结果,我们的自动方法仍然优于MobileNetV2和NASNet。
在这里插入图片描述

6.2 Model Scaling Performance

改变深度因子或者分辨率对模型进行缩放:
在这里插入图片描述
另外除了模型缩放,其实我们也可以在任意目标延迟下搜索新的网络结构。举个例子,现在有一个应用需要latency低到25ms,我们可以缩放一个baseline模型,或者根据约束限制直接搜索新的网络结构。Table 4比较了这两种方法,为了公正的比较,所有模型使用相同的分辨率 224 × 224 224\times 224 224×224
在这里插入图片描述

6.3. COCO目标检测表现

在这里插入图片描述

7. Ablation Study and Discussion

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

7.1. Soft vs. Hard Latency Constraint

我们的多目标搜索方法允许通过设置 α 和 β \alpha和\beta αβ来平衡精度和延迟之间的加权关系。Figure 6展示了对于典型的 α 和 β \alpha和\beta αβ的目标搜索结果。当 α = 0 , β = − 1 \alpha=0,\beta=-1 α=0β=1时,延迟可以被视为“硬约束”,所以控制器影响于得到更快的模型来避免延迟惩罚;另一方面,当 α = β = − 0.07 \alpha=\beta=-0.07 α=β=0.07时,控制器将目标延迟视为“软约束”,并且尽力在一个宽泛的延迟范围采样更多的模型,它在75ms的目标延迟周围采样更多的模型,同时它也探索了很多小于40ms和大于110ms的模型。这允许了我们从单个结构搜索中采样来自帕累托曲线的多个模型。
在这里插入图片描述

7.2. Disentangling Search Space and Reward

在这里插入图片描述

7.3. MnasNet Architecture and Layer Diversity

Figure 7(a)展示了我们的自动搜索方法得到的MnasNet-A1模型。正如预料中的那样,整个网络由多种层结构组成,一个比较的发现是MnasNet使用了 3x3 和 5x5 的卷积,这和之前的移动模型只使用 3x3 的卷积核不同。
在这里插入图片描述
为了研究层的多样性影响,Table 6比较了MnasNet和它的变种(仅仅重复单个类型的层),结果如下:
在这里插入图片描述

以下是基于MnasNet实现垃圾分类任务的论文: 一、绪论 随着人类生活水平的提高,垃圾污染问题越来越严重,如何有效地进行垃圾分类成为了一个重要的问题。本文旨在探究如何使用深度学习方法,自动化地进行垃圾分类,其中使用了MnasNet作为模型,进行垃圾图像的分类。 二、相关工作 当前,已有很多研究使用深度学习方法进行垃圾分类任务,其中使用卷积神经网络(Convolutional Neural Network, CNN)的方法最为常见。AlexNet、VGGNet、GoogLeNet等经典的CNN模型都被应用于垃圾分类任务中,并取得了一定的效果。 近年来,自动化神经结构搜索(Automated Neural Architecture Search, NAS)技术也被应用于垃圾分类任务中。其中,MnasNet是一种高效的CNN模型,通过使用NAS技术进行模型搜索和优化,取得了较好的性能。 三、数据集 我们使用了Garbage Classification数据集,该数据集包含了六类垃圾:玻璃、纸、塑料、金属、厨余和其他。数据集中共有2527张图像,其中每类垃圾都有约400张图像。我们将数据集划分为训练集、验证集和测试集,其中训练集包含80%的数据,验证集包含10%的数据,测试集包含10%的数据。 对于每张图像,我们将其缩放为224x224的大小,并进行归一化处理,将像素值缩放到[0,1]的范围内。 四、模型设计 我们使用了MnasNet作为模型,对垃圾图像进行分类。MnasNet是一种高效的CNN模型,其中使用了自动化神经结构搜索(NAS)技术进行模型搜索和优化,取得了较好的性能。 具体地,我们使用了MnasNet-B1模型,该模型包含了多个卷积层、池化层、批次归一化层和全连接层。其中,使用了NAS技术进行结构搜索和优化,达到了较高的性能。我们在模型的最后添加了一个全连接层,用于将提取的特征进行分类。具体地,我们使用了softmax函数进行分类,将输出结果转换为概率值,用于表示每类垃圾的概率。 五、实验结果与分析 我们使用了训练集对模型进行训练,使用验证集进行模型调参,并使用测试集对模型进行测试。我们使用了准确率(Accuracy)、精确率(Precision)、召回率(Recall)和F1值(F1-score)等指标,对模型进行评估。 在测试集上,我们的模型取得了92.5%的准确率、92.0%的精确率、93.0%的召回率和92.5%的F1值。这表明,我们的模型具有较好的性能,可以用于垃圾图像的分类任务。 我们还对模型进行了可视化分析,对一些测试图像进行了预测和可视化。如下图所示,我们对一张测试图像进行了预测,并可视化了模型中每个卷积层的输出结果。 ![可视化分析](https://i.imgur.com/0HlZPcW.png) 六、结论 本文探究了如何使用深度学习方法进行垃圾分类任务,并使用MnasNet作为模型,进行垃圾图像的分类。我们使用Garbage Classification数据集进行实验,取得了较好的结果。实验结果表明,我们的模型具有较好的性能,可以用于垃圾图像的分类任务。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值