yolov5 - 5.0
在已经训练好的模型(训练了300轮)的基础上继续训练。
使用参数--resume
python train.py --epochs 400 --resume runs/train/exp16/weights/last.pt
想要再训练100轮 以上参数--epoches无论修改成100 还是400都会错
AssertionError: runs/xx/last.pt training to 300 epochs is finished, nothing to resume.
在网上找了很多,很多没有用。从头重新训练实在麻烦,我是在云端训练的,租服务器费钱。。。
最后解决方法:
1.首先将train.py中--epochs参数的default修改 改成你最终要的训练次数。比如我是从300轮继续训练的,要再训练100轮,那么就设置为400.
2.在train.py中找到 #Epochs (可以ctrl+f 快捷搜索)如下图,添加两行代码:
ckpt['epoch'] = 300 #继续训练 300为最后一次训练代数+1
start_epoch = ckpt['epoch']
并注释掉代码。最后修改如图就行。
start_epoch = ckpt['epoch'] + 1
3.最后在train.py文件中找到 #Resume 代码块(如下图)
在第一行添加一行代码:
init_epochs = opt.epochs #修改断点加这一行 记录最开始由epochs参数设定的数值400,因为replace这行代码,将epochs替换成了原始的epochs数值300
然后将如图513行代码注释掉,在下一行加代码:
opt.cfg, opt.weights, opt.resume, opt.epochs = '', ckpt , True , init_epochs # # reinstate设置断点则添加 opt.epochs init_epochs
至此,代码修改完毕。
运行设置:(指定要接着训练的模型)
python train.py --resume runs/xx/last.pt
则显示结果从300(包含)开始训练到399,追加训练100次。