赞
踩
使用MNN的整体流程,
训练,使用训练数据训练出模型;
转换,将其他训练框架模型转换为MNN模型的阶段。MNN当前支持Tensorflow(Lite), ONNX, TorchScript的模型转换;
推理,在端侧加载MNN模型进行推理。
附:这里我使用的是docker镜像,更方便;
a.首先创建一个Dockerfile文件,并添加所需内容;
b.构建docker镜像——docker build –t mnn_environment /path/to/Dockerfile, (不直接包含Dockerfile,比如/home/Dockerfile,那么就写/home/)
c.运行docker容器——docker run -it -v /data//MNN-master:/data/MNN-master -v $PWD:/app -w /app mnn_environment:latest /bin/bash
进入docker环境后:
编译完成后,MNN/build目录下出现MNN的动态库(libMNN.so)
a.编译模型转化工具,
# 在主库编译中,已经创建了build目录,后续其它编译操作均在build目录下进行
cmake .. -DMNN_BUILD_CONVERTER=ON
make -j8
b.编译测试工具
cmake .. -DMNN_BUILD_TOOL=ON
make -j8
c.编译BnechMark工具
cmake .. -DMNN_BUILD_BENCHMARK=ON
make -j8
d. 编译模型量化工具
cmake .. -DMNN_BUILD_QUANTOOLS=ON
make -j8
e, 编译评估工具
cmake .. -DMNN_EVALUATION=ON
make -j8
cd /MNN安装目录/MNN/pymnn/pip_package
python build_deps.py
python setup.py install --version {MNN版本}
附:MNN版本可通过如下方式查看:
cd /MNN安装目录/MNN/build
./MNNConvert –version
a.pt转onnx,——python export.py --weights weights/yolov5s.pt --img 640 --batch 1 --device 0正确结果——onnx saved success, saved as weigts/yolo5s.onnx
问题,只转成了.torchscript,没有转成.onnx export failure: unsupported onnx opset version:17
参考解决https://blog.csdn.net/qq_43318374/article/details/120195550,将onnx opset version改为12============================成功√
b. onnx转mnn,——./MNNConvert -f ONNX --modelFile /PATH_to_Transfer_test.onnx --MNNModel /PATH_to_Transfer_test.mnn========================转换成功√
推理API有三种方法,分别是Session API, Module API,Expr API
推理运行,python3 inference.py
需要pip install MNN
pip install opencv-python
安装openGL库文件,==========apt install libgl1-mesa-glx
更新动态连接库缓存,=========ldconfig
安装glib库文件,=============apt install libglib2.0-0
再重新运行python应用,========python3 inference.py
推理时,出现Input_var = {var (1,3,640,640)},Reshape error:153600->55296
Process finished with exit code -1073741819 (0xC0000005)
解决办法,在onnx转换mnn时,加上指令--saveStaticModel,固定形状,保存静态模型,就能推理成功了。
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。