在使用服务器运行YOLO模型的过程中,时常会因为各种原因而中断,如断网、关机等情况,YOLO中给提供了一个参数 resume:意为断点训练,即可以接着之前的训练来进行训练。

具体做法

修改 resume 参数:

parser.add_argument('--resume', nargs='?', const=True, default=True, help='resume most recent training')

修改权重文件,原本的权重文件为预训练权重,如今要使用其最后一次的训练权重,如下:

parser.add_argument('--weights', type=str, default='/home/ubuntu/conda/yolov7/runs/train/exp8/weights/last.pt', help='initial weights path')

YOLO断点训练_权重


此时运行报错:

File "/home/ubuntu/anaconda3/envs/python/lib/python3.8/site-packages/torch/serialization.py", line 1033, in _legacy_load
    magic_number = pickle_module.load(f, **pickle_load_args)
_pickle.UnpicklingError: STACK_GLOBAL requires str

这是数据集错误,需要将原本的cache缓存文件删除:

YOLO断点训练_权重_02

随后运行train.py就OK了

YOLO断点训练_权重_03


至于YOLOv5的做法也如法炮制即可。