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

【论文笔记】LLaMA-VID: An Image is Worth 2 Tokens in Large Language Models

🍎个人主页:小嗷犬的个人主页
🍊个人网站:小嗷犬的技术小站
🥭个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。


基本信息

标题: LLaMA-VID: An Image is Worth 2 Tokens in Large Language Models
作者: Yanwei Li, Chengyao Wang, Jiaya Jia
发表: ECCV 2024
arXiv: https://arxiv.org/abs/2311.17043

基本信息

摘要

在这项工作中,我们提出了一种新颖的方法来解决视觉语言模型(VLMs)在视频和图像理解中的token生成挑战,称为LLaMA-VID

当前的VLMs虽然在图像描述和视觉问答等任务上表现出色,但在处理长视频时由于视觉token过多而面临计算负担。

LLaMA-VID通过用两个不同的token来表示每一帧,即上下文token和内容token,来解决这个问题。

上下文token根据用户输入编码整体图像上下文,而内容token封装了每一帧中的视觉线索。

这种双token策略显著减少了长视频的负载,同时保留了关键信息。

通常,LLaMA-VID使现有框架能够支持长达一小时的视频,并通过额外的上下文token提高了其上限。

它已被证明在大多数基于视频或图像的基准测试中优于先前的方法。

代码可在https://github.com/dvlab-research/LLaMA-VID上找到。

The proposed LLaMA-VID achieves leading performance on most of benchmarks with 7B LLMs

LLaMA-VID

LLaMA-VID

在用户指令下,LLaMA-VID通过接收单张图像或视频帧作为输入,并从语言模型(LLM)生成响应。

该过程从视觉编码器开始,将输入帧转换为视觉嵌入。

然后,文本解码器根据用户输入生成文本查询。在上下文注意力中,文本查询从视觉嵌入中聚合与文本相关的视觉线索。

为了提高效率,提供了将视觉嵌入下采样到各种token大小或单个token的选项。

接着,使用线性投影仪将文本引导的上下文token和视觉丰富的内容token构建出来,以表示时间 t t t 的每一帧。

最后,LLM 接收用户指令和所有视觉token作为输入,并给出响应。

Encoder and Decoder

提出的LLaMA-VID可以用于与单张图片或长视频进行交互。

为了清晰起见,我们假设输入图像是从视频序列中捕获的,如在时间 t t t,首先使用基于Transformer的视觉编码器来生成视觉嵌入 X t ∈ R N × C X_t \in \mathbb{R}^{N \times C} XtRN×C

这里, N = H / p × W / p N = H/p \times W/p N=H/p×W/p C C C 分别表示图像块的数量和嵌入通道。

对于基于ViT的骨干网络,图像块大小 p p p 通常设置为14。

同时,我们以用户指令为输入,并生成文本引导的查询 Q t ∈ R M × C Q_t \in \mathbb{R}^{M \times C} QtRM×C,其中 M M M 表示查询的数量。

如图2所示,这种跨模态交互主要发生在文本解码器中,可以轻松地使用BERT或QFormer实例化。

通过这种方式,文本查询 Q t Q_t Qt 包含与用户指令最相关的突出视觉线索。

Token Generation

通过文本查询 Q t Q_{t} Qt 和视觉嵌入 X t X_{t} Xt,我们可以轻松地为大型语言模型(LLMs)生成代表性token。

具体来说,上下文注意力被设计为聚合与文本相关的视觉特征,并将它们压缩成一个单一的上下文token。

如图2所示,它以 Q t Q_{t} Qt X t X_{t} Xt 作为输入,并制定上下文相关的嵌入 E t ∈ R 1 × C E_{t} \in \mathbb{R}^{1 \times C} EtR1×C 为:

E t = Mean ( Softmax ( Q t × X t T ) × X t ) E_{t} = \text{Mean}\left(\text{Softmax}\left(Q_{t} \times X_{t}^{T}\right) \times X_{t}\right) Et=Mean(Softmax(Qt×XtT)×Xt)

其中,Softmax 函数和 Mean 操作分别沿着 N N N M M M 维度进行。

与采用32个视觉查询作为 LLMs token的 QFormer 不同,我们仅使用文本查询 Q t Q_{t} Qt 来聚合具有高响应分数的视觉特征以输入指令。因此,与用户相关的最关键视觉线索被有效地保留在压缩嵌入中。

随后,使用线性投影器将嵌入 E t E_{t} Et 转换为上下文token E t T ∈ R 1 × C E_{t}^{T} \in \mathbb{R}^{1 \times C} EtTR1×C,这与 LLMs 的语言空间对齐。

同时,我们根据计算限制采用自适应池化策略对视觉嵌入进行处理,以产生内容token E t V ∈ R n × C E_{t}^{V} \in \mathbb{R}^{n \times C} EtVRn×C,其中 n ∈ [ 1 , N ] n \in [1, N] n[1,N]

例如,当输入单张图像时,我们保持视觉嵌入 X t X_{t} Xt 的原始分辨率,而对长视频进行下采样,将 X t X_{t} Xt 下采样为1个token。这种方法显著减少了每帧 LLMs 的开销,从而有效支持长达数小时的视频。

最后,生成的上下文token E t T E_{t}^{T} EtT 和内容token E t V E_{t}^{V} EtV 被连接起来表示时间 t t t 的帧。连同其他时间戳的帧,整个视频序列被转换为token格式的语言空间,然后用于生成来自大型语言模型(LLMs)的响应。

Token Generation

Training Strategy

Multimodal data distribution and instruction format for model training in each stage

三阶段训练:

  • Modality Alignment: 🔥 Context Attention、Projector ❄️ Visual Encoder、Text Decoder、LLM
  • Instruction Tuning: 🔥 Other ❄️ Visual Encoder
  • Long Video Tuning: 🔥 Other ❄️ Visual Encoder

Training settings of LLaMA-VID

实验

主实验

Comparison with leading methods on 4 zero-shot video QA datasets

Comparison with leading methods on the video-based generative performance benchmark

Comparison with leading methods on 8 benchmarks

消融实验

Comparison with different token types

Comparison with different token numbers

Comparison with different text decoders

总结

我们引入了LLaMA-VID,这是一种简单而有效的VLMs(视频语言模型)token生成方法。

LLaMA-VID背后的核心概念是用上下文token和内容token来表示图像。具体来说,上下文token是根据输入指令生成的,而内容token则是基于图像内容产生的。

根据预算,内容token可以被压缩为一个token或以未压缩的形式表达。这使我们能够以保留细节的方式表示单个图像,并且只需两个token就能高效地编码每个视频帧。

此外,我们还构建了一个用于理解时长为一小时的视频的指令数据集。

我们在多个基于视频和图像的基准测试上的实验证明了我们方法的优势。

我们希望LLaMA-VID能作为一个强大的高效视觉表示基准。

相关文章:

【论文笔记】LLaMA-VID: An Image is Worth 2 Tokens in Large Language Models

🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。 基本信息 标题: LLaMA-VID: An Image is W…...

使用Web Storage API实现客户端数据持久化

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 使用Web Storage API实现客户端数据持久化 使用Web Storage API实现客户端数据持久化 使用Web Storage API实现客户端数据持久化…...

基于STM32F103的秒表设计-液晶显示

基于STM32F103的秒表设计-液晶显示 仿真软件: Proteus 8.17 编程软件: Keil 5 仿真实现: 在液晶1602上进行秒表显示,每100ms改变一次数值,一共三个按键,分为启动按键、暂停按键、复位按键。 电路介绍: 前面章节里已经和大家介绍了使用数码管设计的秒表,本次仿真将数…...

ReentrantLock的具体实现细节是什么

在 JDK 1.5 之前共享对象的协调机制只有 synchronized 和 volatile,在 JDK 1.5 中增加了新的机制 ReentrantLock,该机制的诞生并不是为了替代 synchronized,而是在 synchronized 不适用的情况下,提供一种可以选择的高级功能。 在 Java 中每个对象都隐式包含一个 monitor(监…...

【JavaScript】this 指向

1、this 指向谁 多数情况下,this 指向调用它所在方法的那个对象。即谁调的函数,this 就归谁。 当调用方法没有明确对象时,this 就指向全局对象。在浏览器中,指向 window;在 Node 中,指向 Global。&#x…...

DB Type

P位 p 1时段描述符有效,p 0时段描述符无效 Base Base被分成了三个部分,按照实际拼接即可 G位 如果G 0 说明描述符中Limit的单位是字节,如果是G 1 ,那么limit的描述的单位是页也就是4kb S位 S 1 表示代码段或者数据段描…...

python-返回函数

Python的函数不但可以返回int、str、list、dict等数据类型,还可以返回函数! 例如,定义一个函数 f(),我们让它返回一个函数 g,可以这样写: def f()&#xff…...

python语言基础-5 进阶语法-5.2 装饰器-5.2.1 闭包

声明:本内容非盈利性质,也不支持任何组织或个人将其用作盈利用途。本内容来源于参考书或网站,会尽量附上原文链接,并鼓励大家看原文。侵删。 5.2 装饰器 python中的装饰器相当于java中的注解。装饰器用于为函数添加某些修饰性、…...

用vscode编写verilog时,如何有信号定义提示、信号定义跳转(go to definition)、模块跳转(跨文件跳转)这些功能

(一)方法一:安装插件SystemVerilog - Language Support 安装一个vscode插件即可,插件叫SystemVerilog - Language Support。虽然说另一个插件“Verilog-HDL/SystemVerilog/Bluespec SystemVerilog”也有信号提示及定义跳转功能&am…...

MQTT+Springboot整合

1.mqttconfig配置(配置参数是从数据库查出来的) package com.terminal.dc3.api.center.manager.config;import com.collection.common.utils.StringUtils; import com.collection.system.mapper.MqttConfigMapper; import lombok.Data; import org.springframework.beans.fact…...

ERROR TypeError: AutoImport is not a function

TypeError: AutoImport is not a function 原因:unplugin-auto-import 插件版本问题 Vue3基于Webpack,在vue.config.js中配置 当unplugin-vue-components版本小于0.26.0时,使用以下写法 const { defineConfig } require("vue/cli-se…...

软考教材重点内容 信息安全工程师 第 3 章 密码学基本理论

(本章相对老版本极大的简化,所有与算法相关的计算全部删除,因此考试需要了解各个常 用算法的基本参数以及考试中可能存在的古典密码算法的计算,典型的例子是 2021 和 2022 年分别考了 DES 算法中的 S 盒计算,RSA 中的已…...

微信小程序 https://thirdwx.qlogo.cn 不在以下 downloadFile 合法域名列表中

授权登录后,拿到用户头像进行加载,但报错提示: https://thirdwx.qlogo.cn 不在以下 downloadFile 合法域名列表中 解决方法一(未完全解决,临时处理):在微信开发者工具将不校验...勾上就可以访问…...

Linux性能优化之火焰图的起源

Linux火焰图的起源与性能优化专家 Brendan Gregg 密切相关,他在 2011 年首次提出这一工具,用于解决性能分析过程中可视化和数据解读的难题。 1. 背景:性能优化的需求 在现代计算中,性能优化往往需要对程序执行中的热点和瓶颈进行…...

《Markdown语法入门》

文章目录 《Markdown语法入门》1.标题2.段落2.1 换行2.2分割线 3.文字显示3.1 字体3.2 上下标 4. 列表4.1无序列表4.2 有序列表4.3 任务列表 5. 区块显示6. 代码显示6.1 行内代码6.2 代码块 7.插入超链接8.插入图片9. 插入表格 《Markdown语法入门》 【Typora 教程】手把手教你…...

Controller Baseband commands速览

目录 一、设备连接与通信控制类(34条) 1.1. 连接参数相关 1.1.1. 连接建立超时设置 1.1.2. 链路监督超时设置 1.1.3. Page操作超时设置 1.1.4. 扩展Page操作超时设置 1.1.5. 安全连接主机支持 1.2. 扫描操作相关 1.2.1. 扫描启用与禁用 1.2.2.…...

Redisson 3.39.0 发布

Redisson 3.39.0 发布,官方推荐的 Redis 客户端 Redisson 3.38.0 ,一个 Java 编写的 Redis 客户端。 此版本更新内容如下: RTopic 对象的 partitioning 实现 RShardedTopic对象的 partitioning 实现 RReliableTopic 对象的 partitioning 实…...

高阶C语言补充:柔性数组

C99中,结构体中最后一个元素允许时未知大小的数组,这就叫做柔性数组成员。 vs编译器也支持柔性数组。 之所以把柔性数组单独列出,是因为: 1、柔性数组是建立在结构体的基础上的。 2、柔性数组的使用用到了动态内存分配。 这使得柔…...

S32K324信息安全-使用IC5000/IC5700进行debug口解锁

文章目录 前言winIDEA配置参考 前言 由于信息安全要求,需要对debug口(JTAG)进行加密,本文介绍基于固定密码的方式,使用IC5000/IC5700进行debug口解锁的方法 winIDEA配置 点击 Hardware | CPU Options | Reset | Ini…...

简单实现QT对象的[json]序列化与反序列化

简单实现QT对象的[json]序列化与反序列化 简介应用场景qt元对象系统思路实现使用方式题外话 简介 众所周知json作为一种轻量级的数据交换格式,在开发中被广泛应用。因此如何方便的将对象数据转为json格式和从json格式中加载数据到对象中就变得尤为重要。 在python类…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查

在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

LeetCode - 394. 字符串解码

题目 394. 字符串解码 - 力扣&#xff08;LeetCode&#xff09; 思路 使用两个栈&#xff1a;一个存储重复次数&#xff0c;一个存储字符串 遍历输入字符串&#xff1a; 数字处理&#xff1a;遇到数字时&#xff0c;累积计算重复次数左括号处理&#xff1a;保存当前状态&a…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用&#xff0c;因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型&#xff08;VLMs&#xff09;在字幕生成方面…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容&#xff0c;使用AI&#xff08;2025&#xff09;可以参考以下方法&#xff1a; 四个洞见 模型已经比人聪明&#xff1a;以ChatGPT o3为代表的AI非常强大&#xff0c;能运用高级理论解释道理、引用最新学术论文&#xff0c;生成对顶尖科学家都有用的…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中&#xff0c;部分节点存储的数据量或访问量远高于其他节点&#xff0c;导致这些节点负载过高&#xff0c;影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同&#xff0c;结合所安装的tensorflow的目录结构修改from语句即可。 原语句&#xff1a; from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后&#xff1a; from tensorflow.python.keras.lay…...

R语言速释制剂QBD解决方案之三

本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...