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

如何逐轮训练YOLO模型并每轮保存训练统计信息?

YOLO模型逐轮训练并续训的实现方案

针对你需要每轮训练后保存统计信息再继续训练的需求,给你梳理几种可行的操作方式,以及对应你疑问的解答:

核心方案选择

方式1:用resume参数自动续训(最便捷)

YOLO训练时,每轮结束后会自动在weights目录生成last.pt,这个文件保存了当前训练的完整状态(包括模型权重、优化器参数、学习率调度器状态等)。

下一轮训练时,直接启用resume参数即可:

# 第一次训练(第1轮)
model.train(data='your_data.yaml', epochs=1)

# 处理第1轮的统计信息(保存到指定位置)

# 续训第2轮
model.train(data='your_data.yaml', epochs=2, resume=True)

这里epochs=2表示总训练轮数为2,程序会自动加载last.pt的状态,接着第1轮的进度跑完第2轮。之后每轮重复这个逻辑:处理统计信息后,把epochs设为当前轮数+1,加上resume=True即可。

方式2:手动加载权重逐轮训练(更灵活)

如果需要更精细的控制(比如每轮后可能调整训练参数),可以手动加载上一轮的last.pt,然后每次只训练1轮:

# 第1轮训练
model = YOLO('yolov8n.pt')  # 初始模型
model.train(data='your_data.yaml', epochs=1)
# 处理第1轮统计信息

# 第2轮训练:加载上一轮的last.pt
model = YOLO('weights/last.pt')
model.train(data='your_data.yaml', epochs=1)
# 处理第2轮统计信息

# 后续轮次重复上述加载+训练+处理的流程

对你疑问的明确解答

  • 是否需要将epochs设为2?
    如果用resume方式,设epochs=2是对的,它代表总训练轮数,程序会自动续完剩下的轮次。如果是手动加载权重的方式,每次都设epochs=1即可,因为你是逐轮触发训练。

  • 是否要启用resume=true?
    是的,resume=True是官方推荐的续训方式,它会完整继承上一轮的训练状态(包括优化器、学习率等),避免从头开始训练导致的进度断裂,适合你这种连续训练的场景。

  • 选last.pt还是best.pt加载?
    优先选last.pt,因为它保存的是上一轮训练结束时的最新训练状态,续训时能保持训练的连贯性。best.pt是验证集表现最优的模型快照,用它续训相当于从一个最优状态重新开始,会丢失之前的训练进度(比如学习率调度、优化器状态),一般只用于推理或后续微调,不适合连续训练。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 14:55:04