当前位置: 首页 > news >正文

【大模型系列】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帧还是否有效?
  • 关键帧选取每个片段的中间帧是否合理?理想情况下每个片段场景应该类似,但是实际中,每个片段可能出现不同的镜头拍摄角度。以关键帧作为间隔来分割会更合理但是会出现不均匀分割的现象。

http://www.mrgr.cn/news/68029.html

相关文章:

  • linux清空文件的十二种方法
  • 7.2 设计模式
  • 推荐一款非常好用的C/C++在线编译器
  • 智慧水肥一体化:道品科技现代农业的智能管理模式
  • 11.Excel中进行计算机仿真应用
  • [pdf,epub]105页《分析模式》漫谈合集01
  • Java学习篇之JVM 调优
  • linux进程的状态之环境变量
  • 【贪心算法】No.1---贪心算法(1)
  • linux 进程调度学习笔记
  • 迭代解法:Jacobi、Gauss-Seidel、SOR
  • CPU Study - Branch Prediction
  • java单例模式
  • 使用LoRA 对千问70B模型进行微调
  • R7:糖尿病预测模型优化探索
  • MinGW-w64_10.0.0 + GCC12_x86_64-12.2.0-release-posix-seh-msvcrt-rt_v10-rev2.zip
  • 怎么快速区分金媒10.3和10.4旗舰版小程序,如果只看数字你就out了表面被忽悠教新手几招!
  • lua入门教程:随机数
  • MOE(Mixture of Experts,混合专家)
  • TESSY学习笔记—project view界面的架构
  • Webserver(4.9)本地套接字的通信
  • adb shell常用命令
  • [复健计划][紫书]Chapter 7 暴力求解法
  • 今日 AI 简报|微软推出通用多智能体系统,支持语音克隆的开源TTS模型,Android 自动化评估等
  • 关于 RK3588多屏显示的时候第二屏幕出现无法矫正的x坐标偏移 的解决方法
  • 哈夫曼编码的实现