文章目录
- 情况一:意外训练中断(程序未训练完成,想完成目标训练轮数)
- 情况二:自动训练完成(程序已完成训练,想增加训练轮数)
情况一:意外训练中断(程序未训练完成,想完成目标训练轮数)
如果上次的指定训练轮次(epochs)没跑完就意外中断了,直接在在命令行中加上 --resume + 上一次训练中last.pt的路径
例如:
python train.py --resume runs/exp2/weights/last.pt
也可以只写–resume后面不跟路径参数,程序会自动找到runs目录下所有exp/weights目录下的文件修改时间最晚的last.pt
python train.py --resume
而其他所有参数(–epochs、–batch-size等等)都会自动读取跟上次一样的(保存在runs/exp2/opt.yaml中),所以不用指定,就算指定了也没用。
情况二:自动训练完成(程序已完成训练,想增加训练轮数)
如果是上次的指定训练轮次(epochs)跑完了还想要继续训练
- 先打开runs/exp2/opt.yaml,把epochs改成总轮次数(上次跑完的epochs+想继续跑的epochs),比如上次跑完了200epochs,想再加100epochs,那就改成300
- 在yolov5\utils下的torch_utils.py中将start_epoch改为上次训练的轮次+1(可以在exp中的result表里看见上次最后训练的轮次,此处轮次指的是标号,自0开始的第一列中最后一行数字)
然后像情况1一样加上参数–resume即可
python train.py --resume runs/exp2/weights/last.pt
如果不在命令行中使用–resume参数也可以修改train.py文件中的参数。
在train.py中将resume参数的default设定为True即可。
注意:完全结束过所有epoch后再这样续上训练,前几轮会比较低,但它长得很快不用担心,很快就可以赶回上次训练结束时的程度。以及,别忘了把torch_utils里的那个改回去,不然每次继续训练都从那里开始的!