当前位置:   article > 正文

YOLOv5部署到华为昇腾Atlas 200I DK A2详解_华为板子上部署yolo

华为板子上部署yolo

系列文章目录

第一章 YOLO制作数据集流程(附脚本代码)
第二章 华为昇腾Atlas 200I DK A2部署详解
第三章 YOLOv5部署到华为昇腾Atlas 200I DK A2详解



前言

分享记录一下我在将YOLO部署到华为昇腾Atlas 200I DK A2板子上过程中遇到一系列问题以及解决方法。


一、模型适配

1. 板子推理介绍

这块板子搭载的是CPU和NPU,NPU就相当于PC的GPU。
CPU推理速度不如NPU推理速度,对实时推理有要求的就用NPU方式。

2. 模型格式

YOLO本身的detect.py支持的是pt和onnx格式
板子上仅支持CPU使用该方法推理,下面会介绍具体部署方法。
板子上NPU推理需要将onnx转换为om格式,下面会介绍具体部署方法。

二、CPU推理部署流程

1. 切换用户环境

root用户装有开发板上的一系列开发包环境,推荐使用该环境即可,无需创建虚拟环境(安装开发板的开发包非常麻烦且没必要)

命令行执行 su root
密码 Mind@123

2. 直接运行detect.py

执行python detect.py

会报错缺少包,缺少什么包就装什么包。每次装一个再运行一次detect.py直到不缺少包能正常运行为止

pip install 包名

3. 部署完成

三、NPU推理部署流程

1. 切换用户环境

root用户装有开发板上的一系列开发包环境,推荐使用该环境即可,无需创建虚拟环境(安装开发板的开发包非常麻烦且没必要)

命令行执行 su root
密码 Mind@123

2. 平均池化替换yolov5最大池化

om模型不支持maxpool算子,需要把yolo中一些模块用到的torch.nn.maxpool2d替换成avepool。
其他模型或者YOLO版本我不清楚,可以自行研究,方法类似。
具体方法:

① yolov5目录下models的common.py,搜索max

② 把所有用到MaxPool2d的都替换成AvgPool2d

在这里插入图片描述

3. 训练模型

转换完成后重新训练模型

训练完以后在netron.app查看一下自己的模型是否还有maxpool算子,网页中搜索max即可,我的按上面步骤替换后就没了。

4. 转换模型

首先在pc上将pt模型用export.py转换为onnx格式。
然后在pc上用detect.py验证一下onnx模型是否能正常检测
在root用户下调用板子atc命令将onnx转换为om格式

atc --model=origin_name.onnx --framework=5 --output=output_name --input_format=NCHW --input_shape="input:1,3,640,640"  --precision_mode_v2=origin --log=error --soc_version=Ascend310B1
  • 1

其中–input_shape需要在netron.app里面查看自己onnx模型输入,需要一致。比如我的是三通道RGB图片640x640尺寸,名字是images,那就是–input_shape=“images:1,3,640,640”
在这里插入图片描述

5. 编写NPU推理代码

NPU推理不能用detect.py,那个是调用的torch。
板子自带的YOLO样例的代码用的是板子的开发包ais进行推理,但是我直接使用它调用我转换好的om模型时发现代码能执行,但是推理效果有问题,满屏幕都是框。
解决办法是自己编写代码,用mindx sdk这个包来推理。
幸好的是官方有一个样例代码 here

其中get_labels_from_txt和draw_bbox函数在YOLO样例的main.ipynb有,自己修改一下。
视频流和摄像头流检测的代码也参考板子自带YOLO样例修改推理的那部分代码为mindx接口的代码即可。

6. 每次运行代码前需要手动初始化mindx环境

运行代码前需要将mindx初始化一下,没有初始化过的命令框调用python 你的代码.py会报错
去根目录下打开命令执行框,执行该命令

. /usr/local/Ascend/mxVision/set_env.sh
  • 1

7. 自动开初始化环境

1、 打开终端并切换至root用户:
使用命令:vim ~/.bashrc
在这里插入图片描述

2、 在文本末尾添加:source /usr/local/Ascend/mxVision/set_env.sh 保存并退出
在这里插入图片描述

3、 执行source ~/.bashrc使其生效
在这里插入图片描述

总结

感谢红凯的大力支持,网上教程太难找,自己摸索起码要花一个月时间。

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

闽ICP备14008679号