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

训练后的YOLOv8模型正确保存与加载方法求助

YOLOv8 模型正确保存与加载方案

一、训练后正确保存模型

YOLOv8自带完整的模型保存逻辑,训练过程中会自动在runs/detect/trainX/weights目录下生成两个核心文件:

  • best.pt:验证集性能最优的模型
  • last.pt:训练最后一轮的模型

如果要手动保存训练好的模型,不要用torch.save(model.state_dict(), ...),直接调用模型实例的save()方法:

# model为训练完成的YOLOv8模型实例
model.save("custom_yolo_model.pt")

这种方式保存的是完整模型包,包含模型结构、权重、训练配置等所有必要信息,能直接用于后续推理。

二、加载模型并推理的正确步骤

加载保存的.pt模型无需手动构建结构再加载权重,直接用YOLO类实例化即可:

from ultralytics import YOLO

# 加载预保存的模型
model = YOLO("custom_yolo_model.pt")

# 执行推理(支持图片、视频、摄像头等输入)
infer_results = model("test_image.jpg")

# 处理推理结果示例
for res in infer_results:
    det_boxes = res.boxes  # 检测框坐标、置信度等信息
    # 按需添加结果可视化、导出等操作
    res.show()  # 显示带检测框的图片

三、为什么用torch.save(state_dict)会失效?

YOLOv8的模型包含大量自定义模块(如检测头、锚框配置、数据集参数绑定等),仅保存state_dict会丢失模型结构定义和训练上下文信息。加载时需要严格匹配原模型的结构细节,稍有差异就会出现权重不匹配、推理输出异常的问题。而YOLOv8原生的save()方法保存的是完整模型,能自动恢复所有依赖信息。

四、避免重复训练的实用技巧

  • 训练完成后,务必保留runs目录下的训练结果文件夹,其中的best.pt/last.pt是直接可用的模型文件
  • 若训练中途中断,可加载last.pt继续训练:
model = YOLO("last.pt")
model.train(data="your_dataset.yaml", epochs=10)  # 指定剩余训练轮数
  • 迁移模型时,直接复制.pt文件到目标环境,无需重新训练,用YOLO类加载即可正常推理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 05:16:06