当前位置:   article > 正文

【深度学习】YOLOv9继续训练——断点训练方法_yolo断点训练

yolo断点训练

YOLOv9继续训练主要分为两个情况:

其一、训练过程中意外中断,未完成训练预期的epoch数量;

其二、训练完了,但是未收敛,在这个基础上,还想用这个权重、学习率等参数继续训练多一些轮次

一、训练过程中意外中断

将train.py文件中的442行,即patser中第9个参数resume,将其设置为default=True即可


 

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

注意点:如果你想从上一次训练结果中回复训练,那么首先保证你的训练结果(一般都存放在/runs/train目录下)在保存目录中代号为最大的

断续前训练的设置参数、超参数和每轮训练效果在/runs/train/exp3下的opt.yaml、hyp.yaml、results.csv中有记录

设置好resume参数后,python train.py重新启动训练程序将从上次断续点处开始训练:

二、训练完后,继续增加轮次训练

训练完原有epoch后,但还继续训练,共分为3大步进行程序更改。此处以原本训练epoch为5,已经训练完了,但是没有收敛,继续增加5个epoch训练,总共训练10epoch为例子。

备注:不是直接在train.py设置weight参数为训练好的权重(last.pt),然后设置epoch为10,这样不行,因为学习率等超参数启动时还是按照默认的。

第一步:

将train.py文件中,patser中第5个参数从5改为10,第9个参数resume设置为default=True

原本训练完的参数设置图:

继续训练的参数设置图:

第二步:

对utils/torch_utils.py中大致458行smart_resume()函数进行更改:

添加一行代码:ckpt[‘epoch’] =5  #原本训练完的epoch
修改代码:start_epoch = ckpt[‘epoch’](后面不加1)
注意:这两处修改是为了断点训练,如果不再需要断点训练,请将这两处修改都还原。

第三步:

在trainds.py文件中,大概487行如图添加一行代码:

init_epochs = opt.epochs(记录最开始由epochs参数设定的数值10,因为replace这行代码,将epochs替换成了原始的epochs数值5)


修改代码:如图进行添加,reinstate恢复成设定的epochs,

opt.cfg, opt.weights, opt.resume,opt.epochs = '', str(last), True,init_epochs

 完成以上3步,可以进行继续训练了,python trainds.py:

原本训练完的显示记录:

继续训练的显示记录:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/312832
推荐阅读
相关标签
  

闽ICP备14008679号