CVPR 2020 Character Matters: Video Story Understanding with Character-Aware Relations

动机

CVPR 2020 Character Matters: Video Story Understanding with Character-Aware Relations

  1. 与短视频和GIF不同,视频故事包含清晰的情节和主要人物列表。如果没有识别出人物和角色名字之间的联系,一个模型就无法获得对情节的真正理解。
  2. 视频故事问答(VSQA)提供了一种有效的评估模型更高层次理解能力的方法。
  3. 然而,目前的VSQA方法只是从场景中提取一般的视觉特征。通过这种方法,它们仍然倾向于只学习表面上的相关性。
  4. 视频问答的任务在最近的许多研究中得到了探索。然而,这些方法仅仅是利用预训练好的CNN从视频帧或视频帧的一部分中提取视觉特征,而忽略了视频场景内部的角色特征,使得其模型缺乏对场景的深度理解能力。
  5. 角色名称,视觉目标,以及它们之间的关系都是回答问题的必要因素(如图1)。作者需要一个更好的框架,能够挖掘关于角色身份及其关系的详细视觉线索。
  6. 作者感兴趣的是如何利用关系不仅用于图像,而且还用于基于角色的关系表示的视频理解,就作者所知,这方面还没有得到充分的探索。
  7. 角色命名的目标是自动识别电视节目或电影中的角色。以往的方法倾向于基于提取的人脸轨迹来训练人脸分配模型。在本工作中,作者在一个多任务的方案中训练角色命名和问题处理模块。作者的方法不需要对人脸进行任何显式标注。作者只依靠含有说话人姓名的字幕的弱监督,利用字幕中出现的人脸和姓名之间的共现分布。
方法
简介

针对上述问题,为了真正理解谁对谁做了什么,作者构建了一个以角色为中心的VSQA框架,并将这些特征与推理能力结合起来,构建了一个角色感知推理网络(CA-RN)。作者的框架由两个主要部分组成。第一部分旨在建立一个场景表示来理解角色和目标之间的关系,从而推断出正在发生的事情。通过视觉关系,作者捕捉到视觉语义的两个层次:实体级和关系级。在实体层次上,作者通过预训练好的目标检测器和基于多实例共现匹配的角色识别来检测角色、目标及其对应关系。在关系层,在每一帧内重新认识实体之间的关系,其中用预测的角色名替换指代人类的词。第二部分,将多模态信息(包括两级场景表示和字幕)注入到基于Transformer的CA-RN网络中,作为推理模块。

作者在一个大型视频故事数据集TVQA中的六个不同的电视节目上训练和测试了作者的模型。该数据集是VSQA迄今为止最大的,也是唯一公开可用的数据集。在每个视频片段中,都有相应的字幕和几道选择题。作者框架的目标是正确预测这些问题的正确答案。

框架

CVPR 2020 Character Matters: Video Story Understanding with Character-Aware Relations
CA-RN:对于视频中的每一帧,首先检测角色、目标和视觉关系。然后用预测的角色名替换视觉关系中的指代人类的词。普通单词和角色名采用两种不同的嵌入方式。最后,将问题、答案选项、字幕和视频语义输入到基于Transformer的多模态推理结构中进行答案预测。

模型

CA-RN的目标是利用视频中的人脸和字幕中的人名的共现,不断地精炼角色感知关系的检测,并将后者用于改进视频故事理解。如图2所示,作者的视频故事理解框架可以以端到端的方式进行训练,由两个主要模块组成,其中一个模块预测检测到的人脸边界框,并通过匹配边界框的位置来将角色名称纳入检测到的关系中。结果,从每一帧中提取出多种形式的视觉语义,并将其组合在一起,作为对角色所处场景的理解。另一个模块是一个基于Transformer的推理流水线,它接收输入的问题、回答操作和不同的模态,并输出具有最高softmax分数的预测答案。

具体包括:

  1. 角色感知帧理解。

    1)人脸检测与特征提取。作者利用最先进的人脸检测器在每个帧中定位人脸,并使用LightCNN提取其256维视觉特征f∈ R256,考虑其在一般人脸识别中的有效性,即识别同一个人的不同人脸。这是一个理想的特征,因为作者需要区分不同的人的脸,同时忽略给定的人的各种外观中的差异。

    2)弱监督角色识别。首先检测所有角色的人脸边界框。提取的人脸特征通过全连接前馈层和Softmax进行预测。将字幕中的角色名广播为与预测的角色名分布序列长度相同的分布序列后,利用一个权重KL散度损失进行多实例共现匹配。
    CVPR 2020 Character Matters: Video Story Understanding with Character-Aware Relations
    为了识别没有显式人脸名称标注的角色,作者首先确定电视剧中主要角色的数量k。配角在这里被归为一个不知名的类别,因为他们对主要情节线的影响较小。假设一个视频剪辑中有n个检测到的人脸,具有特征F={f1, … , fn}。作者首先利用一个由几个完全连接前馈层和softmax以获得角色列表中所有名称的置信度分布:
    CVPR 2020 Character Matters: Video Story Understanding with Character-Aware Relations
    其中W1、W2、b1、b2是全连通层的权重和偏置,并且pi是角色列表中的所有名称的置信度分布。通过对所有检测到的人脸都计算置信度分布,作者可以构造一个预测的角色名分布序列:P={p1, p2, … , pn。如图3所示,字幕中的说话人姓名与视频中的角色人脸保持多实例共现。受此启发,作者在每帧中复制当前说话人姓名,使其与检测到的人脸具有相同的number,以作为弱监督。注意,如果字幕中的说话人是UNKNAME,帧将不会有广播操作。基础角色名分布可以由G={gLoc(1), gLoc(2), … , gLoc(n)表示,其中定位函数Loc()映射人脸边界框ID到帧ID,并且gl表示帧l的基于独热的名称分布。然后,通过预测角色名分布与背景角色名分布之间的一个正则化Kullback-Leibler散度来进行多实例共现匹配:
    CVPR 2020 Character Matters: Video Story Understanding with Character-Aware Relations
    其中Fl是帧l中的人脸集。这种损失在精神上类似于多实例学习。有了这一点,模型学习将说话人名字分配给相应的人脸,这将使损失最小化。

    3)常规视觉目标上下文。作者使用规则目标和属性作为每个帧的另一种形式的视觉语义。具体而言,作者应用在Visual Genome上训练的Faster-RCNN来检测所有目标及其属性。目标边界框被丢弃,因为作者将目标定位于框架中的相关语义信息。

    4)将角色融入视觉语义。一旦作者定位和识别了角色的人脸和名字,以及常规目标,作者将在给定帧中检测到的每个角色名附加到在同一帧中检测到的每个目标,以增强其视觉语义。作者发现,这个简单的策略工作得非常好,这是因为角色名是anchors,允许局部化和分离语义信息。例如,没有附加名称的视觉目标是相当普遍的,如“food和wine glass”,而“food+Leonard”和“wine glass+Penny”允许更好地区分来自不同帧的目标,并将它们与相关人联系起来,从而提供场景中包含的内容的更清晰的画面。

  2. 角色感知关系检测。用于提取场景中涉及主要角色的所有关系。作者将此任务分解为两个步骤:1)检测关系以建立场景图;2)用特定的角色替换关系中的人类的检测。

    1)一般关系检测。关系检测模块目的是检测视频中所有相关目标并识别它们的位置。作者使用了《Largescale visual relationship understanding》的方法。以检测每个帧中的关系。具体来说,作者在包含150个目标和50个谓词的VG200数据集上训练模型,并在给定视频的所有帧上应用这个模型。结果是一组每帧的S、P、O三元组,其中S、P、O分别代表主语、主语、宾语。作者只保留S,P,O三元组,而丢弃主语/宾语框,因为1)它们的空间位置对场景语义的影响很小;2)VG200谓词之间已经存在许多空间关系,如“above”和“under”。一旦模型尝试预测这些关系,作者立即知道主语和宾语之间的相对空间关系,作者发现这些关系足以描述场景。作者将当前帧中的所有三元组拼接成一个Nr×3的序列(其中Nr是S,P,O三元组的个数),并将其提供给以下模块。

    2)角色名称替换。鉴于场景中的所有人脸和场景,作者将重点放在与作为主语或宾语的指称人类的词语(如“女人”或“男人”)之间的关系上。对于每个人的边界框,作者选择与它重叠最多的人脸框来确定人的人脸。一旦对帧中的所有人类框进行了匹配,作者就用先前识别的特征名称替换那些关系中的人类指代词。这使关系更加具体,因为作者确切地知道在每一个关系中谁参与了。图1展示出了从HIMYM的帧中检测到的关系的示例,其中用特定角色名替换指代人类的单词。

  3. 角色感知推理网络(CA-RN)。如图2所示,CA-RN模型以端到端的方式工作,并基于一个多任务损失函数进行更新。它接受问题,答案选项,字幕,人脸边界框和视觉语义,然后输出每个答案选项的概率。在Intra-Inter Attention流机制的激励下,提出了一种对于CA-RN的基于Transformer的多模态融合方法。

    1)编码器。作者首先使用单词和名称嵌入,嵌入输入问题、答案选项以及所有模态(字幕和视觉语义)I={q, a0-4, s, vo,r}。作者将这些嵌入的集合记为:E={eq, ea, es, ev}。然后它们被馈入一个两层的Transformer编码器,该编码器具有四个头的self-attention,以捕获长期依赖关系,以及一个bottle-neck前馈网络,以获得编码的隐藏表示:
    CVPR 2020 Character Matters: Video Story Understanding with Character-Aware Relations
    其中j∈{q, a, s, v},FFN是一个包含两个FC层的前馈模块,两个FC层之间是ReLU,这里的Attention函数定义为:
    CVPR 2020 Character Matters: Video Story Understanding with Character-Aware Relations
    其中√dh是一个缩放因子,用于保持数量级顺序中的标量,dh是每个头部的隐藏维度。

    2)多模态解码器。一旦所有输入都被编码器编码,作者利用顺序的co-attention解码器来融合它们的信息,并生成一个更新的问题和答案选项的表示。为了简单起见,作者将视觉关系hr和字幕hs作为两种输入模式。下面的框架可以很容易地扩展到更多的输入模式。如图2所示,视觉关系、问题和答案选项首先被馈送到两层四头co-attention解码器中,以获取上下文感知的QA表示。然后,字幕和更新的QA表示作为另一个具有相同结构的co-attention解码器的输入。co-attention解码器可以表示为:
    CVPR 2020 Character Matters: Video Story Understanding with Character-Aware Relations

    其中hc→i是上下文感知的QA表示,hc、hi分别表示上下文和输入的QA隐藏表示。然后,对不同的问答对进行上下文感知的QA表示,并由self-attention解码器进行处理,得到用于softmax计算的最终表示:
    CVPR 2020 Character Matters: Video Story Understanding with Character-Aware Relations
    最后,作者利用最高置信度分数y=argmaxa∈{a0,…,a4}pa来预测答案y。

    3)多任务损失函数。命名模块和多模态推理模块中的前馈网络通过以下多任务损失函数以端到端的方式联合训练:
    CVPR 2020 Character Matters: Video Story Understanding with Character-Aware Relations

    它结合了用于问答的交叉熵损失函数和用于多实例共现匹配的正则化Kullback-Leibler散度损失函数,通过一个超参数连接在一起。

贡献
  1. 作者提出了一种端到端的多任务框架来挖掘人脸-说话人的联想,同时进行多模态推理。它通过共生匹配实现弱监督人脸命名,并通过Transformer结构支持高层推理。

  2. 作者提出利用角色感知关系作为场景视觉知识的更强表示。就作者所知,这是首次尝试将这样的策略应用到视频问答任务中。

  3. 在六个电视节目上的实验证实,作者的方法在提供明确解释的同时,优于几个强有力的基线,特别是对于那些需要深入理解视频场景的问题。

实验
数据集

TVQA数据集是最大的MVQA基准数据集。TVQA数据集包含6个长时间电视节目的短视频片段的人类标注多选问答对:《生活大爆炸》、《我如何遇见你的母亲》、《老友记》、《实习医生格蕾》、《房子》、《城堡》。电视问答中的问题格式如下:“[what/how/where/why/…] __ [when/before/after] __?“。问题的第二部分定位视频片段中的相关时刻,第一部分提出关于定位时刻的问题。每个问题包含5个答案候选人,其中只有一个是正确的。TVQA共有152.5K个QA对和21793个视频片段,其中训练集当中有122,039个问题-答案对,17,435个视频片段;验证集当中有15,252个问题-答案对和2179个视频片段;测试集当中有7623个问题-答案对和1089视频片段。

实验细节
  1. 主要角色列表。作者把重点放在主要角色的人脸命名上,因为他们与电视节目的故事情节高度相关。每个电视节目的角色列表的数字k由以下三个步骤确定:

    1)统计字幕中所有说话人的出现次数;

    2)选择出现次数超过500次的所有名字作为主要角色候选;

    3)过滤掉不到1/10的出现率最高的说话人的名字;

    4)将额外的UNKNAME类分配给不在主要角色列表中的所有其他角色名称。

    注意,作者不依赖于主要角色是谁的外部信息。

  2. 文本和名称嵌入。在将场景解析成角色感知关系后,作者有四种类型的特征来转化为文本嵌入:字幕,视觉语义、问题和候选答案。注意,一旦视觉语义被提取出来,作者不需要任何帧上的视觉特征。由于角色名称与其字面意义不同(例如,角色Lily与常规单词Lily不同),作者使用了两种独立的嵌入。对于普通单词,作者依靠300维GloVe词向量,对tokenization后的词进行嵌入。对于角色名,作者从头开始训练和更新他们的名字嵌入。在词汇量不足的情况下,作者使用单词的平均角色向量。

    模型训练。作者的模型是在Tesla V100 GPU上用Adam随机优化进行训练的。将多任务损失函数中的λ简单地设置为1。在训练过程中,作者将批处理大小设置为64。学习率和优化器设置同TVQA。

评估

作者遵循官方指南,使用top-1精度作为唯一的度量标准,作者采用两种类型的设置:带时间戳(W/ts)和不带时间戳(W/O ts),其中时间戳指的是与给定问题最相关的视频片段的区间上的GT标注。前一种设置假设作者在训练和测试中都有时间戳,而在后一种情况下则不提供这样的信息。

实验结果

作者考虑了Nearest Neighbor Search、Multi-Stream、Temporal Convolution、PAMN、ES-MTL、Human Performance基线做性能比较。如表1和表2所示,作者的方法在有时间戳的Val/测试集上的性能比以前最好的方法高1.90/2.01%(绝对),在没有时间戳的验证/测试集上的性能比以前最好的方法高2.68/1.72%(绝对)。考虑到验证问题和测试问题分别为15,253和7623,两组的最大收益分别为15,253 ×2.68%=409和7,623×2.01%=153。这有利于建立角色感知推理网络。作者认为性能提升的原因有以下三个:1)与传统的RNN结构相比,Transformer结构能够捕获不同模态内和模态之间更长的语义,特别是在有长字幕的情况下;2)多任务框架能够细化多模态推理模型,同时挖掘人脸和姓名之间的关联,使两个任务相互促进;3)角色感知关系提供了比全局CNN特征更详细的信息,能够更深入地理解场景。
CVPR 2020 Character Matters: Video Story Understanding with Character-Aware Relations

消融研究

为了进一步的分析,作者在表3中对作者提出的模型进行了有和无时间戳的消融分析。作者将三种形式的视觉语义结合在一起:目标(Objs)、关系(Rels)和角色名(nm)。作者观察到使用字幕的方法只给出了66.23%的相当好的结果,但仍然明显不如使用视觉效果的方法。当添加对象(“sub+objs”)时,accuracy提高了2.62%(绝对),而添加名称(“sub+objs nm”)则会产生额外的增益(绝对0.6%)。当以角色为中心的关系(“子+对象NM+对象NM”)被整合时,进一步提高了(0.92%)。这证明了作者的观点,即角色命名是更好地理解视频故事的一个有利因素。作者还为进一步的设置提供结果,在这些设置中,作者删除了一种或两种形式的视觉语义,如“sub+rels”和“Sub+Rels NM”。这些结果比使用“objs”而不是“rels”的对应物稍差,对此作者发现两个主要原因:1)目标通常比关系更多样,因为通常只有一小部分目标是相关的;2)目标检测器通常比关系检测器更精确,这使得“objs”语义比“rels”更可靠。
CVPR 2020 Character Matters: Video Story Understanding with Character-Aware Relations

定性分析

在图4中,作者给出了基于所有形式的可视语义的模型结果的4个示例。在右上方的案例中,问题要求深入理解Robin坐在Ted 身边拿着beer bottle的场景。当问题包含多个关系时,角色感知关系特别有用,比如右下角的例子,Rachel坐在couch上,同时拿着glass,需要模型学习这种关系组合来回答问题。
CVPR 2020 Character Matters: Video Story Understanding with Character-Aware Relations

小结

作者提出了一个新的模型,该模型不断地改进了角色感知关系。该模型特别考虑了视频故事中的角色,以及连接不同角色和目标的关系。基于这些信号,作者的框架通过多实例共现匹配实现弱监督人脸命名,并支持利用Transformer结构进行高层推理。作者在TVQA数据集中的六个不同的电视节目上训练和测试作者的模型,作者在TVQA数据集上通过大量的实验研究验证了作者提出的方法。

上一篇:java基础-day16


下一篇:5.20 Day16