训练 YOLO 模型(v5/v8/v11)常需数百 epoch,耗时数天。断电、SSH 断开、显存溢出、进程误杀等意外极易导致训练中断,从头开始会浪费大量算力与时间。
断点续训(Resume Training)可从最近保存的检查点(checkpoint) 恢复训练,完整还原模型权重、优化器状态、学习率调度与训练进度
训练中断后,在对应的runs中对应训练的结果中包含两个关键文件:
last.pt 绝非仅模型权重,而是全训练状态快照:
- 模型网络参数(权重 + 偏置)
- 优化器状态(SGD/Adam 动量、梯度缓存)
- 学习率调度器状态(当前步数、余弦退火参数)
- 当前 epoch 计数与剩余轮数
- 数据加载器随机种子(保证数据增强一致性)
成功续训日志会显示:
from epoch 217:接续中断前轮数,成功
from epoch 0:用了 best.pt 或路径错误,从头训练
必守前提(否则续训失败)
配置完全一致:data.yaml(类别数)、模型 yaml(网络结构)、batch size、device、超参(lr0、momentum)不可修改
last.pt 完整 :文件未损坏、路径正确、由同一代码版本生成
不混用 best.pt:best.pt 不含优化器状态,只能用于推理
在对应的.yaml文件中,只需要将resume修改为True,然后训练导入的预训练权重用训练一半的last.pt。

from ultralytics import YOLO
# 加载预训练模型
model = YOLO("./runs/detect/exp2/last.pt") # n/s/m/l/x 任选
# 开始训练
model.train(
data="your_data.yaml", # 你的数据集配置 .\ultralytics\cfg\***.yaml
)