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

Unity Barracuda无法导入Yolov5导出的ONNX文件问题求助

问题分析与解决办法

前后导出文件的差异排查

  • YOLOv5版本差异:一个月前和当前使用的YOLOv5代码版本可能不同,新版本的export.py可能调整了Split层的实现逻辑(比如输出张量的数量、维度拆分方式),导致Unity的ONNX解析器无法识别。
  • 导出参数差异:检查前后导出命令是否一致,比如是否遗漏了--simplify参数(之前可能用了模型简化,当前没加),或者img-size、batch等参数是否有变化;另外你当前命令里的--weights best_export.py是笔误,应该是best.pt,这个错误可能导致导出的模型存在异常。
  • ONNX算子版本差异:当前环境的onnx库版本可能比一个月前更高,导出的ONNX使用了更高版本的算子(比如opset 13+),而Unity的ONNX解析器对高版本算子支持有限。
  • 模型结构变化:如果最近重新训练了模型,模型的model.24层结构可能发生了变化,Split层的输出逻辑和之前不同。

具体解决办法

  • 回退YOLOv5版本:找到一个月前能正常导出的YOLOv5代码版本,用相同版本重新导出ONNX,确保模型导出逻辑一致。
  • 修正导出命令并添加简化参数:使用正确的权重文件,加上--simplify参数优化模型,命令如下:
    python export.py --weights best.pt --batch 1 --img-size 640 480 --include onnx --simplify
    
    --simplify会通过onnx-simplifier移除冗余算子,调整模型结构,适配Unity的解析逻辑。
  • 指定兼容的ONNX算子版本:导出时指定Unity支持的opset版本(比如12,大部分Unity版本兼容),命令:
    python export.py --weights best.pt --batch 1 --img-size 640 480 --include onnx --opset 12 --simplify
    
  • 对比模型结构:用Netron工具打开前后两个ONNX文件,定位/model.24/Split层,查看输出张量的数量、维度是否有差异。如果新版本Split层输出了多余张量,可以修改YOLOv5的export.py代码,调整该层的输出逻辑,或者用onnx-simplifier进一步优化。
  • 检查Unity的ONNX支持:确认Unity项目中使用的MLAgents或ONNX Runtime版本,确保其支持导出的ONNX算子版本。比如Unity 2021及以上版本建议搭配opset 10-12的ONNX文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 15:22:22