卷起来!一文读懂 YOLOv12 的创新与实践

AI-Findshan

论文

https___arxiv.org_pdf_2502.pdf

摘要

创新之处

  • 打破 CNN 主导:建立了以注意力为核心的简单高效 YOLO 框架,打破了 CNN 模型在 YOLO 系列中的主导地位 。
  • 性能优势:在不依赖预训练等额外技术的情况下,以快速的推理速度和更高的检测精度实现了先进的结果。

性能表现

  • 精度高:YOLOv12 - N 在 T4 GPU 上实现了 40.6% 的平均精度(mAP) ,比先进的 YOLOv10 - N 和 YOLOv11 - N 分别高出 2.1% 和 1.2% 的 mAP。
  • 速度快:YOLOv12 - N 推理延迟为 1.64 毫秒,速度与 YOLOv10 - N 和 YOLOv11 - N 相当;YOLOv12 - S 在运行速度上比 RT - DETR - R18 快 42%,仅使用了 36% 的计算量和 45% 的参数。

架构设计

  • 区域注意力模块:注意力机制计算复杂度高且内存访问效率低,区域注意力模块将全局注意力转化为局部,降低计算成本。

    • 十字交叉注意力:关注图像中呈十字交叉形状的区域。
    • 窗口注意力:以一个矩形窗口的形式聚焦在图像特定区域。
    • 轴向注意力:沿着水平和垂直轴方向关注图像区域。
    • 区域注意力:将图像划分为特定区域进行关注,从图中可看出其关注区域的划分方式与其他几种不同,这种方式相对更简洁,通过简单的划分来降低计算成本 。

  • R - ELAN:在高效层聚合网络(ELAN)基础上提出残差高效层聚合网络(R - ELAN),引入残差快捷路径和缩放因子,保留特征整合能力的同时降低计算成本及参数 / 内存使用量。

  • 依赖 FlashAttention 技术

方法

3.1 效率分析

  • 计算复杂度:自注意力操作的计算复杂度随输入序列长度L呈二次方增长,为O(L²d),而卷积操作复杂度是线性增长,为O(kLd),k为远小于L的内核大小。此外,基于注意力的视觉Transformer设计复杂,引入额外模块,也增加了速度开销。本文设计模块用简洁操作实现注意力,保证效率。
  • 计算过程:注意力计算中,内存访问模式效率低于CNN。自注意力计算时,中间映射需在GPU SRAM和HBM间存储和读取,读写速度差异大,导致内存访问开销大;且注意力内存访问模式不规则,而CNN利用结构化和局部内存访问,能有效缓存,减少延迟。这两个因素使注意力机制比CNN慢,尤其在实时或资源受限场景,解决这些限制是研究关键领域,如稀疏注意力机制等方法。

3.2 区域注意力

  • 线性注意力机制:可将普通注意力复杂度从二次方降为线性,但存在全局依赖退化、不稳定和分布敏感等问题,且在640×640输入分辨率的YOLO中速度优势有限。
  • 局部注意力机制:将全局注意力转化为局部以降低计算成本,但特征图分区会引入开销或减小感受野,影响速度和精度。本文提出区域注意力模块,将特征图划分为l个片段,无需显式窗口分区,只需简单重塑操作,默认l设为4,在减少感受野的同时仍保持较大范围,计算成本从2n²hd降至½n²hd,对性能影响小,显著提升速度。

3.3 残差高效层聚合网络

  • ELAN的问题:ELAN用于改进特征聚合,但存在梯度阻塞和缺少输入到输出的残差连接问题,且基于注意力机制构建网络时,L和X规模模型难以收敛或不稳定。
  • R - ELAN的设计:提出R - ELAN,引入从输入到输出的残差快捷路径和缩放因子(默认0.01);设计新聚合方法,先通过转换层调整通道维度,生成单一特征图,再经后续模块处理和连接,形成瓶颈结构,既保留特征整合能力,又降低计算成本和参数/内存使用量。
    • transition(转换层)

    • CSPNet:输入经转换层(transition)后进行分割,分别通过 1×1 卷积处理,最后连接输出。
    • ELAN:同样先经转换层和分割,一部分经多个卷积模块(conv×n)处理,再与另一部分连接,最后经转换层输出,用于改进特征聚合。
    • C3K2:是 GELAN 的一种特殊情况,架构与 ELAN 有相似之处,包含转换层、分割、多个模块处理以及连接操作。
    • R - ELAN:在 ELAN 基础上进行改进,引入从输入到输出的残差快捷路径(带缩放因子 scaling),并采用新的聚合方式,先通过转换层和 1×1 卷积,再经过多个**区域注意力模块(A2×2)**处理,最后连接并与输入相加输出

3.4 架构改进

  • 整体架构:保留之前YOLO系统的分层设计,去除骨干网络最后阶段堆叠三个模块的设计,仅保留一个R - ELAN模块,减少模块总数,利于优化;骨干网络前两个阶段继承自YOLOv11,未使用R - ELAN。
  • 注意力机制改进:调整MLP比例,采用nn.Conv2d + BN替代nn.Linear + LN以利用卷积算子效率,去除位置编码,引入7×7大深度可分离卷积(位置感知器)帮助区域注意力感知位置信息,这些改进的有效性将在4.5节验证。(消融实验

实验

4.1 实验设置

在 MSCOCO 2017 数据集上验证 YOLOv12,该系列有 5 种变体(YOLOv12 - N、YOLOv12 - S、YOLOv12 - M、YOLOv12 - L、YOLOv12 - X)。所有模型用 SGD 优化器训练 600 个 epoch,初始学习率 0.01,采用线性学习率衰减策略前 3 个 epoch 进行线性预热。模型延迟在 T4 GPU 上用 TensorRT FP16 测试。以 YOLOv11 为基线,模型缩放策略与其一致,使用其部分 C3K2 模块,不使用 YOLOv11 以外的技巧。

4.2 与先进方法对比

MethodFLOPs (G)#Param. (M)AP50:95 (%)APo (%)AP7 (%)Latency (ms)
YOLOv6-3.0-N[32]11.44.737.052.72.69
Gold-YOLO-N[54]12.15.639.655.7-2.92
YOLOv8-N[24]8.73.237.452.640.51.77
YOLOv10-N[53]6.72.338.553.841.71.84
YOLO11-N[28]6.52.639.455.342.81.5
YOLOv12-N (Ours)6.52.640.656.743.81.64
YOLOv6-3.0-S [32]45.318.544.361.23.42
Gold-YOLO-S [54]46.021.545.462.53.82
YOLOv8-S [24]28.611.245.061.848.72.33
RT-DETR-R18 [66]60.020.046.563.84.58
RT-DETRv2-R18[41]60.020.047.964.94.58
YOLOv9-S [58]26.47.146.863.450.7
YOLOv10-S[53]21.67.246.363.050.42.49
YOLO11-S[28]21.59.446.963.950.62.5
YOLOv12-S (Ours)21.49.348.065.051.82.61
YOLOv6-3.0-M[32]85.834.949.166.15.63
Gold-YOLO-M[54]87.541.349.867.06.38
YOLOv8-M[24]78.925.950.367.254.75.09
RT-DETR-R34 [66]100.036.048.966.86.32
RT-DETRv2-R34 [41]100.036.049.967.56.32
YOLOv9-M[58]76.320.051.468.156.1
YOLOv10-M[53]59.115.451.168.155.84.74
YOLO11-M[28]68.020.151.568.555.74.7
YOLOv12-M(Ours)67.520.252.569.657.14.86
YOLOv6-3.0-L[32]150.759.651.869.29.02
Gold-YOLO-L [54]151.775.151.868.910.65
YOLOv8-L [24]165.243.753.069.857.78.06
RT-DETR-R50 [66]136.042.053.171.36.90
RT-DETRv2-R50 [41]136.042.053.471.66.90
YOLOv9-C[58]102.125.353.070.257.8
YOLOv10-B[53]92.019.152.569.657.25.74
YOLOv10-L[53]120.324.453.270.158.17.28
YOLO11-L[28]86.925.353.370.158.26.2
YOLOv12-L (Ours)88.926.453.770.758.56.77
YOLOv8-X [24]257.868.254.071.058.812.83
RT-DETR-R101 [66]259.076.054.372.713.5
RT-DETRv2-R101 [41]259.076.054.372.813.5
YOLOv10-X[53]160.429.554.471.359.310.70
YOLO11-X[28]194.956.954.671.659.511.3
YOLOv12-X (Ours)199.059.155.272.060.211.79

将 YOLOv12 与其他流行实时检测器对比:

  • N 规模模型:YOLOv12 - N 的平均精度均值(mAP)比 YOLOv6 - 3.0 - N、YOLOv8 - N、YOLOv10 - N 和 YOLOv11 分别 3.6%、3.3%、2.1% 和 1.2%,计算量和参数相当或更少,延迟为 1.64 ms / 图像 。
  • S 规模模型:YOLOv12 - S 在计算量和参数相当或更少的情况下,mAP 超越 YOLOv8 - S、YOLOv9 - S、YOLOv10 - S 和 YOLOv11 - S,且相比端到端检测器 RT - DETR - R18/RT - DETRv2 - R18,性能可媲美,推理速度更快,计算成本和参数更少。
  • M 规模模型:YOLOv12 - M 在 mAP 和速度上优于 Gold - YOLO - M、YOLOv8 - M 等模型。
  • L 规模模型:YOLOv12 - L 在计算量更少的情况下超越 YOLOv10 - L,mAP 略高于 YOLOv11,且在速度、计算量和参数上优于 RT - DERT - R50/RT - DERTv2 - R50。
  • X 规模模型:YOLOv12 - X 在速度、计算量和参数相当的情况下,mAP 显著超越 YOLOv10 - X/YOLOv11 - X,且优于 RT - DETR - R101/RT - DETRv2 - R101 。若 L/X 规模模型用 FP32 精度评估,mAP 可提升约 0.2%。

4.3 消融实验

  • R - ELAN:通过 YOLOv12 - N/L/X 模型评估 R - ELAN 有效性。发现对于小模型(如 YOLOv12 - N),残差连接不影响收敛但降低性能;对于大模型(如 YOLOv12 - L/X),残差连接对稳定训练至关重要,YOLOv12 - X 需最小缩放因子(0.01)确保收敛。同时,新的特征集成方法在保持性能的同时,有效降低模型计算量和参数。
  • 区域注意力:在 YOLOv12 - N/S/X 模型上进行实验,在不使用 FlashAttention 情况下,测量 GPU(CUDA)和 CPU 上的推理速度。结果表明区域注意力显著提升速度,如在 RTX 3080 上用 FP32 时,YOLOv12 - N 推理时间减少 0.7ms,且在不同模型和硬件配置中均有性能提升。

证明了区域注意力机制在提高模型推理效率方面的有效性

4.4 速度对比

在 RTX 3080、RTX A5000 和 RTX A6000 上,用 FP32 和 FP16 精度对 YOLOv9、YOLOv10、YOLOv11 和 YOLOv12 进行推理速度对比。结果显示 YOLOv12 推理速度显著高于 YOLOv9,与 YOLOv10 和 YOLOv11 相当。此外,图 4 展示了精度 - 参数和 CPU 上精度 - 延迟权衡对比,YOLOv12 在这两方面均优于其他方法。

4.5 诊断与可视化

  • 注意力实现:基于卷积的实现方法比基于线性的更快,且在与卷积结合时,批归一化(BN)性能优于层归一化(LN)。
  • 分层设计:与其他检测系统不同,YOLOv12 使用普通视觉 Transformer 架构时性能显著下降,分层设计效果最佳。
  • 训练轮次:YOLOv12 需约 600 个 epoch 训练达到最佳性能,比部分现有 YOLO 检测器所需轮次多。
  • 位置感知器:在注意力机制中应用大内核可分离卷积帮助感知位置信息,增大卷积核尺寸可提升性能但降低速度,因此默认核大小设为 7×7。
  • 位置嵌入:不使用任何位置嵌入时性能最佳,可简化架构并加快推理速度。
  • 区域注意力:默认使用 FlashAttention 技术时,区域注意力机制虽增加计算复杂度但速度下降极小。
  • MLP 比例:YOLOv12 中 MLP 比例设为 1.2 时性能更好,与传统做法不同,此调整将计算负载更多转向注意力机制。
  • FlashAttention:验证其在 YOLOv12 中的作用,可加速 YOLOv12 - N 约 0.3ms,YOLOv12 - S 约 0.4ms 。
  • 可视化:通过热图对比发现,与 YOLOv10 和 YOLOv11 相比,YOLOv12 物体轮廓更清晰,前景激活更精确,归因于区域注意力机制更大的感受野,能更好捕捉整体上下文 。

github代码:

https://github.com/sunsmarterjie/yolov12

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值