小米开源自研移动端深度学习框架MACE

导言

Mobile AI Compute Engine (MACE) 是一个专为移动端异构计算平台优化的神经网络计算框架。MACE 支持 TensorFlow 和 Caffe 模型,提供转换工具,可以将训练好的模型转换成专有的模型数据文件,同时还可以选择将模型转换成C++代码,支持生成动态库或者静态库,提高模型保密性。

编辑: Amusi

校稿: Amusi

Mobile AI Compute Engine (MACE)

Mobile AI Compute Engine (MACE) 是一个专为移动端异构计算平台优化的神经网络计算框架。主要从以下的角度做了专门的优化:

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

地址:https://github.com/XiaoMi/mace

MACE 文档

链接: https://mace.readthedocs.io/en/latest/

打开MACE 在线文档网页,引入眼帘的是:

  • Getting started
  • Development
  • FAQ

这里简单介绍一下Getting started中的Introduction内容:

移动AI计算引擎(MACE)是一种针对移动异构计算平台优化的深度学习推理框架。 下图显示了整体架构。

模型格式(Model format)

MACE定义了与Caffe2类似的自定义模型格式。MACE模型可以由TensorFlow和Caffe的导出模型转换。YAML文件用于描述模型部署详细信息。在下一章中,有详细的指导说明如何创建这个YAML文件。

模型转换(Model conversion)

目前,我们为TensorFlow和Caffe提供模型转换器。未来将支持更多框架。

模型加载(Model loading)

MACE模型格式包含两部分:模型图定义和模型参数张量。图形部分使用协议缓冲区进行序列化。所有模型参数张量一起连接成一个连续的字节数组,我们在下面的段落中称这个数组张量数据(array tensor data)。在模型图中,记录张量数据偏移和长度。

模型可以通过3种方式加载:

  1. 模型图和张量数据都是外部动态加载的(默认情况下,来自文件系统,但用户可以自由选择自己的实现,例如,使用压缩或加密)。这种方法提供了最大的灵活性,但却是最薄弱的模型保护。
  2. 模型图和张量数据都转换为C++代码并通过执行编译的代码加载。这种方法提供了最强大的模型保护和最简单的部署。
  3. 模型图转换为C++代码并构造为第二种方法,张量数据作为第一种方法在外部加载。

MACE Model Zoo

随着MACE一起开源的还有MACE Model Zoo项目,目前包含了物体识别,场景语义分割,图像风格化等多个公开模型。

链接: https://github.com/XiaoMi/mace-models

打开上述链接看到下述画面,着实蛮震撼的!这里简单介绍一下部分现有的model:

  • CNN
    • inception-v1-v2-v3
    • resnet-v2-50
    • vgg16
    • mobilenet-v1-v2(轻量级)
    • squeezenet(轻量级)
  • 图像分割
    • deeplab-v3-plus

MACE Demo

MACE 目前还提供了Android的示例程序,大家可以下载编译好的APK文件进行安装,快速感受一下MACE的魅力。

链接: https://cnbj1.fds.api.xiaomi.com/mace/demo/mace_android_demo.apk

Amusi 这不马上就下载好,测试感受一下,下面是测试结果。

Refrigerator

Laptop

Amusi 个人觉得识别率一般般,而且是只输出Top1的结果。识别速度嘛,还可以吧,毕竟是魅族Mx6上跑CPU模式。如果换上骁龙845处理器的手机,应该...

如何评价小米开源的移动端深度学习框架MACE?

小米突然开源了自家的深度学习框架,是不是在为“上市”做准备呢?

让我们看一下知乎上大佬们怎么看待这个事件?

截止2018-06-29,只有两个人回答了该问题,大家的反映并不是很热烈,也许知道这件事情的人不多吧。但 Amusi 觉得MACE的出现,还是一件很有意义的事情,国内能做深度学习框架开源的公司真不多!

(温馨提示)国内有自研开源深度学习框架的公司有:

  • PaddlePaddle(百度)
  • Angel(腾讯)
  • Other

小米开源MACE,这绝对是一件很正能量的事情,工业界和学术界都应该鼓励和支持!就如左上角所示,有222位关注者,也说明了大家对这件事情的期待。

链接: https://www.zhihu.com/question/283030623

原文发布于微信公众号 - CVer(CVerNews)

原文发表时间:2018-06-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏iOS技术

iOS 地图点标记聚合方案(基于四叉树)

前言 在地图相关应用的开发中,我们常常遇到一个问题,当地图标注点过多的时候,会造成用户体验差、应用卡顿的情况。所以,我们需要一套高效的算法来解决标注的聚合、分散...

3319
来自专栏机器学习算法工程师

免费使用谷歌GPU资源训练自己的深度模型

作者:刘威威 编辑:黄俊嘉 注:本文编译自medium,原英文链接:https://medium.com/@nick...

5938
来自专栏PPV课数据科学社区

学习R语言,一篇文章让你从懵圈到入门

在实际工作中,每个数据科学项目各不相同,但基本都遵循一定的通用流程。具体如下: 数据科学工作流程 数据导入 数据整理 反复理解数据 数据可视化 数据转换 ...

4034
来自专栏hadoop学习笔记

大规模特征构建实践总结

一般大公司的机器学习团队,才会尝试构建大规模机器学习模型,如果去看百度、头条、阿里等分享,都有提到过这类模型。当然,大家现在都在说深度学习,但在推荐、搜索的场景...

1334
来自专栏Albert陈凯

OLAP(On-Line Analysis Processing)在线分析处理引擎

OLAP(On-Line Analysis Processing)在线分析处理是一种共享多维信息的快速分析技术;OLAP利用多维数据库技术使用户从不同角度观察数...

3837
来自专栏AI研习社

数据太大爆内存怎么办?七条解决思路 | 机器学习开发手册

Jason Brownlee 在研究、应用机器学习算法的经历中,相信大伙儿经常遇到数据集太大、内存不够用的情况。 这引出一系列问题: 怎么加载十几、几十 GB...

45210
来自专栏大数据文摘

手把手 | 如何在你的iPhone上建立第一个机器学习模型(Apple最新CoreML框架入门)

3665
来自专栏冰霜之地

Threes-AI 玩小三传奇 (上)

1 个月前和另外二位小伙伴一起参加了一个 AI 的比赛。虽然比赛结果不理想,至少我享受到了编程过程中的乐趣。从这次比赛中让我认识到 Go 除了写服务端,写游戏模...

1662
来自专栏华章科技

学习R语言,一篇文章让你从懵圈到入门

PivotalR:用于读取Pivitol(Greenplum)和HAWQ数据库中的数据

2283
来自专栏灯塔大数据

分析 | Python抓取婚恋网用户数据,原来这才是年轻人的择偶观

刚好在看决策树这一章,书里面的理论和例子让我觉得这个理论和选择对象简直不能再贴切。看完长相看学历,看完学历看收入。

2473

扫码关注云+社区

领取腾讯云代金券