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

【大模型系列】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.kler.cn/a/384012.html

相关文章:

  • 大众汽车合肥社招入职笔试测评SHL题库:综合能力、性格问卷、英语口语真题考什么?
  • 智慧商城项目-VUE2
  • 基于 Encoder-only 架构的大语言模型
  • SpringMVC项目转为SpringBoot项目
  • ‌5G SSB(同步信号块)位于物理层‌
  • CAD数据提取
  • 《深入理解拷贝构造函数:对象复制的核心机制》
  • Java ssm 基于微信小程序的民宿预订管理系统
  • VBA10-处理Excel的动态数据区域
  • 241107-离线环境下RHEL通过Python配置BerkeleyDB数据库
  • 一七六、CSS 介绍及示例
  • Flutter PC端UI组件库
  • 以太网交换安全:MAC地址漂移
  • C++——完美转发(引用折叠+forward)
  • wflow-web:开源啦 ,高仿钉钉、飞书、企业微信的审批流程设计器,轻松打造属于你的工作流设计器
  • 音频3A一——webrtc源码3A的启用方法和具体流程
  • runnable和callable区别和底层原理
  • Open API生成前端接口
  • 力扣——单值二叉树(C语言)
  • 蓝桥杯 区间移位--二分、枚举
  • CSS定位装饰
  • ASPICE框架下的高效汽车软件开发实践与优化策略
  • 实战技巧:深入Air780E的WebSocket应用
  • 禁止uni小程序ios端上下拉伸(橡皮筋效果)
  • Docker使用复习(11.3)
  • C++数据类型