MNN介绍、安装和编译(Linux)

官网

MNN - AI For Everyone

GitHub - alibaba/MNN: MNN is a blazing fast, lightweight deep learning framework, battle-tested by business-critical use cases in Alibaba

MNN 轻量级高性能推理引擎

  • 通用性 - 支持TensorFlow、Caffe、ONNX等主流模型格式,支持CNN、RNN、GAN等常用网络。

  • 高性能 - 极致优化算子性能,全面支持CPU、GPU、NPU,充分发挥设备算力。

  • 易用性 - 转换、可视化、调试工具齐全,能方便地部署到移动设备和各种嵌入式设备中。

环境要求

  • cmake(建议使用3.10或以上版本)、
  • protobuf(使用3.0或以上版本)
  • gcc(使用4.9或以上版本)
apt-get install cmake gcc
git clone https://github.com/google/protobuf.git
cd protobuf
git submodule update --init --recursive
./autogen.sh
./configure
make
make check
sudo make install
sudo ldconfig # refresh shared library cache.

 安装

1. 下载

git clone https://github.com/alibaba/MNN

2. 编译选项

使用cmake编译时,可以修改CMakeLists.txt中的选项:

  • MNN_DEBUG

默认关闭,关闭时,不保留符号,开启优化。

  • MNN_OPENMP

默认开启,关闭后,禁用openmp多线程优化。

  • MNN_OPENCL

默认关闭,开启后,编译OpenCL部分,可以通过指定MNN_FORWARD_OPENCL利用GPU进行推理。

  • MNN_OPENGL

默认关闭,开启后,编译OpenGL部分,可以通过指定MNN_FORWARD_OPENGL利用GPU进行推理。

  • MNN_VULKAN

默认关闭,开启后,编译Vulkan部分,可以通过指定MNN_FORWARD_VULKAN利用GPU进行推理。

  • MNN_METAL

默认关闭,开启后,编译Metal部分,可以通过指定MNN_FORWARD_METAL利用GPU进行推理,仅限iOS或macOS上开启。

  • MNN_ARM82

默认关闭,开启后,编译Arm8.2部分,用Arm8.2+扩展指令集实现半精度浮点计算(fp16)和int8(sdot)加速

使用Arm82+扩展指令的方法如下:

// 创建session需要的配置
MNN::ScheduleConfig config;
// 选择Backend
config.type = MNN_FORWARD_CPU;
// 线程数
config.numThread = 2;
// 配置相应的Backend
BackendConfig backendConfig;
// 选择低精度
backendConfig.precision = BackendConfig::Precision_Low;
config.backendConfig    = &backendConfig;

3. 编译

准备工作

(可选,修改 MNN Schema 后需要)

cd /path/to/MNN
./schema/generate.sh
./tools/script/get_model.sh # 可选,模型仅demo工程需要

本地编译

mkdir build && cd build && cmake .. && make -j8

编译完成后本地出现MNN的动态库。

你可能感兴趣的:(自动驾驶,mnn,大数据,人工智能)