欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > 【大模型系列】Grounded-VideoLLM(2024.10)

【大模型系列】Grounded-VideoLLM(2024.10)

2025/7/10 2:42:28 来源:https://blog.csdn.net/kabuto_hui/article/details/143608968  浏览:    关键词:【大模型系列】Grounded-VideoLLM(2024.10)

image.png

  • Paper:https://arxiv.org/pdf/2410.03290
  • Github:https://github.com/WHB139426/Grounded-Video-LLM
  • Huggingface:https://huggingface.co/WHB139426/Grounded-Video-LLM
  • Author:Haibo Wang et al. 加州大学,复旦

动机: 当前的video-LLMs由于缺少对时间信息的编码而导致其在细粒度的视频理解(fine-grained temporal grouding)能力受限。

关于fine-grained temporal grouding的三大基础能力:

  • temporal referring:模型能识别某个具体时间段发生的事件
  • temporal localizaing:模型能识别某个事件发生的时间段
  • temporal reasoning:模型能推理某个时间段发生的事件与其他时间段事件之家的关系

image.png

解决方案:

  • Two-Stream encoding:加入额外的时间流连编码帧之间的关系,即image encoder用于编码空间信息,video encoder用于编码时间信息
  • Temporal tokens:用离散temporal tokens来视频中的相对时间位置

文章目录

  • 1 模型结构
    • 1.1 Two-stream encoding
      • 1.1.1 Spatial stream
      • 1.1.2 Temporal stram
      • 1.1.3 特征融合
    • 1.2 Unified temporal tokens
  • 2 训练过程
    • 2.1 Stage1: Video-Caption Alignment
    • 2.2 Stage2: Temporal Token Alignment
    • 2.3 Stage3: Multi-Task Instruction Tuning
  • 3 Grouned VideoQA dataset generation
  • 4 指标情况
    • 4.1 grounding任务
    • 4.2 VideoQA任务
  • 5 总结

1 模型结构

image.png

  • Image encoder:CLIP
  • video encoder:InternVideo2-1B
  • LLM:Phi3.5-Vision-Instruct-3.8B
  • 时间编码到实际时间的转换:(当前token编码 / 总token编码)* 总视频时长
  • 视频:采样成96帧,分成12个片段

1.1 Two-stream encoding

给定一个视频V(包含T帧),先将其分成K个视频片段,然后使用分组编码策略。由于视频中连续帧存在冗余性,于是每个视频片段都可以表示成2个部分:空间(spatial)和时间(temporal)。

  • 空间:每个视频片段用一个独立关键帧(每个片段最中间的1帧)来表示空间信息
  • 时间:用连续的帧来获取片段内的动作变化

1.1.1 Spatial stream

  • 关键帧:每个视频片段的中间帧
  • image encoder:CLIP
  • 使用池化策略来减少token数量:2d池化尺寸为2x2

1.1.2 Temporal stram

  • video encoder:InternVideo2-1B
  • 每个视频片段包含96 / 12 = 8帧
  • 使用池化策略来减少token数量,也只在空间维度上池化,2d池化尺寸为4x4

1.1.3 特征融合

直接使用concat,在token数量维度上进行拼接。
F S e g = C o n c a t [ F l a t t e n ( f ( F S ) ) ; F l a t t e n ( g ( F T ) ) ] F_{Seg} = Concat [Flatten(f(F_S)); Flatten(g(F_T ))] FSeg=Concat[Flatten(f(FS));Flatten(g(FT))]

f和g分别代表2层MLP,用于对齐LLM的维度需求。最后再将K组 F s e g F_{seg} Fseg拼接到一起得到视频的编码 F v i d F_{vid} Fvid

1.2 Unified temporal tokens

使用相对时间表示,将连续的时间戳表示为离散的temporal tokens。其具体表示如下:

  • 给定一个视频V,长度为L秒,均匀的将其划分为M(M=300),这样就可以得到M+1个离散时间点(<0> ~ <m>,<0>一般表示视频开始时间,<m>表示视频结束时间)
  • 一个连续的时间戳转为temporal tokens:
    t = R o u n d ( M × τ L ) τ = L × t M t = Round(M\times \frac{τ}{L}) \\ τ = L \times \frac{t}{M} t=Round(M×Lτ)τ=L×Mt

于是视频片段及其内容可表示为:
image.png

其中:

  • <s>和</s>表示squence的开始和结束
  • <video>和</video>表示视频的编码
  • <grounded>是一个特殊token用于告诉模型输出grounded timestamps

2 训练过程

从pre-trained image-based MLLM开始,采用渐进式策略增强fine-grained temporal grounding能力。分为三个阶段。
image.png

2.1 Stage1: Video-Caption Alignment

使用video-caption数据来实现模态对齐,其他层冻结,只训练映射层MLP(f(·), g(·))。

2.2 Stage2: Temporal Token Alignment

引入temporal tokens和grounded数据,持续微调。训练参数为:

  • 映射层MLP(f(·), g(·))
  • word embedding matrix(add temporal tokens)
  • final classifier of LLM

2.3 Stage3: Multi-Task Instruction Tuning

引入instruct数据微调,训练参数与stage类似:

  • 映射层MLP(f(·), g(·))
  • word embedding matrix(add temporal tokens)
  • LoRA微调LLM

3 Grouned VideoQA dataset generation

  • 使用OpenAI ChatGPT-4辅助数据生成
  • 基于开源的已经包含temporal label信息的数据集如ActivityNet-Caption、QVHighlights
  • 转化为多选任务multi-choice problem

image.png

具体步骤如下:

  • 构造QA-pairs:首先将时间与描述输入到GPT中得到QA-pairs
    image.png
  • 构造选项:使用余弦相似度,检索50个与当前问题相似的问题,并从这50个答案中随机选择4个与答案相似的构造选项,答案相似度从0.2~0.9

4 指标情况

4.1 grounding任务

image.png

4.2 VideoQA任务

image.png

5 总结

时间编码的思路可以借鉴,不过仍然存在几个问题:

  • 针对长视频,均有抽取96帧还是否有效?
  • 关键帧选取每个片段的中间帧是否合理?理想情况下每个片段场景应该类似,但是实际中,每个片段可能出现不同的镜头拍摄角度。以关键帧作为间隔来分割会更合理但是会出现不均匀分割的现象。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词