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

五、最后的一点话

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

  • 8
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLOv8是一种目标检测算法,它是YOLO(You Only Look Once)系列的最新版本。下面是从头开始训练YOLOv8的步骤: 1. 数据准备:首先,你需要准备一个包含标注信息的训练集。标注信息通常包括目标的边界框和类别标签。确保你的数据集具有足够的样本和多样性,以便模型能够学习到各种不同的目标。 2. 模型配置:YOLOv8使用Darknet架构作为基础网络。你需要下载Darknet的代码,并根据自己的需求进行配置。在配置文件中,你可以设置网络的层数、输入图像的大小、类别数量等参数。 3. 权重初始化:在开始训练之前,你需要下载一个预训练的权重文件,可以使用在大规模数据集上预训练的权重,如COCO数据集。这些预训练的权重可以帮助模型更快地收敛。 4. 训练过程:使用准备好的数据集和配置好的模型,开始进行训练。在训练过程中,模型会根据输入图像和标注信息计算损失,并通过反向传播来更新网络参数。你可以使用不同的优化器和学习率策略来优化模型。 5. 调参和验证:训练过程中,你可以根据验证集的表现来调整模型的超参数,如学习率、批大小等。通过验证集的评估指标,如精度、召回率和平均精度均值(mAP),来评估模型的性能。 6. 模型评估和测试:在训练完成后,你可以使用测试集来评估模型的性能。通过计算预测结果与真实标注之间的差异,可以得到模型的准确率和召回率等指标。 7. 部署和应用:一旦模型训练完成并通过测试,你可以将其部署到实际应用中。通过使用训练好的模型,你可以对新的图像进行目标检测,并获得目标的位置和类别信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值