论文笔记 InternVideo:General Video Foundation Models via Generative and Discriminative Learning

本文最后更新于:2024年3月25日 上午

论文笔记 InternVideo: General Video Foundation Models via Generative and Discriminative Learning

上海人工智能实验室的OpenGVLab的一个视觉为主的多模态基础模型 InternVideo,2022年12月发布。

本文大致介绍其idea、架构、训练方法和部分实验,由于知识受限,不会过于深入。

研究故事

视觉基础模型中,相较于图像,视频模型更少被探索,主要是因为1. 视频处理难度大 2. 视频Benchmark都可以用图像骨干+时序编码得到。其他工作提出的视觉模型都关注少部分任务,所以需要一个能够执行所有任务的通用基础模型。

InternVideo就是这么一个模型。

它主要利用视频掩码建模(Masked Video Modeling)和多模态对比学习(Multimodal Contrastive Learning)。

  • 掩码建模:对视频理解效果好,但是模型规模收到目前解码器的限制
  • 多模态对比:嵌入高级语义信息,但是时空建模信息不足。

为了解决(融合),作者结合两种自监督的任务,提出了一个大规模但是高效的统一训练方法,并在39个benchmark上进行了实验,涉及行为识别视频-语言对齐开放世界应用三大方面的任务。

具体来说,InternVideo设计了一个统一视频表征学习范式(UVR),探索了掩码建模(后简称MAE)和对比学习(后简称MML)。UVR提升了训练效率,展示了比“图像+时序建模”更好的表征能力。作者先使用两种训练方法分别训练出一个Video encoder,然后使用交叉模型注意力模块来进行特征对齐,此时还会冻结大部分参数。

作者为训练大规模视频基础模型提供了以下贡献:

  1. 证明VideoMAE是可以进一步扩大训练数据的
  2. 证明重用图像预训练ViT是有好处的
  3. 证明行为识别可以作为自监督训练后的第二阶段预训练
  4. 证明他们的分阶段训练方法是高效且有效的

方法

InternVideo整体框架如上所示,训练分成了三个阶段:Self-Supervised Video Pretraining、Supervised Video Pretraining、Cross-Model Interaction。

Self-Supervised Video Pretraining

分成视频掩码建模和视频-语言对比学习两部分。

前者基本Follow VideoMAE的方法。

后者使用了他们前作提出的UniformerV2,并使用ALBEF的方式进行训练。

这些基本没什么好说的,都是使用之前积累的方法,ALBEF大概就是先对齐,然后再加个解码器去进行Captioning。

UniformerV2在后面单独说。

Supervised Video Post-Pretraining

对于MAE,作者使用K710微调。

对于MML,作者使用UniFormer的方式,也在K710上微调。

Cross-Model Interaction

如下图所示,先冻结Encoder所有参数,然后在MAE中加入交叉注意力和FFN,使MAE获取MML中的语义信息,最后输出时再通过一层交叉注意力和FFN把信息送到MAE那边。最后,学习一个线性结合来融合两边的分数。新增的模块为了不破坏原本特征,会添加tanh的gating layer。

UniFormerV2

UniFormerV2

如图为UniFormerV2的整体架构,首先变成patch,然后分别进行两路的Local和Global编码,两路特征最后通过Multi-stage Fusion进行融合。

pathify

首先使用3D大卷积来生成L=T×H×WL=T\times H \times W个时空token,具体来就是得到2×16×162\times 16 \times16​的patch。

Local UniBlock

这一路将ViT进行扩展,用到了UniFormerV1中的MHRA模块,如下图所示,MHRA是Multi-head Relation Aggregator的缩写。MHRA结合了Transformer和3D卷积,解决了浅层网络的redundancy问题和深层网络的dependency问题。

MHRA整体的公式为:

Rn(X)=AnVn(X)MHRA(X)=Concat(R1(X);R2(X);;RN(X))UR_n(\mathbf{X}) = A_nV_n(\mathbf{X})\\ MHRA(\mathbf{X}) = Concat(R_1(\mathbf{X}); R_2(\mathbf{X}); \cdots;R_N(\mathbf{X})) \mathbf{U}

其follow了Transformer的设计,并将其进行了泛化。输入X\mathbf{X}经过线性变换VnV_n变成valuevalue,然后根据某种注意力机制得到的矩阵AnA_n进行加权求和,得到一个头的数据,之后多头进行融合。所以重点是如何得到矩阵AnA_n​。

接下来是重点,作者将注意力机制和卷积进行了统一,在浅层网络,作者使用Local的MHRA,即将AnA_n定义为3D卷积核,根据token的相邻位置进行卷积核中的加权求和;在深层网络,作者则将AnA_n定义为传统注意力机制的Softmax(QKT)Softmax(QK^T)

UniFormerV1

所以,UniFormerV2中Local那一路,Local MHRA Temporal实质上是一个t×1×1t\times 1 \times1​的卷积,Global MHRA Spatial就是ViT中的注意力机制。

这绕来绕去的,最后结果还是挺简单的……

Global UniBlock

全局的UniBlock使用了UniFormerV1中提到的Dynamic Position Embedding(DPE),实际上是一个Deep-wise的卷积,使用了论文“Do We Really Need Explicit Position Encodings for Vision Transformers?”中的结构。在这里,是对每个通道的3D特征图,通过3D卷积核来查询周围token,从而动态生成当前位置的embedding。这个结构满足了位置编码的三大要求:1.表现好 2.输入位置扰乱会导致结果不同 3.高效、方便、non-invasive to 原本的transformer。

DPE

DPE之后则是一个基于交叉注意力的MHRA,其使用一个可学习的query向量对所有时空token进行交叉注意力,得到video token。然后,视频一路特征还是通过FFN。

Multi-stage Fusion

论文研究了如上四种融合方式,XG\mathbf{X}^G是Global一路得到的视频级别query特征,XL\mathbf{X}^L则是每个block的特征,最后得到F\mathbf{F}的特征,这个特征还会根据一个可学习的α\alpha参数来加权融合Local一路的cls token特征FC\mathbf{F}^C,得到最终最终的Z\mathbf{Z}特征。

融合方式最终使用了最简单的(a)方法,即自始自终只有一个query,这个query在Global Block中汇聚特征,并作为下一层的输入。

这有一份简化的UniFormerV2的代码:uniformerv2.py · Andy1621/uniformerv2_demo at main (huggingface.co)

InternVideo For 下游任务

模型已经训练出了各种各样的模块,需要什么就选什么。

比如行为识别、时序动作定位这些就直接选VideoMAE-Huge,多模态任务就选多模态对比学习后的……

最后是得到各个方面的SOTA,当然参数量也非常之多。