当前位置:   article > 正文

MNN部署yolov5s检测算法(python)_mnn yolo

mnn yolo

概述:

使用MNN的整体流程,

训练,使用训练数据训练出模型;

转换,将其他训练框架模型转换为MNN模型的阶段。MNN当前支持Tensorflow(Lite), ONNX, TorchScript的模型转换;

推理,在端侧加载MNN模型进行推理。

准备工作:

1.下载MNN;——1.git clone https://github.com/alibaba/MNN.git

2.编译环境;——1).主库编译,cmake(建议使用3.10或以上版本) protobuf(使用3.0或以上版本)、gcc(使用4.9或以上版本

附:这里我使用的是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)

2.编译环境;——2).主要工具模块编译

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

2.编译环境;——3). pymnn构建

cd /MNN安装目录/MNN/pymnn/pip_package

python build_deps.py

python setup.py install --version {MNN版本}

附:MNN版本可通过如下方式查看:

cd /MNN安装目录/MNN/build

./MNNConvert –version

具体转换步骤:

1.yolov5转MNN模型

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========================转换成功√

2.使用MNN进行推理

推理API有三种方法,分别是Session APIModule APIExpr API

推理运行,python3 inference.py

遇到的问题:

1.模块问题,

需要pip install MNN

pip install opencv-python

安装openGL库文件,==========apt install libgl1-mesa-glx

更新动态连接库缓存,=========ldconfig

安装glib库文件,=============apt install libglib2.0-0

再重新运行python应用,========python3 inference.py

2.推理时遇到的问题,

推理时,出现Input_var = {var (1,3,640,640)},Reshape error:153600->55296

Process finished with exit code -1073741819 (0xC0000005)

解决办法,在onnx转换mnn时,加上指令--saveStaticModel,固定形状,保存静态模型,就能推理成功了。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/901225
推荐阅读
相关标签
  

闽ICP备14008679号