如何在自定义数据集训练YOLOv8后保存模型以便后续续训?
YOLOv8 模型保存与续训正确方法
YOLOv8 有自己封装的模型管理逻辑,不用直接调用 torch.save,以下是正确的操作方式:
1. 训练时自动保存
默认情况下,YOLOv8 训练过程中会自动在 runs/detect/train/weights 目录下生成两个权重文件:
last.pt:保存最新一轮训练的权重,用于继续训练best.pt:保存验证集性能最优的权重,用于最终推理
你第一次训练1轮后,这个目录里已经生成last.pt,直接用它续训即可。
2. 继续训练的代码示例
from ultralytics import YOLO # 加载训练到一半的last.pt权重 model = YOLO("runs/detect/train/weights/last.pt") # 继续训练,epochs设为总轮次(比如之前训了1轮,现在要再训5轮就设为6) model.train(data="/image_datasets/Website_Screenshots.v1-raw.yolov8/data.yaml", epochs=6)
3. 手动保存与加载
如果需要手动指定路径保存模型,用YOLOv8自带的save()方法:
# 训练后手动保存 model.save("custom_yolov8_model.pt") # 后续加载时还是用YOLO类 model = YOLO("custom_yolov8_model.pt") # 继续训练或推理都可以 model.train(...)
为什么之前的方法无效?
YOLOv8的YOLO类是Ultralytics封装的高阶模型,包含了训练配置、数据信息等额外内容,直接用torch.save保存整个模型或state_dict会丢失这些关键配置,导致加载后无法正常训练或推理。
内容的提问来源于stack exchange,提问作者Kalleni
相关产品推荐
相关产品推荐

