Passer1072 / RookieAI_yolov8

基于yolov8实现的AI自瞄项目 AI self-aiming project based on yolov8
MIT License
262 stars 62 forks source link

关于使用自己的onnx模型的报错 #56

Open NathanielChenZY opened 2 months ago

NathanielChenZY commented 2 months ago

我在使用自己的onnx模型时候报错如下:

onnxruntime.capi.onnxruntime_pybind11_state.InvalidArgument: [ONNXRuntimeError] : 2 : INVALID_ARGUMENT : Unexpected input data type. Actual: (tensor(float16)) , expected: (tensor(float))

自己寻找原因后发现问题是模型的需要FP32,我的模型是FP16,但我在代码

results = model.predict(frame, save=False, conf=confidence, half=True, agnostic_nms=True, iou=0.7, classes=[ target_selection], device="cuda:0", verbose=False, save_txt=False)

中将half已经开启为Ture,且将pt模型转换的脚本中的half=true也已经设置为true:

model.export(format="engine", workspace=8.0, half=True)

可是在使用onnx模型后还会出现上述报错,随后我将yolov8n.pt利用tools文件夹中的脚本PT_TRT脚本转换成onnx模型(yolov8n.onnx)惊醒推理,依然会报错

麻烦您提供帮助,感激

Passer1072 commented 2 months ago

我在使用自己的onnx模型的时候报错如下:

onnxruntime.capi.onnxruntime_pybind11_state.InvalidArgument: [ONNXRuntimeError]: 2: INVALID_ARGUMENT: 意外的输入数据类型。实际:(tensor(float16)),预期:(tensor(float))

自己寻找原因后发现问题是模型的需要FP32,我的模型是FP16,但我在代码

results = model.predict(frame, save=False, conf=confidence, half=True, agnostic_nms=True, iou=0.7, classes=[ target_selection], device="cuda:0", verbose=False, save_txt=False)

中将half已经开启为Ture,并且将pt模型转换的脚本中的half=true也已经设置为true:

model.export(format="engine", workspace=8.0, half=True)

但在使用onnx模型后还会出现上述报错,并且我将yolov8n.pt利用tools文件夹中的脚本PT_TRT脚本转换成onnx模型(yolov8n.onnx)惊醒推理,依然会报错

麻烦您提供帮助,感激不尽

使用onnx模型不能开启半精度推理,请将half=True改为half=False尝试下

NathanielChenZY commented 2 months ago

我在使用自己的onnx模型的时候报错如下:

onnxruntime.capi.onnxruntime_pybind11_state.InvalidArgument: [ONNXRuntimeError]: 2: INVALID_ARGUMENT: 意外的输入数据类型。实际:(tensor(float16)),预期:(tensor(float))

自己寻找原因后发现问题是模型的需要FP32,我的模型是FP16,但我在代码

results = model.predict(frame, save=False, conf=confidence, half=True, agnostic_nms=True, iou=0.7, classes=[ target_selection], device="cuda:0", verbose=False, save_txt=False)

中将half已经开启为Ture,并且将pt模型转换的脚本中的half=true也已经设置为true:

model.export(format="engine", workspace=8.0, half=True)

但在使用onnx模型后还会出现上述报错,并且我将yolov8n.pt利用tools文件夹中的脚本PT_TRT脚本转换成onnx模型(yolov8n.onnx)惊醒推理,依然会报错

麻烦您提供帮助,感激不尽

使用onnx模型不能开启半精度推理,请将half=True改为half=False尝试下

感谢您的回复,我下午改为false后可以使用,但是帧数下降得很厉害,在ow中大概是20-30帧,远没有engine帧数高,是否后期可以支持半精度推理嘛?

Passer1072 commented 2 months ago

我在使用自己的onnx模型的时候报错如下:

onnxruntime.capi.onnxruntime_pybind11_state.InvalidArgument: [ONNXRuntimeError]: 2: INVALID_ARGUMENT: 意外的输入数据类型。实际:(tensor(float16)),预期:(tensor(float))

自己寻找原因后发现问题是模型的需要FP32,我的模型是FP16,但我在代码

results = model.predict(frame, save=False, conf=confidence, half=True, agnostic_nms=True, iou=0.7, classes=[ target_selection], device="cuda:0", verbose=False, save_txt=False)

中将half已经开启为Ture,并且将pt模型转换的脚本中的half=true也已经设置为true:

model.export(format="engine", workspace=8.0, half=True)

但在使用onnx模型后还会出现上述报错,并且我将yolov8n.pt利用tools文件夹中的脚本PT_TRT脚本转换成onnx模型(yolov8n.onnx)惊醒推理,依然会报错

麻烦您提供帮助,感激不尽

使用onnx模型不能开启半精度推理,请将half=True改为half=False尝试下

感谢您的回复,我下午改为false后可以使用,但是帧数下降得很厉害,在ow中大概是20-30帧,远没有engine帧数高,是否后期可以支持半精度推理嘛?

不可以,受限于onnx模型的原理无法启用半精度。

NathanielChenZY commented 2 months ago

我在使用自己的onnx模型的时候报错如下:

onnxruntime.capi.onnxruntime_pybind11_state.InvalidArgument: [ONNXRuntimeError]: 2: INVALID_ARGUMENT: 意外的输入数据类型。实际:(tensor(float16)),预期:(tensor(float))

自己寻找原因后发现问题是模型的需要FP32,我的模型是FP16,但我在代码

results = model.predict(frame, save=False, conf=confidence, half=True, agnostic_nms=True, iou=0.7, classes=[ target_selection], device="cuda:0", verbose=False, save_txt=False)

中将half已经开启为Ture,并且将pt模型转换的脚本中的half=true也已经设置为true:

model.export(format="engine", workspace=8.0, half=True)

但在使用onnx模型后还会出现上述报错,并且我将yolov8n.pt利用tools文件夹中的脚本PT_TRT脚本转换成onnx模型(yolov8n.onnx)惊醒推理,依然会报错

麻烦您提供帮助,感激不尽

使用onnx模型不能开启半精度推理,请将half=True改为half=False尝试下

感谢您的回复,我下午改为false后可以使用,但是帧数下降得很厉害,在ow中大概是20-30帧,远没有engine帧数高,是否后期可以支持半精度推理嘛?

不可以,受限于onnx模型的原理无法启用半精度。

好的,非常感谢您的帮助,我将继续学习