【大模型系列】Flash-VStream(2024.06)

news2024/11/13 21:24:24

在这里插入图片描述
● Paper:https://arxiv.org/pdf/2406.08085v1
● Github:https://github.com/IVG-SZ/Flash-VStream?tab=readme-ov-file#structure
● HuggingFace:https://huggingface.co/spaces/IVGSZ/Flash-VStream-demo
● Author:Haoji Zhang et al., 清华、字节

文章目录

  • 1 Flash-VStream总结(省流版)
    • 1.1 Flash-VStream是什么?
    • 1.2 Flash-VStream能干什么?
  • 2 Motivation
  • 3 模型结构
    • 3.1 Visual Encoder
    • 3.2 STAR: Spatial-Temporal-Abstract-Retrieved memory
      • 3.2.1 Spatial memory
      • 3.2.2 Tempooral memory
      • 3.2.3 Abstract memory
      • 3.2.4 Retrieved memory
      • 3.2.5 完整过程
    • 3.3 Real-time LLM Decoder
  • 4 实现细节
    • 4.1 训练流程
    • 4.2 训练策略
  • 5 VStream-QA:在线视频流问答benchmark
  • 6 Results
  • 7 实测
  • 8 个人想法

1 Flash-VStream总结(省流版)

1.1 Flash-VStream是什么?

Flash-VStream是由来自于清华和字节的研究团队开发的一个视频问答模型(VideoQA)

  • 通过设计一种名为STAR的内存机制来实现在有限计算资源的前提下,能处理极长的视频流
  • 开源了一个新的VideoQA Benchmark:VStream-QA Benchmark

1.2 Flash-VStream能干什么?

能实时分析长视频流,并响应用户的问题。其实现方式为开2个异步进程:

  • 处理视频:帧处理程序进程,visual encoder + STAR内存整合
  • 响应用户提问:问题处理程序进程,LLM + STAR内存读取 + 与用户的交互

2 Motivation

现有的模型无法处理长视频问答: 连续帧之间的视觉标记存在大量冗余且没有被有效压缩,导致在有限的GPU内存中无法保存所有的视觉特征,增加了语言模型的解码延迟;作者针对以上的问题,做了以下的工作:

  • 引入STAR的内存机制来压缩必要的视觉信息,同时忽略连续帧之间的冗余,这样就可以处理极长的视频流并响应用户查询;
  • Flash-VStream在保持先进性能的同时,显著降低了推理延迟和GPU内存消耗;
  • 开源了VStream-QA benchmark,一个为在线环境中的设计的视频理解的QA benchmark,数据主要由question-answer-timestamp构成;

3 模型结构

在这里插入图片描述

  • Visual Encoder:CLIP ViT-L,处理连续视频帧的流式视觉编码器
  • Spatial-Temporal-Abstract-Retrieved(STAR) memory mechanism:时空抽象检索内存机制
  • LLM解码器:Vicuna-7B,实时响应用户提出的问题
    使用2个异步的进程:
  • 帧处理程序进程:visual encoder + STAR内存整合
  • 问题处理程序进程:LLM + STAR内存读取 + 与用户的交互

3.1 Visual Encoder

CLIP ViT-L:给定视频帧V(HxWx3),将其编码为feature map(PxPxD),其中PxP式ViT patch tokens,D是维度。

3.2 STAR: Spatial-Temporal-Abstract-Retrieved memory

在这里插入图片描述

3.2.1 Spatial memory

空间记忆容纳短期使用的最新的且详细的空间信息,并以FIFO队列的形式实现。
M s p a t = M b u f f t [ 0 : N s p a , : , : ] M s p a ∈ R N s p a × P s p a 2 × D M_{spa}^{t} = M_{buff}^t [0: N_{spa}, :, :] \\ M_{spa} \in R^{N_{spa} \times P_{spa}^2 \times D} Mspat=Mbufft[0:Nspa,:,:]MspaRNspa×Pspa2×D
其中buff空间论文中设置为300,即缓存最新的300帧视觉信息。

3.2.2 Tempooral memory

时间记忆随着时间推移整合动态信息,其大小超过 N t e m N_{tem} Ntem时,使用加权k-means聚类,该策略将记忆内容压缩至 N t e m N_{tem} Ntem个聚类中心,可以看作是视频中关键事件的表示。新的cluster被用作新的memroy,以有效的存储时间上下文。
M t e m t = g w k m e a n s ( c o n c a t ( g p o o l i n g ( e t , P t e m ) , M t e m t − 1 ) , N t e m ) M t e m ∈ R N t e m × P t e m 2 × D M_{tem}^{t} = g_{wkmeans}(concat(g_{pooling}(e^t, P_{tem}), M_{tem}^{t-1}), N_{tem}) \\ M_{tem} \in R^{N_{tem} \times P_{tem}^2 \times D} Mtemt=gwkmeans(concat(gpooling(et,Ptem),Mtemt1),Ntem)MtemRNtem×Ptem2×D
在这里插入图片描述

3.2.3 Abstract memory

抽象记忆通过语义注意力模型支持高级语义概念解释。基于以下公式将从时间和空间记忆中的获得的insight抽象为更抽象的、可操作的知识。
M a b s t = f S A ( M a b s t − 1 , g p o o l i n g ( e t , P a b s ) , N a b s ) M a b s ∈ R N a b s × P a b s 2 × D M_{abs}^{t} = f_{SA}(M_{abs}^{t-1}, g_{pooling}(e^t, P_{abs}), N_{abs}) \\ M_{abs} \in R^{N_{abs} \times P_{abs}^2 \times D} Mabst=fSA(Mabst1,gpooling(et,Pabs),Nabs)MabsRNabs×Pabs2×D
在这里插入图片描述

3.2.4 Retrieved memory

检索记忆侧重于识别和检索最本质的frame feature来回忆最精确的空间细节(spatial details)。首先从temporal memory的 N t e m N_{tem} Ntem个clusters中悬着前K( K = N r e t K=N_{ret} K=Nret)个最大的聚类中心,然后检索特征缓冲区中距离这k个cluster最近的帧特征,以用更详细的空间信息补充时间记忆。
M r e t t = g r e t r i e v e ( M b u f f t , M t e m t , N r e t ) M r e t ∈ R N r e t × P s p a 2 × D M_{ret}^{t} = g_{retrieve}(M_{buff}^t, M_{tem}^t, N_{ret}) \\ M_{ret} \in R^{N_{ret} \times P_{spa}^2 \times D} Mrett=gretrieve(Mbufft,Mtemt,Nret)MretRNret×Pspa2×D

3.2.5 完整过程

具体来说,一个新的特征 e t e^t et,即最新一帧的frame features被写入STAR内存的过程如下所示:
1、先平均池化到 P s p a P_{spa} Pspa尺寸,再与t-1沿时间维度拼接,最后取最新的 N b u f f N_{buff} Nbuff个特征
M b u f f t = c o n c a t ( g p o o l i n g ( e t , P s p a ) , M b u f f t − 1 ) [ 0 : N b u f f , : , : ] M_{buff}^{t} = concat(g_{pooling}(e^t, P_{spa}), M_{buff}^{t-1})[0:N_{buff, :, :}] Mbufft=concat(gpooling(et,Pspa),Mbufft1)[0:Nbuff,:,:]
2、更新 M s p a M_{spa} Mspa,从 M b u f f M_{buff} Mbuff中取最新的 N s p a N_{spa} Nspa特征
M s p a t = M b u f f t [ 0 : N s p a , : , : ] M_{spa}^{t} = M_{buff}^t [0: N_{spa}, :, :] Mspat=Mbufft[0:Nspa,:,:]
3、更新 M t e m M_{tem} Mtem,先平均池化大 P t e m P_{tem} Ptem尺寸,再与之前的特征拼接,再使用wk-means得到新的 N t e m N_{tem} Ntem个特征
M t e m t = g w k m e a n s ( c o n c a t ( g p o o l i n g ( e t , P t e m ) , M t e m t − 1 ) , N t e m ) M_{tem}^{t} = g_{wkmeans}(concat(g_{pooling}(e^t, P_{tem}), M_{tem}^{t-1}), N_{tem}) Mtemt=gwkmeans(concat(gpooling(et,Ptem),Mtemt1),Ntem)
4、更新 M a b s M_{abs} Mabs,将之前的 M a b s M_{abs} Mabs作为Q,特征池化到 P a b s P_{abs} Pabs尺寸作为K,QK^T得到的权重加权最新的特征,(1-α)则加权 M a b s M_{abs} Mabs,两者相加即为新的 M a b s M_{abs} Mabs
M a b s t = f S A ( M a b s t − 1 , g p o o l i n g ( e t , P a b s ) , α ) M_{abs}^{t} = f_{SA}(M_{abs}^{t-1}, g_{pooling}(e^t, P_{abs}), \alpha) Mabst=fSA(Mabst1,gpooling(et,Pabs),α)
5、更新 M r e t M_{ret} Mret:在 M t e m M_{tem} Mtem中选择 N r e t N_{ret} Nret个最大的聚类中心,再在 M b u f f M_{buff} Mbuff中寻找距离这 N r e t N_{ret} Nret聚类中心最近的
M r e t t = g r e t r i e v e ( M b u f f t , M t e m t , N r e t ) M_{ret}^{t} = g_{retrieve}(M_{buff}^t, M_{tem}^t, N_{ret}) Mrett=gretrieve(Mbufft,Mtemt,Nret)

3.3 Real-time LLM Decoder

当在时间t被问题Q触发后,LLM decode首先计算text embedding:
I t e x y t = f e m b e d ( Q t ) I_{texy}^t = f_{embed}(Q^t) Itexyt=fembed(Qt)
再通过projector层将STAR memory映射到embedding空间:
M t = M s p a t + M t e m t + M a b s t + M r e t t I v i s i o n t = f p r o j ( M t ) M^t = M_{spa}^t + M_{tem}^t + M_{abs}^t + M_{ret}^t\\ I_{vision}^t = f_{proj}(M^t) Mt=Mspat+Mtemt+Mabst+MrettIvisiont=fproj(Mt)
基于vision embedding和text embedding生成答案:
A t = f L L M ( I t e x t t , I v i s i o n t ) A^t = f_{LLM}(I_{text}^t, I_{vision}^t) At=fLLM(Itextt,Ivisiont)

4 实现细节

  • Visual encoder:CLIP ViT-L/14-224px
  • Projector:2-layer-MLP
  • LLM decoder:Vicuna-7B
    其他:
  • 各memory尺寸: P s p a = 8 , P t e m = 4 , P a b s = 1 P_{spa}=8, P_{tem} =4, P_{abs}=1 Pspa=8,Ptem=4,Pabs=1
  • 各memory数量: N b u f f = 300 , N s p a = 1 , N t e m = N a b s = 25 , N r e t = 3 N_{buff}=300, N_{spa}=1, N_{tem}=N_{abs}=25, N_{ret}=3 Nbuff=300,Nspa=1,Ntem=Nabs=25,Nret=3
    buff区间最多缓存300帧特征,spa特征就是当前帧的特征,tem和abs都是记录最新25帧的特征,ret是在buff中选择3个与tem最大三个聚类中心最近的特征。

4.1 训练流程

  • Stage1:modality alignment
    • image-caption pairs:LLaVA-filtered-558k
    • video-caption pairs:LLaMA-VID-filtered-232k
  • Stage2:instruction tuning
    • image-QA pairs:LLaVA-filtered-665k
    • video-QA pairs:Video-ChatGPT-filtered-98K

4.2 训练策略

  • 所有stage都在8张A100上训练1 epoch,15hours
  • visual encoder参数冻结
  • LLM尽在stage1冻结,stage2训练
  • 训练和推理均在BF16精度下
    在这里插入图片描述

5 VStream-QA:在线视频流问答benchmark

包含2个部分:

  • VStream-QA-Ego:评估第一视角、以自我为中心的理解
    • 来自于Ego4D的10个长度为一个小时的视频切片,1.5k个question-answer-timestamp
    • topics:[’cooking’, ’playing-card’, ’writing’, ’home-maintenance’, ’sightseeing’, ’reading’]
  • VStream-QA-Movie:评估第三视角、情节理解
    • 来自于MovieNet的22个长度为30分钟的电影切片,2k个question-answer-timestamp
    • genres:[“Action”, “Adventure”, “Sci-Fi”, “Crime”, “Drama”, “Thriller”, “War”, “Mystery”, “Comedy”, “Fantasy”, “History”, “Biography”, “Horror”]

特点:

  • 每个QA对包含一个特定的时间戳,且只与该时间戳之前的内容有关;
  • 视频时间长:30min~60min
  • 涵盖各种视频源和5类问题类型
    在这里插入图片描述

6 Results

在这里插入图片描述

7 实测

NVIDIA A100测试

  • 单帧frame编码:~0.25s
  • 前向:~0.25s
    但是采用的帧率为1fps,假设视频时长为30min,question针对整个视频,则anwser响应时间为7.5min。因此该方法适合于实时视频流

8 个人想法

处理实时视频流/长视频,如何对视频进行有效的编码和缓存是关键,Flash-VStream提出的STAR记忆机制,开了一个比较大的buff空间去缓存最新的300帧特征,

  • 空间特征则直接取最新的特征
  • 时间记忆则通过聚类的方式来更新
  • 抽象记忆通过attention的方式得到权重值,将最新的特征加权到抽象记忆特征中
  • 检索记忆则是在时间记忆中选取最大k个聚类中心,再从buff中选取离这些聚类中心最近k特征出来

问题:

  • 空间、时间、抽象特征本质上是视频帧通过不同尺寸的池化方式得到的,根据时间特征的最大聚类中心去检索buff中的样本是否有道理?如果可以跟question做一些交互,根据question去做检索感觉效果会更好;
  • STAR处理之后,再相加得到的结果与question进行交互并产生答案,之前的一系列的操作均与question无关,如果能建立于问题的联系,感觉会更有效果;
  • 另外,该模型对于视频帧是逐帧编码的,对于高帧率视频,会存在大量的信息冗余,是否存在更有效的处理方式,如video-lavit中的关键帧+运动向量

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

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

相关文章

line-height的使用场景

line-height:字面含义为行高,行高有三部分组成,分为内容高度,上间距,下间距。 可以看到文本在div盒子中的默认位置是左上角。此时文字部分的行高只有内容高度在支撑,上间距和下间距都是0。鼠标在字体上滑动时的蓝色部…

【重点】人工智能大语言模型技术发展研究报告2024|附下载

人工智能作为引领新一轮科技产业革命的战略性技术和新质生产力重要驱动力,正在引发经济、社会、文化等领域的变革和重塑。 2023 年以来,以ChatGPT、GPT-4 为代表的大模型技术的出台,因其强大的内容生成及多轮对话能力,引发全球新…

第2章-06-Cookie在网站回话中的作用

🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年CSDN全站百大博主。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。 🏆本文已收录于专栏:Web爬虫入门与实战精讲,后续完整更新内容如下。 文章…

3.5mm耳机插头制作手机内录线电路图

1.背景 无人直播或录屏直播手机mic会对外界声音的录入,而且很嘈杂。 2.实现功能 手机酷狗播放音频,同时手机内打开录音软件录音,同一台手机操作。 3.电路图 接线分为2种,国标和美标,自己尝试,肯定有一…

链表OJ题——链表的中间节点

文章目录 一、题目链接二、解题思路三、解题代码 一、题目链接 链表的中间节点 二、解题思路 三、解题代码

Python优化算法09——黏菌优化算法(SMA)

科研里面优化算法都用的多,尤其是各种动物园里面的智能仿生优化算法,但是目前都是MATLAB的代码多,python几乎没有什么包,这次把优化算法系列的代码都从底层手写开始。 需要看以前的文章可以参考:Python优化算法_阡之尘…

护眼台灯有辐射吗?三大劣质护眼台灯危害曝光!

护眼台灯有辐射吗?护眼台灯旨在提供便利、健康的光线环境,但作为光学测评师,我注意到一些低品质的护眼台灯可能存在严重问题。这些台灯如果使用劣质材料制造,在使用过程中可能会释放有害辐射,长期接触甚至可能引发黄斑…

AI副业:用百度文库AI,我也能轻松创建漫画、画本?

前言 作为一种受众广泛的艺术形式,漫画的影响力应该不需要我多说什么。 强烈的视觉化和叙事性,让漫画成为无数年轻读者的阅读启蒙,也让无数二十一世纪青年拥有了自己的「漫画梦」。可是要制作出一份能拿得出手的漫画谈何容易,先…

SpringCloud之一注册中心(Eureka)

一、Eureka概述 Eureka是Netflix公司开源的一个服务注册与发现的中间组件。 在微服务架构系统之中,我们经常提三个角色:注册中心 (Register)、服务提供者(Provider)、服务消费者(Consumer)。 1.注册中心:服务提供者可以将服务发布到注册中心…

<数据集>考场行为识别数据集<目标检测>

数据集格式:VOCYOLO格式 图片数量:2192张 标注数量(xml文件个数):2192 标注数量(txt文件个数):2192 标注类别数:2 标注类别名称:[cheating, good] 序号类别名称图片数框数1cheating128214412good1067…

边界dp注意重叠边界

前言:这个题目感觉不是简单的背包问题,因为我们这个是有限制的 想到了之前写的边界的dp,本来想定义二维dp,发现没必要二维dp,一维dp就够了,dp[i] 表示填充 1 - i 需要的最少的数量,符合子问题的…

Redis内存淘汰

Redis内存淘汰 Redis可以存储多少数据 maxmemory配置&#xff0c;默认是注释掉的。 #maxmemory <bytes>我们可以主动配置maxmemory&#xff0c;maxmemory支持各种单位&#xff0c;默认是字节 maxmemory 1024 maxmemory 1024KB maxmemory 1024MB maxmemory 1024GB当Re…

三大低速总线之一:UART

三大低速总线之一&#xff1a;UART 文章目录 三大低速总线之一&#xff1a;UART前言一、UART协议二、设计1.整体说明2.rx波形设计 三 程序实现 前言 三大低速总线&#xff1a;UART、IIC、SPI&#xff0c;其中IIC和SPI是同步通讯&#xff0c;UART是异步的。 优点&#xff1a; …

CSS\JS实现页面背景气泡logo上浮效果

效果图&#xff1a; 源码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Bubble Logo…

Linux_at任务调度

目录 at定时任务 基本介绍 at命令格式 at命令选项 at时间定义 at任务调度实例 at定时任务 基本介绍 at是一次性的定时计划任务&#xff0c;默认atd守护进程每60秒检测作业队列&#xff0c;检查作业运行时间&#xff0c;时间与当前时间匹配则执行。 ps-ef指令检测当前在运…

如何使用ssm实现农家乐信息平台的设计与实现+vue

TOC ssm066农家乐信息平台的设计与实现vue 第1章 绪论 1.1 课题背景 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。所以各…

话费api充值接口对接

全网话费折扣API接口的对接合作流程确实涉及几个关键步骤&#xff0c;确保了应用程序能够顺利集成话费充值服务。以下是该流程的概述以及一些补充的考虑因素&#xff1a; 1.申请API接口&#xff1a; 开发者联系第三方话费充值服务提供商&#xff0c;提交API接口使用申请。获得…

基于FreeRTOS的STM32多功能手表

前言 项目背景 项目演示 使用到的硬件 项目原理图 目前版本实现的功能 设计到的freertos知识 实现思路 代码讲解 初始化GPIO引脚、配置时钟 蜂鸣器初始化以及软件定时器创建 系统默认创建的defaultTaskHandle 创建七个Task&#xff0c;代表七个功能 ShowTimeTask …

代码随想录算法训练营 | 动态规划 part08

121. 买卖股票的最佳时机 121. 买卖股票的最佳时机 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最…

轻松入门大模型:150页精炼指南,简化你的学习之路

如果问个问题&#xff1a;有哪些产品曾经创造了伟大的奇迹&#xff1f;ChatGPT 应该会当之无愧入选。仅仅发布 5 天&#xff0c;ChatGPT 就吸引了 100 万用户——当然&#xff0c;数据不是关键&#xff0c;关键是其背后的技术开启了新的 AI 狂潮&#xff0c;成为技术变革的点火…