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

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

1. 准备工作

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

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

Required dependencies

SoftwareInstallation commandTested version
Python 2.7
Bazelbazel installation guide0.13.0
CMakeapt-get install cmake>= 3.11.3
Jinja2pip install -I jinja2==2.102.10
PyYamlpip install -I pyyaml==3.123.12.0
shpip install -I sh==1.12.141.12.14

Optional dependencies

SoftwareInstallation commandRemark
Android NDKNDK installation guideRequired by Android build, r15b, r15c, r16b
ADBapt-get install android-tools-adbRequired by Android run, >= 1.0.32
TensorFlowpip install -I tensorflow==1.6.0Required by TensorFlow model
Dockerdocker installation guideRequired by docker mode for Caffe model
Numpypip install -I numpy==1.14.0Required by model validation
Scipypip install -I scipy==1.0.0Required by model validation
FileLockpip install -I filelock==3.0.0Required by Android run
2. 克隆源码
修改最外层mace文件夹 为mace_new


3. 克隆mace model zoo

附上 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网络调优很明显。


  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值