(2024,Vision-RWKV,线性复杂度双向注意力,四向标记移位)通过类似 RWKV 的架构实现高效且可扩展的视觉感知

news2024/12/27 1:36:43

Vision-RWKV: Efficient and Scalable Visual Perception with RWKV-Like Architectures

公和众与号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群)

目录

0. 摘要

2. 特征聚合机制

3. Vision-RWKV

3.1 总体架构

3.2 线性复杂度双向注意力

3.3 四向标记移位

3.4 扩展稳定性

3.5 模型细节

4. 实验


0. 摘要

Transformer 已经彻底改变了计算机视觉和自然语言处理,但其高计算复杂性限制了它们在高分辨率图像处理和长上下文分析中的应用。本文介绍了 Vision-RWKV(VRWKV)模型,这是从在自然语言处理领域使用的 RWKV 模型改编而来,经过必要的修改用于视觉任务。与 Vision Transformer(ViT)类似,我们的模型设计旨在有效处理稀疏输入并展示强大的全局处理能力,同时能够有效扩展,适应大规模参数和广泛数据集。其独特优势在于减少了空间聚合复杂性,使其在处理高分辨率图像时表现出色,无需窗口操作。我们的评估表明,VRWKV 在图像分类方面超过了ViT,并且在处理高分辨率输入时具有显著更快的速度和更低的内存使用。在密集预测任务中,它优于基于窗口的模型,同时保持可比较的速度。这些结果突显了 VRWKV 作为视觉感知任务更高效替代方案的潜力。

项目页面:https://github.com/OpenGVLab/Vision-RWKV 

2. 特征聚合机制

在人工智能领域,特征聚合(feature aggregation)的研究引起了广泛关注。对于视觉数据处理,卷积 [24] 以其参数共享和局部感知而闻名,通过滑动计算有效处理大规模数据。尽管传统的 CNN 操作具有这些优势,但面对建模长距离依赖关系的挑战时存在一定困难。为了克服这一问题,先进的卷积操作,如可变形卷积(deformable convolution) [5, 60, 64],增强了CNN 的灵活性,提升了其建模长距离依赖关系的能力。

在自然语言处理领域,基于 RNN 的操作 [13, 34, 37] 以其在序列建模中的有效性而占据主导地位。RNN 和 LSTM 在捕捉时间依赖关系方面表现出色,使它们适用于需要理解序列动态的任务。随后,出现了显著的转变。Transformer 架构的引入 [52] 标志着一个转折点,使得 NLP 和计算机视觉领域都将焦点转向基于注意力的特征聚合。全局注意力机制克服了 CNN 在建模长距离依赖关系和 RNN 在并行计算方面的局限性,尽管以较高的计算成本为代价。

为了解决注意力算子在建模长序列时的高计算成本,研究人员引入了创新技术,如窗口注意力和空间缩减注意力。窗口注意力(Window attention) [6, 30, 51] 限制了自注意力计算在局部窗口内进行,大幅降低了计算复杂度,同时通过窗口级别的交互保留了感受野。另一方面,空间缩减注意力(Spatial reduction attention) [56, 57] 在应用注意力机制之前减少了特征空间的维度,有效降低了计算需求而不显著降低模型性能。

除了优化全局注意力机制的努力外,还探索了具有线性复杂度的各种操作 [15, 35, 36, 46, 47]。例如,RWKV [35] 和 RetNet [47] 利用指数衰减高效建模全局信息,而 SSM [16,17,42,53] 也表现出与序列长度有关的线性复杂性,Mamba 中的修改 [15] 使它们变得依赖于输入。然而,标记(token)之间信息交互效率低下,因此需要辅助模块完成全面的特征聚合。尽管有一些同期努力 [14, 29, 63],将这些源自 NLP 的技术应用于视觉任务仍然是一个挑战,尤其是在保持对更大更复杂视觉模型稳定训练的过程中。

(2023|EMNLP,RWKV,Transformer,RNN,AFT,时间依赖 Softmax,线性复杂度)

3. Vision-RWKV

3.1 总体架构

在本节中,我们提出了 Vision-RWKV(VRWKV),一个具有线性复杂度注意力机制的高效视觉编码器。我们的原则是保留原始 RWKV 架构 [35] 的优点,仅进行必要的修改,以使其在视觉任务中灵活应用,支持稀疏输入,并确保在扩展后训练过程的稳定性。我们的 VRWKV 概述如图 2 所示。

VRWKV 采用类似 ViT 的块堆叠图像编码器设计,其中每个块包括一个空间混合模块和一个通道混合模块。空间混合模块作为注意力机制,执行线性复杂度的全局注意力计算,而通道混合模块则作为前馈网络(FFN),在通道维度上执行特征融合。 整个 VRWKV 包括一个补丁(patch)嵌入层和一个由 L 个相同的 VRWKV 编码器层组成的堆叠 ,其中每一层都保持输入分辨率。

数据流。首先,我们将 H×W×3 图像转换为 HW / p^2 个补丁,其中 p 表示补丁大小。线性投影后的补丁添加位置嵌入,以获得形状为 T×C 的图像标记,其中 T = HW / p^2 表示总标记数。然后将这些标记输入到具有 L 层的 VRWKV 编码器中。 在每一层中,标记首先被输入到空间混合模块中,该模块扮演全局注意力机制的角色。具体来说,如图 2(b) 所示,输入标记首先被移位并输入到三个并行线性层中,以获得矩阵 Rs,Ks,Vs ∈ R^(T×C):

其中,Ks 和 Vs 通过线性复杂度的双向注意力机制传递,计算全局注意力结果 wkv ∈ R^(T×C),并与控制输出 O_s 概率的 σ(R) 相乘: 

σ 表示 sigmoid 函数,⊙ 表示应用逐元素乘法。Q-Shift 是专门为视觉任务适应的标记移位函数。在进行输出线性投影后,特征通过层归一化 [2] 进行稳定化处理。

其中,Vc 是经过激活函数后 K 的线性投影,输出 Oc 在输出投影之前也受门控机制 σ(Rc) 控制:

同时,从标记到每个归一化层建立残差连接 [20],以确保在深度网络中训练梯度不会消失。 

3.2 线性复杂度双向注意力

与传统的 RWKV [35] 不同,我们对其原始注意力机制进行了以下修改,以适应视觉任务:

  • 双向注意力:我们扩展了原始 RWKV 注意力的上限,从当前标记 t 扩展到最后一个标记 T−1,在求和公式中确保每个结果的计算中所有标记都相互可见。因此,原始的因果注意力转变为双向全局注意力。
  • 相对偏差:我们计算时间差异 t − i 的绝对值,并除以标记总数 T(表示为 T),以表示不同大小图像中标记的相对偏差。
  • 灵活衰减:我们不再限制可学习的衰减参数 w 在指数项中为正,允许指数衰减注意力聚焦不同通道中距离当前标记较远的标记。这种简单而必要的修改实现了全局注意力的计算,并最大程度地保留了 RWKV 低复杂度和对视觉任务的适应性。

与 RWKV 中的注意力类似,我们的双向注意力也可以等价地表达为求和形式(为了清晰起见)和 RNN 形式(在实际实现中)。

求和形式。第 t 个标记的注意力计算结果由以下公式给出:

其中,T 表示标记的总数,等于 HW  /p^2,w 和 u 是两个 C 维可学习向量,分别表示通道级空间衰减和表示当前标记的奖励。kt 和 vt 表示 K 和 V 的第 t 个特征。

求和公式表明,输出 wkvt 是 V 沿着从 0 到 T−1 的标记维度的加权和,得到一个 C 维向量。它表示对第 t 个标记应用注意力操作后得到的结果。权重由空间衰减向量 w、标记之间的相对偏差 (|t−i|1)/T 和 ki 共同决定。

RNN 形式。在实际实现中,上述方程(5)可以通过 RNN 形式的递归公式来转换,每个标记的结果可以通过固定数量的 FLOP 来获取。通过以 t 为边界分割方程(5)中的分母和分子的求和项,我们可以获得可通过递归计算的 4 个隐藏状态:

隐藏状态的更新仅需要添加或减去一个求和项,并乘以或除以 e^{-w/T}。然后第 t 个结果可以表示为: 

每个更新步骤为一个标记产生一个注意力结果(即 wkvt),因此整个 wkv 矩阵需要 T 步骤。

当输入 K 和 V 是形状为 T×C 的矩阵时,计算 wkv 矩阵的计算成本如下:

其中,数字 13 近似地来自 (a, b, c, d) 的更新、指数的计算以及 wkvt 的计算。T 是总的更新步数,等于图像标记的数量。上述近似显示了正向过程的复杂度为 O(TC)。操作符的反向传播仍可以表示为更复杂的 RNN 形式,其计算复杂度为 O(TC)。具体的反向传播公式在附录中提供。

3.3 四向标记移位

通过引入指数衰减机制,全局注意力的复杂度可以从二次降低到线性,极大增强了模型在高分辨率图像中的计算效率。然而,一维衰减与二维图像中的邻近关系不对齐。因此,我们在每个空间混合和通道混合模块的第一步引入了四向标记移位(Q-Shift)。Q-Shift 操作允许所有标记与它们的邻近标记进行线性插值和移位,如下所示:

下标 (*) ∈ {R, K, V} 表示由可学习向量 μ(*) 控制的 X 和 X† 的三个插值,用于后续计算 R, K, V。h 和 w 表示标记 X 的行和列索引,“:” 是一个切片操作,不包括结束索引。Q-Shift 使不同通道的注意力机制在不引入过多额外 FLOP 的情况下,获得专注于内部邻近标记的优势。Q-Shift 操作还增加了每个标记的接收域,极大增强了后续层中标记的覆盖范围。

3.4 扩展稳定性

模型层数增加和递归过程中指数项的累积都可能导致模型输出的不稳定性,并影响训练过程的稳定性。为了减轻这种不稳定性,我们采用了两种简单而有效的修改来稳定模型的扩展。

  • 有界指数:随着输入分辨率的增加,指数衰减和增长很快超出浮点数范围。因此,我们通过标记数量来除以指数项(例如 exp(−(|t − i| − 1)/T · w)),使最大衰减和增长受到限制。
  • 额外的层归一化:当模型变得更深时,我们在注意力机制和 Squared ReLU 操作后直接添加层归一化 [2],以防止模型输出溢出。这两种修改使得输入分辨率和模型深度的扩展变得稳定,使得大型模型能够稳定训练和收敛。我们还引入层尺度(layer scale) [50],有助于模型在扩展时的稳定性。

3.5 模型细节

在 ViT 的基础上,包括嵌入维度、线性投影中的隐藏维度和深度等 VRWKV 变体的超参数在表 1 中进行了指定。由于 VRWKV-L 模型的深度增加,根据第 3.4 节讨论的内容,在适当位置引入了额外的层归一化,以确保输出的稳定性。

4. 实验

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

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

相关文章

怎么看电脑实时充电功率

因为我想测试不同的充电器给电脑充电的速度,所以就想找一款软件可以看电脑当前充电功率的软件,我给一个图 直接搜索就可以下载了,charge rate就是功率,这里是毫瓦,换算单位是 1000mw1w 所以我这里充电功率是65w&…

RocketMQ-记一次生产者发送消息存在超时异常

目录 1、背景说明 2、排查 2.1、防火墙 2.2、超时时间设置 2.3、服务器资源检查 2.3.1、内存、CPU等 2.3.2、磁盘空间 ​编辑 2.3.3、检查文件描述符 2.3.4、swap区 3、增加swap空间 3.1、创建目录 3.2、格式化 3.3、启动swap 3.4、查看效果 1、背景说明 在一次…

音视频开发—FFmpeg 打开摄像头进行RTMP推流

实验平台:Ubuntu20.04 摄像头:普通USB摄像头,输出格式为YUV422 1.配置RTMP服务器推流平台 使用Nginx 配置1935端口即可,贴上教程地址 ubuntu20.04搭建Nginxrtmp服务器) 2.配置FFmpeg开发环境 过程较为简单,这里不…

深度学习Week17——优化器对比实验

文章目录 深度学习Week17——优化器对比实验 一、前言 二、我的环境 三、前期工作 1、配置环境 2、导入数据 2.1 加载数据 2.2 检查数据 2.3 配置数据集 2.4 数据可视化 四、构建模型 五、训练模型 1、将其嵌入model中 2、在Dataset数据集中进行数据增强 六、模型评估 1、Accur…

IMU用于飞行坐姿校正

为了提升长途飞行的舒适度并预防乘客因不良坐姿导致的身体不适,来自荷兰上海两所大学的研究团队携手开发出一种创新的“舒适穿戴”设备,专为识别飞行中的坐姿设计。 研究团队制作了两种原型设备:一种追求极致舒适,另一种为紧身设…

增强-MIGO物料消耗需要将物料描述写到会计凭证的摘要里面

财务比较闲提的需求,有些物料消耗需要将物料描述写到会计凭证的摘要里面, 找了一下增强点,随便搞了一下,可以了。

20240620日志:TAS-MRAM的电阻开放分析

TAS-MRAM的电阻开放缺陷分析 1 MRAM介绍开放电阻的缺陷 1 MRAM介绍 MRAM(Magnetic random access memory),磁随机存储器,利用磁性材料的状态来存储数据。MRAM的存储单元通常由一个磁隧道结( M T J 茅台酒 MTJ^{茅台酒} MTJ茅台酒&#xff0c…

STM32小项目———感应垃圾桶

文章目录 前言一、超声波测距1.超声波简介2.超声波测距原理2.超声波测距步骤 二、舵机的控制三、硬件搭建及功能展示总结 前言 一个学习STM32的小白~ 有问题请评论区或私信指出 提示:以下是本篇文章正文内容,下面案例可供参考 一、超声波测距 1.超声波…

通过 Setapp 使用 240 多款 Mac 生产力工具以及 GPT-4o

Setapp 是一项革命性的订阅服务,可以使用 240 多款 Mac 应用程序的综合套件,并配有强大的人工智能助手。 通过 Setapp 为你的工作效率和生产力增添魔力。 Setapp 官网:访问(提供 7 天试用) Setapp 的主要功能 AI 助手…

人工智能对决:ChatGLM与ChatGPT,探索发展历程

图: a robot is writing code on a horse, By 禅与计算机程序设计艺术 目录 ChatGLM:

数据结构-图的存储结构-邻接矩阵

图的结构十分复杂,不仅各个结点的度不同,各个顶点之间的路径也不尽相同。但是图的主要组成部分比较清晰,分为顶点信息和边或者弧的信息。 邻接矩阵 邻接矩阵就是用一维数组存储图中顶点的信息,用一个二维数组表示图中各个顶点之间…

区块链技术:重塑金融市场监管的新引擎

一、引言 随着金融市场的不断发展和创新,监管面临的挑战也日益严峻。传统的监管模式已难以满足现代金融市场的需要,而区块链技术的出现为金融市场监管带来了新的机遇。本文将探讨区块链技术在金融市场监管中的作用,以及它如何重塑监管模式&a…

组装盒示范程序

代码; #include <gtk-2.0/gtk/gtk.h> #include <glib-2.0/glib.h> #include <stdio.h>int main(int argc, char *argv[]) {gtk_init(&argc, &argv);GtkWidget *window;window gtk_window_new(GTK_WINDOW_TOPLEVEL);gtk_window_set_title(GTK_WINDO…

GPT 模型简史:从 GPT-1 到 GPT-4

文章目录 GPT-1GPT-2GPT-3从 GPT-3 到 InstructGPTGPT-3.5、Codex 和 ChatGPTGPT-4 GPT-1 2018 年年中&#xff0c;就在 Transformer 架构诞生⼀年后&#xff0c;OpenAI 发表了⼀篇题 为“Improving Language Understanding by Generative Pre-Training”的论文&#xff0c;作者…

这几种常见的性能调优方法和技巧,你掌握了吗?

性能调优是在软件开发过程中非常重要的一步&#xff0c;它可以提高软件的响应速度、资源利用率和整体性能。本文将介绍几种常见的性能调优方法和技巧&#xff0c;帮助开发人员提升软件的性能。 一、代码优化 1、一个好的编程规范的习惯不仅可以促进团队和谐&#xff0c;在代码的…

浅谈配置元件之LDAP默认请求

浅谈配置元件之LDAP默认请求 在进行LDAP&#xff08;轻量级目录访问协议&#xff09;相关测试时&#xff0c;JMeter提供了“LDAP 默认请求”配置元件来帮助用户便捷地设置LDAP查询的基本参数。本文介绍如何在JMeter中配置和使用“LDAP 默认请求”元件的指南。 1. 简介 “LDA…

怎么同时管理多个微信号

微信登录上软件就可以实现统一管理&#xff0c;能够自动加人&#xff0c;定时发圈&#xff0c;自动通过&#xff0c;自动回复

板凳--------第60章 SOCKET:服务器设计

60.1 迭代型和并发型服务器 1016 1.迭代型&#xff1a; 服务器每次只处理一个客户端&#xff0c;只有当完全处理完一个客户端的请求后才会去处理下一个客户端。只适用于快速处理客户端请求的场景&#xff0c;因为每个客户端都必须等待&#xff0c;直到前面所有的客户端都处理完…

NGINX_六 nginx 日志文件详解

六 nginx 日志文件详解 nginx 日志文件分为 **log_format** 和 **access_log** 两部分log_format 定义记录的格式&#xff0c;其语法格式为log_format 样式名称 样式详情配置文件中默认有log_format main $remote_addr - $remote_user [time_local] "req…

如何有效管理信息技术课堂

有效管理信息技术课堂是确保学生学习效果、维护课堂秩序和提升学生兴趣的关键。以下是一些详细的方法和策略&#xff0c;旨在帮助教师更好地管理信息技术课堂&#xff1a; 一、制定明确的课堂规则 强调课堂纪律&#xff1a;确保学生明确了解并遵守课堂纪律&#xff0c;如准时…