yolov5 onnx推理时报错[ONNXRuntimeError] : 2 : INVALID_ARGUMENT : Unexpected input data type.

从github上clone最新的yolov5代码,使用onnx推理时报错:

 python detect.py --weights yolov5s.onnx

Loading yolov5s.onnx for ONNX Runtime inference...
Traceback (most recent call last):
  File "/home/workspace/yolov5/yolov5/detect.py", line 425, in <module>
    main(opt)
  File "/home/workspace/yolov5/yolov5/detect.py", line 420, in main
    run(**vars(opt))
  File "/home/workspace/miniconda3/envs/yolov5/lib/python3.9/site-packages/torch/utils/_contextlib.py", line 115, in decorate_context
    return func(*args, **kwargs)
  File "/home/workspace/yolov5/yolov5/detect.py", line 182, in run
    model.warmup(imgsz=(1 if pt or model.triton else bs, 3, *imgsz))  # warmup
  File "/home/workspace/yolov5/yolov5/models/common.py", line 749, in warmup
    self.forward(im)  # warmup
  File "/home/workspace/yolov5/yolov5/models/common.py", line 675, in forward
    y = self.session.run(self.output_names, {self.session.get_inputs()[0].name: im})
  File "/home/workspace/miniconda3/envs/yolov5/lib/python3.9/site-packages/onnxruntime/capi/onnxruntime_inference_collection.py", line 220, in run
    return self._sess.run(output_names, input_feed, run_options)
onnxruntime.capi.onnxruntime_pybind11_state.InvalidArgument: [ONNXRuntimeError] : 2 : INVALID_ARGUMENT : Unexpected input data type. Actual: (tensor(float)) , expected: (tensor(float16))

仔细查看报错位置,定位在/models/common.py文件,在674行发现问题,没有将numpy转为float16,修改如下后解决问题

elif self.onnx:  # ONNX Runtime
    im = im.cpu().numpy().astype(np.float16)  # torch to numpy,注意数据类型需要float16
    y = self.session.run(self.output_names, {self.session.get_inputs()[0].name: im})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值