You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用OnnxRuntime QNN执行器在高通NPU运行YOLOv5 ONNX模型遇动态形状不支持错误

解决QNN执行器初始化YOLOv5模型时的动态形状不支持错误

错误原因

当前OnnxRuntime的QNN执行器暂不支持带有动态形状的模型输出,你导出的YOLOv5 ONNX模型默认保留了动态维度(比如输入的batch、高、宽,或者输出的检测框维度),导致解析模型时触发报错。

解决方案

1. 重新导出静态形状的YOLOv5 ONNX模型

使用YOLOv5的export.py脚本,通过参数固定输入尺寸并禁用动态形状:

python export.py --weights yolov5s.pt --include onnx --img 640 640 --dynamic=False
  • --img 640 640:固定输入图像的高和宽为640x640
  • --dynamic=False:强制导出静态形状的模型,确保所有输入输出维度都是固定值

2. 验证模型形状

用Netron工具打开新导出的ONNX文件,检查输入(通常是images节点)和输出(比如你报错的/model.12/Concat_output_0_QuantizeLinear_Output节点)的维度是否为固定值(例如输入维度为[1,3,640,640])。

3. 优化会话配置(可选)

在代码中添加QNN执行器的静态形状偏好配置,进一步确保兼容性:

options = ort.SessionOptions()
options.add_session_config_entry("session.disable_cpu_ep_fallback", "1")
options.add_session_config_entry("ep.context_enable", "1")
options.add_session_config_entry("ep.context_embed_mode", "0")
# 添加静态形状偏好配置
options.add_session_config_entry("ep.qnn_prefer_static_shape", "1")

sess = ort.InferenceSession('yolov5s_static.onnx', sess_options=options,
                           providers=["QNNExecutionProvider"],
                           provider_options=[{"backend_path": "QnnHtp.dll"}])

内容的提问来源于stack exchange,提问作者Vignesh Chat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 02:44:53