爱吧机器人网 » 技术 > 机器学习 > 正文

小米开源移动端深度学习框架MACE:可转换TensorFlow模型

选自GitHub

机器之心编译

参与:蒋思源、李亚洲

6 月 28 日,小米首席架构师,人工智能与云平台副总裁崔宝秋在 2018(第十三届)开源中国开源世界高峰论坛上宣布,正式开源小米移动端深度学习框架 MACE。该框架采用与 Caffe2 类似的描述文件定义模型,因此它能非常便捷地部署移动端应用
 
小米开源移动端深度学习框架MACE:可转换TensorFlow模型
项目地址:https://github.com/XiaoMi/mace

文档地址:https://mace.readthedocs.io/en/latest/

Mobile AI Compute Engine (MACE) 是一个专为移动端异构计算平台优化的神经网络计算框架。目前该框架为 TensorFlow 和 Caffe 模型提供转换工具,并且其它框架定义的模型很快也能得到支持。下图展示了该计算框架的整体结构:

小米开源移动端深度学习框架MACE:可转换TensorFlow模型
据 Github 项目介绍,小米的 MACE 主要从以下的角度做了专门的优化:

  • 性能:代码经过 NEON 指令,OpenCL 以及 Hexagon HVX 专门优化,并且采用 Winograd 算法来进行卷积操作的加速。此外,还对启动速度进行了专门的优化。
  • 功耗:支持芯片的功耗管理,例如 ARM 的 big.LITTLE 调度,以及高通 Adreno GPU 功耗选项。
  • 系统响应:支持自动拆解长时间的 OpenCL 计算任务,来保证 UI 渲染任务能够做到较好的抢占调度,从而保证系统 UI 的相应和用户体验。
  • 内存占用:通过运用内存依赖分析技术,以及内存复用,减少内存的占用。另外,保持尽量少的外部 依赖,保证代码尺寸精简。
  • 模型加密与保护:模型保护是重要设计目标之一。支持将模型转换成 C++代码,以及关键常量字符混淆,增加逆向的难度。
  • 硬件支持范围:支持高通,联发科,以及松果等系列芯片的 CPU,GPU 与 DSP(目前仅支持 Hexagon) 计算加速。同时支持在具有 POSIX 接口的系统的 CPU 上运行。
模型格式

MACE 定义的定制化模型格式与 Caffe2 的类似,MACE 模型能由 TensorFlow 和 Caffe 输出的模型转化。YAML 文件详细描述了模型部署细节,后文将展示该文件的示例。

模型加载

MACE 模型格式包含两部分:定义模型的计算图和模型参数张量。计算图部分利用 Protocol Buffers 做序列化,而所有的模型参数张量级联在一起成为一个连续字节数组,我们称这个数组为张量数据。在模型图中,张量数据的偏移(offsets)和长度都会被记录下来。

可用以下三种方式加载模型:

  1. 模型计算图和张量数据都通过外部动态地加载(默认从文件系统加载,但用户可以自由选择它们的实现,例如使用压缩或加密)。这种方式提供最灵活的模型部署方式,但是模型安全也是最低的。
  2. 模型计算图和张量数据都转化为 C++代码,并通过执行经编译的代码而加载。这种方式能提供最强的模型防护和最简单的部署。
  3. 将模型计算图转换为 C++代码,并以第二种方式构建,而张量数据将在外部以第一种方式加载。
部署文件示例

部署模型到移动端的第一步就是创建 YAML 文件,该 YAML 文件描述了模型部署的情况,每一个文件都将生成一个静态库(如果指定了多个 ABIs,那么每个都会有一个静态库)。部署文件可以包含一个或多个模型,例如智能相机应用可能包含人脸识别、目标识别和语音识别模型,它们可以在一个部署文件中定义。

以下展示了用于安卓示例应用的部署文件:

# The name of librarylibrary_name: mobilenettarget_abis: [arm64-v8a]embed_model_data: 1# The build mode for model(s).# 'code' stand for transfer model(s) into cpp code, 'proto' for model(s) in protobuf file(s).build_type: codelinkshared: 0# One yaml config file can contain multi models' config message.models: mobilenet_v1: # model tag, which will be used in model loading and must be specific. platform: tensorflow # support local path, https:// and https:// model_file_path: https://cnbj1.fds.api.xiaomi.com/mace/miai-models/mobilenet-v1/mobilenet-v1-1.0.pb model_sha256_checksum: 71b10f540ece33c49a7b51f5d4095fc9bd78ce46ebf0300487b2ee23d71294e6 subgraphs: - input_tensors: input input_shapes: 1,224,224,3 output_tensors: MobilenetV1/Predictions/Reshape_1 output_shapes: 1,1001 runtime: cpu+gpu limit_opencl_kernel_time: 0 nnlib_graph_mode: 0 obfuscate: 0 winograd: 0 mobilenet_v2: platform: tensorflow model_file_path: https://cnbj1.fds.api.xiaomi.com/mace/miai-models/mobilenet-v2/mobilenet-v2-1.0.pb model_sha256_checksum: 369f9a5f38f3c15b4311c1c84c032ce868da9f371b5f78c13d3ea3c537389bb4 subgraphs: - input_tensors: input input_shapes: 1,224,224,3 output_tensors: MobilenetV2/Predictions/Reshape_1 output_shapes: 1,1001 runtime: cpu+gpu limit_opencl_kernel_time: 0 nnlib_graph_mode: 0 obfuscate: 0 winograd: 0}模型与性能评测

MACE Model Zoo 包含若干常用模型,不仅包括 MobileNet、SqueezeNet、ResNet-50 和 Inception-v3 等常见的卷积神经网络,同时还有风格迁移等应用。MACE Model Zoo 会对一组手机进行每日构建,最新的性能评测结果可以从项目的持续集成页面获取。



上一篇:从基础概念到数学公式,这是一份520页的机器学习笔记(图文并茂)
下一篇:成功构建一个机器学习模型需避免这9个错误
精选推荐
MIT研制出可以像植物一样生长的机器人
MIT研制出可以像植物一样生长的机器人

[2019-11-09]  麻省理工学院开发了一种新型机器人,这种机器人可以本质上自我延伸,其生长方式与植物幼苗向上生长的方式惊人相似。值得注意的是,研究人员 ...

基于生物启发的机器人很容易适应丢失附属器官
基于生物启发的机器人很容易适应丢失附属器官

[2017-12-17]  很多机器人被设计应用在危险环境,如灾难现场。在这些地方,他们的运动系统完全有可能被损坏。那这样会吓跑这些机器人吗?也许不是,如果它们像日本的东北和北海道大学创造的......

机器人iCub作为嵌入式AI的标准机器人研究平台的重要性
机器人iCub作为嵌入式AI的标准机器人研究平台的重要性

[2017-12-24]  机器人的研究在过去10年中得益于一个具有嵌入式人工智能(AI)的标准化开源平台——人形机器人iCub。iCub最初在意大利被创建,如今在欧洲、美国、韩国、新加坡和日本的实验室......

全自动膝关节置换手术机器人被美国FDA批准上市
全自动膝关节置换手术机器人被美国FDA批准上市

[2019-10-14]  美国Think Surgical公司已获得美国食品和药物管理局(FDA)的批准,在美国销售用于全膝关节置换(TKA)的TSolution One®全膝关节应用 ...

美国喷气推进实验室的AI驱动无人机挑战人类飞行员
美国喷气推进实验室的AI驱动无人机挑战人类飞行员

[2017-12-08]  随着无人机及其组件越来越小,效率越来越高,功能越来越强大,我们已经看到越来越多的研究开始让无人机自主飞行在半结构化的环境中,而不依赖于外部定位。 宾夕法尼亚大学在......

九台“猎豹”机器人组队踢球,麻省理工高材生们的高级趣味
九台“猎豹”机器人组队踢球,麻省理工高材生们的高级趣味

[2019-11-09]  本周,在麻省理工学院10号楼外草坪上展开了一场别开生面的足球比赛。在绿草如茵的基利安球场上,一群由人工智能驱动的机器人就是这场比赛的 ...

Waymo:人性和行为心理学才是无人驾驶最大的挑战
Waymo:人性和行为心理学才是无人驾驶最大的挑战

[2019-11-03]  自动驾驶汽车作为AI领域内最大的挑战之一,谷歌致力于其研发已有十余载,现在他们逐渐意识到,最困难的是如何让人们享受驾驶的乐趣。这是一 ...

科学家从蟑螂获得启发 教机器人更好地走路
科学家从蟑螂获得启发 教机器人更好地走路

[2017-12-11]  Weihmann指出:“我特别感到惊讶的是,动物运动稳定机制的变化与腿部协调的变化是一致的。昆虫的慢运行非常稳定,因为它的重心很低,三条腿总是以协调的方式运动。...

本周栏目热点

盘点全球十大最具影响力的机器人摇篮

[1970-01-01]    人工智能(AI)研究现正迅速发展,如无人驾驶汽车、计算机在《危险边缘》智力竞赛节目中获胜、数字私人助手Siri、GoogleNow和语音助手C ...

深度学习反向传播算法(BP)原理推导及代码实现

[2017-12-19]  分析了手写字数据集分类的原理,利用神经网络模型,编写了SGD算法的代码,分多个epochs,每个 epoch 又对 mini_batch 样本做多次迭代计算。这其中,非常重要的一个步骤,......

如何在机器学习项目中使用统计方法的示例

[2018-07-23]  事实上,机器学习预测建模项目必须通过统计学方法才能有效的进行。在本文中,我们将通过实例介绍一些在预测建模问题中起关键作用的统计学方法。...

[2017-08-28]  模拟退火(Simulated Annealing,简称SA)是一种通用概率算法,用来在一个大的搜寻空间内找寻命题的最优解。1、固体退火原理:将固体加温 ...

Machine Learning-感知器分类算法详解

[2018-05-31]  今天我们来讲解的内容是感知器分类算法,本文的结构如下:什么是感知器分类算法,在Python中实现感知器学习算法,在iris(鸢尾花)数据集上训练一个感知器模型,自适应线性神......