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的优化注意力实现。使用不支持的硬件的用户将不得不回退到标准注意力内核,从而失去一些速度优势。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu20.04之VNC的安装使用与常见问题

Ubuntu20.04之VNC的安装与使用 安装图形桌面选择安装gnome桌面选择安装xface桌面 VNC-Server安装配置开机自启 VNC Clientroot用户无法登入问题临时方案永久方案 安装图形桌面 Ubuntu20.04主流的图形桌面有gnome和xface两种,两种桌面的安装方式我都会写&#xff0c…

14.二叉搜索树

二叉搜索树 1.概念 ⼆叉搜索树⼜称⼆叉排序树,它或者是⼀棵空树,或者是具有以下性质的⼆叉树: *若它的左⼦树不为空,则左⼦树上所有结点的值都⼩于等于根结点的值 *若它的右⼦树不为空,则右⼦树上所有结点的值都⼤于等于根结点…

web网络安全---cookie篇

什么是Cookie 由于HTTP是一种无状态的协议,服务器单从网络连接上无从知道客户身份。怎么办呢?就给客户端们颁发一个通行证吧,每人一个,无论谁访问都必须携带自己通行证。这样服务器就能从通行证上确认客户身份了。这就是Cookie的…

Qt 开源音视频框架模块之QtAV播放器实践

Qt 开源音视频框架模块QtAV播放器实践 1 摘要 QtAV是一个基于Qt的多媒体框架,旨在简化音视频播放和处理。它是一个跨平台的库,支持多种音视频格式,并提供了一个简单易用的API来集成音视频功能。QtAV的设计目标是为Qt应用程序提供强大的音视…

WPF学习之Prism(二)

前言 学习一下Prism。 1.Prism Prism框架提供了一套丰富的工具、类和模块,帮助开发人员实现以下功能: 模块化:Prism框架支持将应用程序拆分为多个模块,每个模块具有自己的功能和视图。这种模块化的设计使得应用程序更加灵活和…

前端实现rsa加密功能

本文将从web和小程序两个端来实现rsa的加密功能。 一般项目的登录密码、身份证号以及一些用户敏感信息等在传输的时候需要使用加密传输,一般来说,前端只会得到后端给的公钥,而rsa加密,可以用公钥加密,也可以用私钥加密…

VidSketch:具有扩散控制的手绘草图驱动视频生成

浙大提出的VidSketch是第一个能够仅通过任意数量的手绘草图和简单的文本提示来生成高质量视频动画的应用程序。该方法训练是在单个 RTX4090 GPU 上进行的,针对每个动作类别使用一个小型、高质量的数据集。VidSketch方法使所有用户都能使用简洁的文本提示和直观的手绘…

STM32——HAL库开发笔记23(定时器4—输入捕获)(参考来源:b站铁头山羊)

定时器有四个通道,这些通道既可以用来作为输入,又可以作为输出。做输入的时候,可以使用定时器对外部输入的信号的时间参数进行测量;做输出的时候,可以使用定时器向外输出精确定时的方波信号。 一、输入捕获 的基本原理…

Jquery详解

一.Jquery介绍 1.jQuery 是一个快速、简洁的 JavaScript 库,它极大地简化了 HTML 文档遍历、事件处理、动画效果和 AJAX 交互等操作,使开发者能够更轻松地创建动态和交互性强的网页。对原生js的封装,提供了很多时间,调用Api即可,并且对浏览器做了兼容性…

【EB-06】SystemCreator dbc转arxml

SystemCreator dbc转arxml 1. SystemCreator 意义2. SystemCreator使用方法2.1 实现步骤2.2 参考官方文档方法1. SystemCreator 意义 EB Tresos 对dbc直接导入的支持不是很完善,dbc也不是AUTOSAR标准的数据库文件,EB建议所有通信矩阵通过ARXML交互比较合理(AUTOSAR定义的)…

LeetCode225.用队列实现栈

LeetCode225.用队列实现栈 文章目录 LeetCode225.用队列实现栈题目描述实现1:实现2: 题目描述 请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。 实现 MyStack…

【Linux】vim 设置

【Linux】vim 设置 零、起因 刚学Linux,有时候会重装Linux系统,然后默认的vi不太好用,需要进行一些设置,本文简述如何配置一个好用的vim。 壹、软件安装 sudo apt-get install vim贰、配置路径 对所有用户生效: …

【FL0091】基于SSM和微信小程序的社区二手物品交易小程序

🧑‍💻博主介绍🧑‍💻 全网粉丝10W,CSDN全栈领域优质创作者,博客之星、掘金/知乎/b站/华为云/阿里云等平台优质作者、专注于Java、小程序/APP、python、大数据等技术领域和毕业项目实战,以及程序定制化开发…

Javaweb后端数据库多表关系一对多,外键,一对一

多表关系 一对多 多的表里,要有一表里的主键 外键 多的表上,添加外键 一对一 多对多 案例

seacmsv9注入管理员账号密码+orderby+limit

seacmsv9注入管理员账号密码 seacms介绍 海洋影视管理系统(seacms,海洋cms)是一套专为不同需求的站长而设计的视频点播系统,采用的是 php5.Xmysql 的架构,使用 fofa 搜索可以看到存在 400的记录: 因为sea…

开源基准测试模拟器:BlueROV2 水下机器人的控制(更改Z方向控制器)

开源基准测试模拟器:BlueROV2 水下机器人的控制(更改Z方向控制器) 将原有项目的z方向控制器由自适应滑膜控制器(ASMC)更改为自抗扰控制器(ADRC) 原Z控制器 更改为ADRC后图像 原自适应滑膜控制器代码 function u =

【苍穹外卖】问题笔记

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

项目实践 之 pdf简历的解析和填充(若依+vue3)

文章目录 环境背景最终效果前端讲解左侧模块解析右侧上传模块解析前端步骤 后端讲解代码前端 环境背景 若依前后端分离框架 vue最后边附有代码哦 最终效果 前端讲解 左侧模块解析 1、左侧表单使用el-form 注意: 1、prop出现的字段,需要保证是该类所…

Web自动化之Selenium控制已经打开的浏览器(Chrome,Edge)

在使用selenium进行web自动化或爬虫的时候,经常会面临登录的情况,对于这种情况,我们可以利用Selenium控制已经打开的浏览器,从而避免每次都需要重新打开浏览器并进行登录的繁琐步骤。 目录 说明 启动浏览器 注意 --user-data-dir说明 代码设定 代码 改进代…

千峰React:案例一

做这个案例捏 因为需要用到样式,所以创建一个样式文件: //29_实战.module.css .active{text-decoration:line-through } 然后创建jsx文件,修改main文件:导入Todos,写入Todos组件 import { StrictMode } from react …