MNN简介
MNN是一个轻量级的深度神经网络推理引擎,在端侧加载深度神经网络模型进行推理预测
MNN应用流程
- 训练
在开源框架上基于训练数据训练自己的模型,如TensorFlow、Pytorch等 - 转换
将其他训练框架模型转换为MNN模型。MNN当前支持Tensorflow(Lite)、Caffe和ONNX的模型转换。支持的算子 - 推理
端侧加载MNN模型进行推理。端侧运行库的编译支持平台:ios、Android、Linux/macOS/Ubuntu 、Windows;同时提供有API接口文档
应用实例
- 下载MNN代码
git clone https://github.com/alibaba/MNN.git
- 编译(此处为linux系统)
cd path/to/MNN
cd schema && ./generate.sh
mkdir build && build
cmake -DMNN_BUILD_DEMO=ON ..
make -j8
- Demo示例(姿态检测)
代码:demo/exec/multiPose.cpp
- 下载原始Tensorflow模型 pose model
- 转换工具编译,参考
- 使用模型转换工具转为MNN模型TensorFlow ->MNN
#./MNNConvert -f TF --modelFile XXX.pb --MNNModel XXX.mnn --bizCode biz
./MNNConvert -f TF --modelFile models/model-mobilenet_v1_075.pb --MNNModel models/model-mobilenet_v1_075.mnn --bizCode biz
- 执行姿态检测
./multiPose.out model.mnn input.jpg pose.png
- 结果
- 其他说明
以上的示例demo是官方给出的demo,我在linux下实现了一遍,multipose.out是官方编译生成的二进制可执行文件,源码在demo文件夹下可以找到。当我们在具体的项目中使用MNN的时候主要就是编写对应项目的main函数,当用MNN模型转换的时候遇到不支持的层时此时需要自己手写对应的算子实现,支持的算子可以在上面的链接中查看到。后面我会将我用facebox的人脸检测模型用MNN转换实现也更新上来。
Reference
https://www.yuque.com/mnn/cn/usage