参考论坛林同学的文章 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

昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链

更多推荐