前言

MNN是一个轻量级的深度神经网络推理引擎,在端侧加载深度神经网络模型进行推理预测。目前,MNN已经在阿里巴巴的手机淘宝、手机天猫、优酷等20多个App中使用,覆盖直播、短视频、搜索推荐、商品图像搜索、互动营销、权益发放、安全风控等场景。此外,IoT等场景下也有若干应用。

下面介绍在 Ubuntu20.04 环境下编译 MNN 的过程。

编译环境准备

  • gcc(建议使用 4.9 或以上版本)
  • cmake(建议使用 3.10 或以上版本)
  • protobuf(建议使用 3.0 或以上版本)

1. gcc 安装

sudo apt update
sudo apt install build-essential

2. cmake 安装

  • 从官网下载 cmake 的 linux 版本
  • 在 cmake 源码所在文件夹打开命令终端,解压文件
tar -zxv -f cmake-3.24.1.tar.gz
  • 进入解压后的文件夹执行
./bootstrap

可能会报错

需要安装 libssl-dev

sudo apt-get install libssl-dev

安装完成以后,再次执行 ./bootstrap

  • 编译构建 cmake
make
  • 安装 cmake
sudo make install
  • 安装完成后可以执行 cmake --version 验证是否安装成功、

3. protobuf 安装

  • 安装依赖
sudo apt-get install autoconf automake libtool curl make g++ unzip libffi-dev -y
  • 下载 protobuf 源码并解压
tar -zxv -f protobuf-cpp-3.20.0-rc-1.tar.gz
  • 进入解压后的文件夹,生成配置文件
cd protobuf-3.20.0-rc-1/
./autogen.sh
  • 配置环境
./configure
  • 编译源码
make
  • 安装
sudo make install
  • 刷新动态库
sudo ldconfig
  • 可以通过 protobuf --version 查看是否安装成功

Linux 本地编译 MNN

  • 下载 MNN 源码并解压
unzip MNN-master.zip
  • 进入解压后的文件夹执行
cd MNN-master
./schema/generate.sh
  • 本地编译
mkdir build
cd build
cmake ..
make -j8
  • 编译完成后本地出现 MNN 的动态库

Android 编译 MNN

1. Linux 命令行方式

  • 在 https://developer.android.com/ndk/downloads/ 下载安装 NDK,建议使用最新版本
  • 在 .bashrc 或者 .bash_profile 中设置 NDK 环境变量,如
export ANDROID_NDK=/home/wkx/Downloads/android-ndk-r25
  • 进入 MNN 文件夹执行
cd /path/to/MNN-master# 可选,更改 schema 文件后需要重新生成
./schema/generate.sh# 可选,模型仅 demo 工程需要
./tools/script/get_model.sh
  • 进入 android 文件夹编译动态库
cd project/android# 编译 armv7 动态库
mkdir build_32
cd build_32
../build_32.sh# 编译armv8动态库
mkdir build_64
cd build_64
../build_64.sh

下图为 armv8 动态库

2. Android Studio 方式

  • 使用 Android Studio 打开 MNN-master/project/android/demo ,然后编译 apk
  • 用 zip 解压编译好的 apk ,lib 目录下包含 MNN 的动态库

下图为编译好的 apk

用 zip 解压,进入 lib 目录

arm64-v8a 目录下的动态库

MNN 模型转换

  • 进入 MNN 目录,执行
cd MNN-master
./schema/generate.sh
mkdir build
cd build
cmake .. -DMNN_BUILD_CONVERTER=true && make -j4

下图为得到的模型转换工具

  • 将其它模型转换为 MNN 模型,例如将 model-mobilenet.pb 模型转换为 abc.mnn 模型
./MNNConvert -f TF --modelFile model-mobilenet.pb --MNNModel abc.mnn --bizCode biz

转换成功

转换前的模型和转换后得到的 MNN 模型

Ubuntu20.04环境下编译MNN相关推荐

  1. 在ubuntu20.04环境下使用PCL踩坑记录

    上学期在虚拟机里面跑点云数据卡的不行,而且虚拟机里面ubuntu也识别不出来显卡.痛定思痛开学回来的时候买了块1t的硬盘,装了双系统.原来写的代码到了新的环境里运行不了,重新踩一边上学期的坑.干脆整篇 ...

  2. ubuntu20.04环境下安装opencv教程及测试

    目录 一.安装opencv (1)下载opencv-3.4.15数据包 (2)解压 (3)使用cmake安装opencv (4)使用make创建编译 (5) 安装 二.配置环境 三.实例 (1)打开图 ...

  3. 在ubuntu20.04环境下安装opencv教程并测试

    目录 一.安装opencv 二 配置环境 三 实例 四 总结 五参考文献 一.安装opencv 1下载 在虚拟机内打开浏览器输入网址Release OpenCV 3.4.15 · opencv/ope ...

  4. Ubuntu20.04环境下,安装hadoop

    踏坑采蘑菇的我又来了!我相信很多人在刚刚接触Hadoop的时候,安装就是一大难题,各种报错让人眼花缭乱,实属不易.我今天来说一下Oracle VM VirtualBox下的Ubuntu版本安装hado ...

  5. Ubuntu20.04环境下MySQL8.0.30的 用户管理,设置修改密码,密码过期策略,权限管理,角色管理

    MySQL8.0.30 用户管理,设置修改密码,权限管理,角色管理 MySQL5.7可以 (创建用户,设置密码,授权) 一步到位

  6. ubuntu16.04 在cuda9.0环境下编译安装opencv2.4.13.7

    ubuntu16.04 在cuda9.0环境下编译安装opencv2.4.13.7 安装步骤: 1.安装cuda9.0:https://blog.csdn.net/zhuangwu116/articl ...

  7. Faster R-CNN python版在Ubuntu16.04环境下配置编译

    Faster R-CNN python版在Ubuntu16.04环境下配置编译 1 电脑配置 2 安装显卡驱动 3 安装CUDA 3.1 安装CUDA 3.2 安装CUDNN 3.3 Samples测 ...

  8. 20200614在ubuntu20.04的本地编译全志R系列的步骤20

    在ubuntu20.04的本地编译全志R系列的步骤20 2020/6/14 14 7:51 开始写 2020/6/14 14 14:48 完工 0.获取全志R系列的Android源码包: 请通过渠道/ ...

  9. Ubuntu 16.04 LTS下编译GPU版tensorflow

    Ubuntu 16.04 LTS下编译GPU版tensorflow 机器学习与数学 · 2016-06-10 13:51 作者: 比特小组 机器学习与数学出品 机器学习必然涉及到代码,本小组选择sci ...

最新文章

  1. MFC控件编程之复选框单选框分组框
  2. PHP读取MySQL数据生成Excel文件实例
  3. 如何才能写出好的软件设计文档?
  4. 2010最值得关注的10款小众互联网产品
  5. python做乘法运算定律_最新乘法运算定律专项练习题
  6. 吞吐量、速率、背板带宽
  7. 项目构建之maven篇:3.m2eclipse使用
  8. 厉害了!这款百度炼丹神器绝了!
  9. 老男孩Linux性能优化实战课程教学
  10. OpenCL编程入门(一)
  11. 计算机打印状态错误,打印机状态错误【设置办法】
  12. 处理行内元素行内块元素中间空隙
  13. 业务开发平台与SOA的统一论
  14. Fixed Effect
  15. windows抓屏排除指定窗口
  16. 高通收购恩智浦过审,完美的AI布局即将开启
  17. python收音机_FM收音机入门,以及Python实现FM调制解调
  18. SDHK_Tool.Static.SS_EulerAngleRotation 欧拉角旋转
  19. 记录一次使用JS生成word后端转换PDF功能
  20. 【嵌入式Linux】基于orangepi的官方外设开发

热门文章

  1. 程序员必备的思维能力:结构化思维
  2. 【HTML505】HTML基础05_区块_布局
  3. 运营——线上引流9大方法
  4. 全国所有城市及站点空气质量数据集(2014-2020年)
  5. JUC笔记-共享模型之管程 (Monitor)
  6. SQL Server 的几个故障
  7. sublime插件之sidebar
  8. 【预研】关于互联网广告:半小时读懂互联网广告新生态
  9. 已解决NameError: name ‘unichr‘ is not defined
  10. Unable to locate package net-tools 处理方法