zoukankan      html  css  js  c++  java
  • 小米MACE开源框架搭建

    一、环境配置

      请参照小米官方的文档:https://mace.readthedocs.io/en/latest/installation/env_requirement.html

    •  For Android build, ANDROID_NDK_HOME must be confifigured by using export ANDROID_NDK_HOME=/path/to/ndk
    •  It will link libc++ instead of gnustl if NDK version >= r17b and bazel version >= 0.13.0, please refer to NDK 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、创建容器

           以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、进行源码编译、生成库文件以及创建工程、测试。

      方法一

        (1)一步直接完成编译和相关库、文档的创建和配置 。不需要任何其他操作。

      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手机进行测试。

        注:若出现闪退现象,可能手机权限不够,可以对测试机进行 ROOT 后 再行测试。(亲身经历)

      方法二

       (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)在转化静态库时将模型转化为C++代码,转化有两种方式

         以使用mobilenet-v2为例:

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

          1)将模型图转换为代码,将模型权重转换为具有以下模型配置的文件。
     
                model_graph_format: code
                model_data_format: file

          2)将模型图和模型权重转换为下面的模型配置代码。

                    model_graph_format: code
                    model_data_format: code
    

              --在此建议全部转化为模型配置代码--

          即 将 mobilenet-v2.yml 和 mobilenet-v2-host.yml  文件中的         

               model_graph_format: code
               model_data_format: file
               #改为#
               model_graph_format: code
               model_data_format: code
    

          保存

      
      (4)将模型转化为mace格式的模型。
     
      python tools/converter.py convert --config=/path/to/mace-models/mobilenet-v2/mobilenet-v2.yml       #/path/to/  为自己的文件路径

      

       (5)转化后会在 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/下的相关文件复制到工程文件 mace/example/android/ 下的相关文件夹下 。
        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 中 配置

         Android studio 的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手机进行测试。

        注:若出现闪退现象,可能手机权限不够,可以对测试机进行 ROOT 后 再行测试。(亲身经历)

       

        

       

        

  • 相关阅读:
    ACwing98 分形之城 分形图
    ACwing96 奇怪的汉诺塔 递推
    ACwing95 费解的开关 bfs
    ACwing94 递归实现排列型枚举 dfs
    ACwing93 递归实现组合型枚举 dfs
    递归型枚举总结
    洛谷P2286 宠物收养场 splay
    python之路——初识数据库
    python之路——协程
    python之路——线程
  • 原文地址:https://www.cnblogs.com/kang06/p/9477043.html
Copyright © 2011-2022 走看看