查看原文
其他

【源头活水】降维打击!基于多模态框架的行为识别新范式



“问渠那得清如许,为有源头活水来”,通过前沿领域知识的学习,从其他研究领域得到启发,对研究问题的本质有更清晰的认识和理解,是自我提高的不竭源泉。为此,我们特别精选论文阅读笔记,开辟“源头活水”专栏,帮助你广泛而深入的阅读科研文献,敬请关注。

来源:知乎—MM Wang
地址:https://zhuanlan.zhihu.com/p/412858945
作者: @MM Wang (https://sallymmx.github.io/)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
再介绍一个最近的一个新工作,行为识别新范式,代码已开源,欢迎大家使用。

ActionCLIP: A New Paradigm for Video Action Recognition

文章链接:
https://arxiv.org/abs/2109.08472
code:
https://arxiv.org/abs/2109.08472


01

我们的出发点
现有的行为识别算法多采用如下图(a)所示的单模态框架,即预测一组固定的预定义类别,完全忽略了标签所包含的语义信息,直接将标签映射到一个固定数量的类别索引(数字)中,其不但限制了模型的通用性,不具备zero-shot(零学习样本)的迁移/预测能力,需要额外的标记数据方能将模型应用迁移到新的场景中,而且视频本身的表征缺乏语义性,无法与标签的语义信息进行对齐。可以思考下人类是如何进行行为识别的,当看到一段视频的时候,我们是能将视频特征(不管是见过还是没见过的),跟我们脑海中的自然语言的特征进行关联和对应的,而不是与数字/索引进行对应。因此,我们打破常规的单模态框架,不再聚焦在时空网络的设计,而是提出了从多模态框架(下图(b))的角度来做行为识别这个问题,该框架训练旨在挖掘标签文本的语义信息,并与对应的视频特征进行关联。不仅增强了视频表征的语义性,同时能够具备很强的zero-shot的迁移能力。

框架对比:(a)常规的单模态行为识别框架;(b)我们提出的多模态行为识别框架

另外,因为现有的行为识别数据集的标签文本相对丰富的视频内容显得过于单薄和稀缺,直接用新框架去学习的话,很难学到我们想要的语义特征,达不到语义特征监督的目的。针对这一问题,最直接的方法是用包含丰富文本标签的成对的视频-文本数据(比如HowTo100M,光下载按照咱的资源目测都需要半年)进行模型的训练,但这并不是咱普通高校人均(<=)两块卡的硬件条件能做的事情(心里那个苦啊,羡慕大厂的显卡资源)。脑洞一开,那能不能用大厂训练好的多模态模型,直接跳过这一步呢?答案是可以的!针对这一问题,我们提出了一个行为识别新范式“pre-train, prompt, and fine-tune”,使得我们可以利用现有的已经用丰富的互联网数据训练好的pre-trained模型,对我们的行为识别任务进行prompt,使其更像pre-trained模型训练的过程,那就能最好的维持这个pre-trained模型的表征能力啦!然后再来一把fine-tune,效果蹭蹭的上去。请注意,像通常做法那样,直接拿预训练的视觉表征来加个fc也没毛病,只不过,那不还是单模态吗?pre-trained强悍的文本表征不是一点也没上吗?

02

我们的Contributions
不同于以往所有的模型,我们提出一个多模态的视频分类框架,将文本特征进行充分的利用,将以往的单模态视频分类问题建模为多模态的视频-文本对的匹配问题;
我们提供了一种动作识别的新范式:"pre-train, prompt, and fine-tune",能够利用海量互联网数据预训练的多模态模型,避免难以达到和满足的pre-train资源,通过prompt保持住pre-trained模型的强大表征性能;
在新框架和新范式的基础上,我们的模型不仅在通用视频分类达到了最优性能,且具备很强的zero-shot/few-shot的迁移能力。

03

Method

3.1 多模态学习框架

输入视频    ,标签    来自于预定义的标签集    。相比于经典的建模方式    ,我们将其改为    ,其中    为similarity计算函数。如此一来,测试更像是一个匹配过程,相似度得分最高的标签即分类结果:
如上图(b)所示,我们分别为两种模态学习了各自的单模态encoder:   (视频encoder:用于提取视频的时空特征),   (文本encoder:用于提取输入标签的文本特征)。然后,在相似度计算模块中我们使用非常简单的余弦相似度来衡量两种模态的特征相似性,以使同对的视频和标签在映射空间彼此接近:

其中    。然后用softmax进行归一化后的视频到文本和文本到视频的相似度评分为:

其中    是一可学习参数而    是训练对的个数。令    和    表示为ground-truth similarity 分数(不匹配对的概率为0,匹配对的概率为1)。由于视频的数量远大于标签的数量,因此在    和    中可能存在不止一对匹配对,故将similarit score学习视作1-in-N分类使用交叉熵损失(cross-entropy loss)是不恰当的。我们引入Kullback–Leibler(KL)散度作为视频文本的对比损失:

其中    为整个训练集。

3.2 新范式

新范式:"pre-train, prompt, and fine-tune"
Pre-train
在预训练过程中主要存在三个上游的预训练代理任务:多模态匹配(MM,预测一对模式是否匹配)、多模态对比学习(MCL,旨在学习更好的单峰表示)以及masked语言建模(MLM,用前两种方式的特征来预测隐藏词)。由于大量的计算开销,我们(真的做不了)直接采用预先训练好的模型。但我们在新范式定义中保留pre-train而不是直接使用pre-trained,因为假如拥有能满足要求的资源,那么直接自己做pre-train,结果肯定会更加好。
Prompt
Promp这个概念在近两年NLP中使用得很多了,但是在vision任务中还比较少见。但我们认为prompt在视觉领域有很大的潜力,本文就是先从行为识别(视频分类)入手,验证其能力。这里的"prompt"不完全相同于NLP中的含义,本文借用prompt一词,表示通过调整下游任务,使其对预训练任务有更好的相似性,同时能保持住预训练模型的表征能力。我们做了两个层次的调整,一是宏观的框架,从之前naive的直接拿visual表征+fc的单模态框架调整为同时利用标签语义的多模态新框架;第二个层次在于细节微观上对行为识别标签文本的扩充和对视频分支的图片+时序分解,其目的是为了让我们的后续的训练更能保持预训练模型的表征能力。前者已经在前面讲过。对于后者,我们设计了两种prompt:textual prompt和visual prompt。
textual prompt对于标签文本扩展非常重要,给定一个标签 
   ,定义一组可能的扩充值    ,然后通过填充函数  得到prompted文本输入    。根据填充位置的不同,我们设计了三种提示:prefix prompt, cloze prompt and suffix prompt。
visual prompt使用与否取决于pre-trained model(video-text pretrained则无需再规划模型,相反image-text pretrained则需通过visual prompt进行视频的时序建模),给定一段视频 
   ,则prompt function:    ,其中    是 pre-trained视觉模型。对于    针对其作用在    的方式我们设计了三种形式:pre-network prompt, in-network prompt and post-network prompt。
Fine-tune 当有充足的下游训练数据集时,对特定数据集微调将显著提高性能。此外如果prompt引入了额外的参数,训练这些参数并使整个框架端到端学习也是有必要的。
注意,在新范式中,pre-trained model不应大幅修改(破坏其完整性),否则将会导致catastrophic forgetting(实验部分也验证了我们的设想)。

3.3 新范式实例化细节

以上新范式中的每一个步骤都可以有很多种实现方法。我们在本文中对其进行其中一种实例化。对于pre-train模型,我们选择今年OPENAI一个很重磅的工作CLIP(不多做介绍,有兴趣的同学可自行学习),因此称我们的实例为ActionCLIP。Text prompt我们直接用最简单的人工设定的离散的方式,示例如下图(b)。在未来的研究中,或许可以考虑更高级的方式。对于视觉prompt,我们采用了以下的系列方式:
pre-network prompt:此prompt主要对输入部分进行改动,对所有的输入帧的所有patch都进行时间+空间的位置编码,进行attention计算。如下图(c)所示,其操作在输入进入encoder之前。我们简称这种方式为joint。
in-network prompt:如下图(d)所示,在    相邻层间插入temporal shift模块(TSM[5]) ,该模块不会引入可学习参数(部分特征通道沿时间维度移动,便于相邻帧间的特征交换),简称为Shift。
post-network prompt:使用两个独立的编码器对空间(    )和时间(    )进行编码,    作为    尔后接入    对不同时间片段的tokens进行交互建模。我们提供了四种   (如 figure 2(e-g)所示):MeanP, Conv1D, LSTM and Transf。MeanP指时间维度上的Mean pooling;Conv1D是应用于时间维度上的一维卷积;LSTM是一种递归神经网络;Transf是    层的vision transformer encoder。
随后就是常规的fine-tune,在行为识别的数据集上做fine-tune,用我们的KL散度损失为学习目标函数,来进一步提升性能。

ActionCLIP整体框架


04

Experiments

4.1 消融实验

我们做了丰富的相融实验,分别证明了我们的多模态框架、pre-train、textual prompt、visual prompt、fine-tune的有效性。同时针对我们的方法,我们也使用不同的backbone以及Input frame进行实验。
消融实验,具体结论请看文章

4.2 Zero-shot/few-shot Recognition

ActionCLIP在多模态框架下是可以实现zero-shot recognition的,这是传统单模态框架所不能实现的。我们实现了具有代表性的STM和3D ResNet作为对比对象。ActionCLIP zero-shot性能在Kinect-400和HMDB51上比STM和3D-ResNet-50 few-shot(1-8 shot)的性能还要好,同时其few-shot的效果也明显优于另外两种方法。
figure 3 Zero-shot/few-shot results on Kinetics-400 (left), HMDB-51 (middle) and UCF-101 (right)

4.3 与State-of-the-art对比

首先在Kinetics-400上与先前的方法进行了对比。下表分为四部分,分别是基于3D-CNN的方法、基于2D-CNN的方法、基于Transformer的方法和我们的方法。只用ViT-B/16作为backbone,输入32帧,输入分辨率为224x224的情况下,我们达到了83.8%的精度,超越了表格中所有的其他方法。比起ViViT-L,我们的模型小了很多。而同样使用ViT-B/16作为backbone的VTN,STAM,TimeSformer等方法,我们的ActionCLIP的性能则都领先于他们,即便是用16帧输入,我们的性能也是领先水平(领先于除了ViViT外的所有方法)。当然了,增大backbone,增大输入分辨率,输入更多的帧的情况下,我们的性能还能继续提升,不过,受限于显卡资源,我们暂时没有做这些实验。ActionCLIP当前性能已经揭示了多模态学习框架和新范式的潜力。
Experiments on Kinetics-400
另外,ActionCLIP在Charades数据集上的性能验证了其在多标签视频分类任务的有效性,在UCF101和MDB51数据集上的性能验证了其在小数据集上具备卓越的泛化能力。
Left:Experiments on Charades Right: Experiments on UCF101&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;HMDB51


05

总结
我们将动作识别问题视为video-text多模态学习问题,为动作视频提供了一个新的视角。我们制定了一个新范式pre-train, prompt, and fine-tune使我们的框架能够直接使用强大的pre-trained model,大大降低了预训练成本。通过新范式的实例ActionCLIP,我们验证了我们的方法在常规动作识别、zero-shot/few-shot情境下都有很强的性能。希望能给行为识别的领域带来一个新的出发点。多模态相比单模态,可以说是降维打击了,兄弟姐妹们,别卷网络结构设计了,多模态冲啊!

参考文献
[1] Wang, L.; Xiong, Y.; Wang, Z.; Qiao, Y.; Lin, D.; Tang, X.; and Van Gool, L. 2016. Temporal segment networks: Towards good practices for deep action recognition. In European conference on computer vision, 20–36. Springer.
[2]Feichtenhofer, C.; Pinz, A.; and Zisserman, A. 2016. Convolutional two-stream network fusion for video action recognition. In Proceedings of the IEEE conference on computer vision and pattern recognition, 1933–1941.
[3]Jiang, B.;Wang, M.; Gan,W.;Wu,W.; and Yan, J. 2019. Stm: Spatiotemporal and motion encoding for action recognition. In Proceedings of the IEEE/CVF International Conference on Computer Vision, 2000–2009.
[4]Arnab, A.; Dehghani, M.; Heigold, G.; Sun, C.; Luˇci´c, M.; and Schmid, C. 2021. Vivit: A video vision transformer. arXiv preprint arXiv:2103.15691.
[5]Lin, J.; Gan, C.; and Han, S. 2019. Tsm: Temporal shift module for efficient video understanding. InProceedings of the IEEE/CVF International Conference on Computer Vision, 7083–7093.

本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。


“源头活水”历史文章


更多源头活水专栏文章,

请点击文章底部“阅读原文”查看



分享、在看,给个三连击呗!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存