当前位置:   article > 正文

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

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,请运行以下命令:

  1. git clone https://github.com/SkalskiP/yolov9.git
  2. cd yolov9
  3. pip3 install -r requirements.txt -q

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

  1. import os
  2. #获取当前路径
  3. HOME = os.getcwd()
  4. print(HOME)

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

  1. !mkdir -p {HOME}/weights
  2. !wget -P {HOME}/weights -q https://github.com/WongKinYiu/yolov9/releases/download/v0.1/yolov9-c.pt
  3. !wget -P {HOME}/weights -q https://github.com/WongKinYiu/yolov9/releases/download/v0.1/yolov9-e.pt
  4. !wget -P {HOME}/weights -q https://github.com/WongKinYiu/yolov9/releases/download/v0.1/gelan-c.pt
  5. !wget -P {HOME}/weights -q https://github.com/WongKinYiu/yolov9/releases/download/v0.1/gelan-e.pt

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

3.在YOLOv9模型上推理

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

  1. !mkdir -p {HOME}/data
  2. !wget -P {HOME}/data -q https://media.roboflow.com/notebooks/examples/dog.jpeg
  3. SOURCE_IMAGE_PATH = f"{HOME}/dog.jpeg"

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

  1. !python detect.py --weights {HOME}/weights/gelan-c.pt --conf 0.1 --source {HOME}/data/dog.jpeg --device 0
  2. Image(filename=f"{HOME}/yolov9/runs/detect/exp/dog.jpeg", width=600)

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

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

  1. !python detect.py --weights {HOME}/weights/yolov9-e.pt --conf 0.1 --source {HOME}/data/dog.jpeg --device 0
  2. 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个计算机视觉数据集的社区。您可以找到涵盖从书脊到足球运动员再到太阳能电池板的数据集。

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

  1. %cd {HOME}/yolov9
  2. roboflow.login()
  3. rf = roboflow.Roboflow()
  4. project = rf.workspace("roboflow-jvuqo").project("football-players-detection-3zvbc")
  5. dataset = project.version(1).download("yolov7")

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

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

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

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

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

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

  1. %cd {HOME}/yolov9
  2. !python train.py \
  3. --batch 16 --epochs 20 --img 640 --device 0 --min-items 0 --close-mosaic 15 \
  4. --data {dataset.location}/data.yaml \
  5. --weights {HOME}/weights/gelan-c.pt \
  6. --cfg models/detect/gelan-c.yaml \
  7. --hyp hyp.scratch-high.yaml

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

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

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

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

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

  1. Image(filename=f"{HOME}/yolov9/runs/train/exp/val_batch0_pred.jpg",
  2. width=1000)

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

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

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

  1. !python detect.py \
  2. --img 1280 --conf 0.1 --device 0 \
  3. --weights {HOME}/yolov9/runs/train/exp/weights/best.pt \
  4. --source {dataset.location}/valid/images
  1. import glob
  2. from IPython.display import Image, display
  3. for image_path in glob.glob(f'{HOME}/yolov9/runs/detect/exp4/*.jpg')[:3]:
  4. display(Image(filename=image_path, width=600))
  5. print("\n")

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

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

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

5. 结论

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

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

THE END!

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/312809
推荐阅读
相关标签
  

闽ICP备14008679号