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

1. 准备工作

编译环境准备:请参照小米官方的文档:

https://mace.readthedocs.io/en/latest/installation/env_requirement.html

Required dependencies

Software Installation command Tested version
Python   2.7
Bazel bazel installation guide 0.13.0
CMake apt-get install cmake >= 3.11.3
Jinja2 pip install -I jinja2==2.10 2.10
PyYaml pip install -I pyyaml==3.12 3.12.0
sh pip install -I sh==1.12.14 1.12.14

Optional dependencies

Software Installation command Remark
Android NDK NDK installation guide Required by Android build, r15b, r15c, r16b
ADB apt-get install android-tools-adb Required by Android run, >= 1.0.32
TensorFlow pip install -I tensorflow==1.6.0 Required by TensorFlow model
Docker docker installation guide Required by docker mode for Caffe model
Numpy pip install -I numpy==1.14.0 Required by model validation
Scipy pip install -I scipy==1.0.0 Required by model validation
FileLock pip install -I filelock==3.0.0 Required by Android run
2. 克隆源码
git clone https://github.com/XiaoMi/mace.git
修改最外层mace文件夹 为mace_new
3. 克隆mace model zoo
git clone https://github.com/XiaoMi/mace-models.git

附上 mace-models与mace的源码,直接获取是最新的代码,可能后期与本篇博客的教程不一致,这里放上我调试时用的源码:

https://download.csdn.net/download/qq_27063119/10537143

4. 编译mace library
cd mace_new
bash tools/build-standalone-lib.sh

5.如果想要保护模型不被盗用,可以在转化静态库时将模型转化为C++代码,转化有两种方式
(1)将模型图转换为代码,将模型权重转换为具有以下模型配置的文件
model_graph_format: codemodel_data_format: file
(2)将模型图和模型权重转换为下面的模型配置代码
model_graph_format: codemodel_data_format: code
修改对应的yml文件
以使用mobilenet-v2为例,修改mace-models/mobilenet-v2 文件夹下的mobilenet-v2.yml和mobilenet-v2-host.yml
model_graph_format: filemodel_data_format: file
修改为
model_graph_format: codemodel_data_format: code
并保存
6.将模型转化为mace格式的模型
python tools/converter.py convert --config=/media/root/B/python/mace_0711/mace-models/mobilenet-v2/mobilenet-v2.yml

转化后会生成以下文件,其中include,lib,mobilenet-v2是需要用的
使用android studio打开 mace中的安卓项目
首先选择自己的ndk路径

选择好后,在android项目中的macelibrary/src/main/cpp 文件夹下
-- 新建include/mace/public文件夹
-- 新建lib文件夹
-- 新建model文件夹
如图所示:
接着:
(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.a
(4)将builds/lib下的文件都拷贝至macelibrary/src/main/cpp/lib中
(5)修改macelibrary/src/main/cpp/include/mace/public下所有.h文件中引入的文件地址
以mace_engine_factory.h为例:修改成下图所示,mace_runtime.h,mobilenet_v2.h文件内都要改

全部改完后,由于这个测试的app默认是使用mobilenet_v1的模型的,所以我们更改一下代码让他使用mobilenet_v2,修改com.xiaomi.mace.demo.result下的InitData.java文件中的
model = MODELS[0];
改为:
model = MODELS[1];
即可

run,手机上安装后同意授权相机等,效果如图所示:
测试手机为:
小米6
高通骁龙835处理器,6G运行内存
mobilenet_v2的cpu运行速度平均为:1张图片/65ms
mobilenet_v2的gpu运行速度平均为:1张图片/20ms
很明显,检测的速度非常快,小米的mace网络调优很明显。

小米开源框架mace android案例调试相关推荐

  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 简介

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

  4. 小米开源框架MACE 如何构建和使用

    转载自https://www.jianshu.com/p/3be518027ac2 文章内容翻译自 MACE 官方手册,记录本人阅读与开发过程,力求不失原意,但推荐阅读原文. https://medi ...

  5. 小米开源框架MACE 创建模型部署文件

    转载自https://www.jianshu.com/p/823f7d7eaf58 文章内容翻译自 MACE 官方手册,记录本人阅读与开发过程,力求不失原意,但推荐阅读原文. https://medi ...

  6. 小米开源框架MACE - 源码阅读笔记一

    首先先一目了然看一下其目录结构(这些个源码可以在github上下载到,只要在GitHub搜索mace即可): 介绍 MACE(Mobile AI Compute Engine)是一个针对移动异构计算平 ...

  7. 开源框架】Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发...

    [原][开源框架]Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发,欢迎各位... 时间 2015-01-05 10:08:18 我是程序猿,我为自己代言 原文   http ...

  8. 【开源框架】Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发,欢迎各位网友补充完善...

    链接地址:http://www.tuicool.com/articles/jyA3MrU 时间 2015-01-05 10:08:18  我是程序猿,我为自己代言 原文  http://blog.cs ...

  9. 开源框架】Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发

    Android开源库 自己一直很喜欢Android开发,就如博客签名一样, 我是程序猿,我为自己代言 . 在摸索过程中,GitHub上搜集了很多很棒的Android第三方库,推荐给在苦苦寻找的开发者, ...

最新文章

  1. 【Python line_profiler memory_profiler】分析每一行代码的耗时及内存占用情况
  2. 网站内容为王?内容页的优化方法有哪些?
  3. swoole 定时器
  4. (转载)MyCat:开源分布式数据库中间件
  5. 深度学习核心技术精讲100篇(三)-层次自适应的多臂老虎机决策算法 ( HATCH )在滴滴中的应用
  6. VS2008 ,TFS2008破解序列号
  7. javascript 学习教程
  8. Django-C003-视图
  9. c语言微秒级延迟程序,C语言中生产随机数及计算运行时间(微秒级)
  10. 界面无小事(六):来做个好看得侧拉菜单!
  11. 如何在Java中针对XSD验证XML
  12. Android手机证书安装
  13. 网络:bit、Byte、bps、Bps、pps、Gbps的单位详细说明及换算。
  14. 视频教程-EOS 入门实战-区块链
  15. win10找不到wifi网络_win10找不到realtek高清晰音频管理器的解决放法
  16. 机器人领域的SCI期刊介绍
  17. Cypress 前端测试工具的基本使用和相关命令总结
  18. 华为强推996工作制,程序员们的变态加班何时休?
  19. 在LINUX如何用键盘复制,粘贴
  20. 【工业4.0】深度报告:独家解密工业4.0真正图谋?

热门文章

  1. 开源企业内部IM系统搭建
  2. 混淆矩阵及其评价指标
  3. SEO—创建链接诱饵
  4. cpu负载很高而使用率很低的缘故
  5. css background-size:contain与cover的区别
  6. abstract类中不可以有private的成员_UML类图还不懂?来看看这版乡村爱情类图,一把学会!
  7. swlzkyQQ问题大家谈
  8. 一代歌王迈克尔.杰克逊去世
  9. [Linux] xargs 命令的神奇之处。
  10. Windows 使用 idea 部署 CrapApi 心得