Ubuntu20.04环境下编译MNN
前言
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相关推荐
- 在ubuntu20.04环境下使用PCL踩坑记录
上学期在虚拟机里面跑点云数据卡的不行,而且虚拟机里面ubuntu也识别不出来显卡.痛定思痛开学回来的时候买了块1t的硬盘,装了双系统.原来写的代码到了新的环境里运行不了,重新踩一边上学期的坑.干脆整篇 ...
- ubuntu20.04环境下安装opencv教程及测试
目录 一.安装opencv (1)下载opencv-3.4.15数据包 (2)解压 (3)使用cmake安装opencv (4)使用make创建编译 (5) 安装 二.配置环境 三.实例 (1)打开图 ...
- 在ubuntu20.04环境下安装opencv教程并测试
目录 一.安装opencv 二 配置环境 三 实例 四 总结 五参考文献 一.安装opencv 1下载 在虚拟机内打开浏览器输入网址Release OpenCV 3.4.15 · opencv/ope ...
- Ubuntu20.04环境下,安装hadoop
踏坑采蘑菇的我又来了!我相信很多人在刚刚接触Hadoop的时候,安装就是一大难题,各种报错让人眼花缭乱,实属不易.我今天来说一下Oracle VM VirtualBox下的Ubuntu版本安装hado ...
- Ubuntu20.04环境下MySQL8.0.30的 用户管理,设置修改密码,密码过期策略,权限管理,角色管理
MySQL8.0.30 用户管理,设置修改密码,权限管理,角色管理 MySQL5.7可以 (创建用户,设置密码,授权) 一步到位
- 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 ...
- 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测 ...
- 20200614在ubuntu20.04的本地编译全志R系列的步骤20
在ubuntu20.04的本地编译全志R系列的步骤20 2020/6/14 14 7:51 开始写 2020/6/14 14 14:48 完工 0.获取全志R系列的Android源码包: 请通过渠道/ ...
- Ubuntu 16.04 LTS下编译GPU版tensorflow
Ubuntu 16.04 LTS下编译GPU版tensorflow 机器学习与数学 · 2016-06-10 13:51 作者: 比特小组 机器学习与数学出品 机器学习必然涉及到代码,本小组选择sci ...
最新文章
- MFC控件编程之复选框单选框分组框
- PHP读取MySQL数据生成Excel文件实例
- 如何才能写出好的软件设计文档?
- 2010最值得关注的10款小众互联网产品
- python做乘法运算定律_最新乘法运算定律专项练习题
- 吞吐量、速率、背板带宽
- 项目构建之maven篇:3.m2eclipse使用
- 厉害了!这款百度炼丹神器绝了!
- 老男孩Linux性能优化实战课程教学
- OpenCL编程入门(一)
- 计算机打印状态错误,打印机状态错误【设置办法】
- 处理行内元素行内块元素中间空隙
- 业务开发平台与SOA的统一论
- Fixed Effect
- windows抓屏排除指定窗口
- 高通收购恩智浦过审,完美的AI布局即将开启
- python收音机_FM收音机入门,以及Python实现FM调制解调
- SDHK_Tool.Static.SS_EulerAngleRotation 欧拉角旋转
- 记录一次使用JS生成word后端转换PDF功能
- 【嵌入式Linux】基于orangepi的官方外设开发
热门文章
- 程序员必备的思维能力:结构化思维
- 【HTML505】HTML基础05_区块_布局
- 运营——线上引流9大方法
- 全国所有城市及站点空气质量数据集(2014-2020年)
- JUC笔记-共享模型之管程 (Monitor)
- SQL Server 的几个故障
- sublime插件之sidebar
- 【预研】关于互联网广告:半小时读懂互联网广告新生态
- 已解决NameError: name ‘unichr‘ is not defined
- Unable to locate package net-tools 处理方法