算能科技
直播中

陈秀珍

7年用户 897经验值
私信 关注
[问答]

用yolov5的best.pt导出成onnx转化成fp32 bmodel后在Airbox上跑,报维度不匹配怎么处理?

用官方的模型不出错,用自己的yolov5训练出来的best.pt导出成onnx转化成fp32 bmodel后在Airbox上跑,出现报错:
linaro@bm1684:~/yolov5/python$ python3 yolov5_opencv_3output.py --bmodel ../../best_pt_1684x_int8_sym.bmodel --input ../../21.png --label=../../classes.names[BMRT][bmcpu_setup:406] INFO:cpu_lib 'libcpuop.so' is loaded.bmcpu init: skip cpu_user_definedopen usercpu.so, init user_cpu_init[BMRT][load_bmodel:1090] INFO:Loading bmodel from [../../best_pt_1684x_int8_sym.bmodel]. Thanks for your patience...[BMRT][load_bmodel:1029] INFO:pre net num: 0, load net num: 1processing file: ../../21.pngimg pre cost time 0.05923032760620117use decode data as inputinput_data shape:  (1, 3, 640, 640)(1, 25200, 11)Traceback (most recent call last):  File "yolov5_opencv_3output.py", line 461, in     result_image = yolov5.inference_center_np(frame, opt.use_np_file_as_input)  File "yolov5_opencv_3output.py", line 310, in inference_center_np    dets = self.predict_center(input_data, use_np_file_as_input)  File "yolov5_opencv_3output.py", line 201, in predict_center    bs, _, ny, nx, nc = feat.shapeValueError: not enough values to unpack (expected 5, got 3)模型有6个类,是用yolov5s模型训练出来的,转成bmodel是利用mlir转的
#进入docker容器mkdir acd    cd acddocker cp D:yolov5-masteraccidentimagestrain 8f3388b70bb3:/workspace/acddocker cp D:yolov5-masteraccidentimagesval 8f3388b70bb3:/workspace/acddocker cp D:yolov5-masterrunstrainexpmyqweightsbest.onnx 8f3388b70bb3:/workspace/acdmkdir workspace1    cd workspace1model_transform --model_name best_pt --model_def ../best.onnx --input_shapes [[1,3,640,640]] --mean 0.0,0.0,0.0 --scale 0.0039216,0.0039216,0.0039216 --keep_aspect_ratio --pixel_format rgb --test_input ../val/65.jpg --test_result best_pt_top_outputs.npz --mlir best_pt.mlirmodel_deploy --mlir best_pt.mlir --quantize F32 --processor bm1684x --test_input best_pt_in_f32.npz --test_reference best_pt_top_outputs.npz --model bestf32.bmodel跑模型是利用文件中的py文件
      

回帖(1)

李明

2024-6-3 16:35:35
根据您提供的信息,您在使用YOLOv5模型时遇到了维度不匹配的问题。这可能是由于模型导出、转换或运行过程中的某些步骤出现问题。为了解决这个问题,请按照以下步骤操作:

1. 确保您的输入图像尺寸与训练时使用的尺寸一致。YOLOv5通常使用416x416、512x512等尺寸的图像。您可以使用OpenCV或PIL库调整图像尺寸。

2. 检查您的best.pt模型是否正确导出。确保导出过程中没有错误或遗漏。

3. 在将best.pt模型导出为ONNX格式时,请确保使用正确的命令和参数。您可以使用以下命令将PyTorch模型导出为ONNX格式:

```
python -m onnxruntime.tools.convert
    --opset_version 11
    --input best.pt
    --output best.onnx
    --dynamic_axes "{'image': {0: 'batch_size'}}"
    --input-shape-dim image:1,3,416,416
```

请根据您的实际情况调整`opset_version`、`input-shape-dim`等参数。

4. 在将ONNX模型转换为BM模型时,请确保使用正确的命令和参数。您可以使用以下命令将ONNX模型转换为BM模型:

```
./convert-onnx-to-bm best.onnx best.bmodel
```

5. 在Airbox上运行BM模型时,请确保使用正确的命令和参数。您可以使用以下命令运行BM模型:

```
./run-bm best.bmodel input_image.png
```

6. 如果问题仍然存在,请检查您的模型结构和参数设置,确保它们与训练时使用的设置一致。

7. 如果您仍然无法解决问题,建议您查阅相关文档或寻求社区支持,以便更好地了解问题所在并找到解决方案。

希望这些建议能帮助您解决问题。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分