核心目标:将训练好的 .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.pt3. 环境安装报错: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 --upgrade4. 运行时警告: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 0最终检查清单 (Checklist)
如果下次大漠还打不开,请按此顺序检查:
[ ] 导出的文件后缀是 .onnx 吗?[ ] 导出时是否使用了 opset=12?[ ] 导出时是否开启了 simplify?[ ] 大漠工具里的“输入尺寸”是否填写的 640?[ ] ONNX 文件路径是否包含中文或空格?(尽量放在纯英文路径下,如 D:\models\)
评论 (0)