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

概述

实时目标检测对于许多实际应用来说已经变得至关重要,而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.mzph.cn/web/70759.shtml

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

相关文章

OpenAI开放Deep Research权限,AI智能体大战升级,DeepSeek与Claude迎来新对决

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

鸿蒙5.0实战案例:基于RichEditor的评论编辑

往期推文全新看点(文中附带全新鸿蒙5.0全栈学习笔录) ✏️ 鸿蒙(HarmonyOS)北向开发知识点记录~ ✏️ 鸿蒙(OpenHarmony)南向开发保姆级知识点汇总~ ✏️ 鸿蒙应用开发与鸿蒙系统开发哪个更有前景&#…

通过命令启动steam的游戏

1. 启动Steam客户端 在命令行输入以下命令来启动Steam客户端: start steam://open/main 如果Steam未安装在默认路径,可能需要先定位到Steam的安装目录,例如: cd C:\Program Files (x86)\Steam start steam://open/main 2. 通过…

RIP-AV:使用上下文感知网络进行视网膜动脉/静脉分割的联合代表性实例预训练

文章目录 RIP-AV: Joint Representative Instance Pre-training with Context Aware Network for Retinal Artery/Vein Segmentation摘要方法实验结果 RIP-AV: Joint Representative Instance Pre-training with Context Aware Network for Retinal Artery/Vein Segmentation …

单片机总结【GPIO/TIM/IIC/SPI/UART】

一、GPIO 1、概念 通用输入输出口;开发者可以根据自己的需求将其配置为输入或输出模式,以实现与外部设备进行数据交互、控制外部设备等功能。简单来说,GPIO 就像是计算机或微控制器与外部世界沟通的 “桥梁”。 2、工作模式 工作模式性质特…

.gitignore 文件中添加忽略 .pdb 文件

我在项目的根目录下创建.gitignore文件。打开.gitignore文件并添加忽略.pdb文件的规则。如下: 已经在 .gitignore 文件中添加了忽略 .pdb 文件的规则,但是提交到 Git 仓库时仍然看到了 .pdb 文件,这通常意味着 .pdb 文件在 .gitignore 文件被…

ubuntu配置jmeter

1.前提准备 系统 ubuntu server 22.04 前提条件:服务器更新apt与安装lrzsz:更新apt: sudo apt update安装lrzsz: 命令行下的上传下载文件工具 sudo apt install lrzszsudo apt install zip2.安装jemeter 2.1.下载jdk17 输入命令&#xf…

半导体晶圆精控:ethercat转profient网关数据提升制造精度

数据采集系统通过网关连接离子注入机,精细控制半导体晶圆制造过程中的关键参数。 在半导体制造中,晶圆制造设备的精密控制是决定产品性能的关键因素。某半导体工厂采用耐达讯Profinet转EtherCAT协议网关NY-PN-ECATM,将其数据采集系统与离子注…

VSCode+PlatformIO报错 找不到头文件

如图示,找不到目标头文件 demo工程运行正常,考虑在src文件夹内开辟自己的代码,添加后没有找到 找了些资料,大概记录如下: 1、c_cpp_properties.json 内记录 头文件配置 .vscode 中,此文件是自动生成的&a…

ARM 处理器平台 eMMC Flash 存储磨损测试示例

By Toradex秦海 1). 简介 目前工业嵌入式 ARM 平台最常用的存储器件就是 eMMC Nand Flash 存储,而由于工业设备一般生命周期都比较长,eMMC 存储器件的磨损寿命对于整个设备来说至关重要,因此本文就基于 NXP i.MX8M Mini ARM 处理器平台演示…

Comfy UI 快捷键

Comfy UI 页面的快捷键操作(记录下,以防忘记): 捷径命令Ctrl Enter将当前图表排队等待生成Ctrl Shift Enter将当前图表排成第一个生成图表Ctrl Z/Ctrl Y撤消/重做Ctrl S保存工作流程Ctrl O加载工作流Ctrl A选择所有节点A…

uniapp 本地数据库多端适配实例(根据运行环境自动选择适配器)

项目有个需求,需要生成app和小程序,app支持离线数据库,如果当前没有网络提醒用户开启离线模式,所以就随便搞了下,具体的思路就是: 一个接口和多个实现类(类似后端的模板设计模式)&am…

HIVE SQL函数之比较函数

背景:今天接到一个临时需求,需要比较abc的大小,但是abc三个字段都存在为空的情况。 开发:对于这个开发很简单,因为比较函数有太多了,首先想到的是用case when去进行一个非空的判断,再去比较用I…

AI探索笔记:浅谈人工智能算法分类

人工智能算法分类 这是一张经典的图片,基本概况了人工智能算法的现状。这张图片通过三个同心圆展示了人工智能、机器学习和深度学习之间的包含关系,其中人工智能是最广泛的范畴,机器学习是其子集,专注于数据驱动的算法改进&#…

进程概念、PCB及进程查看

文章目录 一.进程的概念进程控制块(PCB) 二.进程查看通过指令查看进程通过proc目录查看进程的cwd和exe获取进程pid和ppid通过fork()创建子进程 一.进程的概念 进程是一个运行起来的程序,而程序是存放在磁盘的,cpu要想执行程序的指…

OA办公系统自动渗透测试过程

目录 一、下载环境源码 二、部署环境 三、测试 XSS漏洞 SQL注入 文件上传漏洞 一、下载环境源码 OA源码打包地址: https://download.csdn.net/download/weixin_43650289/90434502?spm=1001.2014.3001.5503 二、部署环境

怎么修改node_modules里的文件,怎么使用patch-package修改node_modules的文件,怎么修改第三方库原文件。

在开发中会遇到需要node_modules里第三方库有bug,然后需要修改node_modules文件的情况 使用patch-package包可以修改node_modules里的文件 patch-package npm 官网:patch-package - npm 安装 npm i patch-package 修改文件后 npx patch-package s…

Python在实际工作中的运用-通用格式CSV文件自动转换XLSX

继续上篇《Python在实际工作中的运用-CSV无损转XLSX的几个方法》我们虽然对特定格式的CSV实现了快速转换XLSX的目标,但是在运行Py脚本前,还是需要编辑表格创建脚本和数据插入脚本,自动化程度很低,实用性不强,为减少人工提高效率,实现输入CSV文件路径即可自动适配完成转换…

seacmsv9报错注入

1、seacms的介绍 ​ seacms中文名&#xff1a;海洋影视管理系统。是一个采用了php5mysql架构的影视网站框架&#xff0c;因此&#xff0c;如果该框架有漏洞&#xff0c;那使用了该框架的各个网站都会有相同问题。 2、源码的分析 漏洞的部分源码如下&#xff1a; <?php …

Hbase客户端API——语句大全

目录 创建表&#xff1a; 插入数据&#xff1a; 删除数据&#xff1a; 修改数据&#xff1a; 查询数据&#xff1a;Get 查询数据&#xff1a;Scan 查询数据&#xff1a;过滤查询 创建表&#xff1a; 检验&#xff1a; 插入数据&#xff1a; 验证 一次多条数据插入 验证&…