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

如何避免YOLOv7每次运行时重复转换为Traced-model?

YOLOv7重复转换Traced-model问题解决

问题说明

执行检测命令时功能正常:

python detect.py --weights yolov7.pt --conf 0.25 --img-size 640 --source inference/images/horses.jpg

但每次运行都会触发Traced-model转换流程,耗时数秒(检测本身仅需1秒):

Model Summary: 306 layers, 36905341 parameters, 6652669 gradients
 Convert model to Traced-model... 
 traced_script_module saved! 
 model is traced! 

直接使用生成的traced_model.pt作为权重文件时,出现错误:

AttributeError: 'RecursiveScriptModule' object has no attribute 'get'

解决方案

1. 跳过Traced-model转换(推荐)

打开detect.py,找到触发模型trace的代码段(包含Convert model to Traced-model打印和torch.jit.trace调用的部分),直接注释或删除这部分逻辑。修改后模型会直接以原始架构加载,无需每次重复转换。

2. 正确加载已生成的Traced-model

若想复用已生成的traced模型,需修改权重加载逻辑:

  • 找到代码中model = attempt_load(weights, map_location=device)这一行
  • 替换为:
model = torch.jit.load('traced_model.pt').to(device)
  • 同时需调整后续代码中对模型属性的访问(比如删除model.get()这类调用),因为Traced-model是RecursiveScriptModule类型,不具备原始YOLO模型的额外方法。

3. 使用--no-trace参数(版本兼容时)

部分YOLOv7版本支持--no-trace命令行参数,直接添加即可跳过转换:

python detect.py --weights yolov7.pt --conf 0.25 --img-size 640 --source inference/images/horses.jpg --no-trace

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 03:51:34