MNN部署yolov5s检测算法(python)

概述:

使用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,固定形状,保存静态模型,就能推理成功了。

  • 24
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用MNN部署YOLOv5,首先需要将YOLOv5模型转换为MNN格式。可以使用GitHub上的代码将YOLOv5模型转换为MNN模型。根据给定的命令,可以通过运行以下命令将YOLOv5s模型转换为MNN模型: ``` ./MNN-1.1.0/build/MNNConvert -f ONNX --modelFile yolov5s.onnx --MNNModel yolov5s.mnn --bizCode MNN ``` 同样地,将YOLOv5ss模型转换为MNN模型的命令如下: ``` ./MNN-1.1.0/build/MNNConvert -f ONNX --modelFile yolov5ss.onnx --MNNModel yolov5ss.mnn --bizCode MNN ``` 这些命令会将YOLOv5模型转换为MNN模型,并且可以根据需要进行相应的调整。 接下来,可以使用MNN库来加载和运行转换后的MNN模型。可以使用MNN提供的API来进行目标检测。具体的部署方式可以参考中的相关文档和示例代码。 对于导出YOLOv5的onnx文件,可以使用以下命令: ``` python export.py --weights weights/yolov5m.pt --include onnx ``` 这将导出yolov5m.pt为onnx文件,以供后续的模型转换和部署使用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【深度学习】YOLOv5 工程落地部署过程,MNN转化,使用细节](https://blog.csdn.net/x1131230123/article/details/125620342)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值