科研记录

VTG-LLM模型-论文阅读

《VTG-LLM: Integrating Timestamp Knowledge into Video LLMs for Enhanced Video Temporal Grounding》论文阅读笔记

要解决的问题

当前的Video LLMs只有粗略描述视频内容的能力,而很难准确确定视频中的时间戳,于是作者从以下三个角度入手解决问题。

  1. 模型无法理解与视频帧对应的时间戳,只能理解视频帧之间的顺序,那么如何融入时间戳知识?
  2. 对于一个数字,它既可以表示时间,又可以表示个数或者其他的含义,但它们都放在同一个决策边界进行训练,这会导致两者相互影响。
  3. 视觉token占用存储太大,LLM上下文长度有限,导致视频帧取样次数少。

作者提出的方案

首先作者提出了VTG-LLM模型,致力于解决VTG方向的四种任务,Moment Retrieval、Dense Video Captioning、Highlight Detection、Video Summarization。这四个任务都是之前论文提出来的,当时没有将四种任务统一到一个模型中,本文作者设计了一个数据集融合改造之前相关论文的数据集,并且使用模型统一完成这四中任务的评测。下面是本文重要的三个模块设计:

  1. 将时间戳知识融入视觉token,让模型理解每个视频帧对应的时间戳。
  2. 引入绝对时间token,使得时间与数字的特征分开表述。
  3. 提出一种token压缩技术,满足VTG任务需要大量视频帧的需求。

数据集介绍

作者设计了VTG-IT-120K,它是一个包含120K个公开可用视频—文本对的数据集,建立在TimeIT数据集的基础之上。而且作者采用了Gemini 1.5-Pro对51.9K条低质量视频标注进行了重新标注,标注示例图如下:

粘贴图片 1

可以看到,修订后的描述更加简洁,而且包含的与视觉内容无关的信息更少。
VTG-IT-120K数据集涵盖以下四种不同的视频时序定位任务:

  • Moment Retrieval(时刻检索,63.2K):对于时刻检索任务,我们使用HiREST(grounding)、QuerYD、DiDeMo和VTG-IT-MR。
  • Dense Video Captioning(密集视频描述,37.2K):对于密集视频描述任务,我们使用HiREST(step)、COIN、ActivityNet Captions和VTG-IT-DVC。
  • Video Summarization(视频摘要,15.2K):对于视频摘要任务,我们使用TVSum、SumMe和VTG-IT-VS。
  • Video Highlight Detection(视频高光检测,3.9K):对于视频高光检测任务,我们使用VTG-IT-VHD。

四项任务中的VTG-IT-X标注均使用来自YT-Temporal-180M数据集的16K个视频重新标注得到。

模型方法

粘贴图片 1

时间戳融入视觉token:

首先,视频帧输入到Visual Encoder中,输出patch token,分别描述图像的不同局部区域,,接着输入到Qformer中,利用K个可学习的query从大量视觉token中找出对下游任务有用的信息,从而输出K个query tokens。接下来就是把时间戳知识融入到视觉token中,作者利用了类似于transformer的位置编码的方法,采用如下公式:

z^i,j=zi,j+[Ws]i.\hat{z}_{i,j} = z_{i,j} + \left[W_s\right]_i. z^i,j=zi,j+[Ws]i+[Wt]t.\hat{z}_{i,j} = z_{i,j} + \left[W_s\right]_i + \left[W_t\right]_t.

通过设计可学习的视频帧序矩阵Ws,与时序矩阵Wt,通过与视觉token相加的方式,将时间戳知识融入进视觉token当中。假设一个视频取样96帧,那么Ws就会有96行,每一行都会得到充分的训练,作者还考虑了一些情况,比如设置Wt为8196行(认为一个视频最长8196s),但是每个视频如果只取样96次,那么每输入一个视频就只能更新Wt中的96行,直到最后也会有一些行没有得到更新,作者设计如下方式:

tl=argmaxτTtr,τ<tτ,tr=argminτTtr,τ>tτ.\begin{aligned} t_l &= \arg\max_{\tau\in\mathcal{T}_{\mathrm{tr}},\,\tau<t} \tau,\\ t_r &= \arg\min_{\tau\in\mathcal{T}_{\mathrm{tr}},\,\tau>t} \tau. \end{aligned} [Wt]t=trttrtl[Wt]tl+ttltrtl[Wt]tr.\left[W_t\right]_t = \frac{t_r-t}{t_r-t_l} \left[W_t\right]_{t_l} + \frac{t-t_l}{t_r-t_l} \left[W_t\right]_{t_r}.

对于没有更新的行,作者采用与它最近的有值的行对该行进行加权插值,使得每一行都有特征向量。

绝对时间token:

作者向tokenizer中加入了11个时间token。其中包括10个分别表示数字0至9的数字时间token,以及一个表示小数点的额外token。所有时间戳均使用6个时间token表示,比如时间120.5,就被表示为<TIME_ZERO><TIME_ONE><TIME_TWO><TIME_ZERO><TIME_DOT><TIME_FIVE>,而且作者发现不能随机初始化绝对时间token,需要采用训练好的的数字token作为初始值,如下公式:

[Wtoken]ID(t1),j=[Wtoken]ID(1),j,0j<d.\left[W_{\mathrm{token}}\right]_{ \mathrm{ID}(\langle t_1\rangle),j} = \left[W_{\mathrm{token}}\right]_{ \mathrm{ID}(\texttt{1}),j}, \qquad \forall\,0\le j<d.

基于槽位的token压缩:

粘贴图片 1

前面N个带有时间戳的视觉token输入进来,采用K个可学习的Dispatch Weights对它们进行加权融合,采用如下公式:

sk=i=1Nexp(Φkzi)j=1Nexp(Φkzj)zi.s_k = \sum_{i=1}^{N} \frac{ \exp\left(\Phi_k^{\top}z_i\right) }{ \sum_{j=1}^{N} \exp\left(\Phi_k^{\top}z_j\right) } z_i.

这里使用了类似softmax的操作,将N个视觉token转化为K个同样维度的slot,也就是做到了压缩,而且通过加权聚合的方式尽量保留VTG任务所需要的关键信息。

最后,经过处理的视觉token与文本token输入到LLM当中,训练模型。

实验分析

作者采用Charades-STA、QVHighlights和YouCook2数据集进行测试,也是zero-shot。

粘贴图片 1

这张图对比了VTG-LLM与传统视频大模型和VTG任务相关视频大模型的性能。

相关指标解释如下:CIDEr: 生成的文字描述与参考描述是否接近。SODA_c: 从整个故事或事件序列层面评价密集描述。F1: 预测的事件时间段是否与真实时间段匹配。

粘贴图片 1

该图是消融实验图,分别对比了提示词改良、只建模帧序、建模帧序时序但随机初始化、不采用绝对时间token、不限制绝对时间token位数、绝对时间token未初始化、各种各种朴素压缩基线以及当前模型的性能。

可改进的地方

1、Wt是用于将时间戳融入进视觉token的可学习矩阵,但是矩阵的形式仍然存在稀疏以及不连续的缺陷。

2、固定96帧是否可以采用从粗到细的自适应采样方式。