YOLOv5 导出适配大漠工具(易语言/C#)避坑指南
侧边栏壁纸
  • 累计撰写 1,021 篇文章
  • 累计收到 3 条评论

YOLOv5 导出适配大漠工具(易语言/C#)避坑指南

私人云
2026-02-09 / 0 评论 / 0 阅读 / 正在检测是否收录...

核心目标:将训练好的 .pt 模型导出为大漠工具(及其他旧版推理引擎)能识别的 .onnx 格式。 当前环境:Windows / Python 3.12 / Torch 2.7 (Preview) / YOLOv5 7.0

1. 核心问题:大漠工具打不开模型

表现:模型成功导出,但在大漠工具中加载时提示“打开模型失败”或直接无响应。 原因:默认导出的 ONNX 版本(Opset 17)太新,且模型包含冗余算子,大漠不支持。

✅ 解决方案:固定导出参数

必须满足以下三个条件,大漠才能识别:

版本降级:opset = 12(最稳)或 11。结构简化:必须开启 simplify(依赖 onnx-simplifier)。固定尺寸:严禁开启 dynamic(动态尺寸),必须用固定的 640x640。

2. 永久解决方案:修改 export.py 源码

为了避免每次都要手动输入一长串命令,建议直接修改源码默认值。

文件位置:yolov5-7.0/export.py 修改函数:def parse_opt(known=False): (约第 1030 行附近)

修改步骤

Python

def parse_opt(known=False):parser = argparse.ArgumentParser()# ... 其他代码 ...# 1. 修改 Opset 版本:默认为 12parser.add_argument(--opset, type=int, default=12, help=ONNX: opset version)# 2. 修改导出类型:默认为 onnxparser.add_argument(--include, nargs=+, default=[onnx], help=torchscript, onnx...)# ... 其他代码 ...opt = parser.parse_known_args()[0] if known else parser.parse_args()# 3. 【关键】强制开启简化 (在 return opt 之前插入这行)opt.simplify = Trueprint_args(vars(opt))return opt

修改后运行命令

Bash

# 无需任何参数,自动完成所有适配配置python export.py --weights runs/train/exp/weights/best.pt

3. 环境安装报错:WinError 206 (文件名太长)

表现:pip install "onnx==1.14.0" 时报错 [WinError 206] 文件名或扩展名太长。 原因:Python 3.12 较新,旧版 ONNX 没有预编译包,pip 尝试下载源码并在本地编译,解压后的路径层级超过了 Windows 的 260 字符限制。

✅ 解决方案:安装最新版库 + 代码控制

不要强行安装旧版库!安装适配 Python 3.12 的最新版,然后通过代码参数 (opset=12) 来控制导出版本。

执行命令

Bash

pip install onnx onnx-simplifier --upgrade

4. 运行时警告:pkg_resources

表现:满屏红色的 UserWarning: pkg_resources is deprecated...。 原因:setuptools 版本过高(>81),与 YOLOv5 旧代码不兼容。 影响无影响。这只是警告,不影响模型导出和训练。

✅ 解决方案

无视它(推荐)。或者在命令行执行前输入 set PYTHONWARNINGS=ignore。

5. 导出时卡死/无进度

表现:进度条卡在 0% 或 25% 不动。 原因:Windows 下的多线程冲突或显存不足。

✅ 解决方案

在命令中加入 --works 0 :

Bash

python export.py --weights best.pt --works

最终检查清单 (Checklist)

如果下次大漠还打不开,请按此顺序检查:

[ ] 导出的文件后缀是 .onnx 吗?[ ] 导出时是否使用了 opset=12?[ ] 导出时是否开启了 simplify?[ ] 大漠工具里的“输入尺寸”是否填写的 640?[ ] ONNX 文件路径是否包含中文或空格?(尽量放在纯英文路径下,如 D:\models\)
0

评论 (0)

取消