相关系列:
目标检测 | yolov1 原理和介绍
目标检测 | yolov2/yolo9000 原理和介绍
目标检测 | yolov3 原理和介绍
目标检测 | yolov4 原理和介绍
目标检测 | yolov5 原理和介绍
目标检测 | yolov6 原理和介绍
目标检测 | yolov7 原理和介绍
目标检测 | yolov8 原理和介绍
目标检测 | yolov9 原理和介绍
目标检测 | yolov10 原理和介绍
论文:https://arxiv.org/pdf/2402.13616
代码:https://github.com/WongKinYiu/yolov9
1. 简介
今天的深度学习方法侧重于如何设计最合适的目标函数,以便模型的预测结果可以最接近基本事实。同时,必须设计能够促进获取足够信息进行预测的适当架构。现有方法忽略了输入数据经过逐层特征提取和空间变换时的事实,会丢失大量信息。当数据通过深度网络传输时,本文将深入研究数据丢失的重要问题,即信息瓶颈和可逆函数。我们提出了可编程梯度信息 (PGI) 的概念来应对深度网络实现多个目标所需的各种变化。PGI可以为目标任务提供完整的输入信息来计算目标函数,从而获得可靠的梯度信息来更新网络权重。此外,设计了一种基于梯度路径规划的广义高效层聚合网络(GELAN)。GELAN 的架构证实 PGI 在轻量级模型上获得了更好的结果。我们在基于 MS COCO 数据集的对象检测上验证了所提出的 GELAN 和 PGI。结果表明,GELAN 仅使用传统的卷积算子来实现比基于深度卷积开发的最先进方法更好的参数利用率。PGI 可用于从轻量级到大型的各种模型。它可用于获取完整的信息,以便从头开始训练模型比使用大型数据集预训练的最先进模型获得更好的结果,比较结果如图 1 所示。
YOLOv9相较于之前的YOLO版本,引入了以下主要改进:
1.PGI(Programmable Gradient Information):提出了可编程梯度信息的概念,通过辅助的可逆分支生成可靠的梯度信息,解决了深层网络训练中的信息瓶颈问题,允许网络更有效地更新权重。
2.GELAN(Generalized Efficient Layer Aggregation Network):设计了一种新的轻量级网络架构,基于梯度路径规划,考虑了参数数量、计算复杂性、准确性和推理速度,使其适应不同的推理设备。
3.信息瓶颈问题的解决:YOLOv9通过PGI解决了信息瓶颈问题,即在数据通过深层网络时信息丢失的问题,这有助于提高模型训练的效率和准确性。
4.多尺度特征融合:GELAN架构支持多尺度特征融合,提高了模型对不同尺寸目标的检测能力。
5.参数和计算量的优化:YOLOv9在减少参数数量和计算量方面进行了优化,与之前的YOLO版本相比,在保持或提高准确性的同时减少了模型大小和计算需求。
6.改进的检测性能:在MS COCO数据集上的实验结果表明,YOLOv9在对象检测性能上超越了之前版本的YOLO,包括YOLOv8。
7.训练策略的改进:YOLOv9采用了新的训练策略,包括学习率调度、数据增强技术等,进一步提高了模型的训练效果。
8.适用性:YOLOv9的设计使其适用于从轻量级到大型的多种模型,提高了模型的通用性和实用性。
9.辅助监督机制的改进:PGI的设计允许轻量级模型也能从辅助监督机制中受益,这在以前的深度监督机制中是做不到的。
10.开源代码:YOLOv9的代码已经开源,提供了实现细节和训练配置,方便研究者和开发者使用和进一步研究。
基于深度学习的模型在计算机视觉、语言处理和语音识别等各个领域都表现出比过去的人工智能系统更好的性能。近年来,深度学习领域的研究人员主要关注如何开发更强大的系统架构和学习方法,如cnn [21 - 23,42,55,71,72], Transformers [8,9,40,41,60,69,70], percepvers[26,26,32,52,56,81,81]和Mambas[17,38,80]。此外,一些研究人员试图开发更通用的目标函数,例如损失函数 [5, 45, 46, 50, 77, 78]、标签分配 [10, 12, 33, 67, 79] 和辅助监督 [18, 20, 24, 28, 29, 51, 54, 68, 76]。上述研究都试图准确地找到输入任务和目标任务之间的映射。然而,过去的大多数方法都忽略了输入数据在前馈过程中可能具有不可忽略的信息丢失量。这种信息丢失会导致有偏差的梯度流,随后用于更新模型。上述问题可能导致深度网络建立目标与输入之间的不正确关联,导致训练模型产生不正确的预测。
在深度网络中,前馈过程中输入数据丢失信息的现象通常被称为信息瓶颈[59],其原理图如图2所示。
图 2. 不同网络架构的随机初始权重输出特征图的可视化结果:(a)输入图像,(b)PlainNet,(c)ResNet,(d)CSPNet,(e)提议的 GELAN。从图中我们可以看出,在不同的架构中,提供给目标函数来计算损失的信息会不同程度的损失,我们的架构可以保留最完整的信息,并提供最可靠的梯度信息来计算目标函数。
目前,缓解这一现象的主要方法如下:(1)可逆体系结构的使用[3,16,19]:该方法主要使用重复输入数据,以显式的方式维护输入数据的信息;(2)掩码建模[1,6,9,27,71,73]的使用:它主要使用重构损失,采用隐式方法最大化提取的特征并保留输入信息;(3)深度监督概念的引入[28,51,54,68]:它使用丢失太多重要信息的浅层特征来预先建立从特征到目标的映射,以确保重要信息可以转移到更深的层。然而,上述方法在训练过程中和推理过程存在不同的缺点。例如,可逆架构需要额外的层来组合重复输入的输入数据,这将显着增加推理成本。此外,由于输出层的输入数据层不能具有太深的路径,这种限制使得在训练过程中难以对高阶语义信息进行建模。至于掩码建模,它的重建损失有时会与目标损失相冲突。此外,大多数掩码机制也会产生与数据不正确的关联。对于深度监督机制,它将产生错误累积,如果浅层监督在训练过程中丢失信息,后续层将无法检索所需的信息。上述现象在困难的任务和小模型上会更显着。
为了解决上述问题,我们提出了一个新的概念,即可编程梯度信息 (PGI)。这个概念是通过辅助可逆分支生成可靠的梯度,这样深度特征仍然可以保持执行目标任务的关键特征。辅助可逆分支的设计可以避免由集成多路径特征的传统深度监督过程引起的语义损失。换句话说,我们正在在不同的语义级别上编程梯度信息传播,从而实现最佳训练结果。PGI 的可逆架构建立在辅助分支上,因此没有额外的成本。由于 PGI 可以自由选择适合目标任务的损失函数,它还克服了掩码建模遇到的问题。所提出的 PGI 机制可以应用于不同大小的深度神经网络,并且比仅适用于非常深的神经网络的深度监督机制更通用。
在本文中,我们还设计了基于 ELAN [65] 的广义 ELAN (GELAN),GELAN 的设计同时考虑了参数数量、计算复杂度、准确性和推理速度。这种设计允许用户为不同的推理设备任意选择合适的计算块。我们将提出的 PGI 和 GELAN 相结合,然后设计了一种新的 YOLO 系列目标检测系统,我们称之为 YOLOv9。我们使用 MS COCO 数据集进行实验,实验结果表明我们提出的 YOLOv9 在所有比较中取得了最佳性能。
我们将本文的贡献总结如下:
- 我们从可逆函数的角度从理论上分析了现有的深度神经网络架构,通过这个过程,我们成功地解释了过去难以解释的许多现象。我们还基于该分析设计了 PGI 和辅助可逆分支,并取得了出色的结果。
- 我们设计的PGI解决了深度监督只能用于极深神经网络架构的问题,因此允许新的轻量级架构真正应用于日常生活中。
- 我们设计的GELAN仅使用传统的卷积来实现比基于先进技术的深度卷积设计更高的参数使用,同时显示出光、快速、准确等优点。
- 结合所提出的PGI和GELAN,YOLOv9在MS COCO数据集上的目标检测性能在各个方面大大超过了现有的实时目标检测器。
2. Related work 相关工作
2.1. Real-time Object Detectors 实时对象检测器
目前主流的实时目标检测器是YOLO系列[2,7,13 -15,25,30,31,47 - 49, 61-63,74,75],这些模型大多使用CSPNet[64]或ELAN[65]及其变体作为主要计算单元。在特征集成方面,改进的PAN[37]或FPN[35]经常被用作工具,然后使用改进的YOLOv3头部[49]或FCOS头部[57,58]作为预测头。最近还提出了一些实时目标检测器,如RT DETR[43],它将其资金放在DETR[4]上。然而,由于 DETR 系列对象检测器在没有相应域预训练模型的情况下应用于新领域非常困难,目前使用最广泛的实时对象检测器仍然是 YOLO 系列。本文选择YOLOv7[63],它已被证明在各种计算机视觉任务和各种场景中都是有效的,作为开发所提出的方法的基础。我们使用 GELAN 使用所提出的 PGI 改进架构和训练过程。上述新方法使所提出的 YOLOv9 是新一代的顶部实时目标检测器。
2.2. Reversible Architectures 可逆架构
可逆架构的操作单元[3,16,19]必须保持可逆转换的特性,从而保证各操作单元层的输出特征图能够保留完整的原始信息。在之前,RevCol [3] 将传统的可逆单元推广到多个级别,通过这样做可以扩展由不同层单元表示的语义级别。通过对各种神经网络架构的文献综述,我们发现有许多高性能的体系结构具有不同的可逆性质。例如,Res2Net 模块 [11] 以分层方式将不同的输入分区与下一个分区相结合,并在向后传递之前连接所有转换后的分区。CBNet[34,39]通过复合主干重新引入原始输入数据以获得完整的原始信息,并通过各种组合方法获得不同级别的多级可逆信息。这些网络架构通常具有出色的参数利用率,但额外的复合层会导致推理速度缓慢。DynamicDet[36]结合CBNet[34]和高效的实时目标检测器YOLOv7[63],在速度、参数数量和准确性之间取得非常好的权衡。本文介绍了DynamicDet体系结构作为设计可逆分支的基础。此外,将可逆信息进一步引入到所提出的PGI中。所提出的新架构在推理过程中不需要额外的连接,因此它可以充分利用速度、参数量和准确性的优势。
2.3. Auxiliary Supervision 辅助监督
深度监督[28,54,68]是最常见的辅助监督方法,它通过在中间层插入额外的预测层来执行训练。特别是在基于变压器的方法中引入的多层解码器的应用是最常见的。另一种常见的辅助监督方法是利用相关的元信息来指导中间层产生的特征图,使它们具有目标任务所需的属性[18,20,24,29,76]。这种类型的示例包括使用分割损失或深度损失来提高对象检测器的准确性。最近,文献中有很多报道[53,67,82]使用不同的标签分配方法生成不同的辅助监督机制来加速模型的收敛速度,同时提高鲁棒性。然而,辅助监督机制通常只适用于大型模型,因此在应用于轻量级模型时,容易导致参数化现象不足,使性能变差。我们提出的 PGI 设计了一种重新编程多级语义信息的方法,这种设计允许轻量级模型也受益于辅助监督机制。
3. Problem Statement 问题陈述
通常,由于梯度消失或梯度饱和等因素,人们将深度神经网络收敛问题的难度归因于传统深度神经网络确实存在这些现象。然而,现代深度神经网络通过设计各种归一化和激活函数从根本上解决了上述问题。然而,深度神经网络仍然存在收敛速度慢或收敛差的问题。
在本文中,我们进一步探讨了上述问题的性质。通过对信息瓶颈的深入分析,我们推断该问题的根本原因是,最初来自非常深的网络的初始梯度在传输目标后立即丢失了大量信息。为了确认这种推理,我们前馈了具有不同架构的深度网络,具有初始权重,然后在图 2 中可视化和说明它们。显然,PlainNet 丢失了深层目标检测所需的大量重要信息。至于 ResNet、CSPNet 和 GELAN 可以保留的重要信息的比例,确实与训练后可以获得的准确度呈正相关。我们进一步设计了可逆基于网络的方法来解决上述问题的原因。在本节中,我们将详细阐述我们对信息瓶颈原理和可逆函数的分析。
3.1. Information Bottleneck Principle 信息瓶颈原理
根据信息瓶颈原理,我们知道数据 X X X在经过变换时可能会导致信息丢失,如式1所示:
I ( X , X ) ≥ I ( X , f θ ( X ) ) ≥ I ( X , g φ ( f θ ( X ) ) ) , (1) I(X,X)\geq I(X,f_\theta(X)) \geq I(X, g_\varphi (f_\theta(X))),\tag{1} I(X,X)≥I(X,fθ(X))≥I(X,g<