小米MACE开源框架搭建
一、環(huán)境配置
請參照小米官方的文檔:https://mace.readthedocs.io/en/latest/installation/env_requirement.html
For Android build,ANDROID_NDK_HOMEmust be confifigured by usingexportANDROID_NDK_HOME=/path/to/ndk
It will linklibc++instead ofgnustlifNDKversion>=r17bandbazelversion>=0.13.0, please refer toNDK 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、創(chuàng)建容器
以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、進行源碼編譯、生成庫文件以及創(chuàng)建工程、測試。
方法一
(1)一步直接完成編譯和相關(guān)庫、文檔的創(chuàng)建和配置 。不需要任何其他操作。
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手機進行測試。
注:若出現(xiàn)閃退現(xiàn)象,可能手機權(quán)限不夠,可以對測試機進行 ROOT 后 再行測試。(親身經(jīng)歷)
方法二
(1)克隆mace model zoo ,放在與mace文件同目錄下。
git clone https://github.com/XiaoMi/mace-models.git
(2)編譯mace library。
cd mace bash tools/build-standalone-lib.sh
(3)在轉(zhuǎn)化靜態(tài)庫時將模型轉(zhuǎn)化為C++代碼,轉(zhuǎn)化有兩種方式
以使用mobilenet-v2為例:
修改 mace-models/mobilenet-v2 文件夾下的 mobilenet-v2.yml 和 mobilenet-v2-host.yml。
1)將模型圖轉(zhuǎn)換為代碼,將模型權(quán)重轉(zhuǎn)換為具有以下模型配置的文件。
model_graph_format: code model_data_format: file
2)將模型圖和模型權(quán)重轉(zhuǎn)換為下面的模型配置代碼。
model_graph_format: code
model_data_format: code
--在此建議全部轉(zhuǎn)化為模型配置代碼--
即 將 mobilenet-v2.yml 和 mobilenet-v2-host.yml 文件中的
model_graph_format: code model_data_format: file
#改為#
model_graph_format: code model_data_format: code
保存
(4)將模型轉(zhuǎn)化為mace格式的模型。
python tools/converter.py convert --config=/path/to/mace-models/mobilenet-v2/mobilenet-v2.yml #/path/to/ 為自己的文件路徑
(5)轉(zhuǎn)化后會在 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/下的相關(guān)文件復(fù)制到工程文件mace/example/android/ 下的相關(guān)文件夾下 。
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 文件中引入的文件地址
為
#include "src/main/cpp/include/mace/public/mace.h"
注:若文件中沒有路徑文件,則在頭文件下加上以上地址;若存在,則跟換為以上地址。
(8)使用Android studio打開mace/example/下的android項目,在file>Project Structure>SDK Location>Android NDK Location 中 配置
Androidstudio 的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手機進行測試。
注:若出現(xiàn)閃退現(xiàn)象,可能手機權(quán)限不夠,可以對測試機進行 ROOT 后 再行測試。(親身經(jīng)歷)
總結(jié)
以上是生活随笔為你收集整理的小米MACE开源框架搭建的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用objdump objcopy查看与
- 下一篇: Geoda计算莫兰指数