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

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. 实验

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

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

相关文章

一问搞懂Linux信号【上】

Linux信号在Linux系统中的地位仅此于进程间通信,其重要程度不言而喻。本文我们将从信号产生,信号保存,信号处理三个方面来讲解信号。 🚩结合现实认识信号 在讲解信号产生之前,我们先做些预备的工作。 现实生活中信号…

2024.6最最新版MySQL数据库安装(保姆级教程,不懂你捶我)

1.MySQL数据库下载 1.打开MySQL官网 如下页面 2.下翻网页到最底部,找到Download,点击第一个MySQL Community Server 3.选择自己需要的版本以及系统的MySQL: 4.跳转页面会有一个登录/注册页面,这里我们不鸟他,直接开始下载 2.MySQL数据库安装 1.双击我们刚刚下载的安装包 2.勾…

音乐管理系统

摘 要 现如今,在信息快速发展的时代,互联网已经成了人们在日常生活中进行信息交流的重要平台。看起来,听歌只是一种消遣和消遣,其实,只要你选对了曲子,就会产生许多不同的作用。音乐能舒缓身心&#xff0c…

上海交大阿里巴巴推出虚拟试衣新里程碑式工作——AnyFit:任意场景、任意组合!

文章链接:https://arxiv.org/pdf/2405.18172 工程链接:https://colorful-liyu.github.io/anyfit-page/ 今天和大家一起学习的是一种名为AnyFit的新型虚拟试穿系统,旨在解决现有技术在处理不同场景和服饰组合时出现的衣物风格不匹配和质量下…

量化系统--开源强大的qmt交易系统,提供源代码

经过的3天终于写完了qmt_trader的文档了开源直接使用我开源了全部源代码 文档地址 https://gitee.com/li-xingguo11111/qmt_trader 源代码from qmt_trader.qmt_trader import qmt_trader from qmt_trader.xtquant.xttype import StockAccountfrom qmt_trader.xtquant import …

opencascade AIS_InteractiveContext源码学习2

AIS_InteractiveContext 前言 交互上下文(Interactive Context)允许您在一个或多个视图器中管理交互对象的图形行为和选择。类方法使这一操作非常透明。需要记住的是,对于已经被交互上下文识别的交互对象,必须使用上下文方法进行…

C语言练习03-字符串

一、遍历字符 #include<stdio.h>int main() {char str[100];//录入字符串printf("请输入一串字符&#xff1a;\n");scanf("%s",str);//遍历字符串char* p str;while(1){char c *p;if(c \0){//如果遍历到结束标记&#xff0c;则循环结束break;}//…

雷池社区版自动SSL

正常安装雷池&#xff0c;并配置站点&#xff0c;暂时不配置ssl 不使用雷池自带的证书申请。 安装&#xff08;acme.sh&#xff09;&#xff0c;使用域名验证方式生成证书 先安装git yum install git 或者 apt-get install git 安装完成后使用 git clone https://gitee.com/n…

应用案例 | 冷藏集装箱基于云的WiFi无线温度监测系统COMET Cloud

一、集装箱的作用和分类 集装箱运输是国际贸易货物多式联运过程中的重要运输方式。由于集装箱运输具有标准化高、密封性好&#xff0c;破损率低、集约化、规模化、班轮化、成本低、质量好等优点&#xff0c;大大提高了货物运输的安全和效率。 集装箱种类很多&#xff0c;按所…

C++类基本常识

文章目录 一、类的默认方法二、类的成员变量初始化1 类的成员变量有三种初始化方法&#xff1a;2 成员变量初始化顺序3 const和static的初始化 三、C内存区域四、const和static 一、类的默认方法 C的类都会有8个默认方法 默认构造函数默认拷贝构造函数默认析构函数默认重载赋…

mongodb嵌套聚合

db.order.aggregate([{$match: {// 下单时间"createTime": {$gte: ISODate("2024-05-01T00:00:00Z"),$lte: ISODate("2024-05-31T23:59:59Z")}// 商品名称,"goods.productName": /美国皓齿/,//订单状态 2:待发货 3:已发货 4:交易成功…

最火AI角色扮演流量已达谷歌搜索20%!每秒处理2万推理请求,Transformer作者公开优化秘诀

卡奥斯智能交互引擎是卡奥斯基于海尔近40年工业生产经验积累和卡奥斯7年工业互联网平台建设的最佳实践&#xff0c;基于大语言模型和RAG技术&#xff0c;集合海量工业领域生态资源方优质产品和知识服务&#xff0c;旨在通过智能搜索、连续交互&#xff0c;实时生成个性化的内容…

springboot3 连接 oceanbase + logproxy数据同步到redis

我这用的是 社区版的 单机&#xff0c; rocky liunx 安装oceanbase 注意事项&#xff1a; logproxy 是 CDC 模式 &#xff0c; springboot 可以直接订阅 canal 是 binlog模式&#xff0c; canal 订阅 logproxy&#xff0c; springboot 订阅 canal logproxy 也可以转 bi…

何在 Vue3 中使用 Cytoscape 创建交互式网络图

本文由ScriptEcho平台提供技术支持 项目地址&#xff1a;传送门 Vue.js 中加载 Cytoscape.js 的技术实现 应用场景 Cytoscape.js 是一个用于创建交互式网络的可视化库。在生物信息学、社会网络分析和药物发现等领域中得到了广泛应用。 基本功能 本代码片段演示了如何在 V…

python测试工程师 之 unittest框架总结

unittest 学习目标unittest 框架的基本使⽤⽅法(组成)断⾔的使⽤ (让程序⾃动的判断预期结果和实际结果是否相符)参数化(多个测试数据, 测试代码写⼀份 传参)⽣成测试报告 复习pythonunittest 框架的介绍核⼼要素(组成)1. TestCase 测试⽤例, 这个测试⽤例是 unittest 的组成部…

LeetCode题练习与总结:克隆图--133

一、题目描述 给你无向 连通 图中一个节点的引用&#xff0c;请你返回该图的 深拷贝&#xff08;克隆&#xff09;。 图中的每个节点都包含它的值 val&#xff08;int&#xff09; 和其邻居的列表&#xff08;list[Node]&#xff09;。 class Node {public int val;public L…

【案例分析:基于 Python 的几种神经网络构建 一维的和二维的全介质和金属SPR 材料的光谱预测与逆向设计】

案例分析&#xff1a;传播相位与几何相位超构单元仿真与器件库提取与二维超构透镜设计与传播光场仿真 案例分析&#xff1a; 片上的超构单元仿真与光学参数提取 案例分析&#xff1a;基于粒子群方法的耦合器设计 案例分析&#xff1a;基于 Python 的几种神经网络构建 一维的和二…

【大分享06】收、治、用、安“四管齐下”, 做好多业务系统电子文件归档与管理

关注我们 - 数字罗塞塔计划 - 本篇是参加由电子文件管理推进联盟联合数字罗塞塔计划发起的“大分享”活动投稿文章&#xff0c;来自上海泰宇信息技术股份有限公司&#xff0c;作者&#xff1a;金靓。 随着数字政府建设的深入推进以及“互联网政务服务”的快速发展&#xff0c…

canal 服务安装

简介&#xff1a;Canal 是阿里巴巴开源的一个基于 MySQL 数据库增量日志解析的中间件&#xff0c;用于提供准实时的数据同步功能。 准备工作 1.修改配置文件 ,需要先开启 Binlog 写入功能&#xff0c;配置 binlog-format 为 ROW 模式&#xff0c;my.cnf 中配置如下&#xf…

sqlmap使用以及GUI安装

下载 GUI版地址: GitHub - honmashironeko/sqlmap-gui: 基于官版本 SQLMAP 进行人工汉化&#xff0c;并提供GUI界面及多个自动化脚本 GUI使用 可以点击.bat启动 如果点击.bat启动不了就在这里打开cmd,输入对应的.bat来启动 linux安装 地址:sqlmap: automatic SQL injection…