论文提出了移动端的神经网络架构搜索方法,该方法主要有两个思路,首先使用多目标优化方法将模型在实际设备上的耗时融入搜索中,然后使用分解的层次搜索空间,来让网络保持层多样性的同时,搜索空间依然很简洁,能够使得搜索的模型在准确率和耗时中有更好的trade off



来源:【晓飞的算法工程笔记】 公众号

论文: MnasNet: Platform-Aware Neural Architecture Search for Mobile

Introduction


  在设计移动端卷积网络时,常常会面临着速度与准确率的取舍问题,为了设计更好的移动端卷积网络,论文提出移动网络的神经网络架构搜索方法,大概步骤如图1所示。对比之前的方法,该方法主贡献有3点:

  • 将设计问题转化为多目标优化问题(multi-objective optimization),同时考虑准确率和实际推理耗时。由于计算量FLOPS其实和实际推理耗时并不总是一致的(MobileNet,575M,113ms vs NASNet,564 M,183ms),所以论文通过实际移动设备上运行来测量推理耗时
  • 之前的搜索方法大都先搜索最优的单元,然后堆叠成网络,虽然这样能优化搜索空间,但抑制了层多样性。为了解决这个问题,论文提出分解的层次搜索空间(factorized hierarchical search space),使得层能存在结构差异的同时,仍然很好地平衡灵活性和搜索空间大小

  • 在符合移动端使用的前提下,达到ImageNet和COCO的SOTA,且速度更快,模型更轻量。如图2所示,在准确率更高的前提下,MansNet速度比MobieNet和NASNet-A分别快1.8倍和2.3倍

Problem Formulation


  对于模型$m$,$ACC(m)$为模型准确率,$LAT(m)$为目标移动平台的推理耗时,$T$为目标耗时,公式1为在符合耗时前提下,最大化准确率

  但公式1仅最优准确率,没有进行多目标优化(multiple Pareto optimal),于是论文改用公式2的加权乘积方法来近似进行多目标优化

  $w$是权重因子,$\alpha$和$\beta$为应用特定常数(application-specific constants),这两个值的设定是用来保证符合accuracy-latency trade-offs的有相似的reward,即高准确率稍高耗时和稍低准确率低耗时有相同的reward。例如,凭经验认为两倍耗时通常能带来5%准确率提升,对于模型M1(耗时$l$,准确率$a$),模型M2(耗时$2l$,准确率$a(1+5%)$),他们应该有相同的reward:$Reward(M2)=a\cdot (1+5%)\cdot (2l/T)^\beta\approx Reward(M1)=a\cdot (l/T)^\beta$,得到$\beta=-0.07$。后面实验没说明都使用$\alpha=\beta=-0.07$

  图3为不同常数下的目标函数曲线,上图$(\alpha=0,\beta=-1)$意味着符合耗时的直接输出准确率,超过耗时的则大力惩罚,下图$(\alpha=\beta=-0.07)$则是将耗时作为软约束,平滑地调整目标函数

Mobile Neural Architecture Search


Factorized Hierarchical Search Space

  论文提出分别的层次搜索空间,整体构造如图4所示,将卷积神经网络模型分解成独立的块(block),逐步降低块的输入以及增加块中的卷积核数。每个块进行独立块搜索,每个块包含多个相同的层,由块搜索来决定。搜索的目的是基于输入和输出的大小,选择最合适的算子以及参数(kernal size, filter size)来达到更好的accurate-latency trade-off

  每个块的子搜索包含上面6个步骤,例如图4中的block 4,每层都为inverted bottleneck 5x5 convolution和residual skip path,共$N_4$层

  搜索空间选择使用MobileNetV2作为参考,图4的block数与MobileNetV2对应,MobileNetV2的结构如上。在MobileNetV2的基础上,每个block的layer数量进行${0,+1,-1}$进行加减,而卷积核数则选择${0.75,1.0,1.25}$

  论文提出的分解的层次搜索空间对于平衡层多样性和搜索空间大小有特别的好处,假设共$B$blocks,每个block的子搜索空间大小为$S$,平均每个block有$N$层,总共的搜索空间则为$SB$,对比按层搜索的空间$S{B*N}$小了很多

Search Algorithm

  论文使用NAS的强化学习方法来优化公式2的rewadr期望,在每一轮,controller根据当前参数$\theta$一批模型,每个模型$m$训练后获得准确率$ACC(m)$以及实际推理耗时$LAT(m)$,根据公式2得到reward,然后使用Proximal Policy Optimization来更新controller的参数$\theta$最大化公式5

Experimental Setup


  论文先尝试在CIFAR-10上进行架构搜索,然后迁移到大数据集上,但是发现这样不奏效,因为考虑了实际耗时,而应用到大数据集时,网络通常需要放大,耗时就不准确了。因此,论文直接在ImageNet上进行搜索,但每个模型只训练5轮来加速。RNN controller与NASNet保持一致,总共需要64 TPUv2搜索4.5天,每个模型使用Pixel 1手机进行耗时测试,最终大概测试了8K个模型,分别选择了top 15和top 1模型进行完整的ImageNet训练以及COCO迁移,输入图片的分辨率分别为$224\times 224$和$320\times 320$

Results


ImageNet Classification Performance

  $T=75ms$,$\alpha=\beta=-0.07$,结果如Table 1所示,MnasNet比MobileNetV2(1.4)快1.8倍,准0.5%,比NASNet-A快2.3倍,准1.2%,而稍大的模型MnasNet-A3比ResNet-50准,但少用了4.8x参数和10x计算量

  由于之前的方法没有使用SE模块,论文补充了个对比训练,MnasNet效果依然比之前的方法要好

Model Scaling Performance

  缩放模型是调整准确率和耗时的来适应不同设备的常见操作,可以使用depth multiplier(好像叫width multiplier?)来缩放每层的channels数,也可以直接降低输入图片的分辨率。从图5可以看到,MansNet始终保持着比MobileNetV2好的表现

  此外,论文提出的方法能够搜索不同耗时的模型,为了比较性能,论文对比了缩放模型和搜索模型的准确率。从Table4看出,搜索出来的模型有更好的准确率

COCO Object Detection Performance

  论文对比了MnasNet在COCO上的表现,可以看到MnasNet准确率更高,且少用了7.4x参数和42x计算量

Ablation Study and Discussion


Soft vs. Hard Latency Constraint

  多目标搜索方法允许通过设定$\alpha$和$\beta$进行hard和soft的耗时约束,图6展示了$(\alpha=0,\beta=-1)$和$(\alpha=\beta=-0.07)$,目标耗时为75ms,可以看到soft搜索更广的区域,构建了很多接近75ms耗时的模型,也构建了更多小于40ms和大于110ms的模型

Disentangling Search Space and Reward

  论文将多目标优化和分解的层次搜索空间进行对比实验,从结果来看,多目标优化能很好平衡低耗和准确率,而论文提出的搜索空间能同时降低耗时和提高准确率

MnasNet Architecture and Layer Diversity

  图7(a)为MnasNet-A1的结构,包含了不同的层结构,可以看到该网络同时使用了5x5和3x3的卷积,之前的方法都只使用了3x3卷积

  Table 6展示了MansNet模型及其变体,变体上仅用某一层的来构建网络,可以看到MnasNet在准确率和耗时上有了更好的trade-off

CONCLUSION


  论文提出了移动端的神经网络架构搜索方法,该方法使用多目标优化方法将模型在实际设备上的耗时融入搜索中,能够使得搜索的模型在准确率和耗时中有更好的trade off。另外该方法使用分解的层次搜索空间,来让网络保持层多样性的同时,搜索空间依然很简洁,也提高了搜索网络的准确率。从实验结果来看,论文搜索到的网络MansNet在准确率和耗时上都比目前的人工构建网络和自动搜索网络要好





如果本文对你有帮助,麻烦点个赞或在看呗~

更多内容请关注 微信公众号【晓飞的算法工程笔记】

MnasNet:经典轻量级神经网络搜索方法 | CVPR 2019的更多相关文章

  1. CVPR 2019轨迹预测竞赛冠军方法总结

    背景 CVPR 2019 是机器视觉方向最重要的学术会议,本届大会共吸引了来自全世界各地共计 5160 篇论文,共接收 1294 篇论文,投稿数量和接受数量都创下了历史新高,其中与自动驾驶相关的论文. ...

  2. 自动驾驶研究回顾:CVPR 2019摘要

    我们相信开发自动驾驶技术是我们这个时代最大的工程挑战之一,行业和研究团体之间的合作将扮演重要角色.由于这个原因,我们一直在通过参加学术会议,以及最近推出的自动驾驶数据集和基于语义地图的3D对象检测的K ...

  3. CVPR 2019 | 用异构卷积训练深度CNN:提升效率而不损准确度

    对于深度卷积神经网络而言,准确度和计算成本往往难以得兼,研究界也一直在探索通过模型压缩或设计新型高效架构来解决这一问题.印度理工学院坎普尔分校的一篇 CVPR 论文则给出了一个新的思路——使用异构的卷 ...

  4. CVPR 2019细粒度图像分类竞赛中国团队DeepBlueAI获冠军 | 技术干货分享

    [导读]CVPR 2019细粒度图像分类workshop的挑战赛公布了最终结果:中国团队DeepBlueAI获得冠军.本文带来冠军团队解决方案的技术分享. 近日,在Kaggle上举办的CVPR 201 ...

  5. Relation-Shape Convolutional Neural Network for Point Cloud Analysis(CVPR 2019)

    代码:https://github.com/Yochengliu/Relation-Shape-CNN 文章:https://arxiv.org/abs/1904.07601 作者直播:https:/ ...

  6. zz先睹为快:神经网络顶会ICLR 2019论文热点分析

    先睹为快:神经网络顶会ICLR 2019论文热点分析 - lqfarmer的文章 - 知乎 https://zhuanlan.zhihu.com/p/53011934 作者:lqfarmer链接:ht ...

  7. CVPR 2019 行人检测新思路:

    CVPR 2019 行人检测新思路:高级语义特征检测取得精度新突破 原创: CV君 我爱计算机视觉 今天 点击我爱计算机视觉置顶或标星,更快获取CVML新技术 今天跟大家分享一篇昨天新出的CVPR 2 ...

  8. TensorFlow实战之实现AlexNet经典卷积神经网络

    本文根据最近学习TensorFlow书籍网络文章的情况,特将一些学习心得做了总结,详情如下.如有不当之处,请各位大拿多多指点,在此谢过. 一.AlexNet模型及其基本原理阐述 1.关于AlexNet ...

  9. 经典卷积神经网络(LeNet、AlexNet、VGG、GoogleNet、ResNet)的实现(MXNet版本)

    卷积神经网络(Convolutional Neural Network, CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现. 其中 文章 详解卷 ...

随机推荐

  1. Linux使用手册

    一.开关机 sync :把内存中的数据写到磁盘中(关机.重启前都需先执行sync) shutdown -rnow或reboot :立刻重启 shutdown -hnow :立刻关机 shutdown ...

  2. TensorFlow从0到1之TensorFlow Keras及其用法(25)

    Keras 是与 TensorFlow 一起使用的更高级别的作为后端的 API.添加层就像添加一行代码一样简单.在模型架构之后,使用一行代码,你可以编译和拟合模型.之后,它可以用于预测.变量声明.占位 ...

  3. 0.1---selenium+java自动化测试进阶01---PageObject设计模式

    一.PageObject设计模式   1.简介 PageObject设计模式,又称页面对象模式,是使用Selenium的广大同行最为公认的一种设计模式.在设计测试时,把元素和方法按照页面抽象出来,分离 ...

  4. 这一次搞懂Spring代理创建及AOP链式调用过程

    文章目录 前言 正文 基本概念 代理对象的创建 小结 AOP链式调用 AOP扩展知识 一.自定义全局拦截器Interceptor 二.循环依赖三级缓存存在的必要性 三.如何在Bean创建之前提前创建代 ...

  5. Ehcache基础入门

    1. 基本介绍 EhCache 是一个纯Java的进程内缓存框架,具有快速.精干等特点,是Hibernate中默认CacheProvider.Ehcache是一种广泛使用的开源Java分布式缓存.主要 ...

  6. 版本控制工具 GIT入门教程

    GIT 在团队中的中作流程 1.每个程序员在自己的分支上进行开发 2.主程序猿/Leader合并程序员程序 3.程序员之间也可以对一下提交冲突进行合并 下载和安装 GIT官方网址:http:// gi ...

  7. C#数据结构与算法系列(十九):选择排序算法(SelectSort)

    1.介绍 选择排序算法属于内部排序算法,是从欲排序的数据中,按指定的规则选出某一元素,再依规定交换位置达到排序的目的 时间复杂度:O(n^2) 双层for 2.思想 选择排序(select sorti ...

  8. JNI调用Cython生成库‘undefined symbol: PyInit_’问题

    最近项目需要提升所有 Python 算法的执行时间,并给 Java 框架调用,根据 Python一键转Jar包,Java调用Python新姿势!的思路可以用 Cython 将 Python 代码转换为 ...

  9. 第一步:安装centos_8

    关于centos的安装其实大部分时候都是在虚拟机环境下安装. 好处无疑有这几个:方便,快速,主要就是整出事情了我可以直接删了重装 我这边是在vmware下进行一个安装 vmware我这边给出下载链接: ...

  10. Isset、empty、count、is_null的比较

    1.empty判断变量是否为空, 先把变量转为布尔值再返回:对变量(字符串.数组等)赋值为一切为空的值.或者未定义的变量都返回true,即判断为空,比如null,' ',0,array(),false ...