3D视觉工坊 | 手把手教你在自己的数据集上训练YOLOv9!

本文来源公众号“3D视觉工坊”,仅用于学术分享,侵权删,干货满满。

原文链接:手把手教你在自己的数据集上训练YOLOv9!

在前面的两篇文章和江大白 | 目标检测YOLOv9算法,重磅开源!(附论文及源码)集智书童 | YOLOv9开源 | 架构图&模块改进&正负样本匹配&损失函数解读,5分钟即可理解YOLOv9,建议收藏!中,我们介绍了YOLOv9的理论部分,接下来我们看一下YOLOv9的实践操作吧 !

0. 写在前面

今天笔者为大家分享国外的James Gallagher和Piotr Skalski编写的YOLOv9使用教程!原博客链接为https://blog.roboflow.com/train-yolov9-model

YOLOv9开源了一种新的CV模型架构,比现有流行的YOLO模型(YOLOv8、YOLOv7和YOLOv5)在MS COCO数据集上取得了更高的mAP。

本指南展示了如何在自定义数据集上训练YOLOv9模型,将通过一个训练视觉模型的例子来识别一个球场上的足球运动员。有了这一点,可以用这个指南使用你想要的任何数据集。

话不多说,让我们开始!

1. 什么是YOLOv9?

YOLOv9是由Chien-Yao Wang, I-Hau Yeh, and Hong-Yuan Mark Liao开发的计算机视觉模型。Hong-Yuan Mark Liao和Chien-Yao Wang还对YOLOv4、YOLOR和YOLOv7等流行的模型架构进行了研究。YOLOv9引入了两种新的架构:YOLOv9和GELAN,这两种架构都可以从论文发布的YOLOv9 Python库中使用。

使用YOLOv9模型,可以训练出一个目标检测模型。此时不支持分割、分类等任务类型。YOLOv9有四种模型,按参数个数排序是:v9-S、v9-M、v9-C、v9-E。目前v9 - S和v9 - M的权重暂不可用。其中最小的模型在MS COCO数据集的验证集上达到了46.8 %的AP,而最大的模型达到了55.6 %。这为目标检测性能提供了一个新的先进水平。下面的图表展示了来自YOLOv9研究团队的研究结果。

YOLOv9在撰写本指南时没有官方许可证。截至2023年2月22日,一位主要研究人员指出:"我认为应该是GPL3,我会检查并更新许可文件。"。这表明许可证将很快确定。

2. 如何安装YOLOv9

YOLOv9被打包为一系列脚本,您可以使用这些脚本进行工作。在撰写本指南时,没有官方的Python包或包装器可供您与模型进行交互。

要使用YOLOv9,您需要下载项目存储库。然后,您可以运行训练作业或从现有的COCO检查点进行推理。

本教程假定您正在使用Google Colab。如果您在笔记本环境之外的本地机器上工作,请根据需要调整命令。

YOLOv9中存在一个错误,阻止您对图像进行推理,但Roboflow团队正在维护一个非官方的分支,其中包含一个补丁,直到修复发布。要从我们的补丁分支安装YOLOv9,请运行以下命令:

git clone https://github.com/SkalskiP/yolov9.git

cd yolov9

pip3 install -r requirements.txt -q

让我们设置一个HOME目录来工作:

import os
#获取当前路径
HOME = os.getcwd()

print(HOME)

接下来,需要下载模型权重。目前只有v9 - C和v9 - E权重可用。可以使用以下命令进行下载:

!mkdir -p {HOME}/weights

!wget -P {HOME}/weights -q https://github.com/WongKinYiu/yolov9/releases/download/v0.1/yolov9-c.pt

!wget -P {HOME}/weights -q https://github.com/WongKinYiu/yolov9/releases/download/v0.1/yolov9-e.pt

!wget -P {HOME}/weights -q https://github.com/WongKinYiu/yolov9/releases/download/v0.1/gelan-c.pt

!wget -P {HOME}/weights -q https://github.com/WongKinYiu/yolov9/releases/download/v0.1/gelan-e.pt

现在可以使用项目库中的脚本在YOLOv9模型上运行推理和训练。

3.在YOLOv9模型上推理

在示例图像上使用v9 - C COCO检查点进行推理。创建一个新的数据目录,并将示例图像下载到您的笔记本中。你可以用我们的狗图片作为例子,也可以用你想要的任何其他图片。

!mkdir -p {HOME}/data

!wget -P {HOME}/data -q https://media.roboflow.com/notebooks/examples/dog.jpeg

SOURCE_IMAGE_PATH = f"{HOME}/dog.jpeg"

我们现在可以在我们的图像上进行推理:

!python detect.py --weights {HOME}/weights/gelan-c.pt --conf 0.1 --source {HOME}/data/dog.jpeg --device 0

Image(filename=f"{HOME}/yolov9/runs/detect/exp/dog.jpeg", width=600)

我们的模型能够成功地识别出图像中的人、狗和汽车。有鉴于此,该模型错误地将背带识别为手提包,并且未能检测到背包。

让我们试试参数最多的v9 - E模型

!python detect.py --weights {HOME}/weights/yolov9-e.pt --conf 0.1 --source {HOME}/data/dog.jpeg --device 0

Image(filename=f"{HOME}/yolov9/runs/detect/exp2/dog.jpeg", width=600)

该模型能够成功识别人、狗、汽车和背包

4. 如何训练YOLOv9模型

您可以使用YOLOv9项目目录中的train.py文件来训练YOLOv9模型。

第1步:下载数据集

要开始训练模型,您将需要一个数据集。对于本指南,我们将使用一个关于足球运动员的数据集。生成的模型将能够在场地上识别足球运动员。

如果您没有数据集,请查看Roboflow Universe(Roboflow Universe: Open Source Computer Vision Community),这是一个共享了超过200,000个计算机视觉数据集的社区。您可以找到涵盖从书脊到足球运动员再到太阳能电池板的数据集。

运行以下代码来下载我们在本指南中使用的数据集:

%cd {HOME}/yolov9

roboflow.login()

rf = roboflow.Roboflow()

project = rf.workspace("roboflow-jvuqo").project("football-players-detection-3zvbc")

dataset = project.version(1).download("yolov7")

当您运行此代码时,将会要求您通过Roboflow进行身份验证。请跟随在您的终端中出现的链接进行验证。如果您没有账户,将被带到一个页面,您可以在该页面创建一个账户。然后,再次点击链接以使用Python包进行身份验证。

此代码以YOLOv7格式下载数据集,该格式与YOLOv9模型兼容。

您可以使用任何按照YOLOv7格式格式化的数据集来进行此操作。 

第2步:使用YOLOv9 Python脚本训练模型

让我们为我们的数据集训练一个模型,训练20个epochs。我们将使用GELAN-C架构进行此操作,该架构是YOLOv9 GitHub仓库发布的两种架构之一。GELAN-C的训练速度快。GELAN-C的推理时间也很快。

您可以使用以下代码进行此操作:

%cd {HOME}/yolov9

!python train.py \

--batch 16 --epochs 20 --img 640 --device 0 --min-items 0 --close-mosaic 15 \

--data {dataset.location}/data.yaml \

--weights {HOME}/weights/gelan-c.pt \

--cfg models/detect/gelan-c.yaml \

--hyp hyp.scratch-high.yaml

你的模型将开始训练。模型训练时,将看到每个epoch的训练指标。一旦模型完成训练,就可以使用YOLOv9生成的图来评估训练结果。

运行下面的代码来查看你的训练图:

Image(filename=f"{HOME}/yolov9/runs/train/exp/results.png", width=1000)

运行下面的代码来查看你的混淆矩阵:

运行以下代码,查看您的模型在验证集中的一批图像上的结果:

Image(filename=f"{HOME}/yolov9/runs/train/exp/val_batch0_pred.jpg",

width=1000)

第3步:在自定义模型上运行推理

既然我们有了一个训练好的模型,我们就可以进行推理。为此,我们可以使用YOLOv9库中的detection.py文件。

运行以下代码对验证集中的所有图像进行推理:

!python detect.py \

--img 1280 --conf 0.1 --device 0 \

--weights {HOME}/yolov9/runs/train/exp/weights/best.pt \

--source {dataset.location}/valid/images
import glob

from IPython.display import Image, display

for image_path in glob.glob(f'{HOME}/yolov9/runs/detect/exp4/*.jpg')[:3]:

display(Image(filename=image_path, width=600))

print("\n")

我们在大小为640的图像上训练了我们的模型,这使得我们可以用较少的计算资源来训练模型。在推理过程中,我们将图像尺寸增加到1280,使得我们可以从我们的模型中得到更准确的结果。

下面是我们模型结果的三个例子:

我们的模型成功地识别了球员、裁判员和守门员。

5. 结论

YOLOv9是由Chien-Yao Wang, I-Hau Yeh, and Hong-Yuan Mark Liao发布的一种新的计算机视觉模型架构。可以使用YOLOv9架构训练目标检测模型。

在本指南中,我们演示了如何在自定义数据集上运行推理和训练YOLOv9模型。我们克隆了YOLOv9项目代码,下载了模型权重,然后使用默认的COCO权重进行推理。然后,我们使用足球运动员检测数据集训练了一个微调的模型。我们回顾了训练图和混淆矩阵,然后在来自验证集的图像上测试了模型。

THE END!

文章结束,感谢阅读。您的点赞,收藏,评论是我继续更新的动力。大家有推荐的公众号可以评论区留言,共同学习,一起进步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值