MACE的环境搭建和工程构建

1. MACE 主页

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

小米官方的相关文档:https://mace.readthedocs.io/en/latest/

对开发环境的要求,可以按照以下指令安装相关的包:

 

2. 安装docker

参照教程:https://blog.csdn.net/u012505617/article/details/85840238

 

3.安装Android NDK(r15b, r15c and r16b )

以下的操作请用管理员权限进行操作。

3.1. 安装NDK

cd /opt/ && \
    wget -q https://dl.google.com/android/repository/android-ndk-r15c-linux-x86_64.zip && \
    unzip -q android-ndk-r15c-linux-x86_64.zip && \
    rm -f android-ndk-r15c-linux-x86_64.zip

export ANDROID_NDK_VERSION=r15c
export ANDROID_NDK=/opt/android-ndk-${ANDROID_NDK_VERSION}
export ANDROID_NDK_HOME=${ANDROID_NDK}

# add to PATH
export PATH=${PATH}:${ANDROID_NDK_HOME}

3.2. 验证是否生效

source /etc/profile    # 使刚才的设置生效
ndk-build

注:若出现以下这些表明安装成功。
  Android NDK: Could not find application project directory !  
       Android NDK: Please define the NDK_PROJECT_PATH variable to point to it.   
  /home/weilong/android/android-ndk-r16b/build/core/build-local.mk:151: *** Android NDK: Aborting . Stop.

 

4. 安装Bazel

4.1. 安装jdk8

apt-get install openjdk-8-jdk

 4.2. 更新发布源并进行安装

echo "deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list
curl https://bazel.build/bazel-release.pub.gpg | sudo apt-key add -
sudo apt-get update && s get install bazel

4.3. 查看bazel版本

并把版本号填到下一个步骤的export BAZEL_VERSION=0.13.1

apt-get upgrade bazel
bazel version

4.4. 下载bazel文件进行安装

export BAZEL_VERSION=0.13.1
mkdir /bazel && \
    cd /bazel && \
    wget https://github.com/bazelbuild/bazel/releases/download/$BAZEL_VERSION/bazel-$BAZEL_VERSION-installer-linux-x86_64.sh && \
    chmod +x bazel-*.sh && \
    ./bazel-$BAZEL_VERSION-installer-linux-x86_64.sh && \
    cd / && \
    rm -f /bazel/bazel-$BAZEL_VERSION-installer-linux-x86_64.sh

 

5. 创建docker镜像

MACE镜像的两种创建方式,pull或者build。官方提供的MACE有两个版本,lite版和full版。官方强烈建议pull来构建镜像到本地。

5.1. pull镜像到本地

5.1.1. lite版本  

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

5.1.2. full版本 

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

 5.2. 创建容器

创建容器:

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

执行镜像:

sudo docker exec -it mace-dev /bin/bash

 

6. 构建项目

6.1. 下载MACE 项目到本地

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

6.2. 下载MACE Model Zoo 项目

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

6.3. 编译MACE 生成库文件

/path/to/mace是你自己刚才下载的mace代码路径

cd /path/to/mace
# Build library
# output lib path: builds/lib
bash tools/build-standalone-lib.sh

编译的过程如下,耗时大概20多分钟,最后面打印出Build completed successfully 表示编译成功。

6.4. 生成 C++代码

6.4.1 修改文件

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

model_graph_format: file                                                        
model_data_format: file

改为:

model_graph_format: code                                                        
 model_data_format: code

6.4.2. 转换文件

python tools/converter.py convert --config=/MACE/mace-models/mobilenet-v2/mobilenet-v2.yml

输出如下: 


我们可以看到在路径 builds/lib 下里面的文件夹里面生成的 .so 文件,这正是我们需要的库文件,为后期的Android  的JNI调用做准备。C++的头文件在builds/mobilenet-v2/include/mace/public 目录下。

 

7. 生成Android的apk文件

7.1. 构建项目

在/MACE/mace/mace/examples/ 目录下看到android文件夹,这个就是AndroidStudio模板工程,其中是不完善的,缺少相关的lib, model 和 head file,需要添加进来。 需要执行build.sh进行编译和拷贝。

cd mace/exampls/android
./build.sh dynamic
# if libmace.a is needed, update `macelibrary/CMakeLists.txt` and run with `./build.sh static`.

7.2. 安装apk到手机

# running after build step and in `mace/exampls/android` directory
adb install ./app/build/outputs/apk/app/release/app-app-release.apk

我用是官方的Docker里面搭建好环境的进行编译的,最后还是报错了,可能是CMake相关的问题吧。在下一步我是使用AndroidStudio进行解决的。

 

8. 导入工程到AndroidStudio

上一个步骤执行 build.sh 虽然编译的过程报错,但拷贝lib, model 和 head file文件的过程是已经完成了的,不再需要自己一个个拷贝。

8.1. 导入项目

把mace/exampls/下的android文件夹导入AndroidStudio里面

8.2. 修改NDK路径

在Android stdio下,File -> Project Structure,添加NDK路径

8.3. 运行apk

记得给app相机使用权限,在AndroidStudio上第一次调试有闪退现象,自己再重新打开app就可以了,运行的是物体识别的模型

 

8.4. 遇到问题总结

编译时出现这个错误

这是CMake版本问题,解决方法:打开 SDK Manage 选择安装 3.6.4版本的CMake,不要安装最新版本的。

到这里整个移植的过程完成。

 

注:转载请注明出处!


参考教程:https://www.cnblogs.com/missidiot/p/9480033.html

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liguiyuan112

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值