Ubuntu20.04环境下编译MNN

本文介绍如何在Ubuntu20.04环境中编译MNN深度神经网络推理引擎,并详细展示了gcc、cmake及protobuf的安装过程。此外,还提供了Linux及Android平台下MNN的编译步骤,以及如何使用MNN模型转换工具。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

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

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

Android 编译 MNN

1. Linux 命令行方式

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 模型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值