当前位置: 首页 > news >正文

基于 RWKV 的视觉语言模型 VisualRWKV 被 COLING 2025 接收!

基于 RWKV 的视觉语言模型 VisualRWKV 被 COLING 2025 接收!

COLING,国际计算语言学会议(International Conference on Computational Linguistics),是自然语言处理和计算语言学领域的顶级国际会议(CCF 推荐 B 类国际会议)。COLING 2025 将于 2025 年 1 月 19 日至 24 日在阿联酋阿布扎比召开。VisualRWKV 论文已被 COLING 2025 主会接收

  • 论文标题:VisualRWKV: Exploring Recurrent Neural Networks for Visual Language Models
  • 作者:Haowen Hou, Peigen Zeng, Fei Ma, Fei Richard Yu。
  • 论文:https://arxiv.org/abs/2406.13362
  • 代码:https://github.com/howard-hou/VisualRWKV

摘要

视觉语言模型(VLMs)随着大型语言模型的成功迅速发展。然而,将高效的线性循环神经网络(RNNs)架构整合到 VLMs 中的尝试还相对较少。在这项研究中,我们提出了 VisualRWKV,这是线性 RNN 模型首次应用于多模态学习任务,利用了预训练的 RWKV 语言模型。

我们提出了数据依赖的递归和三明治提示词来增强我们的建模能力,以及一个 2D 图像扫描机制来丰富视觉序列的处理。广泛的实验表明,VisualRWKV 在各种基准测试上达到了与基于 Transformer 的模型如 LLaVA-1.5 相竞争的性能,如图 1所示。同时,当上下文长度达到 24K 时,推理速度比 LLaVA-1.5 快3.98 倍,GPU 显存占用少 54%。

图 1:VisualRWKV 与 LLaVA-1.5 在不同 benchmark 上的精度,推理速度和 GPU 内存占用对比。

研究背景

  • 视觉语言模型发展:大型语言模型在自然语言处理中表现出色,视觉语言模型(VLMs)通过整合视觉和文本信息,在解决视觉问题和推进视觉 - 语言任务方面潜力巨大,但现有模型因 Transformer 架构自注意力机制存在计算和内存复杂度高的问题,限制了其在边缘设备的应用。
  • 线性 RNN 模型优势:RWKV 模型作为新型递归神经网络架构,在大规模数据性能上超越 Transformers,具有线性可扩展性,为长序列建模瓶颈提供解决方案,但在多模态任务应用方面的研究较少

VisualRWKV 模型设计

VisualRWKV 的整体模型结构如图 2所示,其中红字是 VisualRWKV 核心创新点。分别是数据依赖循环(Data-dependent Recurrence),三明治提示词(Sandwich Prompt)和双向扫描(Bidirectional Scanning)。

VisualRWKV-arch

图 2 VisualRWKV 架构概述和三种提示词策略。图像在前提示:将图像标特征于文本向量之前;图像在后提示:将图像特征置于文本向量之后;三明治提示:将图像特征置于文本向量之间。红色文字表示主要贡献。

三明治提示词

如图 2 所示,设计了图像在前提示、图像在后提示和三明治提示三种方法,实验表明三明治提示效果最佳,能让模型在处理图像前回顾指令,更有针对性提取信息,减轻因图像标记减少导致的信息丢失。

数据依赖循环

Data-dependent Recurrence 可以有效增强 RWKV 模型的能力和容量,如图 3所示。

h-Time Mixing and RNN Cell

图 3 Data-dependent Recurrence 示意图,左边:时间混合模块的示意图,右边:时间混合模块的 RNN 视角。虚线箭头表示数据依赖的连接。

Data-dependent Recurrence 主要包括如下 2 点设计:

  • 数据依赖的 Token Shift:通过定义低秩适应(lora)和数据依赖线性插值(ddlerp),动态分配新数据与现有数据比例,拓宽模型容量。
  • 数据依赖的时间混合:将时间衰减向量从固定参数变为动态,使模型能更灵活适应输入数据,提升性能

如下表所示,VisualRWKV 引入 Data-dependent Recurrence 后,在 VQA 测试集上效果上涨了接近 15 个点,非常让人印象深刻。

表 1 模型的扩展结果。

我们选择在视觉问答 VQA-v2(VQA)、科学问答 ScienceQA(SQA)、文本视觉问答 TextVQA(TQA)和通用视觉问答 GQA 上进行实验,以检验模型的能力。

图像扫描机制

如图 4所示,我们探索了单向块、双向块和多向块三种变体,实验显示单向扫描不适合处理 2D 视觉信息,双向扫描在处理多模态学习任务的 2D 视觉信息方面表现较好。因为仅仅是调整不同层的扫描方向,也不并会增加模型总体的计算量。

VisualRWKV-image scaning

图 4 展示了 3种不同的多模态 RWKV 块:单向块(左),双向块(中),以及多向块(右)。顶部还描绘了四种扫描模式。

实验结果

性能比较

VisualRWKV 在 8 个基准测试中的 3 个取得最佳性能,在 SQA 基准测试中排名第二,与 LLaVA-1.5 相比,在多个基准测试中表现更优,尤其在 MMB-cn 中文测试集上领先明显,表明 RWKV 语言模型多语言能力更强。表 2展示了我们提出的 VisualRWKV 模型与一些最先进的多模态大型语言模型的比较。VisualRWKV 在8 个基准测试中的 3个中取得了最佳性能,在 SQA 基准测试中排名第二。与规模参数相似且多模态训练数据量相同的 LLaVA-1.5 7B 相比,我们的模型(VisualRWKV-7B)在 4个基准测试中表现更好:SQA(68.2%对 66.8%)、GQA(64.3%对 62.0%)、MMB(65.8%对 64.3%)和 MMB-cn(63.7%对 30.5%)。值得注意的是,VisualRWKV 和LLaVA-1.5 使用了完全相同的训练数据。然而,在 MMB-cn 中文测试集上,VisualRWKV 显示出了显著的领先优势。这可能表明 RWKV 语言模型具有更强的多语言能力。这些有希望的结果不仅证实了 VisualRWKV 模型的有效性,还突显了线性 RNN 模型在多模态学习任务中的重要潜力。

表 2 在 8个基准测试上与最先进方法的比较。

由于空间限制,基准测试名称被缩写。VQA;GQA;SQA:ScienceQA-IMG;TQA:TextVQA;POPE;MME;MMB:MMBench;MMB-cn:MMBench-CN。PT 和IT 分别表示预训练和指令调优阶段涉及的样本数量。"Res."代表“分辨率”。

消融实验

表 3展示了在三种提示方法中,我们提出的三明治提示表现最佳,传统的先图像后提示排在第二位,而先图像后提示的效果最差。三明治提示增强效果的原因如下:通过让模型在处理图像之前先回顾指令,三明治提示有助于更有针对性地从图像中提取信息,从而加强图像信息检索过程中的条件方面。然而,仅仅将指令放在图像之前是不够的。我们观察到,图像后提示的效果明显较差。仅仅将指令放在图像前面是不充分的;我们发现图像后提示的效果明显较差。这是因为线性 RNN 模型在处理图像后往往会忘记指令信息,需要重复指令以获得更好的结果。此外,我们的研究表明,三明治提示能够有效减轻由于图像标记减少导致信息丢失的问题,即使只有少量的图像标记也能保持好的结果。

表 3 三种 prompt 方法的对比结果

我们比较了三种图像扫描机制:单向扫描(UniDir)、双向扫描(BiDir)和多向扫描(MultiDir)。如表 4所示,UniDir 的表现最差,因为它天生不适合处理 2D 视觉信息。BiDir 和MultiDir 在各种基准测试评估中显示出相似的结果,但 BiDir 在大多数情况下表现更好,突显了它在处理多模态学习任务中的 2D 视觉信息方面的优势。

表 4 三种扫描方法的对比结果

效率分析与文本能力

与 LLaVA-1.5 相比,在 24K 上下文时,VisualRWKV 推理速度快 3.98 倍,GPU 内存消耗降低 54%。此外,VisualRWKV 在文本能力上未出现退化,在多语言文本能力上与文本专用的 RWKV 基本一致,得益于多语言 ShareGPT4 数据的整合。

相关文章:

基于 RWKV 的视觉语言模型 VisualRWKV 被 COLING 2025 接收!

基于 RWKV 的视觉语言模型 VisualRWKV 被 COLING 2025 接收! COLING,国际计算语言学会议(International Conference on Computational Linguistics),是自然语言处理和计算语言学领域的顶级国际会议(CCF 推…...

输出九九乘法表:JAVA

链接:登录—专业IT笔试面试备考平台_牛客网 来源:牛客网 输出九九乘法表。 具体的输出格式见样例,其中每一项乘法的结果需要占据2个字符宽度,不同的乘法结果之间用1个空格间隔。 举例: 1*4_4_2*4_8_3*412_4*416 上…...

kube-proxy的iptables工作模式分析

系列文章目录 iptables基础知识 文章目录 系列文章目录前言一、kube-proxy介绍1、kube-proxy三种工作模式2、iptables中k8s相关的链 二、kube-proxy的iptables模式剖析1.集群内部通过clusterIP访问到pod的流程1.1.流程分析 2.从外部访问内部service clusterIP后端pod的流程2.1…...

xiaolin coding 图解 MySQL笔记——锁篇

1. 全局锁是怎么用的? flush tables with read lock 执行以后,整个数据库就处于只读状态了,这时其他线程执行对数据的增删改操作(insert、delete、update);对表结构的更改操作(alter table、dr…...

11-SpringCloud Alibaba-Seata处理分布式事务

一、Seata基本介绍 官网:https://seata.apache.org/zh-cn/ Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。 我…...

更换 Git 项目的远程仓库地址(五种方法)

更换 Git 项目的远程仓库地址有几种不同的方法,下面是详细的步骤和一些额外的方法来完成这个任务。 方法1:使用 git remote set-url 这是最直接的方法。假设你想要更改名为 origin 的远程仓库地址到新的 URL。 查看当前的远程仓库配置: git…...

3大模块助力学生会视频自动评审系统升级

一、项目背景 传统的学生会视频作品或电子申请材料评审由老师线下逐一面审完成。面对大量学生提交的作品,评审效率低、耗时长,且主观性较强。为此,客户希望开发一个基于AI的线上自动面审系统,从语法正确性、演讲流利度和发音准确…...

鸿蒙开发——使用ArkTs处理XML文本

1、概 述 XML(可扩展标记语言)是一种用于描述数据的标记语言,旨在提供一种通用的方式来传输和存储数据,特别是Web应用程序中经常使用的数据。XML并不预定义标记。因此,XML更加灵活,并且可以适用于广泛的应…...

【Linux】文件查找 find grep

文章目录 1. 引言简介Linux文件系统的基本概念为什么文件查找命令在日常使用中非常重要 2. find 命令基本用法常见选项和参数高级用法和技巧实际示例 3. locate 命令如何工作与find命令的区别安装和使用locate实际示例 4. grep 结合文件查找使用grep进行内容查找结合find命令使…...

Go学习笔记之运算符号

算数运算符 运算符描述相加-相减*相乘/相除%求余自增–自减 代码示例: package mainimport "fmt"func main() {// 算数运算符a : 1b : 2fmt.Println(a b) // 加 3fmt.Println(a - b) // 减 -1fmt.Println(a * b) // 乘 2fmt.Println(a / b) // 除 0fm…...

npm : 无法加载文件 D:\nodejs\npm.ps1,因为在此系统上禁止运行脚本

要以管理员身份打开PowerShell,请按照以下步骤操作: 在Windows搜索框中查找PowerShell: 在任务栏上,点击左下角的Windows徽标(或按Win S键)以打开搜索框。输入“PowerShell”以查找PowerShell应用程序。右…...

YOLOv8-ultralytics-8.2.103部分代码阅读笔记-torch_utils.py

torch_utils.py ultralytics\utils\torch_utils.py 目录 torch_utils.py 1.所需的库和模块 2.def torch_distributed_zero_first(local_rank: int): 3.def smart_inference_mode(): 4.def autocast(enabled: bool, device: str "cuda"): 5.def get_cpu_i…...

Java中的数据存储结构解析与应用

一、引言 在Java编程中,数据存储结构是程序设计的基础。合理选择和使用数据结构可以提高程序的性能和可维护性。本文将带您了解Java中的各种数据存储结构,并探讨其优缺点及适用场景。 二、基本数据类型 Java提供了8种基本数据类型,分别是b…...

【链表】力扣 141. 环形链表

一、题目 二、思路 龟兔进行赛跑 龟的速度是 1,兔的速度是 2龟兔从同一起点出发,若 龟追上兔 则说明 有环 存在;若追不上,则说明无环。 三、代码 /*** Definition for singly-linked list.* class ListNode {* int val;* …...

Hbase整合Mapreduce案例2 hbase数据下载至hdfs中——wordcount

目录 整合结构准备数据下载pom.xmlMain.javaReduce.javaMap.java操作 总结 整合结构 和案例1的结构差不多,Hbase移动到开头,后面跟随MR程序。 因此对于输入的K1 V1会进行一定的修改 准备 在HBASE中创建表,并写入数据 create "wunaii…...

diff算法

vue的diff算法详解 vue: diff 算法是一种通过同层的树节点进行比较的高效算法 其有两个特点: 比较只会在同层级进行, 不会跨层级比较 在diff比较的过程中,循环从两边向中间比较 diff 算法在很多场景下都有应用,在 vue 中&…...

最新AI问答创作运营系统(SparkAi系统),GPT-4.0/GPT-4o多模态模型+联网搜索提问+问答分析+AI绘画+管理后台系统

目录 一、人工智能 系统介绍文档 二、功能模块介绍 系统快速体验 三、系统功能模块 3.1 AI全模型支持/插件系统 AI大模型 多模态模型文档分析 多模态识图理解能力 联网搜索回复总结 3.2 AI智能体应用 3.2.1 AI智能体/GPTs商店 3.2.2 AI智能体/GPTs工作台 3.2.3 自…...

docker应用

docker version docker info docker images# 查看主机所以镜像 docker search# 搜索镜像 docker pull# 下载镜像 docker rmi# 删除镜像 docker tag 镜像名:版本 新镜像名:版本 # 复制镜像并改名 docker commit # 提交镜像 docker load -i /XXX/XXX.tar # 导入镜像 docker sav…...

COCO数据集理解

COCO(Common Objects in Context)数据集是一个用于计算机视觉研究的广泛使用的数据集,特别是在物体检测、分割和图像标注等任务中。COCO数据集由微软研究院开发,其主要特点包括: 丰富的标签:COCO数据集包含…...

C# 向上取整多种实现方法

1.使用 Math.Ceiling 方法: 在 C# 中,可以利用 System.Math 类下的 Math.Ceiling 方法来实现向上取整。它接受一个 double 或 decimal 类型的参数,并返回大于或等于该参数的最小整数(以 double 或 decimal 类型表示)。…...

云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?

大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

Nuxt.js 中的路由配置详解

Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...

React---day11

14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store: 我们在使用异步的时候理应是要使用中间件的,但是configureStore 已经自动集成了 redux-thunk,注意action里面要返回函数 import { configureS…...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机,它可以执行Java字节码。Java虚拟机是Java平台的一部分,Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...