0. X-CLIP与Vita-CLIP
下面这篇论文是在上面这篇论文的基础上做了一些小改动
关键词有三个:CLIP、Video、Prompt
1. CLIP拓展到视频领域
先介绍一下视频理解的三个基础性的任务[1]:
- 动作识别(很多情况下就是视频分类)
- 时序动作定位
- 视频Embedding
这两篇论文就是在做视频分类的任务,视频相比图片来说多了一个时间的维度
视频理解的常用方法有四种,
- HandCrafted —> CNN
- Two-Stream
- 3D-CNN
- Video Transformer
第一种方法就是传统的机器学习的方法,第二种方法是双流网络,双流简单来说就是另外提取一个光流特征,光流图像里涵盖了很多物体移动的信息以及时序的信息,两个网络得到的特征融合一下。
对于传统方法,2d网络,双流方法来说,大家就是在后面加一个lstm就行。
那还有一类很直观的方法就是3D卷积,也能取得不错的效果,但是计算成本比较高,而且CNN的感受野太小。
另外一种方法就是基于Transformer的,也是现在比较流行的方法,时空自注意力太贵了,视频里直接做这种transformer做不起,就拆分它,要么先做一下时间,再做一下空间,要么先做一下局部,再做一下全局,就是在用小窗口大窗口上拆分,利用transformer长时间建模的能力做长时间的视频理解。
1.1 CLIP
简单地回顾一下CLIP,思路很简单,图像通过图像的编码器,文本通过文本编码器,就会得到一系列的图像和文本的特征,这种算是正样本对,因为这些文本就是描述的这个图像,不在对角线上的这些,没有对应关系就算是负样本。就用这么一个简单地对比学习的目标函数,在4个亿的图像文本对上训练完之后,获得了强大的性能,尤其是Zero Shot的能力,非常强。
推理的时候,如果你想给任意一张图片分类,就把它可能的标签全部做一个template,就是说这是一个什么样的图片,然后把所以的这些文本丢给文本编码器,会得到一系列的文本特征,有多少个标签就有多少个文本特征,然后就是不断地算图像特征和这些文本特征的相似度,然后CLIP模型呢,就认为最大的相似度所对应的那个文本标签就是这张图片的标签类别,所以做起推理非常灵活,甚至可以提前把一些大规模的数据集里面图像和文本特征提前抽好在本地,每当有新的特征进来之后,可以直接让特征和特征做点乘,就可以知道相似度,然后直接做排位啊,或者匹配的任务。
如果在视频领域训练一个类似的模型,适用于视频-文本对,做视频理解的任务,有几个难点:
- 和图像文本对相比,视频-文本对更难获取。
- 视频和文本不好对齐,视频更复杂一点,视频比图片多了一个时间的维度。如果把每一帧都单独地打成img patch,扔给ViT,如果有10帧,就会得到10个 cls token,就是一个文本特征对10个图像特征,就不好去做相似性计算了。需要考虑一个时序建模的问题。
- 计算成本太高,因为一个视频就包含很多帧,计算量比图像大了一个量级,还有很多冗余信息。
那么有一个直观的想法就是把CLIP预训练好的图像-文本对模型迁移到视频领域,这样就不用从头开始训练一个视频-文本对的模型。
1.2 CLIP4clip
再介绍一下这篇CLIP4clip,放到arxiv上的时间也非常的快,21年4月18号就放上去了,也就是clip刚出来一个半月,就已经怒刷了Video Retrival里五个数据集了,他论文的名字呢起的也很好啊,一语双关,前面的clip呢指的是openAI clip模型啊,后面的clip呢,指的是视频里的那种,一段一段的小video clip,总体来说呢,这篇文章就是一个Empirical Study。
不仅实现了这种时序信息的融合,还实现了这种文本和视频帧之间的融合,这个模型的参数,已经非常非常好了,那如果你的这个下游数据集数据量并不大的话,其实并不建议你去微调这个模型啊,直接用往往是效果最好的。当你的数据量逐渐增多了之后啊那你在下游任务上去Fine-Tune的这个效果呢可能也就体现出来一些了,模型呢也就不那么容易过拟合了,所以这个时候呢后面这种带参数学习的方式啊,可能效果就会稍微好一些因为它学到这个特征呢更适合这个下游任务。
1.3 ActionCLIP
再介绍一下另外一篇比较经典的CLIP用到视频领域的论文 ActionCLIP,也是在CLIP出来后不久就出了,
这篇论文的任务是动作识别,其实呢就是一个视频分类任务。
之前都是经过一个视频编码器,无论它是2D的还是3D的,总之最后得到一个向量,有可能512维,有可能2048维,然后经过一个分类头,得到一个输出,这个输出再去和Ground Truth做对比,直接cross entropy loss一算,就能把这个网络训练起来。但是这里面有一个巨大的局限,就是对于有监督的学习,是需要标签的。
对于视频理解,尤其是动作识别这种one hot 标签还是不太行,比如open这个词,有开门,开盖,甚至是open the mind,就是说它潜在的label space是很大的,人工标注成本很高,而且类别这么多softmax可能不工作了。
那么对于动作识别来说,也就是说遇到新的类或者细粒度的类不好处理,CLIP就很适合做这种任务,本身就能做很好的zero shot,那么把CLIP迁移过来就很合理。
那么这个下半部分就是作者提出的multimodal framework。
这篇文章的贡献主要有两:
第一个呢,就是CLIP是一个完全无监督的方法,它的ground-truth是来自网络上的匹配的图像文本对,只有对角线上才是正样本。
这篇论文里情况就不一样了,当batch比较大的时候,一行或者一列里就有多个正样本,比如说好几个样本都是跑步,它的矩阵就变成这样了。作者在文章中就说了一下,把cross entropy loss 换成 KL divergence就好了,就是利用两个分布的相似性去算loss。
第二个就是如何把图像变成视频如何去算相似度,就跟之前的CLIP4CLIP非常接近
文本那边还是原来prompt的意思,视频这边已经不是prompt的意思了。这些方法的目的呢,其实都是在原来已经训练好的预训练参数之上啊,通过加一些小的模块,
然后通过训练这些小的模块呢,能够让这个已经训练好的模型参数,能尽快的迁移到这个下游任务上去。
最开始的这个pre network prompt而叫joint,而这个其实很简单,其实就是把时间和空间上的token,都放到一起啊,然后直接扔给网络去学习,一开始也会把时序上的这个position embedding也加进去一起学,所以这就是作者这里说的这个pre networkprompt。在输入层面呢加了一些东西。那第二个in network prompt呢,其实他就是利用了之前shift的这个概念,把shift这个操作,放在每一个ViT block中间,把一个图像的工作迁移到视频里,能玩的几种方案呢无非就是这几种。
2. X-CLIP
2.1 X-CLIP Motivation
总的来说,这项工作的亮点包括如下:
- 无需海量视频 - 文本数据:直接将预训练的语言 - 图像模型在下游视频数据集微调,而非从零使用视频 - 文本预训练;
- 利用标签中的语义信息:在视频识别任务中,抛弃了传统离散标签,充分利用每个类别标签中的语义信息并提升了性能;
- 方法简单、高效且通用:无缝衔接至不同的语言 - 图像模型,可用于多种数据分布场景,如全样本、少样本和零样本。
至于视频分类的效果,与其他方法相比,X-CLIP 可用于零样本识别,即用户自定义候选标签,实现对视频内容更精准的描述。
最近,语言 - 图像预训练模型(Language-image pretrained models)在计算机视觉领域引起了极大关注。它使用更广泛的文本信息作为监督,打破了传统模型学习固定视觉概念的范式。受益于此,其展示出了强大的迁移能力和泛化能力,在全样本、少样本和零样本分类上取得了卓越的成绩。现在是一个短视频爆发的时代,现实世界中丰富的概念更是难以被一个固定的封闭集所定义。于是,研究人员和从业人员也希望有一个泛化能力强大的视频模型,能在不同的数据分布场景和不同的概念环境中表现优异。这样的模型会助力于现实世界的许多应用,比如自动驾驶、视频标签、安防监控等。同样,由于视频的获取成本通常更加高昂,少样本和零样本的识别能力也被期待。但是,如果直接模仿语言 - 图像预训练,使用视频 - 文本预训练会带来以下两个问题:
- 数据困境:需要数以亿计的视频 - 文本数据,但是大量的数据是难以获得的;
- 计算困境:视频的训练通常需要数倍于图像的计算资源,这些资源消耗通常无法承受。
有鉴于此,研究者考虑探索如何将预训练的语言 - 图像模型中的知识迁移到视频领域,而非从零预训练一个语言 - 视频模型。与图像相比,视频增加了时间的维度;与传统视频识别框架相比,研究者引入了文本信息。
因此,研究者需要解决两个关键问题:
- 如何在语言 - 图像预训练模型中建模视频的时序信息?
- 如何利用视频类别标签中的文本信息?
2.2 方法概览
针对第一个问题,研究者提出了 Cross-frame Communication Transformer 和 Multi-frame Integration Transformer 模块,在预训练模型中引入时序信息;对于第二个问题,研究者提出了 Video-specific Prompting 机制,用于产生视频自适应的提示信息,充分地利用了类别标签中的文本信息。方法整体框架如上图所示。
研究者提出了一种简单高效的视频编码器。该编码器由两部分组成,即 Cross-frame Communication Transformer(CCT)和 Multi-frame Integration Transformer(MIT)。为了避免联合时空建模的高计算量,整体上,CCT 采用各帧独立编码的计算方式。
具体地,对每一帧编码时,动态地生成各自的 message token(如图 6(a)中彩色的圆形部分),携带所在帧的信息,再通过 Cross-frame Fusion Attention 交换不同帧的 message token 携带的信息,弥补了时序信息的缺失。具体地,如图 6(a)所示,在 CCT 的每一个 block 中,我们在 cls token 上施加线性变化得到 message token,每帧的 message token 通过 Cross-frame Fusion Attention(CFA)交换信息。
随后,每一帧的 message token 再回归到所属帧。通过 Intra-frame Diffusion Attention,每一帧内的 spatial tokens 在建模空间信息的同时,吸收了来自 message token 的全局时序信息。
最后,每一帧的 spatial tokens 再经过 FFN 进一步编码信息。为了进一步提升性能,研究者在 CCT 产生的每帧的特征上,额外使用一层 Multi-frame Integration Transformer(MIT)(如图 5)聚合每一帧的信息,产生视频最终的表达。
Cross-frame Fusion Attention 和 MIT 是额外添加的模块并使用随机初始化。Intra-Frame Diffusion Attention 和 FFN 对应于预训练 Vision Transformer 中的 self-attention 和 FFN 部分。值得注意的是,因为帧数(message tokens 的数量)远小于 spatial tokens 的数量,所以 Cross-frame Fusion Attention 和一层 MIT 的计算量远小于 Intra-frame Diffusion Attention, 这样便以较小的计算代价建模了全局的时序信息。
利用标签的语义信息:视频自适应的提示学习针对第二个问题,提示学习(Prompt learning)主张为下游任务设计一种模板,使用该模板可以帮助预训练模型回忆起自己预训练学到的知识。比如, CLIP手动构造了 80 个模板,CoOp主张构造可学习的模板。研究者认为,人类在理解一张图片或视频时,自然地会从视觉内容中寻找有判别性的线索。例如有额外的提示信息「在水中」,那么「游泳」和「跑步」会变得更容易区分。但是,获取这样的提示信息是困难的,原因有二:
- 数据中通常只有类别标签,即「跑步」、「游泳」、「拳击」等名称,缺乏必要的上下文描述;
- 同一个类别下的视频共享相同的标签信息,但它们的关键视觉线索可能是不同。
为了缓解上述问题,研究者提出了从视觉表征中学习具有判别性的线索。具体地,他们提出了视频自适应的提示模块,根据视频内容的上下文,自适应地为每个类别生成合适的提示信息。每个视频的自适应提示模块由一个 cross-attention 和一个 FFN 组成。令文本特征当作 query,视频内容的编码当作 key 和 value,允许每个类别的文本从视频的上下文中提取有用的提示信息作为自己的补充。
最后,使用学习到的提示信息来丰富原本文本信息的表示,使得其具有更强的判别性。
2.3 实验结果
X-CLIP 在 FLOPs 更小的情况下领先于其它方法,这得益于提出的视频编码器的高效性。
当和其它使用互联网(Web)规模数据预训练的模型比较时,依然有性能优势,这归功于该方法充分挖掘和利用了预训练语言 - 图像模型中的表达能力。
少样本情况下的性能,和经典的使用离散标签监督的方法相比,使用文本信息可以大幅提升性能。研究者在消融实验中证明了性能增益更多来自于文本的使用,而非更强的预训练模型。在零样本情况下,提出的方法依然有效。这种显著的改进可以归因于所提出的视频 - 文本学习框架,该框架利用大规模的视觉 - 文本预训练和视频自适应的提示学习。
研究者在消融实验中展示了每个模块的作用,分析了文本信息的必要性,探索了不同数据分布下应该训练哪个分支,比较了不同的 prompts 方法。
3. Vita-CLIP
这篇论文就是在上篇论文的基础上加了一点Prompt Learning 的东西。
3.1 Vita-CLIP Motivation
3.2 Vita-CLIP Method
这里的 Summary token 就是 X-CLIP 里的 message token,注意这里属于CLIP预训练的backbone都是冻结的。
在视觉方面的提示方法主要有三个方面:1)全局视频级别的提示,以对数据分布进行建模;2) 本地帧级提示提供每帧判别条件;以及3)提取浓缩视频表示的概要提示。
此外,在文本端定义了一个提示方案,以增强文本上下文。通过这种提示方案,可以在Kinetics-600、HMDB51和UCF101上实现最先进的zero-shot性能,同时在监督环境中保持竞争力。通过保持预训练的主干冻结,我们优化了数量少得多的参数,并保留了现有的通用表示,这有助于实现强大的零样本性能。
可以在这种注意力图中发现,加了提出的prompt method 后更加集中于特定的动作部分。
4. Conclusion
参考
[1].
[2].
[3].
[4].
[5].
[6].
[7].
[8].