【目标检测新SOTA!v7 v4作者新作!】YOLO v9 思路设计 + 全流程优化 + 手把手训练自己数据

YOLO v9 思路复现 + 全流程优化 + 手把手训练自己数据

    • 提出背景:深层网络的 信息丢失、梯度流偏差
    • YOLO v9 设计逻辑
      • 可编程梯度信息(PGI):使用PGI改善训练过程
      • 广义高效层聚合网络(GELAN):使用GELAN改进架构
    • 对比其他解法
      • 1. 残差网络(ResNet)
      • 2. 密集连接网络(DenseNet)
      • 3. 注意力机制
      • 4. 可逆网络架构
      • 5. 特征金字塔网络(FPN)
    • 效果
    • 训练自己数据

 


提出背景:深层网络的 信息丢失、梯度流偏差

论文:https://arxiv.org/pdf/2402.13616.pdf

代码:https://github.com/WongKinYiu/yolov9

  • 问题: 深度网络在前馈过程中数据丢失信息,导致偏差的梯度流和错误的目标与输入关联。
  • 解法: YOLO v9

在实际应用中,例如交通监控系统中的车辆和行人检测,深度网络可能会因为网络层过深而导致在前馈过程中丢失对车辆和行人的关键特征信息。

这种信息丢失会导致梯度流在反向传播过程中带有偏差,使得网络无法准确地学习到车辆和行人的特征,进而影响检测准确性。

针对这个问题,YOLOv9被提出作为一种解决方案。

它结合了PGI(可编程梯度信息)和GELAN(广义高效层聚合网络)技术来克服信息瓶颈和深度监督在轻量级网络中的不适用性问题。

YOLOv9的PGI技术包括辅助可逆分支和多级辅助信息,这些设计有助于在网络的深层中保留更多的信息,生成更可靠的梯度,从而在训练过程中确保了更准确的目标与输入之间的关联。

例如,如果在交通监控系统中部署了YOLOv9,当监控画面中有车辆通过时,即使在网络较深的层次上,YOLOv9也能有效地保留车辆的关键特征信息,如车辆的轮廓、颜色和标志等。

这使得在整个训练过程中,网络能够学习到更为精确的特征,提高车辆检测的准确率。

与传统的深度网络相比,YOLOv9能够减少因信息丢失导致的错误预测,从而在实时对象检测任务中表现出更高的准确性和效率。

在这里插入图片描述
图展示了在相同输入图像下,不同神经网络架构的特征图对比。

特征图代表了模型初始权重处理后各个网络架构所关注的内容。

这些可视化包括PlainNet、ResNet、CSPNet以及所提出的GELAN(v9采用),以及原始输入图像。

这些地图用来分析在前馈过程中每个网络保留了多少信息。

图中表明,所提出的GELAN架构保留了最完整的信息,并为计算目标函数提供了最可靠的梯度信息,这对模型的准确性至关重要。

在这里插入图片描述
GELAN在添加了PGI的可逆分支后,对目标对象的专注能力得到了提升。

  • GELAN在没有PGI时显示出一些分散的特征激活
  • 而在结合了PGI后,YOLOv9能够更集中地捕捉到目标对象的位置
  • 表明PGI的引入有助于网络在早期训练阶段就能够更准确地学习到目标的关键信息。

 

在MS COCO数据集上实现顶尖性能。

在这里插入图片描述

YOLO v9 设计逻辑

深度网络在处理复杂任务时面临的主要问题——信息丢失和梯度流偏差。

YOLO v9 结合 可编程梯度信息(PGI)和 通用ELAN(GELAN) 设计。

GELAN架构改进是基于ELAN,能够有效降低参数数量,提高计算效率。PGI作为训练改善手段,可以更好地维护传播过程中的关键信息。

PGI 通过一个辅助的可逆分支来维持关键信息,并确保梯度流的准确性。

接着,为了使模型能够在不同的硬件上高效运行,设计了GELAN,它允许模型根据硬件能力选择最合适的计算块。

最后,通过结合这两种技术,开发了YOLOv9,它在保持模型轻量级的同时,大幅提升了对象检测的准确率和速度。

可编程梯度信息(PGI)和广义高效层聚合网络(GELAN)是在深度学习领域为提高神经网络性能而提出的先进概念。以下是对这两个概念的详细解释:

可编程梯度信息(PGI):使用PGI改善训练过程

PGI是一种旨在解决深度网络中的信息瓶颈问题的策略。

在深度网络的训练过程中,由于层与层之间的复杂映射,有用的信息可能会逐渐丢失,这会导致梯度信号变弱,最终影响网络的学习效率和预测准确性。

  • 特征1:辅助可逆分支 - PGI在网络中引入了一个辅助分支,它与主分支并行运行。

    这个辅助分支被设计为可逆的,意味着它可以在不丢失信息的情况下执行数据的正向和反向传播。

    这有助于在训练过程中产生更可靠的梯度信号,因为它保证了即使是深层次的特征也能够保留对目标任务有用的信息。

  • 特征2:避免语义损失 - 在深度监督方法中,通常将额外的监督信号(如分类标签)插入到网络的中间层,以促进更深层的特征学习。

    然而,这种方法可能会引入语义损失,因为中间层的特征可能无法完全代表数据的全部复杂性。

    PGI通过其辅助可逆分支的设计来避免这种情况,使得整个网络能够在各个层次上保持语义信息的完整性。

PGI框架包括三个组件:主分支、辅助可逆分支和多级辅助信息

  • 特征1: 主分支用于推断,保证无额外推断成本。
  • 特征2: 辅助可逆分支产生可靠梯度,防止信息丢失。
  • 特征3: 多级辅助信息整合不同预测头的梯度信息。

PGI通过辅助可逆分支和多级辅助信息两条路径来提供可靠的梯度,并指导主分支学习,形成一个互补和增强的网络结构。

  • 辅助可逆分支作为一个独立模块在训练阶段生成可靠梯度,然后在推断阶段被移除,确保了信息的完整性而不增加推断成本。
  • 多级辅助信息作为一个整合网络,联合不同预测头的梯度,提供全面的信息给主分支。

 


广义高效层聚合网络(GELAN):使用GELAN改进架构

GELAN是一个新型的神经网络架构,它结合了多种网络设计的优点,旨在提供一个既轻量又高效的网络架构。

  • 特征1:综合设计 - GELAN融合了CSPNet和ELAN的设计理念,创建了一个灵活的网络架构,能够根据不同的应用需求和计算资源进行调整。

    CSPNet通过分割和合并特征图来减少冗余计算,而ELAN则使用层聚合来增强特征的表示能力。

  • 特征2:计算块的自由选择 - 与传统的深度网络架构依赖特定类型的计算单元不同,GELAN允许在其框架内使用各种类型的计算块,比如传统的卷积层、深度可分卷积或者其他类型的新颖计算单元。

    这种设计不仅提高了网络的适应性,也使得GELAN能够轻松地部署在不同性能的设备上,从高性能服务器到边缘设备。

在这里插入图片描述
这图是 GELAN(广义高效层聚合网络)的架构,并将其与CSPNet和ELAN两种网络架构进行了对比。

GELAN是将CSPNet和ELAN的特点结合在一起,并扩展以支持任何计算块的新型网络架构。

(a) CSPNet: 这种架构包括一个分裂-合并的过程,它通过在网络的不同层之间分裂和合并特征来提高性能和效率。

(b) ELAN: 这是一种更进一步的架构,它在CSPNet的基础上增加了多个卷积层(conv)的堆叠,每个卷积层都会进行特征转换,之后再进行合并。

© GELAN: 提出的GELAN架构不仅模仿了CSPNet的分裂-合并机制,还扩展了ELAN的设计,使其可以使用任何类型的计算块,而不仅限于卷积层。

这种设计增加了网络的灵活性,使其能够根据不同的应用需求选择最合适的计算块。

图中的“transition”表示特征转换层,“split”表示特征分裂操作,“concatenation”表示特征合并操作。

“xn”表示特征的复制或扩展,“module”表示网络中的可选模块,“partition”表示特征的分区。

通过这种方式,GELAN旨在克服以往架构中存在的局限性,如过度依赖卷积层堆叠或者处理复杂任务时的效率问题。

  • 融合 CSPNet 的计算效率 和 ELAN 的层聚合策略。

这种设计不仅减少了模型的参数数量和计算复杂度,还保持了高水平的准确率和推理速度,使其适用于各种推理设备,从高性能服务器到资源受限的边缘设备。

此外,GELAN的灵活性允许开发者根据特定应用场景的需要,自由选择和替换不同的计算块,进一步优化模型性能和效率。
 


对比其他解法

除了YOLOv9采用的PGI(可编程梯度信息)和GELAN(广义高效层聚合网络)外,还有其他几种解法。

在这里插入图片描述
这图是关于不同神经网络架构及方法的可视化对比,特别是在处理信息瓶颈和提供辅助信息方面的不同策略。

(a) PAN (Path Aggregation Network): 这种结构通过聚合不同路径的信息来缓解信息瓶颈问题,但仍然存在信息丢失的问题。

(b) RevCol (Reversible Columns): 这种结构旨在保持信息流的完整性,通过可逆列来避免信息的损失,但代价是计算成本较高。

© 深度监督 (Deep Supervision): 这个方法通过在网络的不同深度层添加预测头来实现辅助监督,这可以帮助网络学习到多层次的辅助信息,但可能导致信息损坏。

(d) 可编程梯度信息 (PGI): 这是论文提出的新方法,它通过辅助可逆分支产生可靠的梯度,以供主分支使用,从而控制主分支在多个语义层次上的学习,这有助于更好地保留语义信息并优化梯度流。

图中的蓝色块代表神经网络中的层,灰色块代表预测头或辅助分支,虚线框高亮了每种方法的关键特征。

1. 残差网络(ResNet)

  • 解决方案: 通过引入残差连接(Skip Connections)允许信息直接从一层传递到后面的多个层,从而减轻了梯度消失问题并保留了更多的信息。

  • 对比: 残差连接是一种简单有效的方法来维持信息流,但它可能不足以处理所有类型的信息损失,尤其是在非常深的网络或需要高度复杂特征提取的任务中。

    PGI通过辅助可逆分支提供了一种更为动态和可控的方式来保持关键信息,而GELAN则通过灵活的网络结构设计提供了进一步的优化空间。

2. 密集连接网络(DenseNet)

  • 解决方案: 在DenseNet中,每一层都与前面所有层直接相连,这保证了信息在网络中的自由流动,并减少了信息丢失。

  • 对比: DenseNet通过增强特征重用来提高效率和减少参数数量,但这种架构的参数效率和计算效率与GELAN相比可能不那么优秀。

    GELAN允许更灵活的计算块使用,可能在特定任务上提供更好的性能和效率。

3. 注意力机制

  • 解决方案: 注意力机制可以动态地聚焦于输入数据的关键部分,从而提高网络对重要信息的敏感性和保留能力。

  • 对比: 注意力机制为网络提供了一种有效的信息筛选和增强方式,可以与PGI和GELAN结合使用,以进一步优化信息流和提高模型性能。

    它们各自解决信息保留问题的方式不同,可以相互补充。

    在PGI的辅助可逆分支中集成注意力机制,在PGI的辅助可逆分支中引入注意力模块,如自注意力(Self-Attention)或卷积注意力机制。

    帮助模型更加精确地聚焦于输入特征中对目标任务最重要的部分,从而在生成可靠梯度时保留更多关键信息。

    在GELAN网络中应用注意力增强的计算块,将注意力机制融入GELAN网络的计算块中,例如,使用带有注意力机制的卷积层(如注意力增强的ResNet块)作为GELAN的构建模块。

    这样的设计可以使网络在处理特征时自动强调更有用的信息,同时抑制不相关的信息。

    结合PGI和GELAN的特性使用注意力机制进行特征融合,在PGI和GELAN的结合框架中,可以在特征融合阶段引入注意力机制,特别是在合并来自主分支和辅助可逆分支的特征时。

    通过对这些特征进行加权融合,模型可以更好地利用各自的优势,提取出最有价值的信息。

4. 可逆网络架构

  • 解决方案: 一些网络设计允许前馈和反向传播过程可逆,确保了信息的完全保留。

  • 对比: 可逆网络架构直接针对信息丢失问题提供了解决方案,而PGI中的辅助可逆分支也采用了类似的思想,但在一个辅助的分支上实现,以提高梯度的可靠性和信息的保存。

    因为传统的可逆架构虽然能够保留完整的输入信息,但增加了额外的复合层,会导致推断速度变慢。

    GELAN则通过结构上的创新进一步提升了网络的性能。

5. 特征金字塔网络(FPN)

  • 解决方案: FPN通过构建一个多尺度的特征金字塔来维持在不同尺度上的信息,特别适用于需要捕捉多尺度信息的任务,如对象检测。

  • 对比: FPN专注于通过多尺度表示来保留信息,而PGI和GELAN则通过改进梯度流和网络架构的方式来综合解决信息丢失问题,三者可以结合使用,以在不同层面上优化信息保留。

    如选择GELAN作为模型的基础架构,引入FPN进行多尺度特征融合,利用PGI优化梯度流和信息保留。

 


效果

在这里插入图片描述
表格按照不同的性能指标对模型进行了排名,包括模型参数数量、浮点运算次数(FLOPs)、以及不同IoU阈值下的平均精度(AP)。

这些性能指标是衡量对象检测器性能的关键指标。

  • IoU,即交并比,是一个衡量预测边界框与真实边界框重叠度的指标。
  • AP通常用来评估模型在不同IoU阈值下检测准确性的平均表现。
  • 此外,AP的不同变体(如AP50、AP75等)代表了在不同的IoU阈值(0.50、0.75等)下的性能。

以下是表格的详细拆解:

  • #Param. (M): 模型参数的数量,以百万为单位。这反映了模型的复杂度。
  • FLOPs (G): 浮点运算次数,以十亿为单位。这是衡量模型计算复杂度的指标。
  • AP50% - AP75%: 这些列显示在IoU阈值为50%和75%时的平均精度(AP),这是评估模型准确度的常用指标。
  • AP: 这一列通常表示在所有IoU阈值上平均的AP值。
  • APS, APM, APL: 分别代表小尺寸(S)、中尺寸(M)、大尺寸(L)对象的AP值。这说明了模型在不同尺寸对象检测方面的性能。

表格中展示了多个版本的YOLO(包括YOLOv5、v6、v7、v8和v9),以及其他模型如PPYOLOE、DAMO YOLO、Gold YOLO等。

YOLOv9 在多个性能指标上显示出了优越性,特别是在参数较少和计算复杂度较低的情况下,仍然保持了高AP值,显示了其高效率和准确性。

比如其中一列:

  • YOLOv9的AP为55.6%
  • YOLOv8的AP为52.9%
  • YOLOv5的AP为50.0%

结论:

  • YOLOv9 在保持较低参数数量和计算复杂度的同时,实现了与其他高性能模型相当或更好的AP值,尤其是在大尺寸对象检测上(APL)表现出色。
  • YOLOv9的性能优于其他从头训练的模型,在大多数性能指标上都有明显提升。
  • 这表明YOLOv9是在参数效率和检测准确性之间取得了良好平衡的高效检测模型。

 


训练自己数据

英文原文:https://blog.roboflow.com/train-yolov9-model/

  • 中文解读:https://mp.weixin.qq.com/s/_wsJbLaoZqFNiEri5yiW4Q

代码:https://colab.research.google.com/github/roboflow-ai/notebooks/blob/main/notebooks/train-yolov9-object-detection-on-custom-dataset.ipynb?ref=blog.roboflow.com

训练YOLOv9,分为以下部分:

  1. 安装YOLOv9:首先需要从GitHub克隆YOLOv9的代码库,并安装必要的依赖。

  2. 数据准备:下载并准备自定义数据集,例如足球运动员的数据集。数据集需要被格式化为YOLOv9兼容的格式。

  3. 模型训练:使用训练脚本和自定义数据集来训练模型。可以根据需要调整训练参数,如批量大小、训练周期数、图像大小等。

  4. 模型评估:训练完成后,使用生成的图表和混淆矩阵来评估模型的性能。

  5. 推理运行:最后,使用训练好的模型对新的图像或数据进行预测,以检验模型的实际效果。

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

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

相关文章

java面试:分布式事务理论基础(CAP原理、BASE理论、本地事务)

文章目录 引言I 基础知识1.1 事务(Transaction)1.2 本地事务1.3 分布式事务II 分布式理论2.1 CAP原理2.2 BASE理论2.3 刚柔事务2.4 解决分布事务模型2.5 2PC2.6 3PC2.7 TCC(Try-Confirm-Cancel)补偿事务引言 分布式事务:实现跨服务事务回滚,需要用到分布式事务。

华为数通方向HCIP-DataCom H12-821题库(单选题:481-500)

第481题 以下关于基于SD-WAN思想的EVPN互联方案的描述,错误的是哪一项? A、通过部署独立的控制面,将网络转发和控制进行了分离,从而实现了网络控制的集中化 B、通过对WAN网络抽象和建模,将上层网络业务和底层网络具体实现架构进行解耦,从而实现网络自动化 C、通过集中的…

四、分类算法 - 决策树

目录 1、认识决策树 2、决策树分类原理详解 3、信息论基础 3.1 信息 3.2 信息的衡量 - 信息量 - 信息熵 3.3 决策树划分的依据 - 信息增益 3.4 案例 4、决策树API 5、案例:用决策树对鸢尾花进行分类 6、决策树可视化 7、总结 8、案例:泰坦尼…

深度学习手写字符识别:推理过程

说明 本篇博客主要是跟着B站中国计量大学杨老师的视频实战深度学习手写字符识别。 第一个深度学习实例手写字符识别 深度学习环境配置 可以参考下篇博客,网上也有很多教程,很容易搭建好深度学习的环境。 Windows11搭建GPU版本PyTorch环境详细过程 数…

stable diffusion学习笔记 手部修复

图片手部修复原理 某张图片在生成后,仅有手部表现不符合预期(多指,畸形等)。这种情况下我们通常使用【局部重绘】的方式对该图片的手部进行【图生图】操作,重新绘制手部区域。 但是仅采用重绘的方式也很难保证生成的…

python爬虫实战:获取电子邮件和联系人信息

引言 在数字时代,电子邮件和联系人信息成为了许多企业和个人重要的资源,在本文中,我们将探讨如何使用Python爬虫从网页中提取电子邮件和联系人信息,并附上示例代码。 目录 引言 二、准备工作 你可以使用以下命令来安装这些库&a…

将文件从windows传入到ubuntu

实现效果图 2.方法: 2.1打开 Ubuntu 的终端窗口,然后执行如下命令来安装 FTP 服务 输入:sudo apt-get install vsftpd 等待软件自动安装,安装完成以后使用如下 VI 命令打开/etc/vsftpd.conf,命令如下:su…

6.二元操作符

平凡也就两个字: 懒和惰; 成功也就两个字: 苦和勤; 优秀也就两个字: 你和我。 跟着我从0学习JAVA、spring全家桶和linux运维等知识,带你从懵懂少年走向人生巅峰,迎娶白富美! 关注微信公众号【 IT特靠谱 】,每天都会分享技术心得~ 1.二元操作符 用户可以使用这些操作符对时…

Git Windows安装教程

Git简介 Git是目前世界上最先进的分布式版本控制系统。它的工作原理 / 流程如下: [ Workspace:工作区 Index / Stage:暂存区 Repository:仓库区(或本地仓库) Remote:远程仓库 ] Git的下载 去 Git 官网下载对应系统的软件了,下…

用39块钱的全志V851se视觉开发板做了个小相机,还可以物品识别、自动追焦!

用39块钱的V851se视觉开发板做了个小相机。 可以进行物品识别、自动追焦! 这个超低成本的小相机是在V851se上移植使用全志在线开源版本的Tina Linux与OpenCV框架开启摄像头拍照捕获视频,并结合NPU实现Mobilenet v2目标分类识别以及运动追踪等功能…并最终…

【Redis】redis配置与数据类型

Redis 配置 Redis 的配置文件位于 Redis 安装目录下,文件名为 redis.conf。在日常使用中,我们一般只会修改一些比较重要的参数。当然redis是支持很多配置参数的,感兴趣的可以自行了解所有的参数,有个大致印象即可。我们可以通过 …

dolphinscheduler集群部署教程

文章目录 前言一、架构规划二、配置集群免密登录1. 配置root用户集群免密登录1.1 hadoop101节点操作1.2 hadoop102节点操作1.3 hadoop103节点操作 2. 创建用户2.1 hadoop101节点操作2.2 hadoop102节点操作2.3 hadoop103节点操作 三、安装准备1. 安装条件2. 安装jdk3. 安装MySQL…

千兆宽带和全屋WiFi覆盖

文章目录 千兆宽带是否真的需要千兆宽带2.4G 和 5G2.4G 无法支持千兆带宽5G 的最高理论速率是依据 WiFi 标准而有不同值 WiFi 5 和 WiFi 6、WiFi 7WiFi 5 就可以支持千兆宽带WiFi 6 是目前千兆宽带的最佳性价比选择WiFi 7 还不是完全体,待观察后续 6GHz 频段支持情况…

linuxsocket阻塞recv怎么返回

recv是socket编程中最常用的函数之一,在阻塞状态的recv有时候会返回不同的值,而对于错误值也有相应的错误码,分别对应不同的状态,下面是我针对常见的几种网络状态的简单总结。首先阻塞接收的recv有时候会返回0,这仅在对…

“智能语音指令解析“ 基于NLP与语音识别的工单关键信息提取

“智能语音指令解析“ 基于NLP与语音识别的工单关键信息提取 1. 背景介绍1.1 场景痛点1.2 方案选型 2. 准备开发环境3. PaddleSpeech 语音识别快速使用4. PaddleNLP 信息抽取快速使用5. 语音工单信息抽取核心功能实现6. 语音工单信息抽取网页应用6.1 网页前端6.2 网页后端6.3 a…

C# Onnx yolov8-obb 旋转目标检测

目录 效果 模型信息 项目 代码 下载 C# Onnx Yolov8-OBB 旋转目标检测 效果 模型信息 Model Properties ------------------------- date:2024-02-26T08:38:44.171849 description:Ultralytics YOLOv8s-obb model trained on runs/DOTAv1.0-ms.ya…

解决:“出现问题,Outlook 无法设置你的账户”

原文:https://blog.iyatt.com/?p14213 1 问题描述 Office 专业版 2024 预览版 在 Outlook 输入邮箱后无法进一步配置登录信息(腾讯企业邮箱 Exchange 登录) 2 解决方法 通过控制面板里的邮箱设置可以正常添加登录,而且能…

【总第49篇】2.3深度学习开发任务实例(2)机器学习和深度学习的对比【大厂AI课学习笔记】

机器学习和深度学习都是用于图片分类任务的强大工具,但它们采用的方法和原理有所不同。下面我将分别解释这两种技术是如何应用于图片分类的,并着重讨论深度学习中的卷积概念。 机器学习在图片分类中的应用 传统的机器学习方法在进行图片分类时&#xf…

Chrome 浏览器代理插件 SwitchyOmega 安装与使用

前言 SwitchyOmega 是什么? Proxy SwitchyOmega 是 Chrome 和 Firefox 浏览器上的代理扩展程序,可以轻松快捷的管理和切换多个代理设置,支持HTTP、HTTPS、SOCKS4、SOCKS5等多种代理协议。 SwitchyOmega只是管理代理的,本身并不提供代理服务,需要配合节点使用。 下载 Swi…

用GGUF和Llama .cpp量化Llama模型

用GGUF和Llama .cpp量化Llama模型 什么是GGML如何用GGML量化llm使用GGML进行量化NF4 vs. GGML vs. GPTQ结论 由于大型语言模型(LLMS)的庞大规模,量化已成为有效运行它们的必要技术。通过降低其权重的精度,您可以节省内存并加快推理…