YOLOv12 ——基于卷积神经网络的快速推理速度与注意力机制带来的增强性能结合

news2025/7/17 2:17:46

概述

实时目标检测对于许多实际应用来说已经变得至关重要,而Ultralytics公司开发的YOLO(You Only Look Once,只看一次)系列一直是最先进的模型系列,在速度和准确性之间提供了稳健的平衡。注意力机制的低效阻碍了它们在像YOLO这样的高速系统中的应用。YOLOv12旨在通过将注意力机制集成到YOLO框架中来改变这一现状。

1.新特性

大多数目标检测架构传统上依赖于卷积神经网络(CNN),因为注意力机制效率低下,面临着二次计算复杂度和低效的内存访问操作问题。因此,在对推理速度要求很高的YOLO框架中,基于CNN的模型通常比基于注意力的系统表现更好。

YOLOv12通过引入三个关键改进来克服这些限制:

区域注意力模块(A2):

  • YOLOv12引入了一个简单而高效的区域注意力模块(A2),该模块将特征图分割成多个片段,在保留大感受野的同时降低了传统注意力机制的计算复杂度。这种简单的修改使模型在保持较大视野的同时提高了速度和效率。

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

  • YOLOv12利用R - ELAN来解决注意力机制带来的优化挑战。R - ELAN对之前的ELAN架构进行了改进,具体如下:
    • 块级残差连接和缩放技术,以确保训练的稳定性。
    • 重新设计的特征聚合方法,提高了性能和效率。

架构改进:

  • 快速注意力(Flash Attention):快速注意力的集成解决了注意力机制的内存访问瓶颈问题,优化了内存操作并提高了速度。
  • 去除位置编码:通过消除位置编码,YOLOv12简化了模型,使其更快、更简洁,同时不牺牲性能。
  • 调整多层感知机(MLP)比率:多层感知机的扩展比率从4降低到1.2,以平衡注意力网络和前馈网络之间的计算负载,提高效率。
  • 减少块深度:通过减少架构中堆叠块的数量,YOLOv12简化了优化过程并提高了推理速度。
  • 卷积算子:YOLOv12广泛使用卷积操作以利用其计算效率,进一步提高性能并降低延迟。

注:

由于两个因素,注意力机制本质上比卷积神经网络(CNN)慢:

  1. 复杂性。首先,自注意力操作的计算复杂度随输入序列长度 L 呈二次方增长。此外,另一个重要因素是,大多数基于注意力的视觉变压器由于其复杂的设计(例如,Swin 变压器中的窗口划分/反转
    )和额外模块的引入(例如,位置编码),逐渐积累了速度开销。
  2. 计算。其次,在注意力计算过程中,与 CNN 相比,内存访问模式效率较低,例如注意力图和 softmax 图。此外,与 CNN 相比,注意力中的不规则内存访问模式会引入更多的延迟。

2.YOLOv12的架构概述


图1:YOLOv12的主干网络和头部网络架构

3.区域注意力模块

图2:区域注意力可视化

为了解决普通注意力机制相关的计算成本问题,YOLOv12利用了局部注意力机制,如移位窗口注意力、十字交叉注意力和轴向注意力。虽然这些方法通过将全局注意力转换为局部注意力来降低复杂度,但由于感受野减小,它们在速度和准确性方面存在局限性。

  • 提出的解决方案:YOLOv12引入了一个简单而高效的区域注意力模块。该模块将分辨率为(H,W)的特征图分割成L个大小为(H/L,W)或(H,W/L)的片段。它不是使用显式的窗口划分,而是应用了一个简单的重塑操作。
  • 优点:这将感受野减小到原来的四分之一,但与其他局部注意力方法相比,仍然保持了较大的感受野。通过将计算成本从传统的(2n²hd)降低到(n²hd)/2,模型在不牺牲准确性的情况下变得更加高效。

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


图3:YOLOv12中使用的R - ELAN

ELAN概述:

高效层聚合网络(ELAN) 在早期的YOLO模型中用于改进特征聚合。ELAN的工作方式如下:

  1. 对1×1卷积层的输出进行分割。
  2. 通过多个模块处理这些分割后的部分。
  3. 在应用另一个1×1卷积以对齐最终维度之前,将输出进行拼接。

ELAN存在的问题

  1. 梯度阻塞:由于从输入到输出缺乏残差连接,导致训练不稳定。
  2. 优化挑战:注意力机制和架构可能会导致收敛问题,L规模和X规模的模型即使使用Adam或AdamW优化器也无法收敛或保持不稳定。

提出的解决方案——R - ELAN

  1. 残差连接:引入了从输入到输出的残差捷径,带有一个缩放因子(默认值为0.01),以提高稳定性。
  2. 层缩放类比:类似于深度视觉Transformer中使用的层缩放,但避免了将层缩放应用于每个区域注意力模块而导致的速度下降。

新的聚合方法

  1. 修改后的设计:新方法不是在过渡层之后分割输出,而是调整通道维度并创建单个特征图。
  2. 瓶颈结构:在拼接之前通过后续块处理特征图,形成更高效的聚合方法。

5.架构改进

  • 快速注意力(Flash Attention):YOLO12利用了快速注意力,它最大限度地减少了内存访问开销。这解决了注意力机制的主要内存瓶颈问题,缩小了与CNN的速度差距。
  • MLP比率调整:前馈网络的扩展比率从Transformer中通常的4降低到YOLOv12中的约1.2。这防止了MLP在运行时占据主导地位,从而提高了整体效率。
  • 去除位置编码:YOLOv12在其注意力层中省略了显式的位置编码。这使得模型“快速且简洁”,同时在检测性能上没有损失。
  • 减少堆叠块:最近的YOLO主干网络在最后一个阶段堆叠了三个注意力/CNN块;而YOLOv12在该阶段只使用了一个R - ELAN块。较少的顺序块简化了优化过程并提高了推理速度,尤其是在更深的模型中。
  • 卷积算子:该架构还使用了带有批量归一化的卷积,而不是带有层归一化的线性层,以充分利用卷积算子的效率。

6.基准测试


图4:YOLOv12的比较

数据集:所有模型均在MS COCO 2017目标检测基准上进行评估。

YOLOv12 - N的性能:最小的YOLOv12 - N模型实现了40.6%的更高平均精度均值(mAP),相比之下,YOLOv10 - N为38.5%,YOLOv11 - N为39.4%,同时保持了相似的推理延迟。

YOLOv12 - S与RT - DETR的比较:YOLOv12 - S模型也优于RT - DETR模型。值得注意的是,它的运行速度比RT - DETR - R18模型快约42%,同时只使用了RT - DETR - R18模型约36%的计算量和约45%的参数。

每个YOLOv12模型(从N到X)在与YOLOv8、YOLOv9、YOLOv10、YOLOv11等类似大小的模型相比时,在相当或更低的延迟下实现了更好的mAP。这种优势从小型模型到大型模型都存在,证明了YOLOv12改进的可扩展性。

7. 最先进技术比较

例如:对于N 规模的模型,YOLOv12 - N 在平均精度均值(mAP)上分别比 YOLOv6–3.0 - N [32]、 YOLOv8-N [58]、 YOLOv10-N [53] 和 YOLOv11 [28] 高出 3.6%、3.3%、2.1% 和 1.2%,同时保持相似甚至更少的计算量和参数,并实现了1.64 毫秒/图像的快速延迟速度

  • 对于S 规模的模型,YOLOv12 - S 具有 21.4G 浮点运算量(FLOPs)和 9.3M 参数,在 2.61 毫秒/图像的延迟下实现了 48.0 mAP。它在平均精度均值(mAP)上分别比 YOLOv8-S [24]、YOLOv9-S [58]、YOLOv10-S [53] 和 YOLOv11 - S [28] 高出 3.0%、1.2%、1.7% 和 1.1%,同时保持相似或更少的计算量。
  • 对于M 规模的模型,YOLOv12 - M 具有 67.5G 浮点运算量(FLOPs)和 20.2M 参数,实现了 52.5 mAP 的性能和 4.86 毫秒/图像的速度。
  • 对于L 规模的模型,YOLOv12 - L 甚至比 YOLOv10-L [53] 少 31.4G 浮点运算量(FLOPs)。
  • 对于X 规模的模型,YOLOv12 - X 在平均精度均值(mAP)上分别比 YOLOv10-X [53] / YOLOv11 - X [28] 高出 0.8% 和 0.6%,同时具有相当的速度、浮点运算量(FLOPs)和参数。

8. 推理速度比较

YOLOv12 的推理速度比 YOLOv9 ** 显著提高**,同时与 YOLOv10 和 YOLOv11 相当

总结

YOLOv12目前的一个局限性是它依赖于快速注意力(FlashAttention)来实现最佳速度。快速注意力仅在相对较新的GPU架构(NVIDIA的图灵、安培、阿达·洛芙莱斯或霍珀系列)上得到支持,例如特斯拉T4、RTX 20/30/40系列、A100、H100等。

这意味着缺乏这些架构的旧GPU无法充分受益于YOLOv12的优化注意力实现。使用不支持的硬件的用户将不得不回退到标准注意力内核,从而失去一些速度优势。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2307174.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

动态内容加载的解决方案:Selenium与Playwright对比故障排查实录

方案进程 2024-09-01 09:00 | 接到亚航航班数据采集需求 2024-09-01 11:30 | 首次尝试使用Selenium遭遇Cloudflare验证 2024-09-01 14:00 | 切换Playwright方案仍触发反爬机制 2024-09-01 16:30 | 引入爬虫代理IPUA轮换策略 2024-09-02 10:00 | 双方案完整实现并通过压力测试故…

NLP学习记录十:多头注意力

一、单头注意力 单头注意力的大致流程如下: ① 查询编码向量、键编码向量和值编码向量分别经过自己的全连接层(Wq、Wk、Wv)后得到查询Q、键K和值V; ② 查询Q和键K经过注意力评分函数(如:缩放点积运算&am…

Spring基础01

Spring基础01 软件开发原则 OCP开闭原则:七大开发原则当中最基本的原则,其他的六个原则是为这个原则服务的。 对扩展开放,对修改关闭。在扩展系统功能的时候,没有修改之前写好的代码,就符合OCP原则,反之&a…

2025年2月,TVBOX接口最新汇总版

这里写自定义目录标题 1、离线版很必要2、关于在线版好还是离线版更实在,作个总结:★ 离线版的优点:★ 离线版的缺点: 3.1、 针对FM内置的写法;3.2、 如果是用在YSC,那么格式也要有些小小的改变3.2.1、 YSC…

Dubbo RPC 原理

一、Dubbo 简介 Apache Dubbo 是一款高性能、轻量级的开源 RPC 框架,支持服务治理、协议扩展、负载均衡、容错机制等核心功能,广泛应用于微服务架构。其核心目标是解决分布式服务之间的高效通信与服务治理问题。 二、Dubbo 架构设计 1. 核心组件 Prov…

第2章_保护您的第一个应用程序

第2章_保护您的第一个应用程序 在本章中,您将学习如何使用 Keycloak 保护您的第一个应用程序。为了让事情更有趣,您将运行的示例应用程序由两部分组成,前端 Web 应用程序和后端 REST API。这将向您展示用户如何向前端进行身份验证&#xff0…

【Godot4.3】自定义圆角容器

概述 Godot控件想要完全实现现代UI风格,需要进行大量的自定义组件设计。本篇就依托于笔者自己对现代UI设计中的圆角面板元素模仿来制作圆角容器组件。 圆角容器 圆角元素在现代的扁平UI设计中非常常见,在Godot中可以通过改进PanelContainer来或者自定…

Flutter系列教程之(5)——常用控件Widget的使用示例

目录 1.页面跳转 2.某个控件设置点击事件 3.AlertDialog对话框的使用 4.文本输入框 5.按钮 圆角扁平按钮: 圆角悬浮按钮: 6.补充 圆点 7.布局使用 Row控件左右对齐 调整边距 1.页面跳转 首先,先介绍一下页面跳转功能吧 Flutter使用 Navigator 进行页面…

DeepSeek开源周,第三弹再次来袭,DeepGEMM

在大型模型推理中,矩阵乘法(GEMM)是计算的核心瓶颈。DeepGEMM 应运而生——一款专为 FP8精度矩阵乘法 设计的轻量级CUDA库,由深度求索(DeepSeek)团队开源。它凭借极简代码(核心仅300行&#xff…

stm32四种方式精密控制步进电机

在搭建完clion的开发环境后,我决定重写之前的项目并优化完善,争取做出完全可落地的东西,也结合要写的论文内容一同学习下去。 因此,首当其冲的就是回到步进电机控制领域,把之前使用中断溢出进行步进电机控制的方案进行…

git merge -s ours ...的使用方法

当我们在自己的feature branch上开发时,并且已经commit,push了好几次 同时develop分支也commit , push了好几次, 如下图所示 这个时候就不能直接将feature branch上的改动 pull request到develop上面,因为develop基线已经不一样了…

数字可调控开关电源设计(论文+源码)

1 设计要求 在本次数字可调控开关电源设计过程中,对关键参数设定如下: (1)输入电压:DC24-26V,输出电压:12-24(可调); (2)输出电压误差&#xf…

【DeepSeek】【GPT-Academic】:DeepSeek集成到GPT-Academic(官方+第三方)

目录 1 官方deepseek 1.1 拉取学术GPT项目 1.2 安装依赖 1.3 修改配置文件中的DEEPSEEK_API_KEY 2 第三方API 2.1 修改DEEPSEEK_API_KEY 2.2 修改CUSTOM_API_KEY_PATTERM 2.3 地址重定向 2.4 修改模型参数 2.5 成功调用 2.6 尝试添加一个deepseek-r1参数 3 使用千帆…

DeepSeek R1 + 飞书机器人实现AI智能助手

效果 TFChat项目地址 https://github.com/fish2018/TFChat 腾讯大模型知识引擎用的是DeepSeek R1,项目为sanic和redis实现,利用httpx异步处理流式响应,同时使用buffer来避免频繁调用飞书接口更新卡片的网络耗时。为了进一步减少网络IO消耗&…

Android移动应用开发实践-1-下载安装和简单使用Android Studio 3.5.2版本(频频出错)

一、下载安装 1.Android Studio3.5.2下载地址:Android Studio3.5.2下载地址 其他版本下载地址:其他版本下载地址 2.安装教程(可以多找几个看看) 安装 | 手把手教你Android studio 3.5.2安装(安装教程)_a…

Rk3568驱动开发_驱动编写和挂载_2

1.字符驱动介绍: 字符驱动:按照字节流镜像读写操作的设备,读写数据分先后顺序,例如:点灯、按键、IIC、SPI、等等都是字符设备,这些设备的驱动叫字符驱动设备 Linux应用层如何调用驱动: 字符设…

【苍穹外卖】问题笔记

【DAY1 】 1.VCS找不到 好吧,发现没安git 接着发现安全模式有问题,点开代码信任此项目 2.导入初始文件,全员爆红 好像没maven,配一个 并在设置里设置好maven 3.启用注解,见新手苍穹 pom.xml改lombok版本为1.1…

1.1部署es:9200

安装es:root用户: 1.布署java环境 - 所有节点 wget https://d6.injdk.cn/oraclejdk/8/jdk-8u341-linux-x64.rpm yum localinstall jdk-8u341-linux-x64.rpm -y java -version 2.下载安装elasticsearch - 所有节点 wget ftp://10.3.148.254/Note/Elk/…

上传securecmd失败

上传securecmd失败 问题描述:KES V8R6部署工具中,节点管理里新建节点下一步提示上传securecmd失败,如下: 解决办法: [rootlocalhost ~]# yum install -y unzip 上传的过程中会解压,如果未安装unzip依赖包…

C++:dfs,bfs各两则

1.木棒 167. 木棒 - AcWing题库 乔治拿来一组等长的木棒,将它们随机地砍断,使得每一节木棍的长度都不超过 5050 个长度单位。 然后他又想把这些木棍恢复到为裁截前的状态,但忘记了初始时有多少木棒以及木棒的初始长度。 请你设计一个程序…