YOLOV9目标检测-训练、验证、推理

这篇具有很好参考价值的文章主要介绍了YOLOV9目标检测-训练、验证、推理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、模型介绍

1.1摘要

1.2模型概要

1.2.1Programmable Gradient Information

(1)Auxiliary Reversible Branch

(2)Multi-level Auxiliary Information

1.2.2Generalized ELAN

二、环境配置

三、数据集准备

四、预训练权重下载

五、训练

六、模型评估

​七、模型推理


yolov9模型评估,目标检测,人工智能,计算机视觉

论文:yolov9

模型:yolov9

一、模型介绍

1.1摘要

今天的深度学习方法关注的是如何设计最合适的目标函数,使模型的预测结果最接近地面的真实情况。同时,必须设计一个适当的体系结构,以方便获取足够的预测信息。现有方法忽略了一个事实,即输入数据在逐层进行特征提取和空间变换时,会丢失大量的信息。本文将深入研究数据在深度网络中传输时的重要数据丢失问题,即信息瓶颈和可逆函数。我们提出了可编程梯度信息(PGI)的概念,以应对深度网络实现多个目标所需的各种变化。PGI可以为目标任务提供完整的输入信息来计算目标函数,从而获得可靠的梯度信息来更新网络权值。此外,设计了一种新的基于梯度路径规划的轻量级网络结构——广义高效层聚合网络(GELAN)。GELAN的架构证实了PGI在轻量化模型上取得了卓越的成果。我们在基于MS COCO数据集的目标检测上验证了提出的GELAN和PGI。结果表明,与基于深度卷积的最新方法相比,GELAN仅使用常规卷积算子可以获得更好的参数利用率。PGI可用于从轻型到大型的各种模型。它可以用来获取完整的信息,使得从头开始训练的模型比使用大数据集预训练的最先进的模型获得更好的结果。

1.2模型概要

yolov9模型评估,目标检测,人工智能,计算机视觉

PGI和相关的网络体系结构和方法:

(a)路径聚合网络(PAN)

(b)可逆列(RevCol)

(c)传统深度监督

(d)可编程梯度信息(PGI)。

        PGI主要由三个部分组成:

        (1)主分支:用于推理的架构;

        (2)辅助可逆分支:生成可靠的梯度,为主分支提供反向传输;

        (3)多级辅助信息:控制主分支学习可规划的多级语义信息。

1.2.1Programmable Gradient Information

我们提出了一种新的辅助监督框架,称为可编程梯度信息(Programmable Gradient Information, PGI),如图3 (d)所示。PGI主要包括三个部分,即(1)主分支,(2)辅助可逆分支,(3)多级辅助信息。从图3 (d)可以看出,PGI的推理过程只使用了主干分支,因此不需要任何额外的推理成本。至于其他两个组件,它们用于解决或减缓深度学习方法中的几个重要问题。其中,设计了辅助可逆分支来解决神经网络深度化带来的问题。网络深化会造成信息瓶颈,使损失函数无法产生可靠的梯度。对于多级辅助信息,设计用于处理深度监督带来的误差积累问题,特别是针对多预测分支的架构和轻量化模型。接下来,我们将逐步介绍这两个组件。

(1)Auxiliary Reversible Branch

在PGI中,我们提出了辅助可逆分支来生成可靠的梯度和更新网络参数。通过提供从数据到目标的映射信息,损失函数可以提供指导,并避免从与目标不太相关的不完整前馈特征中发现虚假关联的可能性。我们提出通过引入可逆体系结构来维护完整的信息,但是在可逆体系结构中增加主干会消耗大量的推理成本。

我们分析了图3 (b)的架构,发现当添加从深层到浅层的额外连接时,推理时间将增加20%。当我们将输入数据反复添加到网络的高分辨率计算层(黄色框)时,推理时间甚至超过了时间的两倍。

由于我们的目标是使用可逆架构来获得可靠的梯度,因此“可逆”并不是推理阶段的唯一必要条件。鉴于此,我们将可逆分支作为深度监督分支的扩展,然后设计辅助可逆分支,如图3 (d)所示。对于因信息瓶颈而丢失重要信息的主分支深度特征,将能够从辅助可逆分支接收到可靠的梯度信息。

这些梯度信息将驱动参数学习,帮助提取正确的重要信息,以上动作可以使主分支获得对目标任务更有效的特征。此外,可逆结构在浅层网络上的表现比一般网络差,因为复杂的任务需要在深层网络中进行转换。我们提出的方法并不强制主分支保留完整的原始信息,而是通过辅助监督机制生成有用的梯度来更新原始信息。这种设计的优点是,所提出的方法也可以应用于较浅的网络。

最后,由于在推理阶段可以去除辅助可逆分支,因此可以保留原始网络的推理能力。我们也可以在PGI中选择任意可逆体系结构来充当辅助可逆分支的角色。

(2)Multi-level Auxiliary Information

在本节中,我们将讨论多层辅助信息是如何工作的。包含多个预测分支的深度监督架构如图3 (c)所示。对于对象检测,可以使用不同的特征金字塔来执行不同的任务,例如它们可以一起检测不同大小的对象。因此,在连接到深度监督分支后,将引导浅层特征学习小目标检测所需的特征,此时系统将其他大小目标的位置作为背景。然而,上述行为会导致深层特征金字塔丢失大量预测目标物体所需的信息。对于这个问题,我们认为每个特征金字塔都需要接收到所有目标对象的信息,这样后续的主干分支才能保留完整的信息来学习对各种目标的预测
多级辅助信息的概念是在辅助监督的特征金字塔层次层和主分支之间插入一个集成网络,然后利用它来组合来自不同预测头的返回梯度,如图3 (d)所示。多级辅助信息就是将包含所有目标对象的梯度信息进行聚合,传递给主分支,然后更新参数。此时,主要分支的特征金字塔层次结构的特征就不会被某些特定对象的信息所支配。因此,该方法可以缓解深度监督中的信息破碎问题。此外,任何集成网络都可以使用多层次的辅助信息。
因此,我们可以规划所需的语义层次来指导不同规模的网络架构的学习。

1.2.2Generalized ELAN

yolov9模型评估,目标检测,人工智能,计算机视觉

在本节中,我们描述了提出的新网络架构- GELAN。通过结合CSPNet[64]和ELAN[65]这两种采用梯度路径规划设计的神经网络架构,我们设计了兼顾轻量级、推理速度和准确性的广义高效层聚合网络(GELAN)。它的整体架构如图4所示。我们将最初仅使用卷积层堆叠的ELAN[65]的能力推广到可以使用任何计算块的新架构。

二、环境配置

创建环境:

conda create -n yolov9 python=3.8

激活环境:

conda activate yolov9

注意!!requirments中的torch和torchvision下载完后为cpu版本,不能用!!

此时,有一种方法,先下requirements中的包,然后卸载torch和torchvison,然后下载对应cuda版本的gpu的torch和torchvison。

pip install -r requirements.txt -i https://mirrors.bfsu.edu.cn/pypi/web/simple/
pip uninstall torch
pip uninstall torchvision

我的cuda版本是11.3,大家根据自己的cuda版本进行下载:

pip install torch==1.12.0+cu113 torchvision==0.13.0+cu113 --extra-index-url https://download.pytorch.org/whl/cu113

三、数据集准备

准备下面格式的数据集

yolov9模型评估,目标检测,人工智能,计算机视觉

其中,fall.yaml文件内容如下,路径,类别以及类别数量需要根据自己的进行修改:

train: C:/Users/24480/Desktop/yolov9-main/data/pp_fall/train/images
val: C:/Users/24480/Desktop/yolov9-main/data/pp_fall/val/images
test: C:/Users/24480/Desktop/yolov9-main/data/pp_fall/test/images

# number of classes
nc: 1


# class names
names: ['fall']

四、预训练权重下载

目前只能下载YOLOv9-C和YOLOv9-E

yolov9模型评估,目标检测,人工智能,计算机视觉

五、训练

如果加载的是YOLOv9-C的预训练权重的话,需要修改yolov9-c.yaml

yolov9模型评估,目标检测,人工智能,计算机视觉

修改train_dual.py中的参数

yolov9模型评估,目标检测,人工智能,计算机视觉

然后运行

yolov9模型评估,目标检测,人工智能,计算机视觉

训练结束,保存在下面这个路径下:

yolov9模型评估,目标检测,人工智能,计算机视觉

六、模型评估

修改val_dual.py的参数

yolov9模型评估,目标检测,人工智能,计算机视觉

七、模型推理

修改detect.py中的参数

yolov9模型评估,目标检测,人工智能,计算机视觉

此时会发现报错:

yolov9模型评估,目标检测,人工智能,计算机视觉

bug解决:

修改general.py,将903行prediction = prediction[0]改为prediction = prediction[0][1]

yolov9模型评估,目标检测,人工智能,计算机视觉

问题解决

yolov9模型评估,目标检测,人工智能,计算机视觉

yolov9模型评估,目标检测,人工智能,计算机视觉

大佬链接:

大佬1

大佬2文章来源地址https://www.toymoban.com/news/detail-859888.html

到了这里,关于YOLOV9目标检测-训练、验证、推理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Windows 上使用LabVIEW AI 工具包 for OpenVINO™部署YOLOv9实现实时目标检测

    作者: 英特尔边缘计算创新大使 王立奇 YOLOv9 引入了可编程梯度信息 (PGI) 和广义高效层聚合网络 (GELAN) 等开创性技术,不仅增强了模型的学习能力,还确保了在整个检测过程中保留关键信息,从而实现了卓越的准确性和性能。该模型在效率、准确性和适应性方面都有显著提

    2024年04月12日
    浏览(57)
  • 【计算机视觉】YOLOv9:物体检测技术的飞跃发展

    YOLOv9 引入了可编程梯度信息 (PGI) 和广义高效层聚合网络 (GELAN) 等开创性技术,标志着实时目标检测领域的重大进步。该模型在效率、准确性和适应性方面都有显著提高,在 MS COCO 数据集上树立了新的标杆。YOLOv9 项目虽然是由一个独立的开源团队开发的,但它建立在以下机构

    2024年04月17日
    浏览(42)
  • 训练YOLOv9-S(注意:官方还没有提供YOLOv9-S的网络,我这是根据网络博客进行的步骤,按照0.33、0.50比例调整网络大小,参数量15.60M,计算量67.7GFLOPs)

    重点参考的链接:YOLOv9改进 | 提供YOLOv9全系列支持YOLOv9n、YOLOv9s、V9m、V9l、V9x的修改方式(全网独家首发) 改前的 yolov9.yaml 参数量58.35M,计算量267.1GFLOPs 改后的 yolov9-S.yaml 参数量15.60M,计算量67.7GFLOPs 这是修改 前 调用的 yolo.py 测试的 yolov9.yaml 的打印网络情况,包含参数量、

    2024年03月27日
    浏览(67)
  • 【YOLOv9】完胜V8的SOTA模型Yolov9(论文阅读笔记)

    官方论文地址:  论文地址点击即可跳转 官方代码地址:  GitCode - 开发者的代码家园                           官方代码地址点击即可跳转 当输入数据经过各层的特征提取和变换的时候,都会丢失一定的信息。针对这一问题: 论文中提出的 可编程梯度信息(P

    2024年04月12日
    浏览(36)
  • YOLOv9最新改进系列:YOLOv9云服务器环境搭建-包百分百跑通!

    YOLOv9原文链接戳这里,原文全文翻译请关注B站Ai学术叫叫首er B站全文戳这里! v8 v9 详细的改进教程以及源码,戳这!戳这!!戳这!!!B站:AI学术叫叫兽 源码在相簿的链接中,动态中也有链接,感谢支持!祝科研遥遥领先! v8 v9 详细的改进教程以及源码,戳这!戳这!!

    2024年04月10日
    浏览(43)
  • [C++]使用纯opencv去部署yolov9的onnx模型

    【介绍】 部署 YOLOv9 ONNX 模型在 OpenCV 的 C++ 环境中涉及一系列步骤。以下是一个简化的部署方案概述,以及相关的文案。 部署方案概述: 模型准备 :首先,你需要确保你有 YOLOv9 的 ONNX 模型文件。这个文件包含了模型的结构和权重。 环境配置 :安装 OpenCV 库,并确保它支持

    2024年03月13日
    浏览(70)
  • OpenCV与AI深度学习 | 实战 | 基于YOLOv9和OpenCV实现车辆跟踪计数(步骤 + 源码)

    本文来源公众号“ OpenCV与AI深度学习 ”,仅用于学术分享,侵权删,干货满满。 原文链接:实战 | 基于YOLOv9和OpenCV实现车辆跟踪计数(步骤 + 源码)     本文主要介绍使用YOLOv9和OpenCV实现车辆跟踪计数(步骤 + 源码)。      监控摄像头可以有效地用于各种场景下的车辆

    2024年04月15日
    浏览(55)
  • 手把手调参 YOLOv8 模型之 训练|验证|推理配置-详解

    YOLO系列模型在目标检测领域有着十分重要的地位,随着版本不停的迭代,模型的性能在不断地提升,源码提供的功能也越来越多,那么如何使用源码就显得十分的重要,接下来通过文章带大家手把手去了解Yolov8(最新版本)的每一个参数的含义,并且通过具体的图片例子让大

    2024年02月05日
    浏览(47)
  • 【目标检测】YOLOv5推理加速实验:TensorRT加速

    前两篇博文分别讨论了YOLOv5检测算法的两种加速思路:采用多进程或批量检测,不过效果均收效甚微。本问将讨论使用TensorRT加速以及半精度推理/模型量化等优化策略对检测加速的实际影响。 测试图片分辨率:13400x9528 GPU:RTX4090 Cuda:11.7 YOLOv5版本:最新版(v7.0+) 检测策略:将

    2024年02月05日
    浏览(56)
  • 【目标检测】YOLOv5多进程/多线程推理加速实验

    最近在研究如何让YOLOv5推理得更快,总体看来,主要有以下这些思路: 使用更快的 GPU,即:P100 - V100 - A100 多卡GPU推理 减小模型尺寸,即YOLOv5x - YOLOv5l - YOLOv5m - YOLOv5s - YOLOv5n 进行半精度FP16推理与 python detect.py --half 减少–img-size,即 1280 - 640 - 320 导出成 ONNX 或 OpenVINO 格式,获

    2023年04月14日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包