背景:
由于1)训练的时间比较长;2)设备性能原因(如内存报错);3)训练效果不佳,想继续训练;4)不想重头开始训练。所以继续训练有时需要的。然而本人在阅读网上的断点后继续训练的教程,发现存在不少误区。为此,本文将列出其他文章常见的误区,以及优化建议。
如有错误,请指正!谢谢!
原文地址:https://blog.csdn.net/u014613075/article/details/128883660
作者:marsloving
误区:重新训练是否需要配置OTP与HYP?
答案是:无需的,因为设置了resume 为True的时候,train的原配置会被【原训练weight 】权重文件路径下的原OTP 与 原HPY 代替,所以无须再修改train 对应的配置。
但如果需要修改配置,也可以以下方法进行修改:


断点后,继续训练:
有三情况,可以需要继续训练:
手动或意外停止了训练;
2)之前设置的已经训练完成,但依然想继续训练。
3)需要修改配置文件,再训练。
注意1:
根据本修改会导致:接下来的训练,采用train.py 文件当前的配置,而非之前训练的配置。(常见规避风险的方法为:重新训练前,先保存之前的权重文件。)
注意2:
改变迭代数量,如果学习曲线不是固定的,会有影响,因为动态学习曲线是根据迭代的曲线变化的。
为了适用这三种情况,都有可能发生。
本文建议修改如下(优点在于:当之后的续训,只需要将resume 的参数设置为 Ture):
在train.py 文件,resume 增加代码,复制当前train.py 的配置(即以当前文件为准,而非此前的配置)
1opt_resume = deepcopy(opt) #完成训练时,还可以继续训练

在train.py 的# Epochs 下,修改代码,判断是否resume模式,如果是,则提示用户输入:从第几个训练开始,避免设置的时候混乱。
1
2
3
4
5
6
7try: if opt_resume.resume: #如果有重新开始的参数 a = int(input("请输入上次重新训练数:")) start_epoch = a #根据实际修改 epochs = opt_resume.epochs # 针对已经完成训练,还想继续训练,总次数(在本文件参数eporchs设置) 需要比之前训练的次数要大 except: start_epoch = ckpt['epoch'] + 1 #原代码

最后
以上就是风趣星星最近收集整理的关于纠正yoloV7 断点后训练的错误说明与优化误区:重新训练是否需要配置OTP与HYP?的全部内容,更多相关纠正yoloV7内容请搜索靠谱客的其他文章。
发表评论 取消回复