【目标检测】【YOLOv12】YOLOv12:Attention-Centric Real-Time Object Detectors

论文链接
代码链接
YOLOv12:以注意力为中心的实时目标检测器

在这里插入图片描述

0.论文摘要

长期以来,增强YOLO框架的网络架构一直至关重要,但主要集中在基于CNN的改进上,尽管注意力机制在建模能力上已被证明具有优越性。这是因为基于注意力的模型无法与基于CNN的模型在速度上相匹敌。本文提出了一种以注意力为核心的YOLO框架,即YOLOv12,它在保持与之前基于CNN模型相同速度的同时,充分利用了注意力机制的性能优势。

YOLOv12在精度上超越了所有流行的实时目标检测器,同时保持了具有竞争力的速度。例如,YOLOv12-N在T4 GPU上实现了40.6%的mAP,推理延迟为1.64毫秒,优于先进的YOLOv10-N / YOLOv11-N,mAP分别提升了2.1%/1.2%,且速度相当。这一优势在其他模型规模上也得以延续。YOLOv12还超越了改进DETR的端到端实时检测器,如RT-DETR / RTDETRv2:YOLOv12-S在运行速度上比RT-DETR-R18 / RTDETRv2 R18快42%,仅使用了36%的计算量和45%的参数。更多对比详见图1。

在这里插入图片描述

图1. 与其他流行方法在延迟-精度(左)和FLOPs-精度(右)权衡方面的比较。

1.引言

实时目标检测因其低延迟特性而一直备受关注,提供了显著的实用性[4, 17, 24, 28]。其中,YOLO系列[3, 24, 28, 29, 32, 45–47, 53, 57, 58]在延迟与精度之间有效建立了最佳平衡,从而主导了这一领域。尽管YOLO的改进主要集中在损失函数[8, 35, 43, 44, 48, 67, 68]、标签分配[22, 23, 34, 59, 69]等方面,但网络架构设计仍然是关键的研究重点[24, 28, 32, 57, 58]。尽管以注意力为核心的视觉Transformer(ViT)架构已被证明具有更强的建模能力,即使在小模型中也是如此[20, 21, 25, 50],但大多数架构设计仍然主要集中于CNN。

造成这种情况的主要原因在于注意力机制的效率低下,这主要来自两个因素:二次计算复杂度和注意力机制的低效内存访问操作(后者是FlashAttention [13, 14] 主要解决的问题)。因此,在相似的计算预算下,基于CNN的架构比基于注意力的架构性能高出约3倍 [38],这极大地限制了注意力机制在YOLO系统中的采用,因为YOLO系统对高推理速度有严格要求。

本文旨在解决这些挑战,并进一步构建了一个以注意力为中心的YOLO框架,即YOLOv12。我们引入了三项关键改进。首先,我们提出了一种简单而高效的区域注意力模块(A2),该模块在保持大感受野的同时,以非常简单的方式降低了注意力的计算复杂度,从而提高了速度。其次,我们引入了残差高效层聚合网络(R-ELAN)以解决注意力引入的优化挑战(主要是大规模模型)。R-ELAN在原始ELAN [57]的基础上引入了两项改进:(i)采用缩放技术的块级残差设计;(ii)重新设计的特征聚合方法。第三,我们在传统注意力之外进行了一些架构改进,以适应YOLO系统。我们升级了传统的以注意力为中心的架构,包括:引入FlashAttention以克服注意力的内存访问问题,移除位置编码等设计以使模型快速且简洁,将MLP比率从4调整为1.2以平衡注意力与前馈网络之间的计算,从而获得更好的性能,减少堆叠块的深度以促进优化,并尽可能利用卷积算子以发挥其计算效率。

基于上述设计,我们开发了一个包含5种模型规模的新系列实时检测器:YOLOv12-N、S、M、L和X。我们在标准目标检测基准上进行了广泛的实验,遵循YOLOv11 [28]的方法,未使用任何额外技巧,结果表明YOLOv12在这些规模上相较于之前流行的模型,在延迟-精度和FLOPs-精度权衡方面提供了显著的改进,如图1所示。例如,YOLOv12-N实现了40.6%的mAP,比YOLOv10-N [53]高出2.1%的mAP,同时保持了更快的推理速度;与YOLOv11-N [28]相比,mAP高出1.2%,速度相当。这一优势在其他规模的模型中也保持一致。与RT-DETR-R18 [66] / RT-DETRv2R18 [40]相比,YOLOv12-S的mAP分别高出1.5%/0.1%,同时延迟速度提升了42%/42%,仅需它们36%/36%的计算量和45%/45%的参数。

总的来说,YOLOv12的贡献有两点:1)它建立了一个以注意力为核心的、简洁而高效的YOLO框架,通过方法创新和架构改进,打破了CNN模型在YOLO系列中的主导地位。2)在不依赖预训练等额外技术的情况下,YOLOv12以快速的推理速度和更高的检测精度实现了最先进的成果,展现了其潜力。

2.相关工作

实时目标检测

实时目标检测器因其重要的实用价值一直备受社区关注。YOLO系列[3, 9, 24, 28, 29, 32, 45–47, 53, 54, 57, 58]已成为实时目标检测的领先框架。早期的YOLO系统[45–47]从模型设计的角度为YOLO系列奠定了基础。YOLOv4[3]和YOLOv5[29]在框架中加入了CSPNet[55]、数据增强和多尺度特征。YOLOv6[32]进一步通过BiC和SimCSPSPPF模块优化了主干网络和颈部结构,并引入了锚点辅助训练。YOLOv7[57]引入了EELAN[56](高效层聚合网络)以改善梯度流动,并采用了多种免费技巧,而YOLOv8[24]则集成了高效的C2f模块以增强特征提取能力。在最近的迭代中,YOLOv9[58]引入了GELAN进行架构优化和PGI以提升训练效果,而YOLOv10[53]则通过双分配的无NMS训练实现了效率提升。YOLOv11[28]通过采用C3K2模块(GELAN[58]的一种变体)和检测头中的轻量级深度可分离卷积,进一步降低了延迟并提高了准确性。最近,一种端到端的目标检测方法RT-DETR[66]通过设计高效的编码器和不确定性最小的查询选择机制,改进了传统的端到端检测器[7, 33, 37, 42, 71],以满足实时需求。RTDETRv2[40]进一步通过免费技巧增强了其性能。与以往的YOLO系列不同,本研究旨在构建一个以注意力为中心的YOLO框架,以利用注意力机制的优势。

高效视觉Transformer

降低全局自注意力的计算成本对于在下游任务中有效应用视觉Transformer至关重要。PVT [61] 通过多分辨率阶段和下采样特征来解决这一问题。Swin Transformer [39] 将自注意力限制在局部窗口内,并通过调整窗口划分方式来连接非重叠窗口,从而在通信需求与内存和计算需求之间取得平衡。其他方法,如轴向自注意力 [26] 和十字交叉注意力 [27],在水平和垂直窗口内计算注意力。CSWin Transformer [16] 在此基础上引入了十字形窗口自注意力,并行计算沿水平和垂直条纹的注意力。此外,[12, 64] 等工作中建立了局部-全局关系,通过减少对全局自注意力的依赖来提高效率。Fast-iTPN [50] 通过令牌迁移和令牌聚集机制提高了下游任务的推理速度。一些方法 [31, 49, 60, 62] 使用线性注意力来降低注意力的复杂度。尽管基于Mamba的视觉模型 [38, 70] 旨在实现线性复杂度,但它们仍未达到实时速度 [38]。FlashAttention [13, 14] 识别出导致注意力计算效率低下的高带宽内存瓶颈,并通过I/O优化来解决这些问题,减少内存访问以提高计算效率。在本研究中,我们摒弃了复杂的设计,提出了一种简单的区域注意力机制来降低注意力的复杂度。此外,我们采用FlashAttention来克服注意力机制固有的内存访问问题 [13, 14]。

3.方法

本节介绍YOLOv12,这是从网络架构与注意力机制角度对YOLO框架的创新。

3.1 效率分析

注意力机制虽然在捕捉全局依赖关系和促进自然语言处理[5, 15]及计算机视觉[19, 39]等任务方面非常有效,但其本质上比卷积神经网络(CNN)速度更慢。造成这种速度差异的主要因素有两个。

复杂性。首先,自注意力操作的计算复杂度随着输入序列长度L呈二次方增长。具体来说,对于一个长度为L、特征维度为d的输入序列,注意力矩阵的计算需要O(L²d)次操作,因为每个标记都需要关注其他所有标记。相比之下,卷积神经网络(CNN)中的卷积操作在空间或时间维度上的复杂度是线性的,即O(kLd),其中k是卷积核大小,通常远小于L。因此,自注意力在计算上变得难以承受,特别是对于高分辨率图像或长序列等大规模输入。

此外,另一个重要因素是,大多数基于注意力的视觉Transformer由于其复杂的设计(例如,Swin Transformer中的窗口划分/反转[39])以及额外模块的引入(例如,位置编码),逐渐累积了速度开销,导致整体速度相比CNN架构较慢[38]。在本文中,设计模块采用了简洁的操作来实现注意力机制,最大限度地确保了效率。

计算。其次,在注意力计算过程中,内存访问模式相比卷积神经网络(CNN)效率较低[13, 14]。具体来说,在自注意力机制中,中间映射如注意力映射(QKT)和softmax映射(L × L)需要从高速GPU SRAM(实际计算位置)存储到高带宽GPU内存(HBM),并在后续计算中重新读取,而前者的读写速度是后者的10倍以上,因此导致了显著的内存访问开销和增加的时钟时间1。此外,注意力机制中的不规则内存访问模式相比CNN引入了进一步的延迟,CNN利用结构化和局部化的内存访问。CNN受益于空间受限的卷积核,由于其固定的感受野和滑动窗口操作,能够实现高效的内存缓存和减少延迟。

这两个因素,即二次计算复杂度和低效的内存访问,共同导致注意力机制比卷积神经网络(CNN)更慢,特别是在实时或资源受限的场景中。解决这些限制已成为一个关键的研究领域,诸如稀疏注意力机制和内存高效近似(例如Linformer [60]或Performer [11])等方法旨在缓解二次扩展问题。

3.2 区域注意力

一种降低普通注意力计算成本的简单方法是使用线性注意力机制 [49, 60],它将普通注意力的复杂度从二次降低到线性。对于一个维度为 ( n , h , d ) (n, h, d) (n,h,d) 的视觉特征 f f f,其中 n n n 是 token 的数量, h h h 是头的数量, d d d 是头的大小,线性注意力将复杂度从 2 n 2 h d 2n²hd 2n2hd 降低到 2 n h d 2 2nhd² 2nhd2,由于 n > d,从而减少了计算成本。然而,线性注意力存在全局依赖退化 [30]、不稳定性 [11] 和分布敏感性 [63] 的问题。此外,由于低秩瓶颈 [2, 10],当应用于输入分辨率为 640 × 640 的 YOLO 时,其速度优势有限。

一种有效降低复杂度的替代方法是局部注意力机制(例如,Shift窗口[39]、交叉注意力[27]和轴向注意力[16]),如图2所示,它将全局注意力转化为局部注意力,从而降低计算成本。然而,将特征图划分为窗口可能会引入额外开销或缩小感受野,影响速度和准确性。在本研究中,我们提出了一种简单而高效的区域注意力模块。如图2所示,分辨率为 ( H ,

### 修改YOLOv11模块代码或配置 对于希望对YOLOv11模块进行修改的情况,主要可以从以下几个方面入手: #### 1. 配置文件调整 配置文件定义了模型架构、训练参数以及其他重要设置。要修改YOLOv11的行为,通常需要编辑对应的YAML配置文件。 ```yaml # 假设这是部分yolo11_PPA.yaml的内容 model: backbone: - [focus, [3, 32, 3]] # 输入层 ... head: ... ``` 通过更改这些配置项可以实现不同的网络结构调整[^1]。 #### 2. 添加新组件至现有框架内 如果打算向YOLOv11中加入新的特性比如并行化补丁感知注意力模块(PPA),则可以在原有基础上扩展功能而不必重写整个程序逻辑。具体操作是在`models/common.py`或其他适当位置增加相应类定义,并确保其能够被主流程调用。 ```python from models.common import Conv, C3 class PPA(nn.Module): """Parallel Patch Attention Module""" def __init__(self, c1, c2, k=(5, 9, 13)): super().__init__() self.cv1 = Conv(c1, c2//4, 1, 1) self.cv2 = nn.Conv2d(in_channels=c2//4, out_channels=c2//4, kernel_size=k[0], stride=1, padding=k[0]//2) ... def forward(self, x): y = [] for conv in [self.cv2, ...]: y.append(conv(x)) return torch.cat(y, dim=1) ``` 这段代码展示了如何创建一个新的PPA模块,并将其集成到现有的YOLOv11体系之中[^2]。 #### 3. 调整超参数与数据集适配 除了上述技术层面的变化外,合理设定学习率、批次大小等超参以及针对特定应用场景优化输入尺寸也是提升性能的有效手段之一。例如,在VisDrone数据集上测试不同版本的YOLOv5时发现随着模型复杂度增加,虽然精度有所提高但也带来了计算成本的增长;因此找到最佳平衡点至关重要[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

量子-Alex

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值