一、环境配置

请参照小米官方的文档:https://mace.readthedocs.io/en/latest/installation/env_requirement.html

  • For Android build, ANDROID_NDK_HOME must be confifigured by using export ANDROID_NDK_HOME=/path/to/ndk
  • It will link libc++ instead of gnustl if NDK version >= r17b and bazel version >= 0.13.0, please refer to NDK cpp-support.

二、框架搭建

  

  1、下载小米MACE镜像

    轻量版 mace-dev-lite 镜像下载    

# Pull lite edition docker image
docker pull registry.cn-hangzhou.aliyuncs.com/xiaomimace/mace-dev-lite
# Build lite edition docker image
docker build -t registry.cn-hangzhou.aliyuncs.com/xiaomimace/mace-dev-lite ./docker/mace-dev-lite

        完全版mace-dev镜像下载(包含多版本的NDK和一些其他工具)

# Pull full edition docker image
docker pull registry.cn-hangzhou.aliyuncs.com/xiaomimace/mace-dev
# Build full edition docker image
docker build -t registry.cn-hangzhou.aliyuncs.com/xiaomimace/mace-dev ./docker/mace-dev

  2、创建容器

以mace-dev-lite为例

# Create a container named `mace-dev`
docker run -it --privileged -d --name mace-dev \-v /dev/bus/usb:/dev/bus/usb --net=host \-v /local/path:/container/path \-v /usr/bin/docker:/usr/bin/docker \-v /var/run/docker.sock:/var/run/docker.sock \registry.cn-hangzhou.aliyuncs.com/xiaomimace/mace-dev-lite
# Execute an interactive bash shell on the container
docker exec -it mace-dev /bin/bash

  3、克隆源码

git clone https://github.com/XiaoMi/mace.git
git fetch --all --tags --prune# Checkout the latest tag (i.e. release version)
tag_name=`git describe --abbrev=0 --tags`
git checkout tags/${tag_name}

  4、进行源码编译、生成库文件以及创建工程、测试。

  方法一

    (1)一步直接完成编译和相关库、文档的创建和配置 。不需要任何其他操作。

  cd mace/example/android./build.sh

    (2)使用Android studio打开mace/example/下的android项目,在file>Project Structure>SDK Location中的Android NDK Location 中 配置Android studio 的NDK 路径到自己所安装的路径。

     (3)连接Android手机进行测试。

    注:若出现闪退现象,可能手机权限不够,可以对测试机进行 ROOT 后 再行测试。(亲身经历)

  方法二

   (1)克隆mace model zoo ,放在与mace文件同目录下。

  git clone https://github.com/XiaoMi/mace-models.git

  (2)编译mace library。

  cd macebash tools/build-standalone-lib.sh

  (3)在转化静态库时将模型转化为C++代码,转化有两种方式

     以使用mobilenet-v2为例:

      修改   mace-models/mobilenet-v2    文件夹下的   mobilenet-v2.yml  和   mobilenet-v2-host.yml。

      1)将模型图转换为代码,将模型权重转换为具有以下模型配置的文件。
            model_graph_format: codemodel_data_format: file

      2)将模型图和模型权重转换为下面的模型配置代码。

                model_graph_format: codemodel_data_format: code

          --在此建议全部转化为模型配置代码--

      即 将 mobilenet-v2.yml 和 mobilenet-v2-host.yml  文件中的         

           model_graph_format: codemodel_data_format: file

           #改为#
           model_graph_format: codemodel_data_format: code

      保存

  
  (4)将模型转化为mace格式的模型。
  python tools/converter.py convert --config=/path/to/mace-models/mobilenet-v2/mobilenet-v2.yml       #/path/to/  为自己的文件路径

  

(5)转化后会在 builds/ 文件夹下生成  include, lib, mobilenet-v2 等文件夹。

   (6)在android项目中的macelibrary/src/main/cpp 文件夹下

    即

    mace/example/android/macelibrary/src/main/cpp 文件夹下

       -- 新建include/mace/public文件

       -- 新建lib文件夹

       -- 新建model文件夹
  (7)将库文件夹mace/builds/下的相关文件复制到工程文件 mace/example/android/ 下的相关文件夹下 。
    1、将 builds/include/mace/public/ 下的mace.h 以及 mace_runtime.h拷贝进去macelibrary/src/main/cpp/include/mace/public中2、将 builds/mobilenet-v2/include/mace/public/ 下的mace_engine_factory.h 以及 mobilenet_v2.h拷贝至 macelibrary/src/main/cpp/include/mace/public中3、将 builds/mobilenet-v2/model 下的mobilenet-v2.a 拷贝至 macelibrary/src/main/cpp/model中,并修改mobilenet-v2.a 为 mobilenet.a4、将 builds/lib下的文件都拷贝至macelibrary/src/main/cpp/lib中5、修改 macelibrary/src/main/cpp/include/mace/public 下 所有 .h 文件中引入的文件地址

       为

         #include "src/main/cpp/include/mace/public/mace.h"

       注:若文件中没有路径文件,则在头文件下加上以上地址;若存在,则跟换为以上地址。

  (8)使用Android studio打开mace/example/下的android项目,在file>Project Structure>SDK Location>Android NDK Location 中 配置

     Android studio 的NDK 路径到自己所安装的路径。

   (9)由于这个测试的app默认是使用mobilenet_v1的模型的,所以我们更改一下代码让他使用mobilenet_v2,修改android studio工程下

     app/src/main/java/com.xiaomi.mace.demo.result/InitData.java文件中的。 

         model = MODELS[0];改为:model = MODELS[1];

     

(10)连接Android手机进行测试。

    注:若出现闪退现象,可能手机权限不够,可以对测试机进行 ROOT 后 再行测试。(亲身经历)

  

    

    

转载于:https://www.cnblogs.com/kang06/p/9477043.html

小米MACE开源框架搭建相关推荐

  1. 小米开源框架MACE 源码阅读笔记 1

    转载自 https://www.jianshu.com/p/7061fd67d419 前扯 在前不久的某高峰论坛上,小米开源了其移动端的深度学习框架Mobile AI Compute Engine(M ...

  2. 小米开源框架MACE 源码阅读笔记

    转载自 https://www.jianshu.com/p/7061fd67d419 前扯 在前不久的某高峰论坛上,小米开源了其移动端的深度学习框架Mobile AI Compute Engine(M ...

  3. 小米开源框架mace android案例调试

    小米开源框架mace android案例调试 1. 准备工作 编译环境准备:请参照小米官方的文档: https://mace.readthedocs.io/en/latest/installation ...

  4. 小米开源框架MACE 简介

    转载自 https://www.jianshu.com/p/2ab68779d05b 前言 MACE 是小米公司自研的移动端深度学习框架 Mobile AI Compute Engine,2017年1 ...

  5. 语音识别代码_Povey正式出任小米语音首席科学家,小米移动端框架MACE全面支持Kaldi...

    今日,小米开发者大会 MIDC 2019 在北京开幕.语音识别大牛.前霍普金斯大学副教授 Daniel Povey 也正式宣布出任小米集团语音首席科学家,而近日更新的小米移动端深度学习框架 MACE ...

  6. 移动端深度框架 TensorFlow Lite 、小米MACE和 支付宝xNN 比较

    一直以来,随着深度学习的快速发展,复杂而庞大的模型需要在计算力强大的计算设备上才可以展示其强大的能力,如GPU,深度学习运行在移动和嵌入式设备中,它赋予了这些设备在终端本地运行机器学习模型的能力,从而 ...

  7. 比拼三大移动端深度学习框架,小米MACE有哪些优势?

    采访嘉宾 | 何亮亮 AI前线导读: 随着深度学习领域的快速发展,以及移动端芯片计算能力的逐步提升,设备端上的深度学习推理正在变成一个巨大的需求和趋势,一个好用的深度学习框架成为深度学习应用落地的关键 ...

  8. 使用github上的开源框架SlidingMenu环境的搭建,以及getSupportActionBar方法不能找到的问题...

    http://blog.csdn.net/lovexieyuan520/article/details/9814273 使用github上的开源框架SlidingMenu环境的搭建,以及getSupp ...

  9. eFPGA设计开源框架 FABulous 系列(一)开发环境搭建

    我是 雪天鱼,一名FPGA爱好者,研究方向是FPGA架构探索. 关注公众号[集成电路设计教程],拉你进"IC设计交流群". 目前在研究eFPGA,学术界目前最新发表的用于 eFPG ...

最新文章

  1. mac镜像cdr格式_设计常用文件格式!萌新必备
  2. 计算机二级vfp模拟考试题,计算机等级考试二级VFP模拟练习题[10]
  3. GDCM:读取和转储DICOMDIR文件的测试程序
  4. (一)导学(前端框架面试-聚焦Vue/React/Webpack)
  5. 空指针异常NullPointerException解决
  6. 面向对象的三大特性 - 继承、多态、封装
  7. 国内外学术期刊的一些基本常识情况--A类B类--核心期刊普刊--分区等
  8. ExtJS之EditorGridPanel
  9. Arduino通过usbasp编程器烧录程序或者bootloaders时出现以下错误解决方法
  10. ul阻燃标准有几个等级_最详细的UL阻燃等级介绍说明,快看过来
  11. 计算机专业英语(一)学习方法
  12. Dukto 傻瓜安装教程
  13. Delphi第三方控件大测评
  14. 读书之《别做正常的傻瓜》
  15. 【CSDN|每日一练】Longest Continuous Increasing Subsequence
  16. 做短视频时如何将文字转为语音?分享三个小方法,教你轻松配音
  17. 无法给变量添加属性导致出问题
  18. 奋发图强半年多,终于四面阿里如愿拿到心仪offer定级P7
  19. 电子证件照怎么制作?学会这些方法不用再去照相馆
  20. Leetcode每日一题——377.组合总和Ⅳ。完全背包推导。dp数组

热门文章

  1. 解决 Ubuntu 无法播放 MP4 格式视频的问题的办法
  2. 百度地图自定义坐标标记和mouseover/mouseout闪烁问题解决
  3. 2021第二届“祥云杯”网络安全大赛 部分Writeup
  4. 树莓派PICO入门教程
  5. java五子棋需求分析文档_五子棋需求文档.docx
  6. 选择排序算法与示例详解(c语言)
  7. Resharper详细教程
  8. 十进制负数转化为十六进制补码(数学层面)
  9. android混淆保留内部类,混淆jar包总结
  10. 阿里版GPT官宣“阿里全家桶”:所有产品都将接入