背景:手机端需要调用深度学习模型的计算。
方案: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系统。
安装:
shellsudo yum install cmake3 protobuf -y
注意: CMake 3.0 or higher is required, 所以:
shellsudo ln -s /usr/bin/cmake3 /usr/bin/cmake
直接查看文档:https://github.com/alibaba/MNN/blob/master/README_CN.md
工具
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 训练模块,支持各平台训练
参考:https://www.yuque.com/mnn/cn/demo_project
下载MNN工程:
shellgit clone https://github.com/alibaba/MNN.git
编译前的选择:
vim CMakeLists.txt
我看CMakeLists.txt里的都很有用,我都手动ON上了,以后学习过程中说不定就用了:
编译:
shellcd 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 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
本文作者:Dong
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!