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

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:

原本训练完的显示记录:

继续训练的显示记录:

相关推荐

  1. [深度学习]yolox训练参数含义

    2024-03-14 06:16:06       20 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-14 06:16:06       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-14 06:16:06       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-14 06:16:06       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-14 06:16:06       18 阅读

热门阅读

  1. samba服务器的配置

    2024-03-14 06:16:06       17 阅读
  2. HDOJ 2036

    2024-03-14 06:16:06       19 阅读
  3. Haproxy

    Haproxy

    2024-03-14 06:16:06      21 阅读
  4. es6面试题

    2024-03-14 06:16:06       19 阅读
  5. 控件交互与视图交互的区别

    2024-03-14 06:16:06       20 阅读
  6. js下载svg文件和预览svg文件

    2024-03-14 06:16:06       22 阅读
  7. STM32学习和实践笔记(2): STM32的学习方法

    2024-03-14 06:16:06       15 阅读