关于yolov5模型转换的问题

基于Yolov5 v6.0版本的yolon.pt权重文件自定义训练的数据集,转成onnx以后通过AI工具链1.7.5版本mapper工具做的模型转换,根据视频和问的说明已经执行了01 模型检测、02 预处理、03 模型编译,前面三步都已经完成了,执行04 的时候提示错误,异常输出附在内容后面,根据训练模型修改了输入尺寸为640,也替换了预处理的图片,其他的没有修改,请问下这个异常怎么处理?

python3 -u ../../det_inference.py \

--model ${model} \

--image ${infer_image} \

--input_layout ${layout} \

--input_offset ${input_offset}

no display found. Using non-interactive Agg backend

Traceback (most recent call last):

File “../../det_inference.py”, line 71, in

main()

File “/usr/local/lib/python3.6/dist-packages/click/core.py”, line 829, in __call__

return self.main(*args, **kwargs)

File “/usr/local/lib/python3.6/dist-packages/click/core.py”, line 782, in main

rv = self.invoke(ctx)

File “/usr/local/lib/python3.6/dist-packages/click/core.py”, line 1066, in invoke

return ctx.invoke(self.callback, **ctx.params)

File “/usr/local/lib/python3.6/dist-packages/click/core.py”, line 610, in invoke

return callback(*args, **kwargs)

File “../../det_inference.py”, line 67, in main

inference(sess, image, input_layout, input_offset)

File “../../det_inference.py”, line 36, in inference

postprocess(output, model_hw_shape, origin_image)

File “/open_explorer/ddk/samples/ai_toolchain/horizon_model_convert_sample/04_detection/03_yolov5/mapper/postprocess.py”, line 58, in postprocess

85]).transpose([0, 3, 1, 2, 4])

ValueError: cannot reshape array of size 2142000 into shape (1,84,84,3,85)

您好,注意到您自定义训练后导出的onnx模型输入为640,而OE包里YOLOv5模型的输入为672,这种情况下需要您检查修改后处理示例代码,对齐模型输出,不建议直接复用后处理示例代码。

yolo5在旭日3开发板上跑起来了吗?

还没有,这不是遇到问题来求助了么

再次确认了:export 的输入为672,train.py 的输入也为672,素材分辨率也为672

export.py

train.py

images.jpg

最后推理报错:

此问题已耽误好几周开发进度,能否帮忙给一些具体点的修改建议?您的举手之劳可能为开发者剩下几周几个月的时间。

@颜值即正义

你好,可以看一下模型输出shape

后处理中shape是否对应哈

实在不行,可以看一下你的model_output是什么样的shape

谢谢你的回复

我用Netron查看,确实模型的输出和输入没对应,但yolov5 2.0版本中没有找到后处理部分的代码,不清楚 model_ouput[0] 在哪里,去修改它的 reshape 值。希望能告知。

以J5 OE1.1.52为例,代码在horizon_j5_open_explorer_v1.1.52a-py38_20230605/ddk/samples/ai_toolchain/horizon_model_convert_sample/04_detection/03_yolov5x/mapper/postprocess.py里面-

这里也解释一下,通常我们主要解决工具链的相关问题,比如转换失败等。提供的参考示例我们会确保它们可以正常运行,如果大家在算法层面进行了修改,非常欢迎大家参考我们的示例代码进行调试,但我们一般不参与用户自己算法层面的代码调试与答疑哦,毕竟大家的算法千变万化,各不相同~

感谢回复

最后一个问题:如何将onnx的ouput输出为1,84,84,255 ?

现在的值是:

建议从开源网站了解一些yolo算法基础知识,这里是8还是255取决你算法层面的设置