【推理框架】MNN框架 C++、Python、Java使用例子 Demo

文章目录

  • 背景
  • 系统环境
  • MNN介绍
  • MNN环境
  • Python使用MNN
  • 模型转换
  • 参考文章

背景

背景:手机端需要调用深度学习模型的计算。
方案:python训练模型–>转到MNN框架模型–>放入C++调用(SDK)–>Java调用SDK(JNI).

MNN Python API https://www.yuque.com/mnn/cn/usage_in_python#x8YNO

系统环境

CentOS Linux release 7.9.2009 (Core)
Linux iZuf627r0ggzf84xn57fuvZ 3.10.0-1160.62.1.el7.x86_64
Tesla V100 32G CUDA11
Miniconda3

推荐Linux系统,不推荐Windows系统。

安装:

sudo yum install cmake3 protobuf -y

注意: CMake 3.0 or higher is required, 所以:

sudo ln -s /usr/bin/cmake3 /usr/bin/cmake

MNN介绍

直接查看文档:https://github.com/alibaba/MNN/blob/master/README_CN.md
【推理框架】MNN框架 C++、Python、Java使用例子 Demo_第1张图片
【推理框架】MNN框架 C++、Python、Java使用例子 Demo_第2张图片
【推理框架】MNN框架 C++、Python、Java使用例子 Demo_第3张图片
工具
MNN-Converter:模型转换工具,由Frontends和Graph Optimize构成。前者负责支持不同的训练框架,MNN当前支持Tensorflow(Lite)、Caffe、ONNX(PyTorch/MXNet的模型可先转为ONNX模型再转到MNN)和Torchscripts;后者通过算子融合、算子替代、布局调整等方式优化图,一般离线运行。
MNN-Compress: 模型压缩工具,在一定的精度误差许可下,对MNN模型进行压缩,减少模型体积,提升运行性能。
MNN-Express :支持带控制流的模型运行,支持调用 MNN 的算子进行自定义的计算。
MNN-CV :类似 OpenCV ,但核心计算功能基于 MNN 实现的图像处理算法库
MNN-Train :MNN 训练模块,支持各平台训练

MNN环境

参考:https://www.yuque.com/mnn/cn/demo_project

下载MNN工程:

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

编译前的选择:
vim CMakeLists.txt 我看CMakeLists.txt里的都很有用,我都手动ON上了,以后学习过程中说不定就用了:
【推理框架】MNN框架 C++、Python、Java使用例子 Demo_第4张图片

编译:

cd path/to/MNN
# 生成 schema ,可选
cd schema && ./generate.sh

# 进行编译
cd path/to/MNN # 注意回到根目录
mkdir build && cd build
cmake -DMNN_BUILD_DEMO=ON ..
make -j

在系统中构建这个MNN后,就能使用MNN提供的众多工具了。

Python使用MNN

Python 3.7 支持mnn

代码和介绍:https://github.com/xddun/MNN_Demos

模型转换

https://www.yuque.com/mnn/cn/model_convert

参考文章

https://blog.csdn.net/wl1710582732/article/details/107731147

你可能感兴趣的:(深度学习推理框架,python,mnn,java)