MNN是一个轻量级的深度神经网络推理引擎,在端侧加载深度神经网络模型进行推理预测。目前,MNN已经在阿里巴巴的手机淘宝、手机天猫、优酷等20多个App中使用,覆盖直播、短视频、搜索推荐、商品图像搜索、互动营销、权益发放、安全风控等场景。此外,IoT等场景下也有若干应用。 整体特点轻量性 通用性 高性能 易用性 安装git clone https://github.com/alibaba/MNN.git 推理框架编译(Linux / macOS)环境要求 · cmake(建议使用3.10或以上版本)、 编译选项 使用cmake编译时,可以修改CMakeLists.txt中的选项: 具体步骤 cd /path/to/MNN ./schema/generate.sh ./tools/script/get_model.sh # 可选,模型仅demo工程需要 mkdir build && cd build && cmake .. && make -j8 编译完成后MNN/build目录下出现MNN的动态库(libMNN.so)。 推理框架Android编译环境要求 · cmake(建议使用3.10或以上版本)、 编译选项 使用cmake编译时,可以修改CMakeLists.txt中的选项: 具体步骤 在https://developer./ndk/downloads/下载安装NDK,建议使用最新稳定版本 在 .bashrc 或者 .bash_profile 中设置 NDK 环境变量,例如:export ANDROID_NDK=/Users/username/path/to/android-ndk-r14b cd /path/to/MNN ./schema/generate.sh ./tools/script/get_model.sh(可选,模型仅demo工程需要)。注意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 转换工具Linux / macOS编译,例程编译cd MNN/ ./schema/generate.sh mkdir build cd build cmake .. -DMNN_BUILD_CONVERTER=true && make -j4 编译产物包含模型转换工具 打开cmake的MNN_BUILD_DEMO(编译例程)和DMNN_BUILD_CONVERTER(编译模型转换工具)开关,进行编译 mkdir build && cd build cmake .. -DMNN_BUILD_DEMO=ON -DMNN_BUILD_CONVERTER=true make -j4 在build文件夹里面就有相应工具啦,可以运行官方示例模型,注意用的图片尺寸有要求的,跟着示例图片大小来就是。 aarch64交叉构建编译安装aarch64工具链可参考: 在MNN的目录执行以下操作,根据实际路径修改,可以做成sh脚本 export cross_compile_toolchain=/opt/gcc-aarch64-linux-gnu mkdir build && cd build sudo cmake .. -D CMAKE_SYSTEM_NAME=Linux -D CMAKE_SYSTEM_VERSION=1 -D CMAKE_SYSTEM_PROCESSOR=aarch64 -D CMAKE_C_COMPILER=/opt/gcc-aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc -D CMAKE_CXX_COMPILER=/opt/gcc-aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ sudo make -j4 如果编译不成功,单独执行sudo make -j4会有以下错误提示: error: 'CPUINFO_ARM_LINUX_FEATURE_I8MM’ was not declared in this scope; did you mean 'CPUINFO_ARM_LINUX_FEATURE_FPHP’? 按提示将该路径的CPURuntime.cpp中第1559行 if (isa_features & CPUINFO_ARM_LINUX_FEATURE_I8MM) 改为 if (isa_features & CPUINFO_ARM_LINUX_FEATURE_FPHP) References: |
|