开源项目 | 多模态大模型VideoGPT+:集成图像和视频编码器以增强视频理解

2024-09-23 08:14   北京  

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

VideoGPT+:结合图像和视频编码器的优点,通过自适应池化策略提升视频理解性能,并在多个基准测试中表现优异。

项目地址:https://github.com/mbzuai-oryx/VideoGPT-plus

引言

现有的视频理解模型在处理视频时,依赖于图像编码器或视频编码器,但各有局限性。图像编码器擅长捕捉帧序列的丰富空间细节,但缺乏显式的时间上下文;视频编码器提供时间上下文,但受计算限制,通常只能处理稀疏的低分辨率帧,导致上下文和空间理解有限。

如何在视频理解中有效结合图像编码器的空间细节和视频编码器的时间上下文;如何在保证效率的同时,捕捉细粒度的时间动态。

该问题的研究相关工作有:早期的图像对话模型如BLIP-2、MiniGPT-4和LLaVA等;扩展这些模型到视觉定位任务的尝试;以及视频对话模型如Video-ChatGPT、Video-LLaMA等。这些工作大多使用预训练的视频编码器,但受计算限制,效果有限。

VideoGPT+与各种SoTA模型在多个视频基准测试中的性能比较。VideoGPT+在视频对话基准测试中展示了比各种模型更好的性能:VCGBench和MVBench,零样本视频问答:MSVD-QA、MSRVTT-QA、ActivityNet-QA。还评估了VCGBench-Diverse,该测试涵盖了18个广泛的视频类别(包括密集字幕、空间理解和推理)。

方法概述

VideoGPT+,用于解决视频理解中的空间和时间信息结合问题。具体来说,

编码器设计:VideoGPT+采用了图像编码器和视频编码器的双编码器设计,分别捕捉空间细节和时间上下文。图像编码器使用CLIP模型(ViT-L/14),视频编码器使用InternVideo-v2模型。

分段采样策略:为了捕捉细粒度的时间动态,VideoGPT+采用了分段采样策略,将视频分割成多个小段,并对每段的帧进行编码。相比均匀采样,分段采样减少了自注意力计算复杂度,同时确保视频编码器在每个小段内高效捕捉时间线索。

视觉适配器模块:为了整合图像和视频特征,VideoGPT+引入了一个视觉适配器模块,通过投影和池化操作,将图像和视频特征映射到共同的空间,减少计算复杂度。

大语言模型:最后,VideoGPT+将图像编码器和视频编码器的特征拼接起来,输入到大语言模型(如Phi-3-Mini-3.8B)中进行处理,生成对视频问题的综合响应。

实验细节

数据集:实验使用了多个数据集,包括VideoInstruct100K、VCG+112K、VideoChat和WebVid等。VideoInstruct100K通过半自动注释管道生成75K指令调优问答对,VCG+112K通过改进的注释管道生成112K问答对。

训练设置:训练分为两个预训练阶段和一个指令调优阶段。预训练阶段分别在CC-595K数据集上训练图像编码器和视频编码器,指令调优阶段使用LoRA进行微调。

采样策略:在VCGBench、VCGBench-Diverse和零样本问答任务中,从视频中采样16帧;在MVBench任务中,采样8帧。

评估指标:在VCGBench上,评估信息的正确性、细节导向、上下文理解、时间理解和一致性;在VCGBench-Diverse上,额外评估密集视频字幕生成、空间理解和视觉推理能力;在MVBench上,评估20个细粒度时间理解任务;在零样本问答任务上,评估四个开放数据集的准确性和得分。

实验结果分析

定量评估

VCGBench:VideoGPT+在VCGBench上的平均得分为3.28,超过了之前最好的方法(Video-ChatGPT),提升了0.25(5%)。

VCGBench-Diverse:VideoGPT+在VCGBench-Diverse上的平均得分为2.47,超过了所有之前的方法。在密集字幕生成、空间理解和视觉推理能力方面,分别达到了1.38、2.80和3.63的得分,显著提升了空间和时间理解。

MVBench:VideoGPT+在MVBench上的平均得分为58.7%,比之前的最佳方法(VideoChat2)提升了7.6%。在14个任务中取得了最佳结果,并在4个任务中排名第二。

零样本问答:VideoGPT+在四个零样本问答数据集上的表现均优于之前的方法,显示了其在未见视频中的适应能力和生成准确上下文相关响应的能力。

定性分析

对 VideoGPT+ 在多个任务和领域的性能进行全面评估。


提炼关键问题

问题1:VideoGPT+是如何利用分段采样策略来捕捉细粒度的时间动态的?

VideoGPT+ 采用了分段采样策略,将视频分割成多个小段,并对每段的帧进行编码。具体来说,输入视频被分成K个段,每个段包含T/K帧。每个段被下采样到低分辨率n×h×w×c进行视频编码。相比均匀采样,分段采样更好地与双编码器设计对齐,使视频编码器能够在每个段内高效捕捉丰富的temporal cues。分段采样策略确保了模型能够在不增加计算复杂性的情况下,捕捉到视频中的细粒度时间动态。

问题2:VideoGPT+中的视觉适配器模块是如何促进图像和视频特征集成的?

VideoGPT+ 引入了一个视觉适配器模块,用于促进图像和视频特征的集成。该模块首先对图像和视频编码器的输出嵌入进行投影,分别通过独立的视觉语言(V-L)投影层Wg和Wh,将这些多维特征映射到语言空间。投影层是可训练的,而视觉编码器保持冻结状态,从而保留了丰富的预训练表示。投影后的嵌入被重塑回网格形式,并经过一个2×2的自适应令牌池化操作,该操作在局部和全局特征的空间维度上操作,减少了令牌长度,使得更大的视觉上下文能够适应相同的LLM上下文窗口。最终,池化的嵌入被连接起来,形成一个包含详细空间表示和全面时间上下文的序列,输入到LLM中进行处理。

问题3:VideoGPT+在VCGBench-Diverse基准上的表现如何,与其他方法相比有哪些优势?

VideoGPT+ 在VCGBench-Diverse基准上的平均得分为2.47,超过了所有之前的方法。具体来说,VideoGPT+在详细字幕、空间理解和视觉推理能力方面分别达到了1.38、2.80和3.63的得分。与其他方法相比,VideoGPT+的优势在于其双编码器设计,结合了图像编码器的空间细节和视频编码器的时间上下文;轻量级视觉适配器模块有效地将图像和视频特征映射到共同空间;分段采样策略保留了细粒度的时间动态。这些设计使得VideoGPT+在处理多样化视频内容和复杂推理任务时表现出色。

项目部署

安装基础依赖环境

conda create --name=videogpt_plus python=3.11
conda activate videogpt_plus

git clone https://github.com/mbzuai-oryx/VideoGPT-plus
cd VideoGPT-plus

pip install torch==2.1.2 torchvision==0.16.2 --index-url https://download.pytorch.org/whl/cu118
pip install transformers==4.41.0

pip install -r requirements.txt

export PYTHONPATH="./:$PYTHONPATH"

此外,安装 FlashAttention 可用于进行训练

pip install ninja

git clone https://github.com/HazyResearch/flash-attention.git
cd flash-attention
python setup.py install
技术交流

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

推荐阅读

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

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

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

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

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

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

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

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


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