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

摘要

为了理解电影,人们常常根据特定场景的对话和动作来进行推理,并把它们和已看到的整个故事线相联系。受这个行为的启发,我们设计了ROLL(Read, Observe, and Recall,)模型,利用电影理解的三个关键方面:1、对话理解 2、场景推理 3、故事线回忆。在ROLL模型里,每个任务负责提取丰富多样的信息,通过:1、处理场景对话 2、生成无监督视频场景描述 3、以弱监督的方式获取外部知识。 每个激发-认知任务产生的信息通过Transformers编码,最终由modality weighting mechanism在不同的信息源中做平衡,来融合。ROLL在两个数据集KnowIT VQA and TVQA+上实现了SoTA。

problems:

1、随着视频故事的展开,情节的细节往往通过多个场景向观众展开,有时彼此相隔甚远。要完全理解视频故事,不仅要考虑当前场景发生的,还要考虑从之前场景获取的知识。

2、有些模型局限于获取上下文信息,但是几乎未抓取场景层面的细节;另一些模型提取特定场景信息,但是没有关注整个视频故事线。

3、当前提出的同时利用上下文信息和特定场景信息的模型的的缺点是,其上下文信息来源于特定场景的人为注释。这样不仅获取代价大,而且很难泛化到其他领域。

Contributions:

1、提出了一种新的无监督视频表示方法,基于视频场景图生成的视频描述。

2、我们结合了来自视频场景的具体细节和弱监督的外部知识,以加深对视频故事的理解。

3、我们结合了一个模态加权机制来融合来自不同模态的数据而不造成信息损失

FrameWork:

1、Read Branch

这个分支的输入流如下:

subs代表字幕,q代表问题,a^{c}代表输入的候选答案(c=1,……,N_{ca}),每一个输入流S_{r}^{c}输入到Reading Transformer来获得y_{r}^{c},然后将其输入到一个有w_{r}b_{r}简单的输出线性层,对于每个候选答案,计算read score:

2、Observe Branch

observe branch将视觉场景的语义总结为视频描述。我们提出首先创建一个视频场景图,来生成一个无监督的视频描述。然后将该描述输入到Observing Transformer来为每个候选答案预测一个observe score。

2.1Video Scene Graph Generation

上图展示了视频场景图的生成流程。

我们使用4个模块来检测和场景最相关的细节:1、人物识别  2、地点分类 3、目标关系检测 4、动作识别

然后我们通过在检测到的元素之间建立联系来生成视频场景图。

2.1.1人物识别

该模块使用演员阵容中的图片来训练人脸识别的分类模型,然后用他来识别场景中的人物。我们下载最常见的(基于IMDb)N_{C_{T}}个角色的10张图片。

使用FaceNet提取128维脸部特征,然后训练一个kNN的分类器。

在测试的时候,kNN对于预测的角色返回一个分数。如果分数低于阈值,我们就把它标为未知类。

最后我们使用一个时空的过滤器,来过滤掉错误预测和重复预测的角色。

2.1.2位置分类

位置分类模块用来检测场景的定位。我们使用弱监督的方式微调了一个使用ResNet50作为主干网的Places365网络。为了获得地点的注释,我们使用来自特定网站的视频转录。我们提取在训练集脚本中出现至少10次的地点,剩下的地点归类到未知。训练是基于帧层次的,每一个帧都看作一张独立的图片。预测的时候,我们累加每个帧前五个预测分类的得分,然后输入得分最高的地点。

2.1.3目标关系检测

这个模块检测场景中的对象和他们之间的关系。我们使用的是在VG200数据集上预训练的large-scale VRU(visual relationship understanding)(包含150个对象和50个关系类)。对于每个帧,VRU返回subject-relation-object三元组的列表,它们的边界框和预测分数。通过寻找边界框之间的重叠,我们将分配给人物类的对象和主题替换为其对应的人物名称。我们只将三元组分配给已知的角色,并且过滤掉重复的。在忽略掉边界框和分数之后,我们获得N_{T}个三元组的列表。T = {Ti|i = 1, · · · ,NT} with Ti = (Si, Ri, Oi) ,Si,Ri,Oi分别为主题,关系,对象。

2.1.4动作识别

动作识别模块检测视频场景中的主要动作。我们使用在Charades数据集(包含157个动作类)上预训练的LFB(Long-Term Feature Banks),LFB在整个视频场景中提取信息,提高了使用2-3秒短视频的性能。我们将整个场景输入网络,然后获得一个预测的动作作为结果:A。

2.1.5图生成

视频场景图G = (V, E),通过使用节点V和边E的集合来便是场景的视觉内容的语义。

我们考虑使用下列类型的节点:

人物节点:V_{c} ⊆ V,代表场景中的人物,如果C不包含任何未知的人物,则V_{c}=C。否则我们移除未知的人物类{UNK_{c}},则V_{c} =C-{UNK_{c}}。

地点节点:V_{P} ⊆ V,代表场景发生的地点,如果P \neq unknown,则V_{p} ={P};否则V_{p} =∅.

对象节点:V_{o} ⊆ V,代表场景中的对象,从三元组中非人物的subjects和objects中获得:V_{o}  = Z − (Z ∩ C) with Z = S ∪ O

关系节点:V_{R} ⊆ V,代表三元组中subjects和objects的关系。

动作节点:V_{A} ⊆ V, 代表场景中的动作:V_{A} = {A}并且|V_{A}|=1。

我们使用6种类型的边:

e_{P,A} = (V_{P}, V_{A}) ∈ E,表示地点节点V_{P} 和动作节点V_{A} 之间的边

e_{A,Cj}= (V_{A}, V_{Cj}) ∈ E 表示动作节点V_{A} 和人物节点V_{Cj}之间的边

e_{Ci,Rj}= (V_{Ci}, V_{Rj} ) ∈ E表示人物节点V_{Ci}和关系节点V_{Rj},当在三元组(Sk, Rk, Ok)中V_{Ci}=Sk并且V_{Rj}=Rk。

e_{Ri,Cj}=(V_{Ri},V_{Cj},) ∈ E 表示关系节点V_{Ri}和人物节点V_{Cj},当在三元组(Sk, Rk, Ok)中V_{Ri}=Rk并且V_{Cj}=Ok。

e_{Oi,Rj}=(V_{Oi}, V_{Rj} ) ∈ E表示对象节点V_{Oi}和关系节点V_{Rj},当在三元组(Sk, Rk, Ok)中V_{Oi}=Sk并且V_{Rj}=Rk。

e_{Ri,Oj}=(V_{Ri},V_{Oj}) ∈ E 表示关系节点V_{Ri}和对象节点V_{Oi},当在三元组(Sk, Rk, Ok)中V_{Ri}=Rk并且V_{Oi}=Ok。

2.2Scene Description Generation

场景描述根据上表,使用无监督的方式从视频场景图中生成。

对于表中的左边每个条件为真时,都会生成一个简单句。最后的场景描述是所有简单句的连接。下图是一个生成场景描述的例子:

2.3Observing Transformer

生成的描述d用来作为observe branch的输入。

每个S_{o}^{c}传进Observing Transformer,获得y_{o}^{c}。最后将y_{o}^{c}传到线性层获得observe score,\alpha _{o}^{c}

3、Recall Branch

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

3.1Knowledge Acquisition

之前的工作是使用的特定的人为标注的外部知识,我们不一样。我们使用的是公开可用的资源,使用网上的情节概括建立了一个knowledge base(KB)。给定一个视频场景,我们首先通过视频检索确定它是属于哪个视频故事里面。帧由预训练的ResNet50的倒数第二层输出来表示。我们计算视频场景中的每个帧和数据集中的所有帧之间的余弦相似度,获取帧最相似的视频的标识,用来在KB中查询以获得该情节的文档p。这样,ROLL使用弱监督的方式来获取关于视频的外部知识:(1)问题和外部知识库在生成时并没有以任何方式配对;(2)模型不知道KB中是否有对回答问题有帮助的对应文本(3)该模型没有直接使用ground-truth情节标签进行训练(4)模型没有使用ground-truth的文本定位进行训练。

3.2Recalling Transformer

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

由于文档数量超过了Transformer可接受的最大单词数量,我们采用滑动窗口的方法将p分割成多个重叠的片段。要产生K_{j}个分段(j = 1, · · · ,N_{sMAX}),我们滑动长度为W_{l}的窗口,步长为r,获得个分段,L_{d}是文档p中词的数量。为了批处理多个样本,我们统一使用相同的分段数量N_{sMAX}

我们将分段K_{j},question,candidate answers编码成多个输入流:

每个s_{uj}^{c}传给Recalling Transformer,获得y_{uj}^{c},再将y_{uj}^{c}传入一个线性输出层得到a_{uj}^{c}

最后对于每个candidate answers的得分a_{u^{c}}为:

4、Final Prediction

模型将三个分支的输出连接成一个分数向量a^{c}=[a_{r}^{c}a_{o}^{c}a_{ll}^{c}],预测答案\widehat{a}为:

Modality Weighting Mechanism:多模态训练常常遭遇信息丢失,降低了其相对于单一模态的性能。在ROLL模型中融合三个分支时,为了避免信息丢失,我们使用了modality weighting (MW) mechanism。

首先,我们通过独立训练Transformer来保证每个Transformer学习到独立的表示。多分类交叉熵损失计算公式如下:

c^{*}是正确的答案,δ = [δ1, · · · , δNca ] 是候选答案的得分向量。

接下来,冻结Transformer,三个分支一起微调。为了保证多模态信息不丢失,模型作为一个多任务问题来训练:βr + βo + βll + βω = 1。

Evaluation

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 branch提出的滑动窗口机制成功从长文档中提取到了相关信息作为外部知识。

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

在TVQA+上的结果:

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

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

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

消融实验:

展示了使用read observe recall三个分支组合时,对正确率的贡献。

融合方法:

table5是融合方法之间的比较,Fig5是\beta _{w}的值对正确率的影响。

结论:

1、为了提取视觉信息,使用依赖于视觉场景图的无监督方式,来生成视觉描述。这种新的视觉表示方法带来了在两个数据集上很大的性能提升。

2、ROLL使用没有人为标注的额外信息,ROLL成功地将场景中的具体细节与情节的一般信息融合在一起,反而带来了性能提升。

3、ROLL使用了modality weighting mechanism:避免了在融合多分支输出时的信息丢失。

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值