赞
踩
专栏目录: YOLO有效改进系列及项目实战目录 包含卷积,主干 注意力,检测头等创新机制 以及 各种目标检测分割项目实战案例
专栏链接: YOLO基础解析+创新改进+实战案例
这是YOLO模型的第十个版本。YOLO在计算机视觉领域中一直是最重要的模型之一,YOLO是最早的视觉模型之一,并被应用于无数场景。每个版本的YOLO都引入了一些新的技巧,这些技巧不仅适用于YOLO本身,也适用于整个深度学习架构的设计。例如,YOLOv7深入研究了如何更好地进行数据增强,YOLOv9引入了可逆架构等等。那么,YOLOv10有什么新特点呢?YOLOv10 提高了推理速度,尽管取得了进步,但迄今为止,YOLO 仍然是一个相当沉重的模型,通常需要 GPU 。
近年来,YOLO模型由于其在计算成本和检测性能之间的有效平衡,已成为实时目标检测领域的主流范式。研究人员在YOLO的架构设计、优化目标、数据增强策略等方面进行了深入探索,取得了显著进展。然而,YOLO依赖于非极大值抑制(NMS)进行后处理,这限制了YOLO模型的端到端部署,并对推理延迟产生不利影响。此外,YOLO各组件的设计缺乏全面和深入的检验,导致明显的计算冗余,限制了模型的能力。这使得效率不尽如人意,且有很大的性能提升潜力。
所有的YOLO基本上都是由三部分组成的网络。Backbone, Neck, and Head
论文地址:https://arxiv.org/pdf/2405.14458
代码地址:https://github.com/THU-MIG/yolov10
YOLOv10 是清华大学研究人员在 UltralyticsPython 清华大学的研究人员在 YOLOv10软件包的基础上,引入了一种新的实时目标检测方法,解决了YOLO 以前版本在后处理和模型架构方面的不足。通过消除非最大抑制(NMS)和优化各种模型组件,YOLOv10 在显著降低计算开销的同时实现了最先进的性能。大量实验证明,YOLOv10 在多个模型尺度上实现了卓越的精度-延迟权衡。
YOLOv10 的结构建立在以前YOLO 模型的基础上,模型架构由以下部分组成:
YOLOv10 有多种模型,可满足不同的应用需求:
输入:一组候选的边界框 B,相应的置信度得分 S,以及重叠阈值 N。
输出:一组过滤后的候选 D。
算法:
YOLO 使用 IOU(交并比)指标来衡量两个候选框之间的重叠程度。
现在我们已经了解了 NMS(非极大值抑制),让我们看看 YOLOv10 是如何处理的。为每个检测到的目标计算 NMS 会增加相当大的开销,特别是在实时设置中。YOLOv10 完全移除了 NMS 的概念,这是第一个这样做的 YOLO 版本。
与一对多分配不同,一对一匹配只将每个预测分配给一个真实值,从而避免了 NMS 后处理。然而,这会导致较弱的监督,进而导致次优的准确性和收敛速度。
YOLOv10 引入了双标签分配,结合了一对一和一对多的优势。如下面的图所示,它为 YOLOs 引入了另一个一对一的 Head。
这两个 Head 同时训练,使模型的 Backbone 和 Neck 可以利用一对多分配的全面监督,从而提高模型的学习能力和准确性。
在推理过程中,一对多 Head 会被丢弃(类似于深度监督)。仅使用一对一 Head 来进行预测。这种方法确保模型可以端到端部署而不会增加推理时的计算成本。
看看上面的图,这是一个标准的VGG16网络,它在空间(宽度和高度)和通道上对特征进行缩放。这是在任何类型的视觉模型中,对模型进行宽度、高度和通道的缩放是标准做法。
但是,为什么我们需要进行缩放呢?为什么我们不能直接添加相同大小和分辨率的层来进行预测呢?有两个原因:首先,使用相同大小的层会导致参数数量的大幅增加(更多的参数意味着更多的内存需求);其次,我们希望在不同尺度上读取特征,以便在数据流中发现更多隐藏的模式(可以将卷积层的分辨率类比为显微镜的分辨率)。虽然可以选择这些缩放参数,但模型的性能不会得到优化。正确的缩放是模型成功的关键。
YOLO模型通常利用3×3的标准卷积,步幅为2,同时实现空间降采样 (从 H × W 到 H / 2 × W / 2 ) (从H × W到H/2 × W/2) (从H×W到H/2×W/2)和通道转换 (从 C 到 2 C ) (从C到2C) (从C到2C)。
这引入了不可忽略的计算成本 ( O ( 9 2 H W C 2 ) ) (O\left(\frac{9}{2}HW C^2\right)) (O(29HWC2)) 和参数数量 ( O ( 18 C 2 ) ) (O(18C^2)) (O(18C2))。
相反,YOLOv10提出了解耦空间降采样和通道增加操作,从而实现更高效的降采样。具体而言,它首先利用逐点卷积来调节通道维度,然后利用深度卷积来执行空间降采样。
简而言之,首先我们使用逐点卷积(1x1卷积滤波器)来增加通道数量,然后使用深度卷积来减少空间维度。相比于同时减少空间维度和增加通道数量的单一卷积层,解耦的方式在实现相同效果的同时减少了计算量。
解耦将计算成本降低到 ( O ( 2 H W C 2 + 9 2 H W C ) ) (O(2HW C^2 + \frac{9}{2}HW C)) (O(2HWC2+29HWC)) 并将参数数量降低到 (O(2C^2 + 18C))$。同时,它最大限度地保留了降采样过程中的信息,从而在降低延迟的同时实现了具有竞争力的性能。
YOLO模型通常在所有阶段使用相同的基本构建块,这会导致瓶颈块的出现。为了彻底检查这种同质化设计,YOLOv10利用内在秩来分析每个阶段的冗余性。
具体来说,它计算每个阶段最后一个基本块中的最后一个卷积层的数值秩,统计大于某个阈值的奇异值数量。
上图展示了YOLOv8的结果,表明深层阶段和大型模型更容易出现冗余。这个观察结果表明,仅仅在所有阶段应用相同的块设计对于最佳的容量-效率权衡是次优的。
为了解决这个问题,YOLOv10提出了一种秩引导的块设计方案,旨在通过紧凑的架构设计减少被证明冗余的阶段的复杂性。
研究人员提出了一种紧凑的倒置块(CIB)结构,它采用低成本的深度卷积进行空间混合,并使用高效的逐点卷积进行通道混合,如上图所示。它可以作为高效的基本构建块,例如嵌入到ELAN结构中。ELAN的详细解释在YOLOv9的说明中。
YOLOv10倡导一种秩引导的块分配策略,以在保持竞争力的容量的同时实现最佳效率。具体而言,给定一个模型,它根据不同阶段的内在秩按升序排序。
研究人员进一步检查了在领先阶段用CIB替换基本块的性能变化。如果与给定模型相比没有性能下降,他们继续替换下一个阶段,否则停止这个过程。最终,他们在不同阶段和模型尺度上实现了自适应的紧凑块设计,在不损失性能的情况下提高了效率。
研究人员发现,回归头对于YOLO模型的性能更为重要。因此,我们可以减少分类头的开销,而不用过于担心性能受到较大影响。因此,他们采用了轻量级的分类头架构,该架构由两个核大小为3×3的深度可分离卷积和一个1×1卷积组成。
采用大核深度卷积是一种扩大感受野并增强模型能力的有效方法。然而,仅仅在所有阶段使用它们可能会对用于检测小目标的浅层特征引入污染,同时在高分辨率阶段引入显著的I/O开销和延迟。
YOLOv10建议在深层阶段的CIB中利用大核深度卷积。具体来说,他们将CIB中第二个3×3深度卷积的核大小增加到7×7。
此外,他们采用结构重参数化技术,引入另一个3×3深度卷积分支,以缓解优化问题而不增加推理开销。此外,随着模型规模的增加,其感受野自然扩展,使用大核卷积的益处逐渐减小。因此,他们仅在小模型规模中采用大核卷积。
自注意力是整个AI领域中最知名的算法之一。然而,它具有高计算复杂度和内存占用。YOLOv10提出了一种高效的局部自注意力(PSA)模块设计,如下图所示。
首先,我们在1×1卷积后将特征在通道上划分为两部分。我们仅将其中一部分输入到由多头自注意力模块(MHSA)和前馈网络(FFN)组成的N_PSA块中。然后将这两部分连接起来,并通过1×1卷积融合。
PSA仅在分辨率最低的第4阶段后放置,避免了自注意力平方计算复杂度带来的过度开销。通过这种方式,可以以低计算成本将全局表示学习能力引入到YOLO模型中,从而显著增强模型的能力并提升性能。
关于结果,没有太多需要说的,只需看看基准测试就能明白。
我们可以清楚地看到,YOLOv10在推理速度方面提供了巨大的提升。YOLOv10 在准确性和速度上都优于其前身和其他最先进的模型。例如,YOLOv10-S(较小的变体)比具有相似性能的 RT-DETR-R18 快 1.8×并且使用的参数更少 2.8×。与 YOLOv9-C 相比,YOLOv10-B(平衡变体)在保持相同性能水平的同时,延迟降低了 46%,参数数量减少了 25%。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。