当前位置: 首页 > news >正文

YOLO系列论文梳理(AI版)

一、参考文章

https://blog.csdn.net/sinat_16020825/article/details/144096199?fromshare=blogdetail&sharetype=blogdetail&sharerId=144096199&sharerefer=PC&sharesource=z___fc&sharefrom=from_link

二、论文解读

1、YOLOv1

论文核心思想

传统的物体检测方法(如R-CNN系列)通常遵循一个复杂的、多阶段的流程:

  1. 生成候选区域:先用某种算法(如Selective Search)在图片上生成上千个可能包含物体的区域。

  2. 特征提取:对每个候选区域,使用一个卷积神经网络(CNN)来提取特征。

  3. 分类与回归:用分类器(如SVM)判断每个区域的类别,并用回归器微调边界框的位置。

这个流程非常慢,而且各个部分是独立训练的,难以进行端到端的联合优化。

YOLO的核心思想是颠覆这一流程,将物体检测视为一个单一的回归问题(Regression Problem)。 它不再需要分步走,而是直接从完整的输入图像,一次性地预测出所有物体的边界框(Bounding Box)位置和类别概率。这正是其名字“You Only Look Once”(你只需看一次)的由来。

YOLO是如何工作的?(技术细节)

YOLO的实现方式非常巧妙,可以概括为以下三个步骤:

1. 划分网格 (Grid Division)

  • 首先,YOLO将输入图像缩放到一个固定的尺寸(如 448x448)。

  • 然后,它将这张图像逻辑上划分为一个 S x S 的网格(在论文中 S=7)。

  • 如果一个物体的中心点落在了某个网格单元(grid cell)内,那么这个网格单元就“负责”检测该物体。

2. 网格单元的预测 (Grid Cell Prediction)

  • 每个网格单元都需要预测三样东西:

    • B个边界框(Bounding Box): 论文中 B=2。每个边界框包含5个值:(x, y, w, h, confidence)。

      • (x, y): 边界框中心点相对于该网格单元左上角的坐标。

      • (w, h): 边界框的宽度和高度,相对于整张图像的尺寸进行归一化。

      • confidence (置信度): 这个分数反映了两件事:1)该边界框内含有物体的概率;2)该边界框位置的准确度。其计算公式为 Pr(Object) * IOU(pred, truth)。

    • C个类别概率(Class Probabilities): C 是物体类别的总数(如PASCAL VOC数据集有20类)。这些是条件概率 Pr(Class_i | Object),即在“这个网格单元确定有物体”的前提下,它属于各个类别的概率。

3. 统一的网络结构与输出

  • 整个系统是一个单一的卷积神经网络。图像输入后,经过一系列卷积层和全连接层,最终输出一个 S x S x (B*5 + C) 维度的张量(Tensor)。

  • 对于论文中的配置 (S=7, B=2, C=20),输出张量的大小就是 7 x 7 x (2*5 + 20) = 7 x 7 x 30。

  • 在测试时,将每个边界框的置信度分数和其对应的类别概率相乘,得到每个框针对每个类别的最终得分。然后通过设定阈值和使用非极大值抑制(NMS)来过滤掉多余的检测框,得到最终结果。

YOLO的优势

  1. 速度极快 (Extremely Fast)

    • 因为它是一个单一网络,没有复杂的流程,所以检测速度非常快。标准版YOLO在Titan X GPU上能达到 45 FPS,而一个轻量版的Fast YOLO能达到惊人的 155 FPS,远超当时其他算法,真正实现了实时检测。

  2. 利用全局信息 (Global Context)

    • 与那些只看局部候选区域的方法不同,YOLO在预测时能看到整张图像,因此它能利用全局的上下文信息。这使得YOLO在区分物体和背景时犯的错误(背景误检)比Fast R-CNN等方法少得多。

  3. 泛化能力强 (Strong Generalization)

    • YOLO学习到的是物体的通用特征。论文实验表明,当将在自然图像上训练的模型用于测试艺术品图像时,YOLO的性能下降得比DPM和R-CNN要少,证明了其强大的泛化能力。

YOLO的局限性

  1. 定位精度较低 (Lower Localization Accuracy)

    • 由于网格划分比较粗糙,YOLO对于物体的定位精度不如R-CNN系列。尤其是在处理小物体时,定位误差会比较明显。

  2. 对小物体和密集物体群检测效果差 (Poor on Small/Clustered Objects)

    • 每个网格单元只能预测有限数量的边界框(论文中是2个),并且只能属于一个类别。这导致当多个小物体的中心点落入同一个网格时,YOLO只能检测出其中一部分。例如,它很难检测一群小鸟。

  3. 对不常见长宽比的物体检测效果差 (Poor on Unusual Aspect Ratios)

    • 模型学习到的边界框形状主要来自于训练数据。如果测试时出现新的、不常见的长宽比的物体,模型可能无法很好地预测其边界框。

实验与结论

  • 性能对比:YOLO在速度上完胜所有对手,在准确率(mAP)上虽然不及当时的顶尖方法(如Faster R-CNN),但仍然非常有竞争力,尤其是考虑到其惊人的速度。

  • 错误分析:论文的一个重要发现是,YOLO的主要错误来源是定位不准,而Fast R-CNN的主要错误是背景误检。这表明两者具有互补性,将它们结合可以提升性能。

  • 结论:YOLO成功地将目标检测统一到一个简单的、端到端的框架中,在保证较高精度的同时,实现了前所未有的实时检测速度,为后续的单阶段检测器(如SSD、YOLOv2/v3/v4/v5...)奠定了坚实的基础。

2、YOLOv2

论文核心思想梳理

第一部分: 更好 (Better) - 如何改进YOLOv1得到YOLOv2

作者针对YOLOv1在定位精度低和召回率(Recall)不高的问题,集成了一系列当时最先进的技术,对模型进行了全方位的改进,最终诞生了YOLOv2。这些改进措施是循序渐进的,每一步都带来了性能提升:

  1. 批量归一化 (Batch Normalization)

    • 在所有卷积层后加入BN层。这极大地改善了收敛性,起到了正则化作用,甚至可以不再使用Dropout。mAP提升了 2%

  2. 高分辨率分类器 (High Resolution Classifier)

    • YOLOv1先用224x224的图像预训练分类网络,然后直接切换到448x448的图像进行检测训练,这让网络需要同时适应新任务和新分辨率。

    • YOLOv2改进了这一点:先用224x224的图像预训练,然后在448x448的高分辨率图像上对分类网络进行微调(fine-tune),最后再用于检测训练。这让网络有时间适应高分辨率输入。mAP提升了 4%

  3. 引入锚框 (Anchor Boxes)

    • 这是最核心的改变之一。YOLOv1直接预测边界框的坐标,而YOLOv2借鉴了Faster R-CNN的思想,引入了锚框(Anchor Box)机制。

    • 它不再使用全连接层来预测坐标,而是让卷积层输出的特征图(feature map)的每个位置都预测一组锚框的偏移量。

    • 好处:显著提高了召回率(从81%提升到88%),虽然mAP略有下降,但为后续的精度提升留下了巨大空间。

  4. 维度聚类 (Dimension Clusters)

    • Faster R-CNN中的锚框尺寸是手动挑选的,不一定最优。

    • YOLOv2创新地使用 k-means聚类 算法在训练集的标注框(ground truth boxes)上进行聚类,自动找出最适合数据集的锚框尺寸和比例。

    • 注意:这里的距离度量不是欧氏距离,而是 d = 1 - IOU(box, centroid),这使得聚类结果与检测任务的目标(提高IOU)更相关。

  5. 直接位置预测 (Direct Location Prediction)

    • 作者发现,直接使用锚框预测偏移量会导致模型在训练早期不稳定。

    • YOLOv2对位置预测进行了约束:通过一个sigmoid函数将预测的中心点坐标限制在当前网格单元(grid cell)内部,使得模型学习更稳定,也更容易。这个小改动让mAP提升了 5%

  6. 细粒度特征 (Fine-Grained Features)

    • YOLO的最终特征图尺寸较小(如13x13),不利于检测小物体。

    • YOLOv2引入了一个“穿梭层”(Passthrough Layer),将前面某个更高分辨率的特征图(如26x26)直接拼接到后面的低分辨率特征图上,从而融合了多尺度的信息,有助于检测小物体。mAP提升了 1%

  7. 多尺度训练 (Multi-Scale Training)

    • 由于网络是全卷积的,可以接受任意尺寸的输入。

    • YOLOv2在训练时,每隔几个批次(batches)就随机改变输入图像的尺寸(如从320x320到608x608)。这迫使网络学会在不同分辨率下都能做出良好预测,增强了模型的鲁棒性,并允许在测试时根据速度和精度的需求选择不同的输入尺寸。

经过上述一系列改进,YOLOv2 在PASCAL VOC和COCO等标准数据集上,达到了当时的顶尖水平(state-of-the-art),同时保持了极高的检测速度。

第二部分: 更快 (Faster) - 新的网络架构 Darknet-19

为了追求极致的速度与效率,作者没有使用当时流行的VGG或ResNet,而是设计了一个全新的轻量级骨干网络 Darknet-19

  • 它包含19个卷积层和5个最大池化层。

  • 设计上借鉴了VGG(大量使用3x3卷积)和Network in Network(使用1x1卷积压缩特征和全局平均池化)的思想。

  • 相比VGG-16,Darknet-19的计算量(FLOPs)大幅降低,速度更快,但分类精度依然很高。

第三部分: 更强 (Stronger) - YOLO9000的联合训练

这是本文最具前瞻性和创新性的部分,目标是让检测器能识别的物体类别从几十、几百个扩展到上千甚至上万个。

  • 面临的挑战:物体检测数据集(如COCO)虽然有精确的边界框标注,但类别很少(几十类)。而图像分类数据集(如ImageNet)类别极多(上万类),但只有图像级别的标签,没有边界框。

  • 解决方案:联合训练 (Joint Training) + WordTree

    1. WordTree:作者利用 WordNet(一个语言数据库,描述了词语间的层级关系,如同义词、上下位词等),构建了一个名为 WordTree 的层级结构。这棵树将所有类别(比如COCO的"dog"和ImageNet的"Norfolk terrier")组织在一个统一的语义结构中。这样就解决了不同数据集标签不兼容的问题。

    2. 联合训练:在训练时,将COCO(检测数据)和ImageNet(分类数据)混合在一起。

      • 当输入是 COCO图像 时,网络进行完整的反向传播,学习定位、置信度和分类。

      • 当输入是 ImageNet图像 时,网络只进行 分类损失 的反向传播。它不学习定位,因为没有边界框真值。这是一种 弱监督学习

  • 最终效果 (YOLO9000):通过这种方式,YOLO9000 从COCO数据中学到了如何“定位物体”(即泛化的“物体性”objectness),同时从ImageNet数据中学到了海量的物体类别。最终,它能够为ImageNet中的 9000多个 类别预测出边界框,即使它从未见过这些类别的边界框标注!

总结

  • YOLOv2 是一个集大成者,通过一系列扎实有效的工程和算法改进,打造出了一款在速度和精度上都达到顶尖水平的实时物体检测器。

  • YOLO9000 则是一个思想上的飞跃,它通过构建WordTree和进行联合训练,开创性地提出了一种扩展物体检测词汇量的方法,为大规模物体检测指明了方向,真正做到了“更强”。

3、YOLOv3

核心思想

YOLOv3的核心在于“渐进式改良”。作者整合了当时一些优秀的设计思想(如残差网络、特征金字塔),对YOLO架构进行了多方面的优化,旨在提升检测精度,特别是对小物体的检测能力,同时保持高速的特性。

关键技术改进

  1. 全新的骨干网络:Darknet-53

    • YOLOv2使用的是Darknet-19,而YOLOv3设计了一个更深、更强大的骨干网络——Darknet-53。

    • 它由53个卷积层构成,并大量借鉴了ResNet(残差网络)的思想,引入了残差连接(shortcut connections)。这使得网络可以构建得非常深,同时有效避免了梯度消失问题,显著增强了特征提取能力。

    • 论文中的数据显示,Darknet-53在精度上媲美ResNet-101,但速度要快1.5倍,计算效率更高。

  2. 多尺度预测 (Predictions Across Scales)

    • 这是YOLOv3最重要的改进之一,直接解决了之前版本对小物体检测效果不佳的痛点。

    • 它借鉴了FPN(Feature Pyramid Networks)的思想,在3个不同尺度的特征图上进行预测。具体来说,它会在下采样32倍、16倍和8倍的特征图上分别进行检测。

    • 大尺度特征图(如8倍下采样)拥有更高的分辨率和更丰富的细节信息,非常适合检测小物体

    • 小尺度特征图(如32倍下采样)拥有更强的语义信息,适合检测大物体

  3. 改进的分类方式:独立的逻辑分类器

    • 之前的YOLO版本在预测类别时,对每个边界框使用一个Softmax函数,这意味着每个框只能被赋予一个类别。

    • YOLOv3改用了多个独立的逻辑回归分类器(Logistic Classifiers)。对于每个边界框,它会为每一个类别都进行一次二分类预测(是/不是该类别)。

    • 这种改变使得模型能够处理多标签分类问题。例如,一个物体可以同时被标记为“女人”和“人”,这在一些复杂的数据集(如Open Images)中非常有用。

  4. 边界框预测

    • 继续沿用YOLOv2中的思想,使用k-means聚类得到的9个锚框(Anchor Boxes),并将它们分配到3个不同的预测尺度上(每个尺度3个)。

    • 预测输出仍然是4个坐标值(tx, ty, tw, th),但其解码方式与之前类似,通过sigmoid函数将中心点偏移量限制在0到1之间,稳定了训练过程。

性能表现

  • 速度与精度的平衡:YOLOv3在保持极高速度的同时,大幅提升了精度。在COCO数据集上,它的精度(mAP)与当时的SSD相当,但速度快3倍。

  • AP50指标优异:在IoU阈值为0.5时(AP50),YOLOv3的性能非常强大,与更复杂的RetinaNet相当,但速度快了近4倍。

  • 高IoU精度不足:论文也坦诚指出,随着IoU阈值的提高,YOLOv3的性能下降较快,说明其边界框的定位精准度还有待提升。

总结

  • YOLOv3 是一个里程碑,它通过引入多尺度预测更强的骨干网络,极大地提升了YOLO系列的检测精度,使其成为一个在工业界和学术界都广受欢迎的实时检测器基准。

4、YOLOv4

YOLOv4由Alexey Bochkovskiy等人发表,其论文风格非常学术和严谨。他们没有提出全新的革命性概念,而是对当时目标检测领域的各种先进技术进行了一次大规模的“实验筛选”和“整合优化”,目标是设计一个在单个消费级GPU上就能高效训练和推理的最优检测器。

核心思想

YOLOv4的核心是**“系统性集成优化”**。作者将提升检测器性能的技术分为两大类,并系统地测试它们的组合效果,以找到最佳的搭配。

  • Bag of Freebies (BoF, 无额外成本的百宝袋):指那些只在训练阶段使用,能提升模型精度但不增加推理耗时的技术。例如:数据增强、正则化方法、损失函数设计等。

  • Bag of Specials (BoS, 有少量成本的百宝袋):指那些在推理时会带来少量计算成本,但能显著提升模型精度的插件模块或后处理方法。例如:注意力模块、特征融合模块等。

关键技术改进

  1. 最优的架构选择:CSPDarknet53 + SPP + PANet

    • 骨干网络 (Backbone)CSPDarknet53。它在YOLOv3的Darknet-53基础上,引入了CSPNet(Cross Stage Partial Network)结构。CSPNet能增强CNN的学习能力,同时减少计算瓶颈和内存成本。

    • 颈部 (Neck):用于特征融合,组合了两种强大的模块:

      • SPP (Spatial Pyramid Pooling):在主干网络的顶端增加SPP模块,通过不同尺度的最大池化操作,极大地增加了感受野,能分离出最重要的上下文特征。

      • PANet (Path Aggregation Network):取代了YOLOv3中简单的FPN结构。PANet在FPN自顶向下的基础上,增加了一条自底向上的路径,使得底层特征和高层特征能更充分地融合。

    • 头部 (Head):沿用了YOLOv3的检测头(anchor-based)。

  2. “百宝袋”技术的应用

    • Bag of Freebies (BoF) 的选择:

      • 数据增强: 采用了Mosaic(将4张图片拼接成一张进行训练,极大地丰富了背景和上下文)和自对抗训练 (SAT)

      • 损失函数: 使用了CIoU-loss,它在IoU-loss的基础上,额外考虑了中心点距离和长宽比,使得边界框回归更稳定、更精确。

      • 其他: 类别标签平滑 (Class label smoothing)、CmBN等。

    • Bag of Specials (BoS) 的选择:

      • 激活函数: 使用了Mish激活函数,它比ReLU在深层网络中表现更好,更平滑。

      • 注意力机制: 引入了修改版的SAM(Spatial Attention Module)。

      • 后处理: 使用了DIoU-NMS,在非极大值抑制(NMS)过程中考虑了中心点距离,提高了对遮挡物体的处理能力。

性能表现

  • 全面超越YOLOv3:在COCO数据集上,YOLOv4实现了43.5% AP (65.7% AP50) 的精度,在Tesla V100上速度达到约65 FPS。相比YOLOv3,AP提升了10%,FPS提升了12%

  • 新的SOTA(State-of-the-art):在速度和精度上均优于当时其他的实时检测器,如EfficientDet等,达到了一个新的最优平衡点。

  • 易于训练和部署:YOLOv4的设计目标之一就是让用户在单个GPU(如1080Ti / 2080Ti)上就能复现其结果,大大降低了使用门槛。

总结

  • YOLOv4 则更像是一部**“集大成之作”**。它没有发明全新的网络结构,而是站在YOLOv3的肩膀上,通过严谨的实验,将当时几乎所有被证明有效的技术(如CSPNet, PANet, SPP, Mish, Mosaic, CIoU等)巧妙地组合在一起,创造出了一个速度更快、精度更高的“怪兽级”实时检测器。它为后续的目标检测器研究提供了一套非常宝贵的“最佳实践”方案。

5、YOLOv6

论文核心思想

论文的核心目标是打造一个在工业界实际部署场景中,能够在速度和精度之间取得极致平衡的目标检测器。它并非简单地堆砌最新的技术,而是系统性地评估、筛选并整合了近年来网络设计、训练策略、损失函数和量化部署等方面的先进成果,并针对工业应用中常见的硬件(如NVIDIA T4 GPU)进行了深度优化。

主要贡献 (Key Contributions)

  1. 硬件感知的网络设计:针对不同规模的模型,设计了不同的网络结构。

    • 小模型 (YOLOv6-N/S/T):采用基于重参数化(RepVGG-style)思想的 EfficientRep 骨干网络,在推理时为单路结构,速度极快。

    • 大模型 (YOLOv6-M/L):为了避免参数量爆炸,设计了更高效的 CSPStackRep 模块来构建骨干网络,在保持多分支结构优势的同时控制了计算成本。

  2. 前沿检测技术的验证与采纳:对近年来的主流技术进行了大量实验,最终选择了最优组合。

    • 标签分配:采用了 TAL (Task Alignment Learning) 策略,比 SimOTA 更稳定且效果更好。

    • 损失函数:分类损失选用 VFL (VariFocal Loss),回归损失在小模型上用 SIoU Loss,大模型上用 GIoU Loss

  3. 面向工业部署的实用性改进:引入了不增加推理成本却能显著提升性能的策略。

    • 自蒸馏 (Self-distillation):让预训练好的模型自己作为教师模型来指导学生模型(即自身)的训练,同时对分类和回归任务进行蒸馏。

    • 解决灰边问题:在评估时,传统方法会添加灰边以检测边缘物体,但这会降低推理速度。YOLOv6提出了一种训练策略(在训练后期关闭Mosaic增广,并调整图像尺寸),使得模型在不加灰边的情况下也能保持甚至提升精度,从而获得更快的实际部署速度。

  4. 专为重参数化模型设计的量化方案:解决了重参数化结构难以量化的问题,提供了开箱即用的高性能量化模型。

    • PTQ (训练后量化):使用 RepOptimizer 进行训练,使得模型的权重分布对量化更友好,大幅提升了PTQ的性能。

    • QAT (量化感知训练):在RepOptimizer的基础上,结合 通道级蒸馏 (Channel-wise Distillation),进一步恢复量化带来的精度损失,实现了SOTA级别的量化性能。

方法详解 (Methodology)

1. 网络设计 (Network Design)

  • 骨干网络 (Backbone)

    • 核心思想是重参数化:训练时采用多分支结构(如1x1卷积、3x3卷积、恒等映射),增强模型的表征能力;推理时,这些分支可以等效地融合成一个单独的3x3卷积层。这样就兼顾了训练时的性能和推理时的速度。

    • 小模型使用 RepBlock,推理时是纯粹的单路3x3卷积堆叠,对硬件非常友好。

    • 大模型使用 CSPStackRep Block,结合了CSP(跨阶段局部连接)的思想,更高效地利用特征。

  • 颈部 (Neck)

    • 沿用了YOLOv4/v5中的 PAN 拓扑结构,用于融合多尺度特征。

    • 将PAN中的标准卷积块替换为YOLOv6自己设计的 RepBlock 或 CSPStackRep Block,构成了 Rep-PAN

  • 头部 (Head)

    • 设计了 Efficient Decoupled Head(高效解耦头)。与YOLOX类似,将分类和回归任务的预测头分开。

    • 但YOLOv6对其进行了简化,减少了中间的卷积层数量,并采用混合通道策略,进一步降低了计算开销和推理延迟。

    • 这是一个Anchor-Free的检测头。

2. 标签分配与损失函数 (Label Assignment & Loss)

  • 标签分配:通过实验对比,发现 TAL 能够比ATSS和SimOTA带来更稳定、更高的性能提升,因此作为默认策略。

  • 损失函数

    • 分类损失VariFocal Loss,因为它能非对称地处理正负样本,平衡学习信号。

    • 回归损失

      • 小模型(N/T)上,SIoU Loss 表现更优。

      • 大模型(M/L)上,GIoU Loss 效果更好,并结合 DFL (Distribution Focal Loss) 来学习边界框的概率分布,进一步提升定位精度。DFL因计算开销较大,未在小模型上使用。

    • 目标性损失 (Object Loss):实验发现引入该损失项反而会损害性能,因此被舍弃。

3. 量化与部署 (Quantization & Deployment)

这是YOLOv6的一大亮点,因为它解决了业界难题。

  • 问题:重参数化模型在PTQ后性能会大幅下降,因为其激活值分布范围很广,不利于低比特量化。

  • 解决方案

    1. 使用 RepOptimizer 训练:这是一种特殊的优化器,它在训练过程中模拟了重参数化的过程,使得最终融合后的模型权重对量化非常友好,激活值分布更集中。这使得PTQ性能得到巨大提升

    2. QAT + 通道级蒸馏:对于追求极致性能的场景,在RepOptimizer训练的基础上进行QAT。同时,让INT8的量化模型(学生)学习FP32全精度模型(教师)每个通道的输出特征,这种通道级蒸馏能非常有效地恢复精度。

实验结果

  • 性能对比:在NVIDIA T4 GPU上,YOLOv6的各个版本在同等规模的检测器中都展现了最佳的速度-精度权衡。

    • YOLOv6-N:在COCO数据集上达到 35.9% AP,推理速度高达 1234 FPS,远超YOLOv5-N和YOLOX-Tiny。

    • YOLOv6-S:达到 43.5% AP,速度为 495 FPS,优于YOLOv5-S、YOLOX-S等。

    • YOLOv6-M/L:同样在相似速度下,精度显著高于YOLOv5-M/L和YOLOX-M/L。

  • 量化性能

    • 经过YOLOv6的QAT策略优化后,YOLOv6-S的量化模型精度几乎无损(43.3% AP),而吞吐量飙升至 869 FPS(batch size=32),速度极快,非常适合工业部署。

总结

YOLOv6不仅仅是YOLO系列的又一个版本,它是一个从设计、训练到部署都为工业应用深度定制的完整框架。它通过硬件感知的可伸缩网络设计,系统性地应用前沿算法,并首创性地解决了重参数化模型的量化难题,最终产出了一系列在真实部署环境中具有顶级速度和精度表现的检测器。它的开源代码和部署友好的特性,使其成为工业界一个非常有价值的选择。

6、YOLOv7

这篇论文的核心在于,它不仅仅是提出了一个更快的网络架构,更重要的是,它深入研究了在不增加推理成本的前提下,如何通过优化训练过程来提升模型性能。作者将这些只增加训练成本但能提升精度的优化方法称为“可训练的免费午餐袋”(Trainable bag-of-freebies)。

论文核心思想与主要贡献

YOLOv7旨在设计一个在速度和精度上都达到顶尖水平的实时目标检测器。它通过对模型架构、模型缩放和训练策略进行一系列创新,实现了这一目标。

主要贡献可以概括为以下几点:

  1. 架构设计创新:提出了扩展的高效层聚合网络(Extended Efficient Layer Aggregation Networks, E-ELAN),在不破坏原始梯度路径的情况下,增强了网络的学习能力。

  2. 模型缩放优化:为基于级联(concatenation-based)的模型设计了复合模型缩放方法,可以在缩放模型的同时保持其最优结构。

  3. 关键的“可训练免费午餐袋”

    • 计划中的重参数化模型:分析了重参数化模块在不同架构中的适用性,并提出了相应的集成策略。

    • 新颖的标签分配策略:针对带有辅助头的深度监督训练,提出了“由粗到精”(Coarse-to-fine)的引导式标签分配方法。

  4. 卓越的性能:在MS COCO数据集上,YOLOv7在5 FPS到160 FPS的速度范围内,其速度和精度都超过了当时所有已知的目标检测器,成为新的技术标杆(State-of-the-art, SOTA)。


技术细节详解

1. 架构创新:E-ELAN

  • 背景:当时的网络设计(如ELAN)发现,通过控制最长和最短的梯度路径,可以让更深的网络有效学习和收敛。但如果无限堆叠计算模块,这种稳定状态会被破坏,参数利用率会下降。

  • YOLOv7的解决方案 (E-ELAN)

    • 核心思想:在不改变原始梯度路径的前提下,通过**群卷积(Group Convolution)**来扩展计算块的通道和基数(cardinality)。

    • 具体操作:它将特征图分割成多个组,然后通过“扩展、洗牌、合并基数”(expand, shuffle, merge cardinality)的策略,引导不同组的计算块学习更多样化的特征。

    • 优势:这种方法提升了网络的特征学习能力,同时保持了原始ELAN架构的稳定收敛特性。

2. 针对级联模型的复合缩放方法

  • 问题:传统的模型缩放方法(如EfficientNet)通常独立地调整模型的深度(层数)、宽度(通道数)和分辨率。但这种方法不适用于像YOLOv7这样基于级联的架构(其模块输出是拼接在一起的)。当只缩放计算块的深度时,其输出通道数会发生变化,导致后续层的输入宽度不匹配,从而破坏了模型结构。

  • YOLOv7的解决方案

    • 复合缩放(Compound Scaling):提出了一种协同缩放策略。当对计算块进行深度缩放时,同时对紧随其后的过渡层(transition layer)进行相应的宽度缩放

    • 优势:这种方法可以确保模型在缩放过程中,各层之间的输入输出维度始终保持协调,从而维持模型的最佳结构和计算效率。

3. 可训练的免费午餐袋 (Trainable Bag-of-Freebies)

这是YOLOv7最核心的创新理念,下面是两个关键技术:

  • 背景:模型重参数化技术(如RepConv)通过在训练时使用复杂的结构(如多个分支),而在推理时将其融合成一个简单的结构(如单个卷积),从而在不增加推理成本的情况下提升性能。

  • 发现的问题:直接将RepConv应用到所有架构中效果并不好。例如,在ResNet这样的残差结构中,RepConv中的**恒等连接(identity connection)**会破坏残差块的特性。

  • YOLOv7的解决方案

    • “计划”地使用:作者通过梯度传播路径分析发现,在具有残差连接或级联连接的层中,不应该使用带有恒等连接的RepConv。

    • 提出RepConvN:他们设计了没有恒等连接的RepConvN,专门用于替换这些特殊位置的卷积层。

    • 优势:这种“计划”使得重参数化技术能够成功地应用于更广泛的架构中,并获得稳定的性能提升。

  • 背景:现代检测器通常使用深度监督,即在网络的中间层增加额外的辅助头(auxiliary head)来辅助训练,而最终的输出头被称为主头(lead head)

  • 问题:如何为主头和辅助头分配训练标签?传统方法是让它们独立地根据自己的预测结果和真值来分配标签。

  • YOLOv7的解决方案

    1. 主头引导:由于主头的学习能力更强,它的预测结果更可靠。因此,用主头的预测结果和真值来共同计算标签(soft label),然后用这套标签同时指导主头和辅助头的训练。

    2. 由粗到精:考虑到辅助头的学习能力较弱,如果强迫它学习和主头一样“精细”的标签会很困难。因此,作者为主头和辅助头生成了两套不同的标签:

      • 精细标签 (Fine Label):为主头生成,与传统方法类似,要求预测框和真值高度重合。

      • 粗糙标签 (Coarse Label):为辅助头生成,通过放宽正样本的分配约束(例如,允许更多网格作为正样本),让辅助头能够学习到更多的目标信息,侧重于提高召回率

    • 优势:这种策略让不同能力的头各司其职。辅助头负责学习“粗略”但全面的信息,防止主头遗忘需要学习的知识;而主头则在辅助头提供的基础上,学习更“精细”和准确的预测,从而整体上提升了模型的检测精度。


实验结果

  • 性能对比:论文中的图1和表2清晰地展示了YOLOv7的优越性。在V100 GPU上,YOLOv7(36.9M参数)在达到51.2% AP时,速度高达118 FPS,远超同等精度下的YOLOR(106 FPS)和YOLOX(102 FPS)。其大模型YOLOv7-E6E在56.8% AP时,速度仍有35 FPS,是当时30 FPS以上实时检测器中精度最高的。

  • 消融实验:论文通过大量的消融实验,证明了上述每一项创新(E-ELAN、复合缩放、计划性重参数化、由粗到精标签分配)都对最终性能有显著贡献。

总结

YOLOv7不仅仅是YOLO系列的一次常规升级,它更是一篇关于如何平衡和优化目标检测器训练与推理的深度研究。它提出的“可训练免费午餐袋”概念,以及围绕此概念设计的各种精巧的训练策略,为后续的实时目标检测研究提供了宝贵的思路。它证明了,除了设计更高效的网络架构外,优化训练过程本身也是一条通往更高性能的康庄大道。

7、YOLOv9

核心思想/一句话总结

本文针对深度神经网络中普遍存在的信息丢失(即“信息瓶颈”)问题,导致梯度不可靠从而影响模型训练效果的痛点,提出了两大创新:可编程梯度信息(PGI) 和 通用高效层聚合网络(GELAN)。通过这两项技术,YOLOv9能够在训练时为模型提供完整、可靠的梯度信息,同时设计出一种更高效的网络架构,最终在目标检测任务上实现了从轻量级到大型模型的全面性能超越。

主要贡献

  1. 理论分析与创新:从可逆函数和信息瓶颈的视角,深入分析了现有深度网络架构,并解释了许多过去难以解释的现象。基于此,设计了可编程梯度信息(PGI) 和其辅助可逆分支,取得了优异成果。

  2. 解决深度监督的局限性:设计的PGI解决了传统深度监督机制只适用于超深层网络的问题,使得轻量级网络也能从中受益,真正应用于日常生活中。

  3. 全新的高效网络架构GELAN:设计的GELAN仅使用常规卷积,就实现了比基于深度可分离卷积(depth-wise convolution)等先进技术更高的参数利用率,同时兼具轻量、快速和准确的优点。

  4. 性能的巨大飞跃:结合PGI和GELAN的YOLOv9,在MS COCO数据集上的目标检测性能全面超越了所有现有的实时目标检测器

背景与问题 (Motivation)

  • 信息瓶颈 (Information Bottleneck):在深度神经网络中,输入数据在经过一层又一层的特征提取和空间变换后,会不可避免地丢失一部分信息。网络越深,信息丢失越严重。

  • 不可靠的梯度 (Unreliable Gradients):模型是根据最终的输出和真实标签之间的差异(损失)来计算梯度,并以此更新网络权重的。如果前向传播过程中丢失了关键信息,那么计算出的损失就是基于不完整信息得到的,这会导致梯度产生偏差,从而误导模型的学习方向,使其难以收敛或收敛到次优解。

  • 现有方法的局限性

    • 可逆架构 (Reversible Architectures):虽然能保留信息,但通常需要额外的计算层,导致推理速度变慢。

    • 掩码建模 (Masked Modeling):其重建损失有时会与主要任务的目标损失相冲突。

    • 深度监督 (Deep Supervision):在浅层网络或小模型上容易导致“错误累积”,性能甚至可能下降。

核心方法详解

1. 可编程梯度信息 (Programmable Gradient Information - PGI)

PGI是本文最大的理论创新,是一种全新的辅助监督框架,旨在解决信息瓶颈问题,为模型提供可靠的梯度。它主要由三部分构成(参见论文图3(d)):

  1. 主分支 (Main Branch):这是模型在推理时实际使用的部分,负责进行最终的预测。

  2. 辅助可逆分支 (Auxiliary Reversible Branch)

    • 目的:解决信息丢失问题。这个分支被设计成一个可逆的结构,确保从输入到深层特征的信息能够被完整保留。

    • 作用:在训练时,这个分支会生成一个基于完整信息的损失,并产生可靠的梯度。这些可靠的梯度会反向传播,“指导”主分支的参数更新,帮助主分支学习到如何提取对目标任务真正重要的特征,即使主分支本身在前向传播时已经丢失了部分信息。

    • 优势:该分支只在训练时存在,在推理时会被完全移除。因此,它不会增加任何推理成本,却能显著提升模型的训练效果和最终精度。

  3. 多级辅助信息 (Multi-level Auxiliary Information)

    • 目的:解决深度监督带来的“信息破碎”问题。在目标检测中,不同深度的特征图负责检测不同大小的物体。传统的深度监督可能会让浅层特征只关注小物体,而忽略大物体,导致深层特征丢失预测大物体所需的信息。

    • 作用:通过一个集成网络,将来自不同预测头的梯度信息进行聚合,确保主分支的每一层特征图都能接收到关于所有目标的完整梯度信息,从而学习到对各种大小物体都有效的特征。

简单来说,PGI就像在训练时给主网络请了一位“全知全能”的“辅导老师”(辅助可逆分支),这位老师能看到全部原始信息,并告诉主网络应该如何学习,学完之后(推理时)老师就离开了。

2. 通用高效层聚合网络 (Generalized ELAN - GELAN)

GELAN是一种全新的网络架构,它基于梯度路径规划的思想,结合了CSPNet(由YOLOv4作者提出)和ELAN(由YOLOv7作者提出)的优点。

  • 泛化与灵活性:它将ELAN原本只能堆叠卷积层的设计,扩展为可以支持任何计算块(如ResNet块、CSP块等)。这使得GELAN非常灵活,可以根据不同的硬件和任务需求进行定制。

  • 高效性:GELAN在设计上充分考虑了参数量、计算复杂度、推理速度和精度的平衡。实验证明,使用CSP块的GELAN(即CSP-ELAN)在减少参数和计算量的同时,还能提升模型精度。

  • 稳定性:GELAN对网络的深度不敏感,这意味着用户可以自由组合其内部组件来设计模型,而不用担心性能出现剧烈波动,大大降低了网络设计的难度。

实验结果

  • 性能对比 (见论文图1和表1)

    • 在MS COCO数据集上,YOLOv9在所有模型尺寸(S, M, C, E)上都显著优于之前的SOTA(State-of-the-art)模型,如YOLOv8、YOLOv7、RT-DETR等。

    • YOLOv9-C vs YOLOv7 AF:在精度相同(53.0% AP)的情况下,参数量减少了42%,计算量(FLOPs)减少了22%。

    • YOLOv9-E vs YOLOv8-X:参数量减少16%,计算量减少27%,但AP反而提升了1.7%(从53.9%到55.6%)。

    • 超越预训练模型:最惊人的是,YOLOv9从零开始训练(train-from-scratch),其性能就超过了那些使用ImageNet等大规模数据集进行预训练的SOTA模型(如RT-DETR-X)。这证明了PGI提供的可靠梯度信息,使得模型不再那么依赖预训练权重。

  • 消融实验

    • 证明了GELAN架构的有效性,尤其是使用CSP块时效果最好。

    • 证明了PGI的普适性。与传统深度监督不同,PGI在从小到大的所有模型上都能带来稳定的性能提升。

  • 可视化结果

    • 特征图可视化(图2、图6)显示,GELAN相比PlainNet、ResNet等架构,能在更深的网络层中保持更完整、更清晰的物体信息。

    • 训练过程可视化(图7)显示,加入PGI后,模型能更准确地聚焦于目标区域,而没有PGI的模型则会出现发散和对背景的错误响应。

结论

YOLOv9通过PGI从根本上解决了深度学习中因信息丢失而导致的梯度问题,通过GELAN设计了一个极为高效和灵活的网络架构。这两个核心创新使得YOLOv9不仅在性能上树立了新的标杆,而且打破了对大规模预训练的依赖,为未来高效目标检测器的研究和应用开辟了新的道路。

8、YOLOv10

这篇论文旨在解决现有YOLO系列模型的两个核心痛点,从而在实时物体检测领域树立新的性能标杆。

论文核心思想

传统的YOLO模型虽然在速度和精度之间取得了很好的平衡,但仍然存在两个主要问题:

  1. 依赖NMS后处理:YOLO系列通常采用“一对多”(one-to-many)的标签分配策略,即一个真实物体框会分配给多个正样本进行训练。这虽然能提供丰富的监督信号,但也导致推理时会产生大量冗余的预测框,必须依赖非极大值抑制(NMS)来筛选。NMS不仅增加了计算延迟,还使其难以实现真正的“端到端”部署。

  2. 模型架构存在冗余:YOLO模型的各个组件(如主干网络、颈部、头部)在设计上缺乏全面和彻底的审视,导致了计算上的冗余和参数利用率不高,限制了模型的性能潜力。

针对以上两点,YOLOv10提出了两大核心创新:

  1. 提出一种用于无NMS训练的一致性双重分配策略(Consistent Dual Assignments),实现了高效的端到端检测。

  2. 提出一种全面的效率-精度驱动的模型设计策略(Holistic Efficiency-Accuracy Driven Model Design),从架构层面优化模型的效率和能力。

最终,作者基于这些创新推出了新一代的YOLO模型——YOLOv10


两大核心贡献详解

1. 一致性双重分配策略 (Consistent Dual Assignments for NMS-free Training)

为了摆脱对NMS的依赖,实现端到端检测,作者设计了一种巧妙的训练策略。

  • 双重标签分配 (Dual Label Assignments)

    • 在训练时,模型同时拥有两个检测头:一个是传统的**“一对多”(one-to-many)头,另一个是“一对一”(one-to-one)**头。

    • “一对多”头提供丰富的监督信号,帮助主干网络和颈部学习到更强大的特征表示。

    • “一对一”头则确保每个真实物体只匹配一个最佳的预测框,其目标是产生简洁、无冗余的预测。

    • 训练阶段,两个头共同参与优化,模型能同时享受到两种分配策略的优点。

    • 推理阶段,“一对多”头被完全丢弃,只使用“一对一”头进行预测。这样一来,模型自然就输出了稀疏的预测结果,无需NMS后处理,大大降低了延迟。

  • 一致性匹配度量 (Consistent Matching Metric)

    • 仅仅使用两个头还不够,因为它们的优化目标可能不一致,导致“一对一”头训练不充分。

    • 为了解决这个问题,作者提出让两个头的正样本匹配度量标准保持一致。简单来说,就是确保对于“一对多”头来说是“最佳”的正样本,对于“一对一”头来说同样也是“最佳”的。

    • 通过这种方式,两个头的监督信息实现了和谐统一,使得“一对一”头能够得到更有效的优化,从而在推理时获得更高的性能。

这一策略的优势在于,它在不增加任何推理成本的情况下,实现了端到端检测,同时保持了强大的性能。

2. 全面的效率-精度驱动的模型设计 (Holistic Efficiency-Accuracy Driven Model Design)

作者对YOLO的整体架构进行了从效率和精度两个维度的全面优化。

A. 效率驱动的设计 (Efficiency-driven Design) - 减少计算开销

  1. 轻量化分类头 (Lightweight Classification Head)

    • 分析发现,分类头的计算成本(FLOPs和参数量)远高于回归头,但对最终性能的影响却小于回归头。

    • 因此,作者为分类头设计了一个更轻量的结构(使用深度可分离卷积),在不牺牲性能的前提下,显著降低了计算开销。

  2. 空间-通道解耦下采样 (Spatial-Channel Decoupled Downsampling)

    • 传统的下采样操作(如步长为2的3x3卷积)同时进行空间尺寸缩小和通道数增加,计算成本高。

    • YOLOv10将其解耦:先用1x1卷积调整通道,再用3x3深度卷积进行空间下采样。这种设计更高效,同时能更好地保留信息。

  3. 秩引导的块设计 (Rank-guided Block Design)

    • 作者通过分析模型各阶段的“内在秩”(intrinsic rank),发现深层网络和大型模型中存在更多的计算冗余。

    • 基于此,他们提出了一种自适应的块设计策略:对于那些冗余度高的阶段,使用一个更紧凑、更高效的基础模块(Compact Inverted Block, CIB),而不是“一刀切”地使用同一种模块。这使得模型在保持性能的同时,变得更加高效。

B. 精度驱动的设计 (Accuracy-driven Design) - 以低成本提升性能

  1. 大核卷积 (Large-kernel Convolution)

    • 在模型的深层阶段,使用大核(如7x7)的深度卷积来增大感受野,增强模型的能力。

    • 这种设计主要用于小型模型,因为大型模型的感受野本身就足够大,使用大核带来的收益会减小。

  2. 部分自注意力模块 (Partial Self-Attention, PSA)

    • 自注意力机制虽然强大,但计算复杂度高。

    • 作者提出PSA模块:将特征图沿通道维度分成两部分,只对其中一部分应用自注意力,另一部分保持不变,最后再将两部分拼接起来。

    • 这种设计以极小的计算成本引入了全局表征学习能力,有效提升了模型的性能。同时,它只被放置在分辨率最低的最后一个阶段,以最大程度地减少开销。


实验结果

YOLOv10在COCO数据集上取得了全面的领先,其性能-效率权衡曲线(Pareto Front)超越了所有先前的实时检测器。

  • 与SOTA模型对比

    • YOLOv10-S 在与 RT-DETR-R18 性能相似的情况下,速度快了 1.8倍,参数量和计算量也远小于后者。

    • YOLOv10-B 在与 YOLOv9-C 性能持平的情况下,延迟降低了 46%

    • 与YOLOv8相比,YOLOv10的同等规模模型在AP(精度)上普遍有提升,同时参数量和计算量显著减少,延迟也大幅降低(例如,YOLOv10-N相比YOLOv8-N,延迟降低了70%)。

  • 端到端性能

    • 通过无NMS设计,YOLOv10-S的端到端延迟从基线的7.07ms骤降至2.49ms,展现了端到端设计的巨大优势。

  • 模型设计有效性

    • 消融实验证明,论文提出的每一项改进(轻量化头、解耦下采样、秩引导、大核、PSA等)都对最终的性能和效率提升做出了贡献。

结论

YOLOv10通过两大创新——一致性双重分配策略全面的效率-精度驱动模型设计,成功地解决了YOLO系列长期存在的NMS依赖和架构冗余问题。它不仅实现了真正的端到端实时物体检测,还在速度和精度上都达到了新的SOTA水平,为实时检测领域的发展提供了重要的思路和强大的基线模型。


文章转载自:

http://GVxxfuOw.rfpxq.cn
http://4FQxECFi.rfpxq.cn
http://PbEaPjX9.rfpxq.cn
http://PoO4wlPT.rfpxq.cn
http://BmA6tr8c.rfpxq.cn
http://8OuDdVWG.rfpxq.cn
http://RoQWz8uV.rfpxq.cn
http://HC8GgT1a.rfpxq.cn
http://R8HK7m3E.rfpxq.cn
http://RaSClk47.rfpxq.cn
http://CF3rnuce.rfpxq.cn
http://2tIh93nr.rfpxq.cn
http://a7xbLwCg.rfpxq.cn
http://5wlyL19I.rfpxq.cn
http://YeRaNciF.rfpxq.cn
http://jkMSyr7i.rfpxq.cn
http://YJSc5Jid.rfpxq.cn
http://bw3xIG5q.rfpxq.cn
http://c6x1nS4a.rfpxq.cn
http://gdiWoVdR.rfpxq.cn
http://j8HVAR2I.rfpxq.cn
http://bQB89keH.rfpxq.cn
http://sYslP5KP.rfpxq.cn
http://fuva8Bp8.rfpxq.cn
http://vvro5e5f.rfpxq.cn
http://QDfm5RCq.rfpxq.cn
http://oSZwVkoA.rfpxq.cn
http://bdNkWJPd.rfpxq.cn
http://Jn5x3wCp.rfpxq.cn
http://16xjcBXe.rfpxq.cn
http://www.dtcms.com/a/374258.html

相关文章:

  • ARM内核知识概念
  • 图论相关经典题目练习及详解
  • 深圳比斯特|多维度分选:圆柱电池品质管控的自动化解决方案
  • MySQL 日志全解析:Binlog/Redo/Undo 等 5 类关键日志的配置、作用与最佳实践
  • 龙虎榜——20250908
  • 自噬机制解析(二):一文厘清 LC3/Atg8 概念及实验应用要点
  • java类加载过程
  • 20250908-02:运行第一个 LLM 调用程序
  • 基于A2A和ADK的内容规划代理
  • 电流源电路
  • 随机获取数组内任意元素
  • ESNP LAB 笔记:配置MPLS(Part4)
  • 发布工业智能体,云从科技打造制造业AI“运营大脑”
  • Flask 博客系统(Flask Blog System)
  • Qt_UI界面的设计
  • pycharm 最新版上一次编辑位置
  • 【Pywinauto库】1. 3 Inspect.exe 使用详解指南
  • 「日拱一码」083 深度学习——残差网络
  • 注意力模块改进方法的原理及实现(MHA、MQA、GQA、MLA)
  • 蚂蚁 S21 Pro 220T矿机参数详解:SHA-256算法高效算力分析
  • 大模型测试包含哪些方面
  • 基于R语言的物种气候生态位动态量化与分布特征模拟
  • NGUI--Anchor组件和 事件系统
  • 基于Django的“酒店推荐系统”设计与开发(源码+数据库+文档+PPT)
  • OpenLayers数据源集成 -- 章节一:图像图层详解
  • 深度学习架构的硬件共生论:为什么GPU决定了AI的进化方向(Transformer、SSM、Mamba、MoE、CNN是什么、对比表格)
  • AndroidWorld+mobileRL
  • langchain4j笔记篇(阳哥)
  • 精简删除WIN11.24H2企业版映像内的OneDrive安装程序方法,卸载OneDrive组件
  • spring指南学习随记(一)