醋醋百科网

Good Luck To You!

YOLOv12发布:以注意力为核心的实时目标检测新标杆

在计算机视觉领域,实时目标检测一直是一个备受关注的研究方向,尤其是在自动驾驶、安防监控等应用中,低延迟的特性显得尤为重要。YOLO(You Only Look Once)系列作为实时目标检测的佼佼者,凭借其高效的检测速度和较高的准确率,长期占据着该领域的主导地位。然而,尽管YOLO系列在卷积神经网络(CNN)的基础上不断优化,注意力机制(Attention Mechanism)在建模能力上的优势却一直未能得到充分发挥。究其原因,主要是注意力机制的计算复杂度和内存访问效率问题,导致其无法在实时性要求极高的场景中与CNN竞争。

近日,Yunjie Tian、Qixiang Ye、David Doermann等人提出了一种全新的YOLO框架——YOLOv12,成功将注意力机制引入YOLO系列,并在保持高速推理的同时,显著提升了检测精度。YOLOv12不仅在多个标准目标检测基准上超越了现有的实时检测器,还通过一系列创新设计,解决了注意力机制在实时应用中的效率瓶颈。

YOLO官网:
https://docs.ultralytics.com/zh/models/yolo12/#overview

论文地址:
https://arxiv.org/abs/2502.12524

代码:
https://github.com/sunsmarterjie/yolov12

1. 引言

实时目标检测因其低延迟的特性,具有广泛的实际应用价值。YOLO系列作为该领域的领军者,通过不断优化网络架构、损失函数和标签分配策略,成功在速度和精度之间找到了最佳平衡点。然而,尽管注意力机制在视觉Transformer(ViT)中展现出强大的建模能力,但由于其计算复杂度和内存访问效率问题,注意力机制在YOLO系列中的应用一直受到限制。

YOLOv12的提出,旨在解决这些问题。通过引入一种简单而高效的区域注意力模块(Area Attention, A2),YOLOv12在保持较大感受野的同时,显著降低了注意力机制的计算复杂度。此外,YOLOv12还引入了残差高效层聚合网络(Residual Efficient Layer Aggregation Networks, R-ELAN),解决了大规模模型中的优化难题。通过这些创新设计,YOLOv12在多个模型尺度上均实现了显著的性能提升。

2. 相关工作

2.1 实时目标检测器

YOLO系列自诞生以来,一直是实时目标检测领域的标杆。从早期的YOLOv1到最新的YOLOv11,每一代YOLO都在网络架构、数据增强和多尺度特征提取等方面进行了优化。例如,YOLOv4引入了CSPNet和多种数据增强技术,YOLOv7则通过E-ELAN模块改进了梯度流。然而,这些改进主要集中在CNN架构上,注意力机制的优势并未得到充分利用。

2.2 高效视觉Transformer

为了降低全局自注意力机制的计算成本,研究者们提出了多种改进方案。例如,PVT通过多分辨率阶段和下采样特征来减少计算量,Swin Transformer则通过局部窗口自注意力机制来平衡计算和内存需求。然而,这些方法在实时性要求极高的场景中仍无法与CNN竞争。YOLOv12通过引入区域注意力模块和FlashAttention技术,成功解决了注意力机制的计算效率问题。

3. 方法

3.1 效率分析

注意力机制虽然在捕捉全局依赖关系方面表现出色,但其计算复杂度随输入序列长度的平方增长,导致其在处理高分辨率图像或长序列时计算量巨大。具体来说,对于一个长度为 L、特征维度为 d 的输入序列,自注意力机制的计算复杂度为 O(L2d) ,而卷积操作的计算复杂度仅为 O(kLd),其中 k 是卷积核大小,通常远小于 L。因此,自注意力机制在处理大规模数据时计算量巨大,难以满足实时性要求。

此外,注意力机制的内存访问模式也不如CNN高效。在自注意力计算过程中,中间结果(如注意力矩阵和softmax矩阵)需要从高速GPU SRAM存储到高带宽GPU内存(HBM)中,并在计算过程中频繁读取,导致内存访问开销巨大。YOLOv12通过引入FlashAttention技术,优化了内存访问模式,显著降低了计算延迟。

3.2 区域注意力模块

为了降低注意力机制的计算成本,YOLOv12提出了一种简单而高效的区域注意力模块(Area Attention, A2)。该模块将特征图划分为多个区域,每个区域内的注意力计算仅在局部进行,从而减少了计算量。具体来说,对于一个分辨率为 (H,W) 的特征图,区域注意力模块将其划分为 l 个大小为 (lH,W) 或 (H,lW) 的区域。这种划分方式避免了复杂的窗口划分操作,仅需简单的reshape操作即可实现,从而显著提升了计算速度。

实验表明,区域注意力模块在保持较大感受野的同时,显著提升了模型的推理速度。例如,在YOLOv12-N模型中,区域注意力模块将推理延迟从2.7毫秒降低到2.0毫秒(FP32精度),同时仅对模型性能产生了轻微影响。

3.3 残差高效层聚合网络(R-ELAN)

YOLOv12引入了残差高效层聚合网络(R-ELAN),以解决大规模模型中的优化难题。R-ELAN通过引入残差连接和新的特征聚合方法,显著提升了模型的训练稳定性和性能。具体来说,R-ELAN在原始ELAN的基础上进行了两项改进:

  1. 残差设计:R-ELAN引入了从输入到输出的残差连接,并通过缩放因子(默认值为0.01)控制残差信号的强度。这种设计有效解决了梯度阻塞问题,提升了模型的训练稳定性。
  2. 特征聚合方法:R-ELAN采用了一种新的特征聚合方法,通过调整通道维度并生成单一特征图,减少了计算成本和参数/内存使用量。

实验表明,R-ELAN在大规模模型中表现尤为出色。例如,在YOLOv12-X模型中,R-ELAN显著提升了模型的训练稳定性,并实现了55.2%的mAP。

3.4 架构改进

YOLOv12在传统注意力机制的基础上进行了多项改进,以适应YOLO系统的实时性要求。具体改进包括:

  1. 移除位置编码:YOLOv12移除了传统注意力机制中的位置编码设计,简化了模型结构,提升了推理速度。
  2. 调整MLP比例:YOLOv12将MLP比例从4.0调整为1.2(对于N、S、M尺度模型为2.0),以更好地分配计算资源,提升模型性能。
  3. 引入大核卷积:YOLOv12引入了大核卷积操作(Position Perceiver),帮助区域注意力模块感知位置信息。实验表明,7×7的卷积核在性能和速度之间取得了最佳平衡。

4. 实验

4.1 实验设置

YOLOv12在MSCOCO 2017数据集上进行了验证,共包括5个模型尺度:YOLOv12-N、S、M、L和X。所有模型均使用SGD优化器进行训练,初始学习率为0.01,训练周期为600个epoch。实验结果表明,YOLOv12在多个模型尺度上均实现了显著的性能提升。

4.2 与现有方法的比较

YOLOv12在多个标准目标检测基准上均超越了现有的实时检测器。具体比较结果如下:

  • N尺度模型:YOLOv12-N在T4 GPU上的推理延迟为1.64毫秒,mAP达到了40.6%,分别比YOLOv10-N和YOLOv11-N高出2.1%和1.2%。
  • S尺度模型:YOLOv12-S在21.4G FLOPs和9.3M参数的情况下,实现了48.0%的mAP,推理延迟为2.61毫秒。与RT-DETR-R18和RT-DETRv2-R18相比,YOLOv12-S在推理速度和计算成本上均表现出色。
  • M尺度模型:YOLOv12-M在67.5G FLOPs和20.2M参数的情况下,实现了52.5%的mAP,推理延迟为4.86毫秒。
  • L尺度模型:YOLOv12-L在88.9G FLOPs和26.4M参数的情况下,实现了53.7%的mAP,推理延迟为6.77毫秒。
  • X尺度模型:YOLOv12-X在199.0G FLOPs和59.1M参数的情况下,实现了55.2%的mAP,推理延迟为11.79毫秒。

4.3 消融实验

通过一系列消融实验,YOLOv12验证了区域注意力模块和R-ELAN的有效性。具体实验结果如下:

  • R-ELAN:实验表明,R-ELAN在大规模模型中表现尤为出色。例如,在YOLOv12-X模型中,R-ELAN显著提升了模型的训练稳定性,并实现了55.2%的mAP。
  • 区域注意力模块:实验表明,区域注意力模块在保持较大感受野的同时,显著提升了模型的推理速度。例如,在YOLOv12-N模型中,区域注意力模块将推理延迟从2.7毫秒降低到2.0毫秒(FP32精度),同时仅对模型性能产生了轻微影响。

4.4 速度比较

YOLOv12在多个GPU平台上均表现出色,推理速度显著优于YOLOv9,并与YOLOv10和YOLOv11保持相当。例如,在RTX 3080上,YOLOv12-N的FP32推理延迟为1.7毫秒,FP16推理延迟为1.1毫秒,均优于YOLOv9。

4.5 诊断与可视化

通过热图对比,YOLOv12展现出更清晰的目标轮廓和更精确的前景激活,表明其感知能力优于现有的YOLOv10和YOLOv11。这一改进主要归功于区域注意力模块,其较大的感受野能够更好地捕捉整体上下文信息。

5. 结论

YOLOv12通过引入区域注意力模块和残差高效层聚合网络,成功将注意力机制引入YOLO框架,实现了在保持高速推理的同时显著提升检测精度的目标。YOLOv12的提出,不仅挑战了CNN在YOLO系列中的主导地位,还为实时目标检测领域开辟了新的研究方向。

6. 限制

YOLOv12依赖于FlashAttention技术,目前仅支持Turing、Ampere、Ada Lovelace或Hopper架构的GPU(如T4、Quadro RTX系列、RTX20系列、RTX30系列、RTX40系列、RTX A5000/6000、A30/40、A100、H100等)。

7. 更多细节

YOLOv12的训练细节和超参数设置详见论文附录。所有模型均在8块NVIDIA A6000 GPU上进行训练,训练周期为600个epoch。YOLOv12的代码和更多详细信息可在官方GitHub仓库中查看。


应用方法

安装部署

Ultralytics YOLO12 默认不需要FlashAttention (这句来自YOLO官网,与论文的意思有不同,需要后续确认)。不过,FlashAttention 可以选择与 YOLO12 一起编译和使用。要编译 FlashAttention,需要使用Turing、Ampere、Ada Lovelace或Hopper架构的GPU。

安装步骤:

wget https://github.com/Dao-AILab/flash-attention/releases/download/v2.7.3/flash_attn-2.7.3+cu11torch2.2cxx11abiFALSE-cp311-cp311-linux_x86_64.whl
conda create -n yolov12 python=3.11
conda activate yolov12
pip install -r requirements.txt
pip install -e .

训练

使用的代码和其他yolo区别不大:

from ultralytics import YOLO

# Load a COCO-pretrained YOLO12n model
model = YOLO("yolo12n.pt")

# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

# Run inference with the YOLO12n model on the 'bus.jpg' image
results = model("path/to/bus.jpg")

看介绍速度也不错

看介绍yolov12对于效果提升还是不错的,准备后续升级到YOLOV12试一下。


——完——

@北方的郎 · 专注模型与代码

喜欢的朋友,欢迎赞同、关注、分享三连 ^O^

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言