MNN是一个轻量级的深度神经网络推理引擎,在端侧加载深度神经网络模型进行推理预测。目前,MNN已经在阿里巴巴的手机淘宝、手机天猫、优酷等20多个App中使用,覆盖直播、短视频、搜索推荐、商品图像搜索、互动营销、权益发放、安全风控等场景。此外,IoT等场景下也有若干应用。
下面介绍在 Ubuntu20.04 环境下编译 MNN 的过程。
- sudo apt update
- sudo apt install build-essential
tar -zxv -f cmake-3.24.1.tar.gz
./bootstrap
可能会报错

需要安装 libssl-dev
sudo apt-get install libssl-dev
安装完成以后,再次执行 ./bootstrap
make
sudo make install
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
unzip MNN-master.zip
- cd MNN-master
- ./schema/generate.sh
- mkdir build
- cd build
- cmake ..
- make -j8

export ANDROID_NDK=/home/wkx/Downloads/android-ndk-r25
- cd /path/to/MNN-master
-
- # 可选,更改 schema 文件后需要重新生成
- ./schema/generate.sh
-
- # 可选,模型仅 demo 工程需要
- ./tools/script/get_model.sh
- cd project/android
-
- # 编译 armv7 动态库
- mkdir build_32
- cd build_32
- ../build_32.sh
-
- # 编译armv8动态库
- mkdir build_64
- cd build_64
- ../build_64.sh
下图为 armv8 动态库

下图为编译好的 apk

用 zip 解压,进入 lib 目录

arm64-v8a 目录下的动态库

- cd MNN-master
- ./schema/generate.sh
- mkdir build
- cd build
- cmake .. -DMNN_BUILD_CONVERTER=true && make -j4
下图为得到的模型转换工具

./MNNConvert -f TF --modelFile model-mobilenet.pb --MNNModel abc.mnn --bizCode biz
转换成功

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