参考论坛林同学的文章 https://www.hiascend.com/forum/thread-0214137663603808010-1-1.html

一、第一种情况是你用了yolov5模型

二、用了模型适配工具生成的模型

模型适配工具提供的没有yolov5

重点:

如果是使用其他yolov5模型(例如yolov5s),需要将对应的前处理,根据当前格式,修改覆盖掉sample样例的前处理,后处理相同操作。

我又参考了林同学的一个回复(找了好久)

之后发现模型适配工具给的转换方法是fp16

所以我选择用官方给的atc命令转换

使用ATC命令转换模型-使用WSL安装Linux Ubuntu 22.04-在Ubuntu系统上转换模型-转换模型-应用开发指南-Atlas 200I DK A2开发者套件23.0.RC3开发文档-昇腾社区

YoloV5s模型转换命令如下

atc --model=yolov5s.onnx --framework=5 --output=yolov5s_bs1 --input_format=NCHW --soc_version=Ascend310B4 --input_fp16_nodes="images" 

因为默认是float32,所以如果我们想用float32的话,应该把最后的去掉(并且我soc换成了310B1,我的版本是这个,虽然我感觉应该没关系)

atc --model=yolov5s.onnx --framework=5 --output=yolov5s_bs1 --input_format=NCHW --soc_version=Ascend310B1

用这个得到的模型替换到sample中,再改一下标签文件,再加上第一种情况的/255.0就成功了。


总结

生成压缩包之后不要用onnx2om.py转换,用如下命令:

atc --model=yolov5s.onnx --framework=5 --output=yolov5s_bs1 --input_format=NCHW --soc_version=Ascend310B1

然后在预处理倒数第二行加入/255.0

Logo

鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。

更多推荐