开源项目 | 多模态大模型VideoLLaMB:长上下文视频理解新框架

2024-09-08 23:25   北京  

点击下方卡片,关注「魔方AI空间」公众号

简 介

VideoLLaMB 是一种新颖的长视频理解框架,利用带有递归内存 token 的内存桥接层对 100% 的视频内容进行编码,而不会丢弃关键的视觉提示。

  • 全面的长视频理解:VideoLLaMB-7B 在 vicuna-7b 上训练的 7B 模型和 EgoSchema、NexTQAMVBench 上的 videochat2 视频中达到了最先进的性能,与 PLLaVA 相比,视频长度延长了 8 倍,性能稳健。
  • 基于记忆的以自我为中心的规划:VideoLLaMB 在 EgoPlan 上的所有视频语言模型中实现了最佳性能, 2.06 比 PLLaVA 有所提高。
  • 无需训练的流式字幕生成:借助 SceneTiling 算法,VideoLLaMB 可以捕获流媒体视频中的动态,并直接实时预测流媒体字幕,而无需事先处理整个视频序列。
  • 增强的长视频帧检索能力:提出 “Needle in a Video Haystack” (NIAVH) 基准,以全面评估不同模态的针头对长视频的理解 。在长度为 1 到 300 秒的压力测试中,VideoLLaMB 始终如一地在不同深度检索正确的图像指针,随着视频长度的增加,其性能优于其他方法。
  • 高效的计算性能:VideoLLaMB在单个Nvidia A100 GPU上训练时,支持高达320帧的线性GPU内存扩展,确保了高性能和成本效益。

项目主页:https://videollamb.github.io/

引 言

VideoLLaMB:新型视频语言模型框架,旨在通过使用递归记忆 token 和场景分块算法来提高长视频理解的效率和效果。

这篇文章要解决的问题是大规模视频语言模型在实时规划和详细交互方面表现出色,但由于其高计算需求和缺乏标注数据集,限制了其在学术研究和实际应用中的实用性。

该问题的研究难点包括:长视频数据的高计算成本、缺乏高质量的标注数据集、现有视频理解基准的静态性和语言偏见。

该问题的研究相关工作包括视频压缩策略(如采样、聚合、语义巩固和重采样)、滑动窗口机制、以及现有的视频理解基准(如EgoSchema和NexTQA)。这些方法在处理长视频时存在丢失关键视觉线索、破坏内容语义流畅性或评估不全面等问题。

方法概述

本文提出的 VideoLLaMB,用于解决长视频理解中的计算效率和语义连续性问题具体来说,

SceneTilling算法:首先,使用SceneTilling算法将视频分割成独立的语义单元,以保持语义完整性。该算法通过计算相邻帧对的余弦相似度来识别视频中的关键点,并根据相似度得分将视频分割成多个语义段。
递归记忆桥接层(Recurrent Memory Bridge Layers):其次,设计了一种新型的递归记忆桥接层,该层在桥接层内集成递归记忆令牌,以增强线性层的记忆能力。具体实现上,对于每个视频段,预先添加一定数量的记忆令牌,然后对这些序列进行标准自注意力操作,更新记忆令牌并生成视觉表示。
记忆缓存与检索机制:此外,提出一个带有检索策略的记忆缓存,用于保留先前的状态记忆,以缓解梯度消失问题。在每个时间步,系统将所有先前的记忆令牌存储在记忆缓存中,并通过自检索机制更新当前记忆令牌。

实 验

  1. 数据集:实验使用了Vicuna-7B-v1.5作为大型语言模型(LLM),ViT-L/14作为视觉主干。视频帧被调整为224×224像素。
  2. 训练配置:模型使用16帧进行训练,分为4个片段。视频数据协议与PLLaVA相同。
  3. 评估基准:实验在EgoSchema、NexTQA和MVBench等多个基准上进行,以评估VideoLLaMB在长视频理解、规划任务和流式字幕生成等方面的性能。

效果分析

长视频理解:在EgoSchema基准上,VideoLLaMB的平均准确率为53.8%,比PLLaVA提高了5.5个百分点。即使在视频长度增加到原始长度的8倍时,性能仍然保持稳定。

规划任务:在EgoPlan基准上,VideoLLaMB在所有7B视频语言模型中表现最佳,比PLLaVA提高了2.06个百分点。

流式字幕生成:通过SceneTilling算法,VideoLLaMB能够在无需特殊训练令牌的情况下自动预测流式视频的字幕结束点。

帧检索:在NIAVH基准上,VideoLLaMB在各种视频长度下均能准确检索到特定帧,优于其他方法。

效率分析:VideoLLaMB在单个Nvidia A100 GPU上训练时,支持高达320帧的线性GPU内存扩展,确保了高性能和成本效益。

总体结论

VideoLLaMB通过引入递归记忆令牌和场景平铺算法,显著提高了长视频理解的计算效率和语义连续性。实验结果表明,VideoLLaMB在长视频问答、自我中心规划和帧检索等任务上优于现有方法。未来的工作将进一步整合LLM的记忆与桥接层的记忆,同时保持整个系统的效率。

项目部署

安装基础环境

1.克隆仓库

git clone https://github.com/nlco-bigai/VideoLLaMB.git
cd VideoLLaMB

2. 安装基础依赖包

conda create -n videollamb python=3.10 -y
conda activate videollamb
pip install --upgrade pip
pip install -e .
conda install ffmpeg

# 安装其他软件包【训练】
pip install -e ".[train]"
pip install flash-attn --no-build-isolation
pip install flash-attn --no-build-isolation --no-cache-dir

3.下载checkpoint,将其放入 checkpoints 目录

模型地址:https://huggingface.co/ColorfulAI/videollamb-llava-1.5-7b

快速推理

CLI快速开始

python -m llava.serve.cli --model-path checkpoints/videollamb-llava-1.5-7b --video-file XXX.mp4

使用 CLI 流式视频字幕生成

python -m llava.serve.cli_streaming --model_path checkpoints/videollamb-llava-1.5-7b

构建演示Demo

python -m llava.serve.gradio_demo

训练

准备数据

PLLaVA 的视频教学和 LLaVA 的图像教学相结合进行训练。

准备初始化的模型权重

基于llava模型初始化,模型下载链接:

https://huggingface.co/liuhaotian/llava-v1.5-7b

将其放入路径 checkpoints/llava-v1.5-7b 中。

针对视觉编码器,选择 LanguageBind,模型链接:

https://huggingface.co/LanguageBind/LanguageBind_Image https://huggingface.co/LanguageBind/LanguageBind_Video_merge

将它们放入 checkpoints/LanguageBind_Imagecheckpoints/LanguageBind_Video_merge中。

开始训练

4-A800-80G 中的 LLaVA-1.5-7B 训练需要 23 小时。

bash scripts/finetune_video_image.slurm # bash
sbatch scripts/finetune_video_image.slurm # slurm cluster

# 对于每次循环迭代,将LLM损失反向传播到桥接器。
bash scripts/finetune_video_image_loss.slurm # bash
sbatch scripts/finetune_video_image_loss.slurm # slurm cluster

提炼关键问题

问题1:VideoLLaMB的递归记忆桥接层是如何设计的?其主要优势是什么?

VideoLLaMB的递归记忆桥接层通过在桥接层内集成递归记忆令牌来增强线性层的记忆能力。具体设计如下:

记忆 token:在每个视频段前缀固定数量的记忆令牌,表示为[mi;si],其中mi表示记忆令牌,si表示视频段。

自注意力操作:对包含记忆令牌的视频段应用标准的自注意力操作,生成更新后的记忆令牌和视觉表示,公式如下:

递归处理:这个过程递归进行,遍历语义视频段的同时更新记忆 token,最终生成视频序列的压缩视觉摘要。

其主要优势包括:

  • 增强记忆能力:通过递归记忆令牌,桥接层能够增强对视频内容的记忆能力。
  • 信息压缩:记忆令牌能够在保留当前视频场景的同时压缩过去视频的信息,提高计算效率。
  • 缓解梯度消失:通过记忆缓存和检索机制,能够有效缓解梯度消失问题,保留长期依赖信息。

问题2:VideoLLaMB的 SceneTilling 算法是如何工作的?它在视频分割和流式字幕生成中有何优势?

SceneTilling算法通过以下步骤实现视频分割:

  • 余弦相似度计算:计算相邻帧对之间的余弦相似度,生成相似度分数序列。
  • 深度分数计算:根据相似度分数计算每个点的深度分数,公式为:
  • 分割阈值设置:根据深度分数的分位数设置分割阈值,选择超过阈值的深度分数对应的分割点,将视频分割成多个语义段。

在流式字幕生成中,SceneTilling算法的优势包括:

  • 自动字幕结束点预测:无需特殊训练令牌即可自动识别流式视频的字幕结束点。
  • 场景变化检测:能够有效检测视频中的场景变化,并生成相应的事件字幕。
  • 无需额外训练:利用视频的语义分割结果,无需额外的训练数据即可实现流式字幕生成。

问题3:VideoLLaMB在NIAVH基准上的表现如何?其独特之处体现在哪些方面?

在NIAVH基准上,VideoLLaMB表现出色,主要得益于其独特的设计和多模态查询能力:

  1. 多模态查询支持:NIAVH支持文本、图像和视频等多种模态的查询,能够全面评估模型在长视频中识别特定内容的能力。
  2. 高效的视频理解:VideoLLaMB 通过递归记忆桥接层和SceneTilling算法,能够在各种视频长度下准确检索到正确的图像针。
  3. 对比其他方法:与现有的自适应池化、位置外推结合采样等方法相比,VideoLLaMB在处理长视频时表现出更高的效率和更低的成本。

其独特之处体现在:

  • 记忆缓存与检索:通过记忆缓存和检索机制,VideoLLaMB 能够有效保留先前的状态记忆,缓解梯度消失问题。
  • 语义分割:SceneTilling 算法将视频分割成独立的语义单元,确保语义完整性和场景变化的准确性。
  • 综合性能:在长视频问答、自我中心规划和帧检索等多个任务上,VideoLLaMB 均表现出显著优于现有方法的性能。
参考文献:
VideoLLaMB: Long-Context Video Understanding with Recurrent Memory Bridges

技术交流

加入「AIGCmagic社区」群聊,一起交流讨论,涉及 AI视频、AI绘画、Sora技术拆解、数字人、多模态、大模型、传统深度学习、自动驾驶等多个不同方向,可私信或添加微信号:【m_aigc2022】,备注不同方向邀请入群!!

推荐阅读

半年耕耘,《AIGCmagic社区知识星球》重磅升级!限量活动中!

MotionLLM:多模态人类行为理解框架

小型 AI 模型挑战 GPT-4,提高商业可及性

MiniCPM-V 2.0: 具备领先OCR和理解能力的高效端侧多模态大模型

多模态大模型:Video-LLaVA2 视频和图像的智能理解系统

多模态大模型:LLaVA-OneVision 轻松实现视觉任务迁移 | 单图、多图和视频理解

开源项目|多模态大模型:Show-o 统一多模态理解和生成

魔方AI空间
AI技术从业者与爱好者,专注于计算机视觉、深度学习、行为识别、多模态、边缘智能等前沿科技成果的研究和技术分享!
 最新文章