yolov9从头开始训练

yolov9从头开始训练

一、准备数据集

数据集相关文件存放布局如下

yolov9-datasets
├── train
│ ├── images
│ │ ├── image.jpg
│ │ ├── ······
│ └── labels
│ ├── image.txt
│ ├── ······
├── valid
│ ├── images
│ │ ├── image.jpg
│ │ ├── ······
│ └── labels
│ ├── image.txt
│ ├── ······
└── test
├── images
│ ├── image.jpg
│ ├── ······
└── labels
├── image.txt
├── ······

我们通常将数据集划分为训练集(train set)、验证集(validation set)和测试集(test set),如上图所示,但不一定三个集合都需要准备,根据你得需求来。

训练集

用于训练模型的数据集。模型通过训练集中的样本进行学习和参数调整,以优化其性能,训练集是必需的。

验证集

用于选择模型的超参数和进行模型选择的数据集。超参数是指在训练过程中无法从数据中学习的参数,例如学习率、正则化项的权重等,通过在验证集上评估不同超参数设置和模型架构的性能,可以选择表现最好的模型并进行模型选择。

因此,如果你是做实际应用,那么这个集合也必须加上,否则会造成过拟合。

测试集

用于最终评估模型性能的数据集。测试集是模型最后才能接触到的数据,用于模拟模型在实际应用中的性能。

在模型选择和超参数调优完成后,使用测试集对模型进行最终评估,以了解模型的泛化能力和性能。这个集合并不是必须的,它只是最终评估模型的泛化性能用,并不像前两个数据集合那样会对训练过程产生影响。

所以,如果不需要将泛化性能以具体数据显现出来,那么这部分可以删除。

二、环境准备

项目地址:WongKinYiu/yolov9: Implementation of paper - YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information (github.com)

首先将yolov9的整个项目文件夹下载下来,放在你喜欢的地方,然后使用命令行进入项目的目录内,接着进行下面的步骤:

(1)虚拟环境

使用依次下列命令创建一个虚拟环境并激活,请确保你的系统已安装好anaconda,可以使用conda命令

conda create -n yolov9 python=3.11 -y
conda activate yolov9
(2)GPU环境

首先使用【nvidia-smi】命令查看GPU的CUDA版本,如下图所示

在这里插入图片描述
Pytorch官网:Start Locally | PyTorch

打开pytorch官网,找到pytorch安装命令,其中CUDA版本(一般)来说需要小于等于上图中显示的版本,二般情况我不管,如下图所示:

在这里插入图片描述

安装完成后,检验环境是否可用,依次运行以下命令

python
import torch
torch.cuda.is_available()

如果命令行返回了True则表示可用,否则不可用,不可用则换pytorch版本,现在我默认可用了,如下所示,返回了True:

(yolov9) root@7l13t4gko7nqs-0:/17106# python
Python 3.11.8 (main, Feb 26 2024, 21:39:34) [GCC 11.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> torch.cuda.is_available()
True
(3)项目环境

进入yolov9主目录后,运行以下代码,完成最后一个环境的安装:

pip install -r requirements.txt

三、配置参数文件

(1)数据集配置文件

首先在【yolov9-main/data】目录下,创建一个后缀名为yaml的文件,文件名取决于你,比如我使用的是YOLOv9-GELAN模型,因此我取名为【YOLOv9-GELAN.yaml】。

该文件内容如下,第1,2,3行分别是训练集,验证集和测试集的图片所在文件夹的路径,names下面是类别索引和类别名的映射。需要注意的是此处类别和序号的对应要与你标注数据集时,类别的顺序一致,否则将引发错误。

train: /17106/Pengcaiping/datasets/recombination/train/images
val: /17106/Pengcaiping/datasets/recombination/valid/images
#test:
names:
0: paper
1: plastic
2: metal
3: clothing
4: other

(2)参数配置文件

首先在【yolov9-main/models/detect】目录下(假设你也是做目标检测),打开【gelan.yaml】进行编辑,该文件内容如下:

# YOLOv9# parameters
nc: 5  # number of classes
depth_multiple: 1.0  # model depth multiple
width_multiple: 1.0  # layer channel multiple
#activation: nn.LeakyReLU(0.1)
#activation: nn.ReLU()# anchors
anchors: 3# gelan backbone
backbone:
省略一千字

仅修改类别数量,即【nc】后面的数字,改成你的类别数量,比如我有5个类别,所以填了5。

(3)训练文件修改

打开主目录下【train.py】文件,调到下图所示位置,然后进行参数修改:

在这里插入图片描述

①填我们之前配置好的参数文件的路径

②填我们之前配置好的数据集配置文件的路径

③由于yolov9刚发布这里需要修改为【data/hyps/hyp.scratch-high.yaml】才能运行,否则会报错,如果后续修复了,读者可提醒我修改此处。

④训练轮次,根据你的硬件性能,数据集大小等来决定要设置为多少,一般来说不要太多,因为太多可能会过拟合。

⑤batch-size是一次同时处理的样本数量,如果你GPU性能可以上天,显存可以下地那么可以调大一下,目前我设置为64,输入单样本大小为 480 × 640 480\times640 480×640,消耗显存45G;如果显存小就调小点。

四、训练

在配置好的环境中,运行以下代码开始从0训练

python train.py

五、最后的一点话

本数量,如果你GPU性能可以上天,显存可以下地那么可以调大一下,目前我设置为64,输入单样本大小为 480 × 640 480\times640 480×640,消耗显存45G;如果显存小就调小点。

四、训练

在配置好的环境中,运行以下代码开始从0训练

python train.py

五、最后的一点话

时过境迁,当读者你看到此教程时,可能距离作者收笔此文相去已久,若未能解决你的问题,作者深感抱歉。若读者发现某些地方已经不再适合当下,可以私聊或者评论区告知,我会及时进行修改!

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

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

相关文章

吴恩达deeplearning.ai:模型选择交叉验证测试集的训练方法

以下内容有任何不理解可以翻看我之前的博客哦:吴恩达deeplearning.ai专栏 在上一节中,我们了解了如何利用测试集来评估模型性能。今天我们来进一步完善这个想法,让你使用该技术自动选择一个更好的模型。 文章目录 模型选择交叉验证 Cross Va…

SpringBoot 框架(上)

SpringBoot SpringBoot概述依赖管理自动配置SpringBoot 注解使用ConfigurationImport(value {Cat.class,Dog.class})ImportResource(locations "classpath:beans.xml") yaml 标记语言概述基本语法数据类型字面量对象数组 使用细节 Rest 风格请求处理概述注意事项 接…

vue2 开发记录

el-select 如何修改选择项的样式/el-select-dropdown__item 文字上下显示 测试代码 <div stylemargin-left: 100px><!-- 测试代码--><el-select filterablesizemini><div classxxx-el-select><el-optionv-foritem in [{key:1,des:2,…

AVT Prosilica GC Vision Cameras 相机视觉说明使用安装。具体详情内容可参看PDF目录内容。

AVT Prosilica GC Vision Cameras 相机视觉说明使用安装。具体详情内容可参看PDF目录内容。

TikTok矩阵系统功能怎么写?常用源代码是什么?

TikTok矩阵系统的功能是如何编写的?又有哪些常用的源代码支撑这些功能呢?本文将通过五段源代码的分享&#xff0c;为大家揭开TikTok矩阵系统的神秘面纱。 一、TikTok矩阵系统的核心功能 TikTok的矩阵系统涵盖了多个核心功能&#xff0c;包括但不限于用户管理、内容分发、推…

【接口测试】HTTP协议介绍

目录 介绍 HTTP状态码 HTTP报文 请求方法 HTTP版本 HTTP标头 通用标头 请求标头 响应标头 get 编码 post 编码 RESTful风格 HTTPS 绝大多数的Web服务接口都是基于HTTP协议进行通信的&#xff0c;包括RESTful API和SOAP等。了解HTTP协议可以帮助测试人员理解接口的…

回溯算法题单✨✨✨

力扣&#xff1a; 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 216. 组合总和 III - 力扣&#xff08;LeetCode&#xff09; LCR 080. 组合 - 力扣&#xff08;LeetCode&#xff09; LCR 082. 组合总和 II - 力扣&#xff08;LeetCode&#xff09; LCR 083. 全排列…

【多线程】CAS详解

目录 &#x1f334;什么是 CAS&#x1f338;CAS 伪代码 &#x1f38d;CAS 是怎么实现的&#x1f340;CAS 有哪些应⽤&#x1f338;实现原子类&#x1f338;实现自旋锁 &#x1f333;CAS 的 ABA 问题&#x1f338;**什么是 ABA 问题**&#xff1f;&#x1f338;ABA 问题引来的 B…

【C++】核心编程--函数高级

文章目录 1. 函数的默认参数2. 函数占位参数3. 函数重载4. 注意事项 1. 函数的默认参数 在C中&#xff0c;函数的形参列表中的形参是可以有默认值的 //语法&#xff1a; 返回值类型 函数名 (参数 默认值){} #include<iostream> using namespace std; //函数默认参数 //如…

异常值检测-3σ法提交 代码注释

背景信息里面都给了相应的答案&#xff0c;但我们可以多了解一下代码的含义&#xff0c;而不是简单的复制粘贴 import pandas as pd import matplotlib.pyplot as plt from scipy import stats import numpy as npdata pd.read_csv("src/death.csv", index_colUnna…

ASPICE实操中的那点事儿-如何避免重复性测试

写在前面 ASPICE理解起来容易&#xff0c;毕竟是有条有理的。但实操起来&#xff0c;尤其是把ASPICE各过程域做全的时候&#xff0c;会遇到各种各样的问题&#xff08;不是技术问题有多难&#xff0c;而是该如何做选择&#xff0c;如何既能符合ASPICE要求&#xff0c;保证过程质…

智慧城市建设的新里程碑:公共服务电子支付大屏

随着科技的飞速发展&#xff0c;我们的生活正在经历前所未有的变革。电子支付的出现&#xff0c;无疑是这场变革中的一大亮点&#xff0c;它不仅改变了我们日常的支付方式&#xff0c;更成为智慧城市建设的重要一环&#xff0c;为公众提供了更加便捷、高效的服务体验。 在以前&…

python SHP2COCO

1. 将shp的标签数据转成coco # -*- coding: utf-8 -*- import os, json import cv2 from osgeo import gdal import numpy as np from osgeo import ogr, gdal, osr from shapely.geometry import box, shape from shapely.geometry.polygon import Polygon import collection…

Flutter 的状态管理

状态提升&#xff08;Lifting-state-up&#xff09; 把子组件的状态&#xff0c;提升到上级组件中&#xff0c;从而实现在多个组件之间共享和同步数据的效果 以 flutter counter demo&#xff0c;那个按按钮1 的来说&#xff0c;现在的 count 是几&#xff0c;不是存在页面显…

政府采购标书制作的要点解析

导语&#xff1a;政府采购是政府为满足公共利益&#xff0c;按照法定程序和标准&#xff0c;通过招标、竞争性谈判等方式&#xff0c;购买商品、工程和服务的行为。标书作为政府采购活动中的重要文件&#xff0c;其制作质量直接影响到项目的顺利进行。本文将围绕政府采购标书制…

二路归并排序的算法设计和复杂度分析and周记

数据结构实验报告 实验目的: 通过本次实验&#xff0c;了解算法复杂度的分析方法&#xff0c;掌握递归算法时间复杂度的递推计算过程。 实验内容&#xff1a; 二路归并排序的算法设计和复杂度分析 实验过程&#xff1a; 1.算法设计 第一步&#xff0c;首先要将数组进行…

【网站项目】314学生二手书籍交易平台

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

关于游戏公司组织架构的小讨论

过完年刚刚上班没几天&#xff0c;就有一件比较搞笑的事情&#xff0c;可以和大家分享一下。   某一天我们在公司的会议室开会&#xff0c;发现有非常多蚊子&#xff0c;于是找行政问能不能找专业人士来灭蚊。行政的答复是&#xff0c;专业灭蚊是有固定时间的&#xff0c;还要…

JVM相关面试题(2024大厂高频面试题系列)

一、JVM的组成 1、JVM由哪些部分组成&#xff0c;运行流程是什么&#xff1f; 回答&#xff1a;在JVM中共有四大部分&#xff0c;分别是Class Loader&#xff08;类加载器&#xff09;、Runtime Data Area&#xff08;运行时数据区&#xff0c;内存分区&#xff09;、Execut…

MyBatis的补充用法

说明&#xff1a;之前介绍过MyBatis的用法&#xff0c;像 用注解和Mapper.xml操作数据库、在Mapper.xml里写动态SQL。最近在一次用MyBatis批量更新数据库对象的场景中&#xff0c;意识到对MyBatis的一些标签用法不太熟悉&#xff0c;所以去 MyBatis官网 看了一些文档&#xff0…