MACE的环境搭建和工程构建

article/2025/9/15 17:10:41

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.zipexport 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


http://chatgpt.dhexx.cn/article/AyooGn0x.shtml

相关文章

meterpreter之timestomp命令修改文件MACE时间

文章目录 前言一、timestomp的使用前提二、MACE时间1、文件系统简述2、linux操作系统3、windows操作系统 三、timestomp使用详解1.查看帮助文档2.使用-v选项查看文件信息3.使用-f选项拷贝文件MACE时间4.使用-m/-a/-c/-e修改文件MACE时间5.使用-b/-r使MACE时间显示清空 总结 前言…

小米开源AI框架mace编译构建

目录 简介 环境要求 1 安装 Bazel 2 安装Android NDK 3 在Ubuntu16.04下安装Docker(17.09) 构建并运行示例模型 1 拉取MACE项目 2 拉取MACE Model Zoo项目 3 构建通用MACE库 4 将预先训练的mobilenet-v2模型转换为MACE格式模型 编译运行DEMO…

使用MACE加速---使用篇

最近开始研究如何对手机应用中的识别算法进行加速,搜索后发现了小米的MACE。 Mobile AI Compute Engine (MACE) 是一个专为移动端异构计算设备优化的深度学习前向预测框架。 覆盖了常见的移动端计算设备(CPU,GPU和DSP)。支持的硬…

小米AI推理框架MACE介绍

MACE 是小米公司自研的移动端深度学习框架 Mobile AI Compute Engine,2017年12月15日于公司内部正式发布。2018年6月28日,在“2018(第十三届)开源中国开源世界高峰论坛”上,小米公司人工智能与云平台副总裁崔宝秋博士宣…

MACE 使用笔记

环境安装 tensorflow 安装,一直不太想用mace的部分原因是不支持tensorflow2.模型, 但为了GPU(OpenCL)还是要用啊。 Shell set -e 学习笔记: shell 中的 set -e , set e 用法_滴水成川-CSDN博客_linux set-eset -eset命令的-e参…

小米开源框架MACE 简介

转载自 https://www.jianshu.com/p/2ab68779d05b 前言 MACE 是小米公司自研的移动端深度学习框架 Mobile AI Compute Engine,2017年12月15日于公司内部正式发布。2018年6月28日,在“2018(第十三届)开源中国开源世界高峰论坛”上…

MACE(1)-----环境搭建

学习MACE也有一个月了,将其划分三步来学习。本文是MACE学习的第一步即MACE环境的搭建。之后还有两步mace的编译和mace工程化。 MACE(2)-----模型编译:https://www.cnblogs.com/missidiot/p/9509831.html MACE(3)-----工程化:https://www.cnbl…

JDK , Tomcat , Eclipse 版本对应关系

1. JDK , Tomcat 版本对应关系 参考网址 : https://tomcat.apache.org/whichversion.html 2. JDK , Eclipse 版本对应关系 参考网址 : https://wiki.eclipse.org/Eclipse/Installation 作者 Github : tojohnonly , 博客 : EnskDeCode

如何查看eclipse的版本

阅读数:20254 转载文章,原文地址:https://blog.csdn.net/duqian94/article/details/52386076 由于作者已经写的很清楚了,就没有做修改直接转载过来了。 本篇文章主要讲解的是三种查看eclipse版本的方法(超详细&#xf…

Eclipse各版本有什么区别?

一直以来对eclipse这个IDE的各发行版本都弄不清楚,今天做一个梳理和记录。 Eclipse基本内核包括:图形API(SWT/Jface),Java开发环境插件(JDT),插件开发环境(PDE&#xff0…

超方便插件lombok的使用(eclipse版本)

1 准备 下载地址: 链接:https://pan.baidu.com/s/1Qoy2VRoERqZcgsOVYl3mZQ 提取码:2chx 2.安装 点击 或者找到对应的lombok文件所在目录执行java -jar lombok(1).jar 会自动扫描eclipse所以目录,也可以自己选择点击"S…

查看Eclipse版本号及各个版本区别

1. 找到eclipse安装目录 2. 进入readme文件夹,打开readme_eclipse.html 3. readme_eclipse.html呈现的第二行即数字版本号,如: Eclipse Project Release Notes Release 4.2.0 Last revised June 8th, 2012 附:Eclipse各个版本简介…

安装两个Eclipse 版本不一致,高版本无法打开

Could not create the Java Virtual Machine,A fatal exception has occurred。 首先删除了 工作空间的配置 然后删除掉C:\Windows\System32 里面的三个java文件 java.exe javas.exe javaw.exe 配置好环境变量就好了

eclipse选择java版本_使用 Eclipse 开发版本选择和下载说明

现在越来越多的人开发使用 IDEA,使用 Eclipse 开发的已经渐渐变少了,这篇就简单介绍下 Eclipse 的版本选择和下载,供目前还在坚守使用 Eclipse 开发的同胞们~ Eclipse 简介 Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,…

解决pydev与eclipse版本问题

eclipsepydevanaconda版本问题方法: 在eclipse安装pydev插件时,会遇见安装后在“Preference”不显示“pydev”现象,原因:下载的pydev版本与eclipse版本不匹配,导致无法使用,经过反复调试,发现官…

Eclipse版本升级(2020-12)

文章目录 Eclipse版本升级(2020-12)内置工具栏安装本地安装包安装 Eclipse版本升级(2020-12) Eclipse内安装软件通常会通过内置软件安装方式或者是自己下载安装包方式安装。同样,Eclipse版本升级也可以用这两种方式。…

Eclipse版本对应的jdk需求及查看eclipse的java版本怎么看Eclipse需要安装哪个版本jdk

1)找到eclipse安装目录。 2)进入readme文件夹,打开readme_eclipse.html。 Eclipse软件 jdk及种操作方法 自行百度网盘提取 链接:https://pan.baidu.com/s/1JEYq4Lo8aEms7ClPIchLsA?pwddt4z 提取码:dt4z 我先给一个我翻译过的图&#x…

Eclipse版本号及各个版本区别

附:Eclipse各个版本简介(http://zh.wikipedia.org/wiki/Eclipse) 从2006年起,Eclipse基金会每年都会安排同步发布(simultaneous release)。同步发布主要在6月进行,并且会在接下来的9月及2月释放…

如何更新Eclipse版本

Eclipse用久了上面会集成了使用者长久以来集成的开发插件,如何更新Eclipse并且将这些插件带到下一个版本是本文主要介绍的内容。 此外,升级Eclipse版本的好处还在于更好的支持新版JDK的特性,如JDK8的Lambda语法,以及对高版本Tomcat的配置支持,还有minimap视图支持…

Eclipse 版本升级记录

前言 Eclipse 不是不能在线升级,至少没有找对方法,下面就让我来一步一步带你学会它、使用它吧! 一、概念 Eclipse主要分为两个概念,一个是在线升级 Eclipse 新版本,另一个是在线升级 Eclipse 插件,这两个是有很大区…