MDMMT Multidomain Multimodal Transformer for Video
在MSRVTT和LSMDC基准测试中,我们提出了一个新的文本视频检索任务,我们的模型大大优于以前的所有解决方案。此外,在两个数据集上获得了最先进的结果。这种多域的推广是通过不同视频标题数据集的正确组合来实现的。我们表明,在不同数据集上的训练可以提高彼此的测试结果。此外,我们检查了许多流行数据集之间的交叉点,发现MSRVTT在测试和训练部分之间有显著的重叠,并且在 ActivityNet 上也观察到同样的情况。
note
- [25] 尝试解决两个文本很相似,但是目标却需要让它们分开的问题。
这篇文章就是有两个方面:
- 将几个数据集合并,训练出了一个模型超过了所有单独数据集上 SOTA 模型。
- 提出一种清洗数据集的方法,找到数据集训练和测试集的重合部分,将其从训练集中去除,防止过拟合。
1. Introduction
视频是一种非常流行的数据格式,每分钟500小时的视频被上传到你的管上。许多个人手机都有Gb节的视频。由于视频格式每年越来越流行,现代搜索方法的重要性也在增加。
在本工作中,我们提出了我们对文本到视频检索任务的研究。 在此任务系统中,应该为给定的文本查询返回来自图库的最相关视频段。 查询是对我们想在视频中找到的内容的文本描述。 查询可以描述对象、操作、声音、…和它们之间的关系
有两个主要的方向,它们允许计算文本搜索查询和视频段之间的相关性。第一个方向是单流接近[32],其中查询和视频一起给给一个网络,然后从处理开始开始融合。该方法的示意图如图所示.
图1:两种类型的融合
这种类型的方法可以从处理开始就访问所有输入数据,并且可以对数据作出强有力的判断。 但是这些方法有一个显著的缺点,因为它是不可伸缩的:搜索系统的每个新查询都应该计算这个查询和画廊中每个视频段的全部前向传递。
另一个方向是两个流神经网络[24],[8],其中一个文本查询和一个视频由两个不同的神经网络处理。因此,网络在相同的嵌入空间中产生嵌入,在语义上接近的文本查询和视频段将被放置在旁边。示意图所示。1b.
而 two-stream 方法是可以伸缩的。
为了建立一个强大的视频检索解决方案,必须向模型展示现实生活中的许多场景、动作和对象。有很多视频数据集,但没有一个涵盖现实生活中的很大一部分。解决这个问题的第一步之一是制定将不同的现有数据集组合到单个大型训练数据库中的规则。
文本到视频检索是一个现代方向,其中最初的作品之一在2016年[33]发表。视频检索任务最普遍的解决方案之一是多模态 transformer [8]架构,它使用BERT[4]主干进行视频网络。它允许以一种自然的方式处理多模态数据源内的时间依赖关系。
最流行的文本到视频检索数据集是MSRVTT[39]、ActivityNet[17]和LSMDC[29]。 许多研究人员主要在这三个数据集上测试他们的解决方案。
我们的工作如下:
- 我们在MSRVTT和LSMDC基准上提出了一个新的(sota)结果;
- 提出了一个模型,在三个不同的基准上显示了良好的结果,而不需要 finetune:MSRVTT(SotA)、LSMDC(SotA)和ActivityNet;
- 我们提出了一种实用的方法,以帮助我们找到训练和所使用的数据集的测试部分之间的重叠。
2. Related Work
2.1 Datasets
msrvtt
官方划分数据集:这种分割有两个重要的属性:1.没有从同一视频中裁剪的两个视频段,因为第一段放置在训练部分,第二段放置在测试部分;2.没有两个视频段,从同一查询中检索,因为第一段放置在训练部分,第二段放置在测试部分。
另外两个分裂称为1k-A (有时称为jsfusion)和1k-B(有时称为miech)。 他们都有不同的1k视频进行测试。 他们是通过随机抽样1k视频从原始测试部分(完全分裂)。 1k-A训练部分由原始训练分割和测试部分的其余视频组成,因此测试部分有1k视频,训练部分有9k视频。 1k-B有测试部分的1k视频和训练的6.5k视频。 此外,两个拆分每个段只使用一个标题(而不是20个标题)。
不幸的是,1k-A和1k-B混合了训练和测试部件。 这导致了完全分裂所满足的属性1.和2的违反。
另一个问题是,所有这些分裂都有测试和训练部分之间的重叠,详见C.2。 为了严格起见,我们删除了MSRVTT完全分裂的测试部分和训练部分之间的重叠。 我们称这个分裂的MSRVTT完全干净,并将其称为Mc。 值得一提的是,我们不修改测试部分,我们只从训练部分删除一些视频。
这个数据集的视频片段是从电影中剪辑出来的,其中使用电影文本化的转录作为字幕。电影转录是对视频片段的音频描述,通过描述发生了什么,谁出现在这个时间,现在的背景等等来帮助盲人看电影。
在这项测试工作中,我们使用了LSMDC
ActivityNet数据集[17]由2万k视频和10万字幕组成,其中字幕覆盖了大多数视频的完整视频长度,相邻的字幕可能相交。这些注释是用亚马逊机械土耳其人制作的。
某些视频片段可能重叠的情况会使文本到视频检索测试出现问题。假设我们有两个视频字幕对(S1、C1)和(S2、C2),其中视频段S1与视频段S2有非空的重叠。现在假设对于查询C1,系统返回视频段S2。它是否存在错误?在这种情况下该怎么办?
许多之前的工作使用 ActivityNet 测试数据集段落检索模式。在这个模式下所有的同一视频片段的 caption 都被连接,这样整个视频应该通过这个 query 连接起来。这种模式有两个缺点。 第一种是段落检索不是一种经典的视频检索模式,它是另一项任务。 人们可以问:如果一个模型在段落检索中是好的,它会对视频检索有好处吗? 第二个缺点是查询会很长,视频段会很长(与经典的视频检索模式相比)。 这个问题需要扩大模型的输入。
另一种使用ActivityNet测试部分的方法是从每个视频中抽取一个随机段。 因此,我们将有没有交叉的视频段和字幕与通常的长度。 我们以这种方式使用ActivityNet测试部分。 我们从val1和val2部分获取所有视频,并从每个视频中采样单个随机段。 ActivityNet 上的所有结果都在此拆分上报告。
我们还使用了其他的数据集: NIST TRECVID Twitter vines [1], TGIF [18], MSVD [2], YouCook2 [43], Something-something V2 [10], Kinetics 700 [31], HowTo100M [23].
2.2 Prior Art
对比学习是训练视频检索模型的主要方法。让相关的视频和文本距离 -> 0, 不相关的距离 -> + ∞ +\infty +∞. [13]
当训练数据噪声较大时,可应用MILNCE损失[22]。假设我们知道一个视频 i 应该接近于一个(或一些)文本之一, t e x t i 1 , … , t e x t i k text_{i1},\dots, text_{ik} texti1,…,textik, 那么训练的第二个任务是使视频 i 和这些文本之间的距离和最小。
比如文本 text_i 和 text_j 很相似,那么最有的方法可能是最小化 (video_i, text_j) 之间的距离。文献[25] 展示了它们解决这个问题的方法。
只要输入的视频是 token(帧或视频片段)的时间序列,那么有效地聚合来自所有 token 的信息是很重要的。在以前的作品中,这种聚合的思想是借鉴自然语言处理的。在[25]中使用了聚合的卷积滤波器,在[8]中使用了转换编码器作为视频聚合器,在[26]中测试了许多不同的聚合函数。
我们认为最有前途的聚合方法是多模态 transformer (MMT)[8]。MMT 是双流解决方案。使用预训练网络提取视频的7个特征:motion, RGB, scene, face, OCR, speech, audio。
对于编码文本查询,编码者使用预训练的BERT模型,其中使用输出[CLS] token 。输出采用浅层网络(每个模态一个网络)进行后处理,提取模态相关信息,共产生7个特征向量。除了从文本查询中嵌入之外,还有七个权重表示查询描述了七种模式中的一种。例如,如果查询不代表声音,则应该产生音频模态的小权重。
最后的相似性评分是由七个加权点积的嵌入来完成的。
MMT 是通过 bi-directional max-margin ranking loss 实现的。
1
B
∑
i
=
1
B
∑
j
≠
i
[
max
(
0
,
s
i
j
−
s
i
i
+
m
)
+
max
(
0
,
s
j
i
−
s
i
i
+
m
)
]
\frac{1}{B} \sum_{i=1}^{B} \sum_{j \neq i}\left[\max \left(0, s_{i j}-s_{i i}+m\right)+\max \left(0, s_{j i}-s_{i i}+m\right)\right]
B1i=1∑Bj=i∑[max(0,sij−sii+m)+max(0,sji−sii+m)]
3. 方法
我们的工作主要是基于MMT的。我们使用相同的损失和类似的架构,但具有不同的超参数。在这项工作中,我们研究了以下问题:
- 哪一个最流行的预训练动作识别 expert 对于视频检索来说效果最好。见 3.1.
- 如何组合几个视频标题数据集,以训练一个强大的模型,而不专门为一个特定的数据集进行检索。见 3.2
- 在合并数据集时,如何寻找并且防止训练集和测试集的重合。
3.1 Motion Expert
MMT视频骨干不处理原始输入视频流,而是由一个或多个预先培训的专家处理输入视频流,每个专家在其中产生时间序列特征。 最重要的模式是运动:运动专家将几个视频帧作为一个输入单元进行处理,并提取段内动作和对象的信息。
我们可以说,运动模态是MMT的基础。如果运动专家不提取一些信息,那么MMT很有可能不知道视频流中的某些事件。这就是为什么改进运动专家非常重要。
我们考虑了几个最好的解决方案,从 Kinetics[15]基准,以及几个有前途的视频识别模型,并检查哪一个工作方式最好的运动专家。 我们在 4.2 节会介绍所有细节。
3.2 Dataset creation
MMT 训练的模型在一个数据集上表现很好,但是放在其他数据集上可能表现不好,见表 6.
前三行Mc,A,L报告了在单个域上训练,并在其他域上进行了测试的模型的质量。 斜体表示模型在训练过程中没有看到来自此域的数据。 在本表中使用唯一的运动模态(irCSN152。
另一种方法是创建一个同时适用于所有域的模型。我们用这种方式。
显然,以第一种方式训练的模型不能很好地与实际用户一起工作,因为当用户从一个小的训练数据库中写入类似于某些caption的搜索查询时,这种事件是非常罕见的。
这里的第二个缺点是每个视频检索训练数据集没有那么大,它导致模型在训练过程中看不到许多单词和实际生活情况的情况。 例如,MSRVTT总共只有9k视频和200k字幕用于训练,显然这还不足以训练一个神经网络,它将了解大多数现实生活中的情况、不同的项目和人。 为了解决这个问题,我们可以使用几个带有视频和caption的数据集并将其连接起来。
不同的数据集有不同的视频数量,每个视频的caption数量不同,一些数据集可能有长的caption,一些可能有简短的caption,人类作者使用不同的caption创建的规则,等等。由于这些因素,一些数据集可能包含更多的信息,并需要更长的训练时间,一些数据集可能包含更少的信息,并需要更短的训练时间。。 另一方面,如果我们对一个小数据集使用较长的训练时间,它可能导致过度拟合。一些已使用数据集的“信息大小”如图所示。
图2:球的半径表示数据集的“信息大小”。最大的球有数据更多的多样性。
如上图,如附图所示。2是用一个简单的算法制作的。我们采用了MMT的原始训练程序,并且对于一个给定的数据集,我们改变了在训练期间将显示给一个网络的示例的数量。我们将球的半径定义为之后性能饱和的训练例子的数量。增加训练时间并不能提供更好的模型)。
关键问题是:考虑不同信息大小,从几个数据集采样的正确方法是什么?
我们提出以下显而易见的规则:
- 如果数据集X大于Y,我们应该更经常地从X中采样,而不是从Y中采样;
- 在X和Y的结合上进行的训练比仅在X或Y上进行的训练需要更长的训练;
- 对X和Y的组合训练可能需要比X或Y更深的模型。
如果我们在结合X和Y之后在X上取得相同的结果,它仍然是好的,因为模型在Y上变得更好。规则123的恰当使用会改善特定训练集合的结果。
作者结合了这些数据集,把 msrvtt 的视频扩大了40倍。SomethingV2 单独列出是因为:1. 所有视频段都是人为创建的。2. 文本caption的结构比较有限。而其他的视频数据集都是从网络上爬取的,而且caption都是人工标注的具有丰富语义的。
表1:“零视频”列表示数据集中视频剪辑的数量,“数字对”列表示视频caption对的总数,“唯一caption”列表示数据集中唯一caption的数量。
表2:左列表示来自右列的数据集集合的缩写名称。
表3: 比较各个 video expert 的效果
3.3 Intersection
重要的是要仔细扩展训练数据库,不允许在测试部分已经存在的视频段的训练部分中添加。
为了找到测试部分和列车部分之间的交集,我们使用了两级过滤。 第一阶段是使用优管ID,如果它是可用的。 我们不应该允许在测试和训练部件同时使用从同一视频中采样的任何两个视频段。 在第二阶段,我们计算来自测试部分的每个视频与来自列车部分的每个视频之间的相似性评分,然后手动评估得分最高的对。 我们总共评估了100多对最相关的片段,见SEC C.1为详情。
我们发现 MSRVTT 1k-A,1k-B 和 train 部分有一定重叠。
我们估计 msrvtt 和 HowTo100M 有一定的重合(虽然并没有找到证据),我们的方法允许我们在没有找到确切重合的视频情况下,对重合的总数进行估计。参加 C.1.2
4. Experiments
4.1 Architecture
我们使用与原始MMT[8]完全相同的神经网络结构,我们的方法显著地基于它们的代码库。区别在于:1.文本BERT和视频BERT的 dopout 为0.2(原值0.1);2.视频网络越宽的 transformer 编码器效果更好,6层8头,运动音频设置9层8头(原始实现为4层4头)。
4.2 Stronger motion experts
由于MMT的输入数据是专家嵌入的,因此可能会出现一个明显的问题:如果使用更好的专家,我们会有更强的模型吗? 我们使用了 Kinetics 400 benchmark 的结构。
结果列在 Tab.3 中,使用的超参数和 [8] 一样。使用 msrvtt full clean 划分。
正如我们所看到的,通常更强的模型会提供更好的结果,但并不总是如此。参考 r(2+1) 152,这个网络展示了在动力学400基准测试上的最佳性能之一,但作为运动专家工作得很差。也许这个网络过于专门 Kinetics400,更浅的模型 r(2+1)d 34 它显示了更好的结果。
一个有趣的观察结果是,通过以无监督方式训练的网络可以取得最好的结果。
更多详细的 pretrained video expert 信息参见 Sec.A
4.3 Datasets combination
在本节中,我们展示了我们关于不同数据集组合的实验。 如今,视频字幕数据集还不足以捕捉所有现实生活中的情况,也有一些数据集可能是有偏见的。 不同数据集的组合可能有助于解决这一问题。
我们的实验表明,数据集的适当组合允许训练一个能够从所有使用的数据集捕获知识的单一模型。 这里重要的是,在大多数情况下,在数据集组合上训练的模型优于在单个数据集上训练的模型。
表5:这些数据集用于我们的列车过程。 “权重”列描述了从数据集中抽取示例的频率。 从具有权重w等于w的数据集获得示例的概率除以所有权重之和。
在实验中我们把所有的数据集组合起来。其中重要的事情是如何在训练中选取 minibatches. 在我们的实验中,首先采样一个数据集,然后我们均匀地采样一个视频片段,如果这个采样的视频片段有多个描述,我们均匀地采样一个描述。
数据集的权重是人工指定调节的,找到一个好的权重组合很重要。如果某个数据集的权重过大,将会倍过于看重,性能会降低。相反的情况下是选择了一个小的权重的情况下,这将导致网络不看到从该数据集所需数量的 examples.
每个纪元的示例数可以表示为每个数据集的归一化权重之和(表5的权重除以所有权重之和)的乘积为150K。如果从训练中删除了一些数据集,我们就会从这个和中删除相应的系数,所以得到的长度将是150K乘以一个小于1的值。
Tab6 总结了我们在数据集组合上的实验(有关更多详细信息,请参阅B节)。 这里的要点是,正确组合数据集会带来最佳解决方案。
4.4 Final result
Our two best solution uses three modalities: the audio, the motion and the RGB. To fuse modalities we use MMT architecture with 9 layers and 8 heads. As a feature extractor for the audio stream the vggish [12] network is used. For the video encoding we use CLIP ViT-B/32 (RGB modality) and irCSN152 (motion modality) pretrained on IG65M dataset. 预处理视频的网络细节在 SecA 中。
在 表8 中,我们报道了在 LSMDC 上的结果。比 SOTA 提升 8.6%。
正如我们在第二节中提到的 2.1我们不使用标准的ActivityNet段落检索测试协议。 相反,我们使用文本到视频检索协议。为了将我们的解决方案与以前的工作进行比较,我们采用文本中的以前的SotA方法(MMT)进行视频检索,并在拆分后对其进行测试。 结果报告在Tab.4 中,我们的解决方案优于MMT 22.6%。
我们的模型的重要属性是我们训练一个模型并在不同的测试集上对其进行测试。 以前的SotA方法(MMT)的作者在Tab中训练了MSRVTT,ActivityNet和LSMDC的三种不同模型。 从表6可以看出,以这种方式训练的模型具有泛化能力差,并且仅当在数据集X的训练部分上训练时,才能在数据集X的测试部分上表现出良好的性能。
表6:请参见Tab中第一列的缩写。 2.前三行Mc,A,L报告在单个域上训练并在其他域上测试的模型的质量。 斜体表示该模型在训练过程中没有看到来自该域的数据。 在此表中,仅使用运动方式(irCSN152)。
5. Conclusions and Discussion
在这项工作中,我们提出了一个新的文本到视频检索最先进的模型在MSRVTT和LSMDC基准。我们不像以前的许多工作那样在段落检索模式中使用 ActivityNet 数据集,所以我们无法与它们进行比较。但我们表明,在视频检索模式下的 ActivityNet 络上,我们大大领先于之前的最先进的模型(MMT)。我们的模型已经捕获了来自许多视频标题数据集的知识,因此它能够在几个数据集上同时显示最佳的结果,而无需微调。
我们还提出了一种实用的方法来寻找两个不同的视频数据集之间的重叠。 使用这种方法,我们发现几个数据集之间的重叠。 特别是在MSRVTT测试和列车部件之间,以及ActivityNet测试和列车部件之间,我们发现了很大的重叠。 从MSRVTT列车部分中删除此重叠将显著降低以前在MSRVTT基准上的最佳模型的性能。
在表 4,7,8 中的模型都是在 HowTo100M预训练,详细内容见 Sec.E 。
MSRVTT的结果在 表7 中。
表7:在 MSRVTT 上的结果
Table 8: Test results on LSMDC public test (1k video)
附录
C Test and train intersection
在将数据集合并后,为了防止训练集中含有测试集的视频,作者使用了两阶段法来移除训练集中的测试集视频。
- 通过 Youtube ID 进行匹配。
- 通过匹配视频 embbedings 进行筛选。对于每个视频选取几个帧的 embeddings ,然后计算训练集和测试集中的相似度,从而找到相似的视频。
结果发现了很多一样的视频,甚至在msrvtt train 和 test 中也发现了。这样可能产生过拟合。有些视频完全一样,有些就是里面的人换了衣服,换了背景。作者建议去除这些视频。
图六: The left image is taken from the MSRVTT test split and the right one from MSRVTT Train. The numbers in the upper left corner represent the MSRVTT video ID. The faces are blurred in order to avoid legal claims