Video-LLaMA: An Instruction-tuned Audio-Visual Language Model for Video Understanding
video-LLaMA 一种用于视频理解的指令调整视听语言模型
引言
Video-LLaMA 一个使大型语言模型(LLM)能够理解视频中的视觉和听觉的内容的多模态框架。它从冻结的预训练的视觉和音频encoder以及冻结的LLM中引导跨模态训练。
与之前专注于静态图像的视觉LLM不同,如(MiniGPT-4/LLaVA),Video-LLaMA主要解决了两个挑战
捕捉视觉场景中的时间变化 提出一种视频QFormer,将预训练的图像编码器组装到我们的视频编码器中,并引入视频到文本生成任务来学习视频语言对应关系。 整合视听信号。 利用ImageBind,这是一种将多个模态对齐的通用嵌入模型,作为预训练的音频编码器,并在ImageBind之上引入音频Q-Former,以学习LLM模块的合理听觉查询嵌入。 为了使视觉和音频编码器的输入与LLM的嵌入空间对齐,使用大量指令调整(instruct-tuned)数据集训练Video-LLaMA。介绍
基于大量文本数据训练的LLM模型,表现非凡,尽管它们取得了很大成功,但大多数用户只能通过文本去与LLM进行交互。为了最大化发掘其潜力,将视觉理解能力加入LLM成为趋势。
BLIP-2,由于其从冷冻的图像encoder与文本decoder引导视觉语言预训练而备受关注。但是难以准确理解非平稳的视觉场景,缓解视频与文本之间的模态间隙比图像和文本更具挑战性。
本文的工作力图攻克视频转文字,并非采用外部感知模型将视觉与听觉信号转换为文本信号。而是构建一个端到端模型,可以在一个框架内处理来自多个模态的数据。
使用预训练的视觉encoder来处理帧率表示 引入一个用于注入时间信息的帧嵌入层与一个用于生成视觉查询token的视频Q-Former。 利用预训练的音频encoder与音频Q-Former生成器来学习合理的听觉嵌入。 为了使文本输出与视频保持一致,设计了多分支跨模型预训练来学习视频语言对应和音频语言对应。 视觉-语言,首先在大规模的视频字幕数据集上预训练视觉相关组件,并执行视频剪辑到文本生成任务。为了增强对静态视频概念的理解,还在这个预训练阶段添加了图片说明数据。之后,在基于视频的对话数据集上继续微调这些组件,以进行视觉instruct-tuned。 音频-语言,利用imagebind 作为encoder,它在将不同模态和公共嵌入空间对齐方面表现很好。而且鉴于音频文本数据有限,我们利用视觉文本数据来训练音频相关组件。这些组件的学习将imagebind提供的公共嵌入空间与LLM的嵌入空间对齐。 尽管没有使用音频文本数据进行明确训练,但是Video-LLaMA在推理过程中表现出非凡的zero-shot音频理解能力。总结我们这篇论文的贡献:
提出了Video-LLaMA,实现视频与文本之间的桥梁 提出的多分枝跨模型预训练框架,实现视觉语言对齐和音频语言对齐,增强了LLM的视频理解能力。 代码开源且有demo总结一下我的理解:与最新的多模态文本生成思想类似,整体结构相较于BLip2增加了一个音频处理的encoder与Q-former。处理上进行多分枝跨模态框架进行对齐,然后帧部分加强处理。
方法论
模型结构
视觉分支结构
由一个用于从视频帧中提取特征的冻结视觉encoder,一个用于将时间信息注入视频帧的位置嵌入曾,一个聚合帧表示的视频Q-Former和一个将输出视频表示映射到LLM的线性层。
给定N个帧组成视频,Visual Encoder首先将每个帧映射到个图像嵌入向量中,产生视频帧表示为V = [v1,v2,v3,vN],其中 是对应于第i个帧的df维图像嵌入的集合。
来自冻结图像编码器的帧表示 是在不考虑任何时间信息的条件下进行计算的,因此需要加入位置嵌入作为帧的事件表示。然后将位置编码的帧表示送入视频Q-Former以获得维度为
的视频嵌入向量。
添加一个线性层,将视频嵌入转化为视频Query查询,Query查询向量与LLM文本嵌入维度相同,以便输入。在前向传递过程中,连接到输入文本嵌入作为视频prompt,引导冻结的LLM生成相关文本。
实现上:
冻结visual-encoder使用blip2的组件,包括eva-clip的vit-G/14和预训练的Q-Former 其余组件,位置嵌入,视频Q-Former和线性层,被随机初始化和优化。音频分支结构
和视觉很类似
预训练的冻结音频encoder,使用imagebind 对视频2s短音频片段的M个片段进行均匀采样,然后使用128梅尔频谱图仓将每个2s音频片段转换为频谱图。获得输入音频的声谱图列表后,音频encoder将其转换为向量。 位置嵌入算位置 音频Q-Former 线性层多分枝跨模态训练
分别训练视觉与音频分支,第一阶段,使用大规模的视觉字幕数据集进行训练,第二阶段,使用高质量的指令跟随数据集进行微调。