模型部署|通过MACE在Android手机上部署深度学习模型

1. MACE的环境搭建 参考我的博客:MACE的环境搭建——conda实现
2. 构建项目 (1)下载MACE项目到本地

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

(2)下载MACE Model Zoo 项目
git clone https://github.com/XiaoMi/mace-models.git

(3)编译MACE生成库文件
/path/to/mace是你自己刚才下载的mace代码路径
cd /path/to/mace # Build library # output lib path: builds/lib bash tools/bazel_build_standalone_lib.sh

开始编译,出现Build completed successfully 表示编译成功。
模型部署|通过MACE在Android手机上部署深度学习模型
文章图片

(4) 生成C++代码
首先修改文件,修改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

然后转换文件
python tools/converter.py convert --config=/MACE/mace-models/mobilenet-v2/mobilenet-v2.yml

【模型部署|通过MACE在Android手机上部署深度学习模型】输出如下:
模型部署|通过MACE在Android手机上部署深度学习模型
文章图片

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

出现下面的提示,说明编译成功了:
模型部署|通过MACE在Android手机上部署深度学习模型
文章图片

(2) 安装apk到手机
# running after build step and in `mace/exampls/android` directory adb install ./app/build/outputs/apk/app/release/app-app-release.apk

(3) 运行apk
记得给app相机使用权限,在AndroidStudio上第一次调试有闪退现象,自己再重新打开app就可以了,运行的是物体识别的模型。
模型部署|通过MACE在Android手机上部署深度学习模型
文章图片


好了,深度学习模型就部署到手机端了~哈哈哈
当然,编译过程中也遇到一些坑,我都一一解决了,写了篇博客记录了一下,避免以后采坑:MACE在Android手机上部署深度学习模型——采坑记录
参考:https://blog.csdn.net/u012505617/article/details/85763065

    推荐阅读