【深度学习】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:

原本训练完的显示记录:

继续训练的显示记录:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/537475.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

闯关升级游戏特点,闯关小程序游戏开发

闯关升级类游戏一直以来都备受玩家青睐,其独特的游戏性和吸引力让人们乐此不疲。这类游戏以挑战性关卡和角色成长为核心,让玩家在不断的冒险中获得成就感与乐趣。让我们一起深入探讨这类游戏的特点,以及为何它们如此受欢迎。 挑战性关卡设计…

从零开始利用MATLAB进行FPGA设计(一):建立脉冲检测模型的Simulink模型2

目录 1.模块的总体结构 1.1从工作空间导入输入信号 1.2FIR滤波器 2.Subsystem 3.MATLAB Function 文章灵感来源于MATLAB官方免费教程:HDL Coder Self-Guided Tutorial 考虑到MATLAB官网的英文看着慢,再加上视频讲解老印浓浓的咖喱味,我…

通过日志恢复sql server数据库

在SQL Server中,通过日志恢复数据库是一个精细的过程,主要用于在数据库出现错误、数据丢失或需要回滚到特定时间点时恢复数据。以下是一般步骤概述: 设置恢复模式: 首先,数据库必须配置为“完整恢复模式”或“大容量…

用户数据的FLASH存储与应用(FPGA架构)

该系列为神经网络硬件加速器应用中涉及的模块接口部分,随手记录,以免时间久了遗忘。 一 背景 我们知道,在FPGA做神经网络应用加速时,涉及到权重参数的存储和加载。通常在推理过程中,会将权重参数存储在外部DDR或片上S…

【数据结构】双向链表及LRU缓存的实现

目录 前言 1. 在原有的自定义链表类 Linked 的基础上,添加新的 “节点添加”方法 addNode(Node node) 测试用例 测试结果 2. 在自定义链表类的基础上,使用双重循环“强力” 判断两个节点是否发生相交 测试用例 测试结果 3. 在自定义链表类的基础上…

DBeaver 生成的DDL没有字段注释

场景,需要拷贝几个表。但是因为一些原因无法使用navicat DBeaver生成的DDL语句又没有字段注释 如图: 可以通过以下SQL解决 select * from user_col_comments where table_name 表名 AND owner库名 效果如下: select concat(comment on …

程序调试工具gdb

1.由于在编写程序的过程中,通常会触发计算机无法识别的逻辑错误,导致程序运行的最终结果不尽人意。 (1)在【Linux】系统下利用【gdb】调试工具进行段错误排查: 步骤:1.根据给定链接设置系统允许生成core文件…

Prompt提示工程上手指南:基础原理及实践(二)-Prompt主流策略

前言 上篇文章将Prompt提示工程大体概念和具体工作流程阐述清楚了,我们知道Prompt工程是指人们向生成性人工智能(AI)服务输入提示以生成文本或图像的过程中,对这些提示进行精炼的过程。生成人工智能是一个根据人类和机器产生的数…

在线编辑字体工具,支持对字体查看编码以及编辑

公司一个沉寂多年的项目需要进行二开,前面的开发的同学已经离开,对于项目情况了解较少,开发的时候发现缺失很多小图标,但是对原来有那些图标也不太了解 目标 1、知晓字体包里的旧的图标是什么样子的?2、在旧字体包中导…

科技成果鉴定测试如何进行?第三方检测机构进行鉴定测试的好处

科技成果鉴定测试,作为科技领域中一项重要的质量检验手段,具有广泛的应用范围。旨在为科技成果的研发者和使用者提供客观、科学、权威的鉴定结果,从而评估科技成果的技术水平和市场竞争力。   科技成果鉴定测试是对科技成果进行系统、全面的…

PCL 点云开源库

PCL 点云开源库 The Point Cloud Library (PCL) is a standalone, large scale, open project for 2D/3D image and point cloud processing. PCL is released under the terms of the BSD license, and thus free for commercial and research use. 点云库 (PCL&…

08.JavaScript中的编程思想,构造函数和原型对象

一、编程思想 学习 JavaScript 中基于原型的面向对象编程序的语法实现,理解面向对象编程的特征。 1.面向过程 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候再一个一个的依次 调用就可以了。 举个…