小言_互联网的博客

CVPR 2020 Knowledge-Based Video Question Answering with Unsupervised Scene Descriptions

208人阅读  评论(0)
动机
  1. 在过去几年里,人工智能已经向类人推理方向取得了重大进展。这是通过模拟受限任务中的人类智能片段而实现的,在这些任务中,机器的性能很容易评估。在这些任务中,视频故事问答作为一个测试床出现,以近似真实世界的情况,其中不仅物体之间的空间关系是重要的,而且过去、现在和未来事件之间的时间一致性。
  2. 为了理解电影,人们不断地对特定场景中的情节和动作进行推理,并将它们与已经看过的全部故事情节联系起来。受此启发,视频故事问答也需要利用视频故事的结构,不仅要考虑当前场景中发生的事情,而且要考虑在先前场景中获得的知识。
  3. 之前关于视频故事问答的工作大致可以分为两类。一方面,有模型从整个视频故事中提取信息,并使用注意力机制来找到与每个问题相关的部分。这些模型获得了上下文表示,用于回答关于情节的一般性问题,但几乎不能捕捉场景层面的细节。另一方面,其他模型从特定场景中引出详细信息,而不看整个视频故事。然而,仅仅依靠短场景的内容是不足以回答故事富有洞察力的方面,比如人物的动机。
  4. 为了利用上下文和场景信息研究视频故事的多种类型的问题,最近引入了一个基于知识的视频问题分析数据集 KnowIT VQA。重新基于人类生成的标注来理解情节富有洞察力的方面。然而, KnowIT VQA中的上下文数据是从数千个特定于任务的人类生成的标注中获得的,这些标注获取成本很高,并且很难推广到其他领域。相反,作者的模型通过使用外部知识库,既利用了特定的和一般的故事信息,又没有任务特定的标注。
方法
简介

本文介绍了一种基于知识的视频故事问答模型,该模型1)利用丰富的外部知识源,2)通过场景图生成无监督的视频字幕来表示视频内容。该模型利用无监督的场景描述和弱监督的外部知识,同时考虑场景信息和上下文信息。ROLL是一个三分支结构,它的灵感来自于人类认知的三个领域:对话理解(Read分支)、场景推理(Observe分支)和故事情节回顾(Recall分支),这三个领域在视频理解中扮演着重要的角色。场景的具体细节在阅读和观察部分总结,回顾部分则利用免费的在线资源提供故事的上下文概述。为了预测正确答案,最近通过模态加权机制将三个分支融合,该机制平衡来自三个不同来源的信号。

架构

每个分支基于不同的信息估计每个候选答案的相关性分数。read分支依赖于字幕,observe分支生成无监督的视频描述,ReCall分支获取外部知识作为剧情摘要。为了预测正确答案,三个输出通过模态加权机制融合。

模型

视频故事问答的目标是以类似于作者人类的方式理解电影或电视节目。作者认为至少有三个方面的人类智力参与了这一任务:1)理解正在说的内容,2)理解正在看的内容,3)回顾以前在故事中发生的事情。作者提出的模型ROLL在一个三分支体系结构中模拟了这些方面的每一个,如图2所示。ROLL中的每个分支(Read、Observe和Recall)将来自不同认知任务的信息表示为文本数据,并通过具有多个self-attention层的Transformer对其进行编码。然后,每个Transformer的输出通过模态加权机制进行融合,以预测正确答案。

任务定义。作者把视频故事问答作为一个基于知识的多项选择任务来处理。对于每个样本,输入是:1)一个问题,2)Nca候选答案,3)一个视频场景,以及4)与场景相关联的字幕。输出是预测答案的索引。作为一个基于知识的任务,模型可以访问外部资源来检索上下文信息。

ROLL合并了三个独立的Transformer来对从每个分支中提取的语言数据建模,这些数据由输入字符串表示:Smc=[CLS]+contextm+[SEP]+choicemc+[SEP],其中m表示分支,contextm是为每个分支定义的输入语句,choicemc是第c个候选答案的语句,其中c=1,···,Nca,[CLS]是用于获得输出表示的分类token,[SEP]是用于区分句子的分隔符token,+是字符串串联。对于每个示例,生成Nca输入字符串,每个候选答案一个。

输入字符串smc被tokenise成n个token的序列xc=[x1,,xn并馈入Transformer网络。对于xc中的每个token xi,Transformer通过添加字、段和位置嵌入来创建一个输入嵌入,hi0RDh,Dh隐藏大小。对于Transformer中的每个self-attention层l=1,…,NL,由TBlockl(·)表示,序列中位置i的上下文化单词表示通过TBlockl(·)计算得到。然后获得输入字符串smc的编码表示,作为[CLS] token在最后一层中的位置的输出。

这里Transformer是BERTBASE模型,NL=12,Dh=768。

具体来说,模型包括以下几部分:

  1. Read分支。在read分支中,ROLL从视频场景的对话中提取信息,这些对话是从字幕中获得的。此分支的输入字符串为:src=[CLS]+subs+q+[SEP]+ac+[SEP],其中subs是字幕,q是问题,ac是每个候选答案,其中c=1,…,Nca。每个输入串src被馈入Reading Transformer以获得yrc,该yrc被转发到具有wr权重和br偏置的单个输出线性层中,以计算每个候选答案的Reading分数。

  2. Observe分支。在observe分支中,ROLL将视频场景的语义总结为一种视频描述。从视频中生成描述是一个具有挑战性的问题。标准视频captioning模型需要在带有标注视频和描述对的大规模数据集上进行训练。由于视频故事问答数据集通常不提供这样的标注,因此为作者的任务训练一个模型是不切实际的。类似地,依赖预训练好的模型可能会导致较差的结果,因为生成的描述会遗漏关于故事的重要信息(例如,角色名称或经常出现的地点)。因此,作者提出通过首先创建视频场景图来生成无监督的视频描述。然后,这些描述被馈送到observing Transformer中,以预测每个候选答案的observe分数。

1)视频场景图的生成。视频场景图是通过对场景的语义元素(人物VC、地点VP、目标VO、关系VR和动作VA)的识别和连接生成的。图3展示了视频场景图的生成过程,作者使用四个模块来检测场景中最相关的细节:角色识别、地点分类、目标关系检测、动作识别。然后通过在检测到的元素之间建立连接来生成视频场景图。角色识别此模块使用由演员的图像训练的人脸识别分类器来识别场景中出现的角色。基于IMDB,作者为每个最常见的NCT角色下载大约10个图像。3作者用FaceNet提取f∈R128人脸表示,并训练一个k-最近邻(kNN)分类器,其中k=NCT。在测试时,训练好的kNN分类器返回预测字符的分数。如果分数低于一个阈值,作者将它分配给未知类。最后,作者应用一个时空滤波器来去除错误预测和重复字符。作为输出,作者获得场景C={Ci|i=1,···,NC}中出现的一组NC角色及其边界框。

地点分类。地点分类模块检测场景所在位置。为了学习视频故事中经常出现的位置,作者用ResNet50主干对预训练好的Places365网络进行了微调。为了获得位置标注,作者使用专门的网站的视频transcripts。作者提取在训练集脚本中至少出现10次的位置,并为其余的位置包含一个未知类别。在帧级进行训练,即每一帧被认为是一个独立的图像。对于预测,作者对一个视频场景中的每一帧前5个预测类的得分进行累加,输出得分最多的地点P。

目标关系检测。本模块检测场景中的目标及其关系。作者使用大规模视觉关系理解(VRU)在VG200数据集上进行预训练,有150个目标和50个关系库。对于每一帧,VRU返回一个主语-关系-目标(宾语)三元组的列表,它们的边界框,以及每个三元组的预测分数。作者通过找到边界框之间的重叠,将分配给一个person类别(Boy, girl, guy, lady, man, person, player, woman)的目标和主题替换为其相应的字符名。作者只保留分配给已知字符的三胞胎,作者过滤掉重复的。在丢弃边界框和分数后,作者得到了一个NT三元组列表,T={Ti|i=1,···,NT},Ti=(Si,Ri,Oi),Si,Ri,Oi分别作为主语、关系和目标(宾语)。

动作识别。动作识别模块检测视频场景中的主要动作。作者使用的Long-Term Feature Banks(LFB)预训练好的Charades数据集有157个动作类别。LFB在视频场景的整个范围内提取信息,相对于使用2-3秒的短剪辑提高性能。作者将整个场景输入到网络中,作者得到一个预测动作作为结果A。

图的生成。视频场景图,G=(V,E),通过使用节点V和边E的集合来语义描述场景的视觉内容。作者考虑以下类型的节点:

(1)角色节点,VC⊆V,表示场景中的角色。如果C不包含任何未知角色,VC=C,否则,作者删除未知角色{unkC},如VC=C−{unkC}。

(2)地点节点VP⊆V,表示视频场景发生的位置。

(3)如果P≠未知,则VP={P},否则VP=∅。

(4)目标节点VO⊆V,表示场景中的目标,它们是从不是字符的三元组中的主体和目标中获得的,如VO=Z−(Z∩C)和Z=S∪O。

(5)关系节点,VRV表示三元组中主语与目标之间的关系,VR=R。

(6)动作节点,VAV,表示场景中的动作为VA={A},其中|VA|=1。

作者使用6种有向边:

(1)在地点节点VP和动作节点VA之间的eP,A=(VP,VA)∈E。

(2)当在三元组Tk=(Sk, Rk, Ok)中,VCi=Sk且VRj=Rk时,在动作节点VA和各个角色VCj之间的eA,Cj=(VA, VCj)∈E。

(3)在一个角色节点VCi和一个关系节点VRj之间的eCi,Rj=(VCi,VRj)∈E。

(4)当在三元组Tk=(Sk, Rk, Ok)中,VRi=Rk且VCj=Ok时,一个关系节点VRi与一个角色节点VCj之间的eRi,Cj=(VRi,VCj)∈E。

(5)当在三元组Tk=(Sk, Rk, Ok)中,VOi=Sk且VRj=Rk时,目标节点VOi和关系节点VRj之间的eOi,Rj=(VOi,VRj)∈E

(6)当在三元组Tk=(Sk, Rk, Ok)中,VRi=Rk且VCj=Ok时,关系节点VRi和目标节点VCj之间的eRi,Oj=(VRi,VOj)∈E。

其中i、j和k是集合中某个目标的索引。

2)场景描述生成。场景描述以无监督的方式根据表1中的一组规则从视频场景图生成。对于表1中的每个真条件,生成一个句子。最后的场景描述是所有生成句子的拼接,作为视频场景中语义内容的一种表示。示例如图4所示。

3)Observing Transformer。生成的描述d用于observe分支的输入字符串:soc=[CLS]+d+q+[SEP]+ac+[SEP],每个soc被馈入observing Transformer以获得yoc,该yoc被转发到单个输出线性层以计算observe分数:aoc=woT·yoc+bo

  1. Recall分支。recall分支效仿人类行为,首先识别视频,然后获取其关于故事情节的知识。

    1)Knowledge Acquisition。之前的工作是使用的特定的人为标注的外部知识,作者使用的是公开可用的资源,使用网上的情节概括建立了一个knowledge base(KB)。给定一个视频场景,首先通过视频检索确定它是属于哪个视频故事里面。帧由预训练的ResNet50的倒数第二层输出来表示。计算视频场景中的每个帧和数据集中的所有帧之间的余弦相似度,获取帧最相似的视频的标识,用来在KB中查询以获得该情节的文档p。这样,ROLL使用弱监督的方式来获取关于视频的外部知识:

    (1)问题和外部知识库在生成时并没有以任何方式配对;

    (2)模型不知道KB中是否有对回答问题有帮助的对应文本;

    (3)该模型没有直接使用ground-truth情节标签进行训练;

    (4)模型没有使用ground-truth的文本定位进行训练。

    2)Recalling Transformer。文档p传给Recalling Transformer以获得针对每个候选答案的recall score。

    由于文档数量超过了Transformer可接受的最大单词数量,采用滑动窗口的方法将p分割成多个重叠的片段。要生成Kj个分段(j = 1, · · · ,),滑动长度为Wl的窗口,步长为r,获得Ns个分段,是文档p中词的数量。为了批处理多个样本,统一使用相同的分段数量Nsmax。如果Ns>NsMAX,则为零填充,如果Ns<NsMAX。作者将情节分段与问题和候选答案一起编码为多个输入字符串:Sujc=[CLS]+q+[SEP]+ac+kj+[SEP]。每个sujc被馈送到召回Transformer以获得yujc,该yujc被转发输入到单个输出线性层中,以计算答案段对的分数。最后取最大其得分作为每个候选答案的回召得分。

  2. Final Prediction。为了输出最终的预测分数,该模型将三个分支的输出串联成分数向量aC=[arc,aoc,auc],该向量输入到单层分类器中。模态加权机制。多模态训练常常遭受信息损失,降低了单模态模型的性能。为了避免三个分支在滚动时丢失信息,作者使用了模态加权(MW)机制。首先,作者通过对每个Transformer进行独立训练来确保它们学习独立的表征。采用多类交叉熵损失进行计算。之后Transformer被冻结,三个分支一起微调。为了保证多模态信息不丢失,将模型训练成一个多任务问题,该问题具有 βro + βu + βw = 1。

实验

Datasets:KnowIT VQA和TVQA+。

KnowIT VQA:目前唯一的knowledge-based video story question answering数据集,包含生活大爆炸207集共24,282个问题。

TVQA+:包含29,383问题,每个问题5个候选答案。

实验结果

在KnowIT VQA上的结果:

1、整体的准确率ROLL比ROCK高了6.3%。

2、在视觉表示上,提出的视频描述包含更多的语义信息,ROLL比ROCK高了6.4%,说明作者的无监督视频描述是目前最好的表示方法。

3、在都使用人工标注的外部知识的时候,ROLL-human还是比ROCK高了5.4%,证明性能提升来自提出的视频表示方法的贡献。

4、在knowledge-based的样本上,基于情节概括的方法比任务特定的人工标注高了6.7%。这表明在Recall分支提出的滑动窗口机制成功从长文档中提取到了相关信息作为外部知识。

5、和master人类表现相比,ROLL落后18%的精度。但接近新手的精度。可以看到还有很大的提升空间。

在TVQA+上的结果:

为了展示ROLL在不需要外部知识下的泛化性能,额外的将其在TVQA+上进行评估。

1、去掉了recall branch,只保留了read和observe branch

2、将ROLL只和那些使用答案标签作为训练的唯一监督的模型作对比。

消融研究


展示了使用Read、Observe、Recall三个分支组合时,对正确率的贡献。


table5是融合方法之间的比较。


图5是 βw的值对正确率的影响。

小结

设计了一个基于知识的视频故事问答模型ROLL,该模型涉及电影理解的三个关键方面:对话理解、场景推理和故事情节回顾。在ROLL中,每一个任务都负责通过处理场景对话,产生无监督的视频场景描述,以及以弱监督的方式获取外部知识来提取丰富多样的信息。为了正确回答给定的问题,每个启发认知任务产生的信息通过Transformer编码并通过模态加权机制融合,以平衡来自不同来源的信息。详尽的评估证明了作者的方法的有效性,该方法在两个具有挑战性的视频问答数据集:KnowIT VQA和TVQA+上取得了一个新的最先进的性能。


转载:https://blog.csdn.net/smile909/article/details/116462584
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场