使用ubuntu20.04系统转换yolov5n的kmodel模型,验证时出现报错,如何解决

Viewed 89

问题描述


报错的详情
目前kmodel模型是有的,但是只要在板子上运行,板子就死机,IDE显示报错忙碌中
(kmodel_py310) rui@rui-virtual-machine:~/test_yolov5/detect$ python simulate.py --model yolov5n-c29.onnx --model_input onnx_input_float32.bin --kmodel yolov5n-c29.kmodel --kmodel_input kmodel_input_uint8.bin --input_width 320 --input_height 320
sh: 1: nncase.simulator.k230.sc: not found
Failed to run k230 scmodel(32512).
[..runtime_function.cpp:176 (invoke)] Input/output error
[..runtime_function.cpp:176 (invoke)] Input/output error
Traceback (most recent call last):
File "/home/rui/test_yolov5/detect/simulate.py", line 77, in
main()
File "/home/rui/test_yolov5/detect/simulate.py", line 60, in main
sim.run()
RuntimeError: Input/output error

复现步骤


ubuntu20.02
(kmodel_py310) rui@rui-virtual-machine:~/test_yolov5/detect$ pip list
Package Version


coloredlogs 15.0.1
flatbuffers 25.12.19
humanfriendly 10.0
markdown-it-py 4.2.0
mdurl 0.1.2
mpmath 1.3.0
nncase 2.11.0
nncase-kpu 2.11.0
numpy 2.2.6
onnx 1.15.0
onnxruntime 1.19.0
onnxsim 0.4.36
opencv-python 4.13.0.92
packaging 26.0
pillow 12.2.0
pip 26.0.1
protobuf 7.34.1
Pygments 2.20.0
rich 15.0.0
setuptools 82.0.1
sympy 1.14.0
wheel 0.46.3
(kmodel_py310) rui@rui-virtual-machine:~/test_yolov5/detect$ dotnet --version
7.0.410
(kmodel_py310) rui@rui-virtual-machine:~/test_yolov5/detect$

软件版本


CanMV_K230_01Studio_micropython_v1.6-b7e6201-dirty_nncase_v2.11.0.img.gz

1 Answers

看一下yolov5n的输出是几个?可能是模型有问题,yolov5的较新版本已经改造了head,输出和yolov8类似,都是一个输出,k230支持的是这种。使用netron打开onnx,看一下输出节点

name
main_graph
images
name: images
tensor: float32[1,3,320,320]
output0
name: output0
tensor: float32[1,33,2100]
parameters
2519121

import onnx

读取模型

model = onnx.load("yolov5n-c29.onnx")

输出节点信息

print("输出节点:")
for output in model.graph.output:
print("名字:", output.name)
dims = [d.dim_value for d in output.type.tensor_type.shape.dim]
print("形状:", dims)
使用脚本输出的:
输出节点:
名字: output0
形状: [1, 33, 2100]

看着结果是对的