《CLIP4Clip》-CLIP再创辉煌!西南交大&MSRA提出CLIP4Clip,进行端到端的视频文本检索!

作者 | 小马

编辑 | CV君

报道 | 我爱计算机视觉(微信id:aicvml)

【写在前面】

视频文本检索在多模态研究中起着至关重要的作用,在许多实际应用中得到了广泛的使用。CLIP(对比语言图像预训练)是一种图像语言预训练模型,它展示了从网络收集的图像文本数据集中学习视觉概念的能力。在本文中,作者提出了一个CLIP4Clip 模型,以端到端的方式将CLIP模型的知识转移到视频语言检索中。在本文中,作者通过实验研究了以下几个问题:

1) 图像特征是否足以用于视频文本检索?

2) 基于CLIP的大规模视频文本数据集的后预训练如何影响性能?

3) 对视频帧之间的时间依赖性建模的实用机制是什么?

4) 该模型对视频文本检索任务的超参数敏感性。

大量实验结果表明,基于CLIP的CLIP4Clip模型可以在各种视频文本检索数据集上实现SOTA结果,包括MSR-VTT、MSVC、LSMDC、ActivityNet和DiDeMo。

1. 论文和代码地址

CLIP4Clip: An Empirical Study of CLIP for End to End Video Clip Retrieval

论文地址:arxiv.org/abs/2104.0886

代码地址:github.com/ArrowLuo/CLI

2. Motivation

随着每天在线上传视频的增加,视频文本检索成为人们高效查找相关视频的一个新兴需求。除了实际的web应用之外,视频文本检索是多模态视觉和语言理解的一项基础研究任务。我们可以直接通过输入来对以前的工作进行分类:原始视频(像素级) 或视频特征(特征级) 。

预训练的模型是特征级的,因为他们在一些大规模视频文本数据集上进行过预训练,例如Howto100M。输入是通过现成的冻结视频特征提取器生成的缓存视频特征。如果输入是原始视频,则会使预训练非常缓慢。然而,得益于大规模数据集,预训练模型在视频文本检索方面表现出显著的性能提升。

像素级方法直接以原始视频作为输入来训练模型,早期模型几乎都属于这种方法。这种方法结合成对文本学习视频特征提取器。相反,特征级方法高度依赖于合适的特征提取器。它不能将学习的梯度传播回固定的视频编码器。

最近的一些工作开始用像素级的方法对模型进行预训练,使预训练模型从原始视频中学习。最大的挑战是如何减少密集视频输入的高计算过载 。ClipBERT采用了稀疏采样策略,使端到端预训练成为可能。具体地说,该模型仅在每个训练步骤中从视频中稀疏地采样一个或几个短片段。实验结果表明,端到端训练有利于低层特征提取。少量的稀疏采样片段就足以解决视频文本检索任务。Frozed模型将图像视为单帧视频,并设计了curriculum learning schedule,以在图像和视频数据集上训练模型。结果表明,curriculum learning schedule从图像学习到多帧信息,可以提高学习效率。本文的目标不是预训练一种新的视频文本检索模型,而是主要研究如何将知识从图片文本预训练模型CLIP中迁移到视频本文检索任务中 。

在本文中,作者利用预训练好的CLIP,提出了一个名为CLIP4Clip (CLIP For ** video Clip ** retrieval)的模型来解决视频文本检索问题。具体而言,CLIP4Clip构建在CLIP之上,并设计了一个相似度计算器来研究三种相似度计算方法:无参数型 、顺序型 和紧密型 。与目前基于CLIP的工作相比,不同之处在于,他们的工作直接利用片段进行 zero-shot预测,而没有考虑不同的相似性计算机制。然而,本文设计了一些相似性计算方法来提高性能,并以端到端的方式训练模型。

此外,通过大量的实验,作者得出了以下结论:

1)单个图像远远不足以用于视频文本检索的视频编码。

2) 在CLIP4Clip模型上对大规模视频文本数据集进行后预训练是必需的,并且可以提高性能,特别是对于大幅度的零样本预测。

3) 基于强大的预训练CLIP,对于小数据集,最好不要引入新参数,对视频帧采用平均池化机制;对于大数据集,最好引入更多参数,以学习大型数据集的时间依赖性。

4)视频文本检索中使用的CLIP是学习率敏感的。

3. 方法

给定一组视频(或视频片段)[公式]和一组本文[公式],模型的目标是学习函数[公式]来计算视频(或视频片段)[公式]与本文[公式]之间的相似度。根据文本到视频检索中的相似性得分对给定查询本文的所有视频(或视频片段)进行排序,或者在视频到文本检索任务中对给定查询视频(或视频片段)的所有文本进行排序。[公式]的目标是计算相关视频文本对的高相似度分数和不相关视频文本对的低相似度分数。

其中,视频(或视频片段)[公式]在本文中表示为一系列帧(图像)的集合,由[公式]个采样帧组成,使得[公式]。本文的模型是一种端到端方式(E2E),通过将帧作为输入直接对像素进行训练。上图展示了本文的框架,它主要包含一个文本编码器 、一个视频编码器 和一个相似性计算模块 。

3.1 Video Encoder

为了获得视频表示,首先从视频片段中提取帧,然后通过视频编码器对其进行编码,以获得一系列特征。在本文中,作者采用ViT-B/32作为视频编码器,具有12层,patch大小为32。具体地,作者使用预训练的CLIP(VIT-B/32)作为主干网络,并且主要考虑将图像表示转移到视频表示。

ViT首先提取非重叠图像块,然后用线性投影转换为一维的token,并利用transformer架构对输入图像的每个patch之间的交互进行建模,以获得最终的表示。在CLIP的ViT之后,作者使用[class] token的输出作为图像表示。对于视频的输入帧序列[公式],生成的特征可以表示为[公式]

在上图中,作者展示了Patch线性投影模块中研究了两种类型的线性投影,分别命名为2D线性 和3D线性 。(a)将ViT的Patch的线性投影视为二维线性投影,独立嵌入每个二维帧patch。这样的二维线性模型忽略了帧之间的时间信息。(b) 因此,作者研究了的3D线性投影,以增强时间特征提取。三维线性投影会跨时间的patch。具体地说,三维线性使用以[公式]的核作为线性的三维卷积代替二维线性中[公式]的核,其中t、h和w分别为时间、高度和宽度。

3.2 Text Encoder

作者直接从CLIP中的文本编码器来生成文本表示,其文本编码器是一种Transformer结构。这是一个12层,通道为512的模型,有8个注意力头。在CLIP之后,[EOS] token处Transformer最高层的激活被视为文本的特征表示。对于文本[公式],其特征表示为[公式]

3.3 Similarity Calculator

在提取视频表示[公式]和文本表示[公式]之后,关键步骤是相似度计算。由于本文的模型是基于预训练的图像-文本模型构建的,因此应该在相似度计算模块中小心地添加新的可学习权重。如果没有权重初始化,很难进行学习,并且可能会影响使用反向传播的预训练模型训练的性能 。因此,作者根据模块是否引入新参数进行学习,将相似度计算器的机制分为三类。无参数方法 ,即平均池化,在没有新参数的情况下融合视频表示。

另外,作者还提出两种方法引入了新的权值来学习,包括具有不同大小的新权值的序列型方法 和紧致型方法 。上图说明了三种机制的详细结构。无参数类型和序列类型的相似度计算器属于松散类型,采用两个单独的分支分别用于视频和文本表示来计算余弦相似度。而紧凑型相似性计算器使用变压器模型进行多模态交互,并通过线性投影进一步计算相似性,两者都包含新的权重以供学习。

Parameter-free type

通过对图像-文本对的大规模预训练的CLIP,帧表示[公式]和文本表示[公式]已被层归一化并线性投影到多模态嵌入空间。因此,一个自然的想法是采用无参数类型直接从视频角度计算与图像/帧的相似性。无参数类型首先使用平均池化来聚合所有帧的特征,以获得“平均帧”[公式],然后,将相似性函数[公式]定义为余弦相似性:

[公式]

Sequential type

平均池化操作忽略帧之间的顺序信息。因此,作者探索了两种为序列类型相似性计算器建模序列特征的方法。一个是LSTM ,另一个是带位置嵌入的Transformer编码器 。这两种模型都是序列特征的有效模型。作者将它们分别表示为[公式][公式]。通过编码,[公式]嵌入了时间信息。后续操作与无参数类型相似性计算器相同。

Tight type

与上述无参数类型和顺序类型不同,紧密型使用Transformer编码器进行视频和本文之间的多模态交互,并通过线性层预测相似性,这引入了未初始化的权重。首先,将文本表示[公式]和帧表示[公式]concat起来作为融合特征[公式],然后用Transformer编码器进行建模,其公式如下:

[公式]

其中,[,]表示concat操作。P是位置嵌入,T是类型嵌入。它包含两种类型的嵌入,一种用于文本,另一种用于视频帧。接下来,作者使用两个线性投影层和一个激活函数来得到[公式]来计算相似度,表示为[公式],其中FC是线性投影,ReLU为激活函数。

3.4 Training Strategy

Loss Function

给定一个Batch。即B个视频- 文本或视频片段-文本对,模型需要生成并优化B×B相似度矩阵。作者使用这些相似度分数上的对称交叉熵损失来训练模型的参数:

[公式]

其中损失函数为video-to-text损失[公式]和text-to-video损失[公式]的和。

Frame Sampling

由于本文的模型是通过帧作为输入直接在像素上进行训练的,因此提取帧是一种重要的策略。一个有效的采样策略需要考虑信息丰富度和计算复杂性之间的平衡。为了考虑视频(或视频片段)中的顺序信息,作者采用了均匀的帧采样策略,而不是随机稀疏采样策略。采样率为每秒1帧。此外,作者还研究了不同的帧长和不同的提取位置。

Pre-training

虽然CLIP对于学习图像的视觉概念是有效的,但从视频中学习时间特征是必不可少的。为了进一步将CLIP的知识迁移为视频,作者用CLIP4Clip模型在Howto100M数据集上进行了后预训练。基于效率考虑,对视频文本数据集进行预训练是非常具有挑战性的。因此,作者使用“食品和娱乐”类别(约380k个视频)作为后预训练数据集(本文其余部分称为HOWT100M-380k)。

4.实验

4.1. Comparison to the State of the Art

上表展示了本文方法和其他SOTA方法在 MSR-VTT数据集上的实验结果。

上表展示了本文方法和其他SOTA方法在MSVD数据集上的实验结果。

上表展示了本文方法和其他SOTA方法在 LSMDC数据集上的实验结果。

上表展示了本文方法和其他SOTA方法在 ActivityNet数据集上的实验结果。

上表展示了本文方法和其他SOTA方法在 DiDeMo数据集上的实验结果。

可以看出,本文方法在多个视频文本检索的数据集上都取得了SOTA的结果。

4.2. Hyperparameters and Learning Strategy

上图展示了本文方法在不同超参数和实验设置下的实验结果,可以看出,本文方法对于学习率是非常敏感的。

4.3. Post-pretraining on Video Dataset

上表展示了是否在Howto100M-380k数据集上后预训练的结果,可以看出,后预训练总体来说还是能够进一步的提高性能的。

4.4. Sampling strategy

上表展示了不同数据集不同帧采样策略的实验结果。

4.5. 2D/3D Patch Linear

从上表可以看出,3D linear在MSR-VTT和MSVD上生成的结果都比2D linear差。

5. 总结

在本文中,作者使用预训练的CLIP作为主干网络来解决从帧级输入的视频片段检索任务。作者使用了无参数类型 、序列类型 和紧密类型 相似性计算器来获得最终结果。实验结果证明了模型的有效性,并在MSR-VTT、MSVC、LSMDC、ActivityNet和DiDeMo上实现了SOTA结果。此外,作者从实验结果研究中得出了一些见解:

1)图像特征也可以促进视频文本的检索;

2)对优秀的图像文本预训练CLIP进行后预训练,可以进一步提高视频文本检索的性能;

3)三维patch线性投影和序列类型相似度计算会是一种promising的检索方法;

4)视频文本检索中使用的CLIP是学习率敏感的。

转载请注明:《《CLIP4Clip》-CLIP再创辉煌!西南交大&MSRA提出CLIP4Clip,进行端到端的视频文本检索!