MnasNet:迈向移动端机器学习模型设计的自动化之路

文 /?Google Brain 团队软件工程师 Mingxing Tan?

卷积神经网络?(CNN) 现已广泛应用于图像分类、面部识别、物体检测和其他许多领域。但遗憾的是,由于移动端模型需要小巧、快速、准确,所以为移动设备设计 CNN 非常具有挑战性。虽然科研人员已经为设计和改进移动端模型做出了巨大努力,先后推出?MobileNet?和?MobileNetV2?等模型,但人工创建高效率模型依旧面临挑战,因为有太多可能性需要考虑。在?AutoML 神经架构搜索最新进展的启发下,我们希望了解移动端 CNN 模型的设计是否也可以从 AutoML 方法中获益。

在《MnasNet:面向移动端的平台感知神经架构搜索》(MnasNet: Platform-Aware Neural
Architecture Search for Mobile)
一文中,我们探讨了一种使用强化学习设计移动端模型的自动化神经架构搜索方法。为了解决移动设备的速度限制,我们明确地将速度信息纳入搜索算法的主要奖励函数中,以便该搜索能够识别在准确度和速度之间达到良好折中的模型。通过这种方式,MnasNet
能够找到运行速度比手工设计的最先进的?MobileNetV2?模型快 1.5 倍,比?NASNet?快 2.4 倍的模型,同时达到相同的 ImageNet
top 1
准确率。

在以往的架构搜索方法中,需要通过另一个代理(例如?FLOPS)来考虑模型速度,而我们的方法则是通过在特定平台(例如本研究中使用的
Pixel
手机)上执行模型来直接测量模型速度。鉴于每类移动设备都有其自己的软件和硬件特质,并且可能需要采用不同的架构来实现准确度和速度之间的最佳折中,因此使用这种方式,我们可以直接测量在现实作法中可以达到的速度。

关于我们的方法,其整个流程主要由三部分组成:一个基于?RNN?的控制器,用于学习模型架构并进行采取;一个训练器,用于构建和训练模型以获得准确度;还有一个推理引擎,可使用?TensorFlow
Lite?在真实手机上测量模型速度。我们构想出了一个多目标优化问题,以期同时实现高准确度和高速度,并且采用带有自定义奖励函数的强化学习算法来寻找帕累托最优解(例如,能够达到最高准确度但又不会拉低速度的模型)。

移动端自动化神经架构搜索方法的完整流程

为了在搜索灵活性和搜索空间大小之间保持恰当的平衡,我们提出了一种新的因式分解层级搜索空间,该空间将卷积神经网络因式分解为一系列区块,然后使用层级搜索空间来确定每个区块的层结构。由此,我们的方法允许不同的层使用不同的运算和连接。与此同时,我们强制每个区块中的所有层共享同一个结构,因此与扁平的逐层搜索空间相比,我们的搜索空间大小减少了几个数量级。

我们的 MnasNet
网络从新的因式分解层级搜索空间中采样,显示出整个网络架构中的层多样性

?

我们在?ImageNet?分类和?COCO?物体检测上测试了这种方法的有效性。我们的试验在典型移动速度限制下实现了新的最高准确度。特别是,下图所示为该网络在
ImageNet 上的结果。

ImageNet
的准确度和推理延迟时间对比

MnasNets
是我们的模型

在相同的准确度下,MnasNet 模型的运行速度比手工设计的最先进的?MobileNetV2?模型快
1.5 倍,托福学习技巧并且比?NASNet?快 2.4 倍,而 NASNet 也是使用架构搜索的方法。在应用压缩和激活优化方法后,我们的 MnasNet+SE 模型实现了
76.1% 的?ResNet-50?level top-1 准确率,并且参数数量是 MnasNet 的 1/19,乘加运算数量是 MnasNet 的
1/10。在 COCO 物体检测方面,我们的模型系列实现了比 MobileNet 更高的准确度和更快的速度,并且在 1/35
的计算成本下实现了与?SSD300?模型相差无几的准确度。

我们很高兴看到我们的自动化方法可以在多个复杂的移动视觉任务上表现出最佳性能。未来,我们计划将更多运算和优化方法纳入我们的搜索空间,并将其应用到更多移动视觉任务中,例如语义分割。

更多 AI 相关阅读:

·?Google
BigQuery 中的机器学习

·?保护用户免受扩展程序加密劫持

·?全新 AIY
Edge TPU 开发板惊艳亮相



文章来源:https://blog.csdn.net/jILRvRTrc/article/details/81880407

原文地址:https://www.cnblogs.com/yujingyua/p/9639544.html

时间: 2024-11-01 20:28:23

MnasNet:迈向移动端机器学习模型设计的自动化之路的相关文章

rsync服务端和客户端配置自动化配置脚本

系统版本CentOS release 6.9 (Final)2.6.32-696.el6.x86_64 x86_64 rsync 服务端IP:172.16.1.41 计算机名:backuprsync客户端IP:172.16.1.31 计算机名:nfs 服务器配置: [[email protected] scripts]# cat backup_server.sh #!/bin/bash export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/

《Python自动化之路》大纲

第一天 1.编程语言介绍2.Python基础,介绍历史.发展情况及现状3.Python安装.环境准备4.编程风格.语法要求.变量格式等5.编写用户交互脚本6.读取用户输入7.基本流程控制,if..else/for x in…/while True8.程序流程控制二,break\continue\ 嵌套循环9.项目实践:编写用户登录认证程序* 实现用户名密码登陆,输入错误3次后锁定用户,多用户在线! 第二天1.python I/O交互2.处理文件.通过Python修改及处理文件内容3.项目实践:编

携程移动端架构演进与优化之路

从2013年开始,我们先后进行了不同路径的多样性架构探索,在实践过程中也经历了各种曲折与压力,最终实现了2015年的这个全新架构,实现了无线服务端基于API Gateway的架构框架.客户端的模块化开发.测试与部署,支持运行期间的模块实时加载.按需Lazyloding.Remote加载,从而实现模块级动态升级以及代码级热修复,并 且逐步推动数百人的客户端研发团队由不堪重负.效率低下的大版本大火车开发模式向模块间独立迭代.发布轻量级的开发方向演进. 同时在架构探索期间,携程做了App相关的很多性能

为测试赋能,腾讯WeTest探索手游AI自动化测试之路

作者:周大军/孙大伟, 腾讯后台开发 高级工程师 商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处.  WeTest导读 做好自动化测试从来不件容易的事情,更何况是手游的自动化测试,相比传统的APP,手游画面纯OPENGL绘制无可识别控件,且界面动画多.随机性大.举个例子,拿新手引导来说,手游中新账号试玩会有一系列的新手引导,当新手引导过程通过之后,后面就不会再出现,但当账号升级到一定等级,又会出现新玩法的新手引导.且手游的版本迭代非常快,平均1-2周就会出一个版本,界面也经常发生变

python 自动化之路 day 14

今日内容 http://www.cnblogs.com/wupeiqi/articles/5699254.html 群共享 s15Html课件 1. paramiko模块 https://github.com/paramiko/paramiko/blob/master/demos/interactive.py 2. 实现跳板机 作业:数据库+paramiko实现 3. HTML 在服务器端就是一个文件,文件内部: <h1>内容</h1> <h2>内容</h2>

python 自动化之路 day 10

本节内容 Gevent协程 Select\Poll\Epoll异步IO与事件驱动 Python连接Mysql数据库操作 RabbitMQ队列 Redis\Memcached缓存 Paramiko SSH Twsited网络框架 引子 到目前为止,我们已经学了网络并发编程的2个套路, 多进程,多线程,这哥俩的优势和劣势都非常的明显,我们一起来回顾下 协程 协程,又称微线程,纤程.英文名Coroutine.一句话说明什么是线程:协程是一种用户态的轻量级线程. 协程拥有自己的寄存器上下文和栈.协程调度

一次曲折的竞品测试自动化之路

前两天接到一个活,对一款竞品的OCR识别结果进行分析统计,要对两万多张图片进行识别,然后统计各个字段的识别正确率,对于手动测试来讲,这基本上是不可能的. 接到这活后立刻想到以下思路:对竞品代码进行反编译,在关键节点插入自己代码,对竞品选择图片和识别结果进行记录,然后自动化驱动模拟手动测试就行了,这是最快的解决方案.下午搞定,晚上挂上手机第二天就坐等结果了,可反编译后修改完代码编译打包失败,即使反编译后不进行任何代码修改重新打包都失败,以前遇到过类似的包,也google过原因和解决方案,没有很好的

python 自动化之路 day 18 前端内容回顾、补充/Django安装、创建

前端回顾: 整体: - HTML - CSS - JavaScript - 基本数据类型 - for,while.. - DOM - obj = document.getElementById('..') - obj.innerHtml - BOM: - setInterval... ----> 可以完成所有操作 <---- - jQuery: - 选择器 $('#') $('.') - 筛选器 $('#').find('') - 内容或属性 - $('#i1').val() input系列,

前端自动化之路之gulp,node.js

随着现在前端技术的不断发展,和各个公司对前端项目开发更新速度的要求,前端自动化越来越受到大家的重视,之前传统的前端开发方式已经越来越不能满足开发的需求了,于是各种自动化工具随之产生了.而gulp就是其中一款非常强大的工具. 1.安装node.js:由于gulp是基于node.js的.所以首先需要安装node.js,node下载地址:http://nodejs.cn/download/ 安装比较简单.安装完成之后在cmd里输入:node -v 查看安装的node版本. npm -v  查看安装的n