多模态论文:MIST

341 阅读4分钟

MIST : Multi-modal Iterative Spatial-Temporal Transformer for Long-form Video Question Answering

论文地址 : arxiv.org/abs/2212.09…

github : github.com/showlab/mis…

简介

本文主要介绍了一种名为MIST(Multi-modal Iterative Spatial-Temporal Transformer)的新型模型,用于解决长视频问答(VideoQA)中的多事件推理和多粒度视觉概念交互等挑战。MIST将传统的密集自注意力分解成级联的段和区域选择模块,用于自适应选择与问题相关的帧和图像区域。此外,MIST还通过多层迭代执行选择和自注意力来支持多事件推理。实验结果表明,MIST在四个VideoQA数据集上均取得了最先进的性能,并且在效率方面表现卓越。

模型

MIST结构图

image.png

mist执行过程

1.利用预训练模型提取输入的特征

2.对于选定的特征集,迭代地执行自注意力机制,并执行多事件推理

3.基于视频、问题和答案特征得到最终答案

输入表示

视频

将视频分为K段,每一段有T帧,每一帧被划分为N个patches

具体怎么分块?每个块怎么分帧?patches一定要分9份吗?

输入表示为x={x1,x2,x3...,xk}输入表示为x=\{x^{1},x^{2},x^{3}...,x^{k}\}
其中xkRTND,表示第k个段的视频的特征,其中D表示每个帧中patches上的维度其中x^{k}\in R^{T*N*D},表示第k个段的视频的特征,其中D表示每个帧中patches上的维度

除此之外,需要为每个帧加上位置信息,即位置编码,具体加的是什么位置编码呢?

问题(文本内容处理)

对于每个问题,将问题经过一个vision-language编码器,表示为

Xw={w1,w2,...,wM}X_{w}=\{w_{1},w_{2},...,w_{M}\}

其中的w1是[CLS],其余的w都是问题中的单词

迭代时空注意力层

迭代地以问题为条件在长视频中选择片段和区域,然后对选中的区域执行多事件推理

三个步骤

段选择、区域选择、时空自注意力机制

image.png

段选择

特征都是池化得出的,考虑其他方法?论文中可以是MLP、first token pooling等

(帧特征)第k个段、第t个帧的特征表示(帧的特征是通过对所有patch进行池化得到的):

ftk=pool(xt,1k,xt,2k,...,xt,Nk)f^{k}_{t}=pool(x^{k}_{t,1},x^{k}_{t,2},...,x^{k}_{t,N})
其中xt,nk表示第k个段中第t帧中的第npatch的特征其中x^{k}_{t,n}表示第k个段中第t帧中的第n个patch的特征

(段特征)第k个段的特征表示(由T个帧的特征经过池化后得到):

sk=pool(f1k,f2k,...,fTk)s^{k}=pool(f^{k}_{1},f^{k}_{2},...,f^{k}_{T})

(问题特征)由每个单词的特征经过池化后得到

q=pool(w1,w2,...,wM)q=pool(w_{1},w_{2},...,w_{M})

池化层可以根据不同的编码器进行选择,有mean pooling、first token pooling、simple MLP layer等

具体选择方法(选出k个与问题最相关的视频段)

由于是不同模态,Q和K需要做一个线性投射来统一?

image.png

q:表示问题的特征S:表示视频段特征,经过上述池化公式后得到,是段级别的特征X:原始视频特征(输入),patches级别上的特征gqgs均为线性投射层,用于统一不同模态的特征q:表示问题的特征\\ S:表示视频段特征,经过上述池化公式后得到,是段级别的特征\\ X:原始视频特征(输入),是patches级别上的特征\\ g_{q}和g_{s}均为线性投射层,用于统一不同模态的特征

最终的段采样的输出

Xt={xkkβ}RTopkTNDβ表示Topk选中的视频段的集合的下标集合X_{t}=\{x_{k}|k\in\beta\}\in R^{Top_{k}*T*N*D}\\ \beta表示Top_{k}选中的视频段的集合的下标集合

具体选择方法(选出Topk个最相关的段)

论文使用的是Gumbel-Softmax

区域选择

选定与问题最相关的视频段之后,需要继续求出每一帧中与问题最相关的一些patches

对于某个视频段中的第τ个帧,我们希望选出该帧中与问题最相关的patches输入Xτ={xτ,nkn[1,N],kβ}输出XτRTopjD对于某个视频段中的第\tau 个帧,我们希望选出该帧中与问题最相关的patches\\ 输入X_{\tau}=\{ x^{k}_{\tau ,n}|n\in [1,N],k\in \beta\}\\ 输出X^{‘}_{\tau}\in R^{Top_{j}*D}

最后将选中的区域中的帧中的patches特征全部堆叠起来

Xst={Xττ[1,TopkT]}X_{st}=\{ X^{‘}_{\tau}|\tau\in[1,Top_{k}*T]\}

选出每个段中每一帧中与问题相关的Topj个patches

具体方法,也是用问题作为Q,去和帧特征执行一个交叉注意力:

image.png

最后选出与问题最相关的Topj个patches

时空自注意力机制

每一层的ISTA的输出是一个多头注意力层的输出,其中的QKV如下

image.png

S:视频段特征

Xst:经过段选择+区域选择选出来的堆叠起来的patches特征

Xw:问题对应的特征向量

每一层的输出都会用于答案预测

答案预测

候选答案Xa是由预训练模型获取到的

image.png

最终对每个ISTA的输出做一个pool,得到Xo,再将Xo与所有的候选答案XA计算相似度,最终相似度最大的即为最终答案

实验

一些细节

图像-语言预训练模型:CLIP(ViT-B/32)

视频-语言预训练模型:AIO(Allin-One-Base)

Topk=2,Topj=12Top_{k}=2,Top_{j}=12

ISTA的层数为L=2

对于所有的视频,每个视频采样12帧,并将其分为K=8段

在各个数据集中的表现

image.png

image.png

image.png

image.png

与其他方法的对比

1.在需要多粒度视觉概念推理的问题上,我们的模型要表现得更好(效果提升较大)

2.在需要因果推理或多事件推理的任务上,我们模型表现得也更好

从上述结论表明,该方法可以更加有效地解决长视频QA的独特挑战

收获

该方法在帧抽取方面并未详细说明,对于不同的问题or视频,采取相同的帧抽取方式可能是不合理的,根据不同的视频可以设置一个可学习的帧抽取方法以保证抽取的帧更具有代表性