社区计算机视觉课程文档

视频处理中的 Transformer (第一部分)

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

视频处理中的 Transformer (第一部分)

导论

在本章中,我们将介绍 Transformer 模型如何在视频处理中应用。特别是,我们将介绍视觉 Transformer,Transformer 模型在视觉领域中的成功应用。然后,我们将解释用于视频的视频视觉 Transformer (ViViT) 模型与用于图像的视觉 Transformer 模型相比,所做的额外考虑。最后,我们将简要讨论 TimeSFormer 模型。

在阅读本文档之前,建议复习的材料:

ViT 概要

首先,让我们快速了解一下视觉 Transformer:An image is worth 16x16 words: Transformers for image recognition at scale,这是 Transformer 在视觉领域最基本的成功应用。

以下是论文的摘要;

受到 NLP 中 Transformer 扩展成功的启发,我们尝试将标准 Transformer 直接应用于图像,并尽可能少地进行修改。为此,我们将图像分割成 patches,并将这些 patches 的线性嵌入序列作为 Transformer 的输入。图像 patches 的处理方式与 NLP 应用中的 tokens(单词)相同。我们在监督方式下训练模型进行图像分类。

Vision transformer architecture
ViT 架构。取自原始论文

ViT 论文中提出的关键技术如下

  • 图像被分成小的 patches,每个 patch 被用作 Transformer 模型的输入,用基于 Transformer 的方法取代 CNN。

  • 每个图像 patch 都被线性映射,并添加位置嵌入,使 Transformer 能够识别 patches 的顺序。

  • 该模型在大规模数据集上进行预训练,并针对下游视觉任务进行微调,从而实现高性能。

性能 & 局限性

Vision transformer performance
与 SOTA 模型的比较。取自原始论文

虽然 ViT 的性能优于其他最先进的模型,但训练 ViT 模型需要大量的计算能力。训练 ViT 模型在 TPU-v3 上花费了 2,500 天。假设一个 TPU-v3 核心的成本约为每小时 2 美元(您可以在此处找到更详细的定价信息),那么训练模型一次将花费 2 美元 x 24 小时 x 2,500 天 = 120,000 美元。

视频视觉 Transformer (ViViT)

如前所述,ViViT 将 ViT 的图像处理扩展到视频分类任务,其重要问题是如何更快速有效地训练模型。此外,与图像不同,视频不仅包含空间信息,还包含时间信息,如何处理这种“时间信息”是一个关键的考虑和探索方向。

以下是论文的摘要

我们提出了用于视频分类的纯 Transformer 模型,借鉴了此类模型在图像分类中的最新成功。我们的模型从输入视频中提取时空 tokens,然后通过一系列 Transformer 层进行编码。为了处理视频中遇到的长 tokens 序列,我们提出了我们模型的几种高效变体,这些变体分解了输入的空间和时间维度。尽管众所周知,基于 Transformer 的模型只有在有大型训练数据集可用时才有效,但我们展示了如何在训练期间有效地正则化模型,并利用预训练的图像模型在相对较小的数据集上进行训练。我们进行了全面的消融研究,并在多个视频分类基准测试(包括 Kinetics 400 和 600、Epic Kitchens、Something-Something v2 和 Moments in Time)上取得了最先进的结果,优于以前基于深度 3D 卷积网络的方法。为了促进进一步的研究,我们在 https://github.com/google-research/scenic 上发布了代码。

ViViT architecture
ViViT 架构。取自原始论文

嵌入视频片段

什么是嵌入?

在深入研究具体技术之前,重要的是要了解什么是嵌入。在机器学习中,嵌入是密集的向量表示,它以神经网络可以处理的格式捕获输入数据的有意义的特征。对于视频,我们需要将原始像素数据转换为这些数学表示,同时保留空间信息(每帧中的内容)和时间信息(事物随时间的变化方式)。

为什么视频嵌入很重要

由于视频的大小和复杂性,处理视频在计算上是密集型的。良好的嵌入技术通过以下方式提供帮助:

  • 在保留重要特征的同时降低维度
  • 捕获帧之间的时间关系
  • 使神经网络能够有效地处理视频数据

为什么关注均匀帧采样和 Tubelet 嵌入?

这两种技术代表了视频处理中的基本方法,已成为更高级方法的构建块

  1. 它们在计算效率和信息保留之间取得平衡,为不同的视频处理任务提供了多种选择。
  2. 它们充当基线方法,提供了一个比较点,以便更新的技术可以证明改进。
  3. 学习这些方法在时空处理方面建立了一个坚实的基础,这对于掌握更高级的视频嵌入方法至关重要。

均匀帧采样

Uniform frame sampling
均匀帧采样。取自原始论文

在这种映射方法中,模型在时间域上均匀地采样一些帧,例如每 2 帧采样一帧。

Tubelet 嵌入

Tubelet embedding
Tubelet 嵌入。取自原始论文

另一种方法是从输入 volume 中提取时空“tube”,并对其进行线性投影。此方法在 tokenization 期间融合时空信息。

先前介绍的方法(例如均匀帧采样和 Tubelet 嵌入)是有效但相对简单的方法。即将介绍的方法更为高级。

ViViT 中用于视频的 Transformer 模型

原始 ViViT 论文提出了多种基于 Transformer 的架构,我们现在将按顺序进行探索。

模型 1:时空注意力

第一个模型自然地将 ViT 的思想扩展到视频分类任务。视频中的每一帧都被分割成 n_w(列数)x n_h(行数)图像 patches,总共得到 n_t(帧数)x n_w x n_h 个 patches。然后,这些 patches 中的每一个都被嵌入为“时空 token”——本质上是一个代表空间(图像)和时间(视频序列)信息的小单元。模型通过 Transformer 编码器转发从视频中提取的所有时空 tokens。这意味着每个 patch 或 token 都经过处理,不仅要理解其个体特征,还要理解其与时间和空间中其他 patches 的关系。通过这个称为“情境化”的过程,编码器学习每个 patch 如何与其他 patches 相关联,方法是捕获位置、颜色和运动的模式,从而建立对视频整体情境的丰富、全面的理解。

复杂度:O(n_h^2 x n_w^2 x n_t^2)

但是,对所有时空 tokens 使用注意力可能会导致沉重的计算成本。为了使这个过程更有效率,使用了早先解释过的均匀帧采样和 Tubelet 嵌入等方法来帮助降低这些成本。

模型 2:分解编码器

模型 1 中的方法有些低效,因为它同时情境化所有 patches。为了改进这一点,模型 2 依次分离空间和时间编码器。

ViViT model 2
分解编码器(模型 2)。取自原始论文

首先,仅通过空间 Transformer 编码器 (=ViT) 情境化空间交互。然后,每帧被编码为单个嵌入并馈送到时间 Transformer 编码器 (=通用 Transformer)。

复杂度:O(n_h^2 x n_w^2 + n_t^2)

模型 3:分解自注意力

ViViT model 3
分解自注意力(模型 3)。取自原始论文

在模型 3 中,我们没有计算所有 tokens 对之间的多头自注意力,而是首先仅在空间上计算自注意力(在从同一时间索引提取的所有 tokens 之间)。接下来,我们在时间上计算自注意力(在从同一空间索引提取的所有 tokens 之间)。由于存在歧义,因此不使用 CLS(分类)token。

复杂度:与模型 2 相同

模型 4:分解点积注意力

ViViT model 4
分解点积注意力(模型 4)。取自原始论文

在模型 4 中,一半的注意力头被设计为使用来自空间索引的键和值进行操作,另一半使用来自相同时间索引的键和值进行操作。

复杂度:与模型 2、3 相同

实验和讨论

ViViT model performance
模型架构的比较(Top 1 准确率)。取自原始论文

在比较模型 1、2、3 和 4 之后,很明显模型 1 实现了最佳性能,但需要最长的训练时间。相比之下,模型 2 与模型 3 和 4 相比,以相对较高的性能和更短的训练时间展示了效率,使其成为总体上最有效的模型。

ViViT 模型从根本上来说面临数据集稀疏的问题。与视觉 Transformer (ViT) 一样,ViViT 需要极其庞大的数据集才能获得良好的性能。但是,视频通常无法获得如此规模的数据集。鉴于学习任务更加复杂,因此方法是首先使用 ViT 在大型图像数据集上进行预训练以初始化模型。

TimeSFormer

TimeSFormer 是与 ViViT 同期进行的工作,将 Transformer 应用于视频分类。以下部分是对每种注意力类型的解释。

TimeSFormer model
五种时空自注意力方案的可视化。取自原始论文
  • 稀疏注意力与 ViT 相同;蓝色 patch 是查询,并情境化一帧内的其他 patches。
  • 联合时空注意力 (Joint Space-Time Attention) 与 ViViT 模型 1 相同;蓝色区块是查询 (query),并在多个帧中关联其他区块的上下文信息。
  • 分离时空注意力 (Divided Space-Time Attention) 类似于 ViViT 模型 3;蓝色区块首先在时间维度上与相同位置的绿色区块关联上下文信息,然后在空间维度上与同一时间索引的其他图像区块关联上下文信息。
  • 稀疏局部-全局注意力 (Sparse Local Global Attention):选择性地结合局部和全局信息。
  • 轴向注意力 (Axial Attention):沿其轴向分别处理空间和时间维度。

性能讨论 (Performance Discussion)

分离时空注意力 (Divided Space-Time Attention) 机制表现出最有效的性能,在 K400 和 SSv2 数据集上都提供了参数效率和准确性之间的最佳平衡。

结论 (Conclusion)

ViViT 在 ViT 模型的基础上进行了扩展,通过引入各种模型(例如分解编码器 (Factorized Encoder)、分解自注意力 (Factorized Self-Attention) 和分解点积注意力 (Factorized Dot-Product Attention))来更有效地处理视频数据,所有这些模型都旨在高效地管理时空维度。同样,TimeSFormer 从 ViT 架构演变而来,并利用多种注意力机制来处理时空维度,这与 ViViT 非常相似。从这种发展中可以得出的一个关键结论是,重点在于降低将 Transformer 架构应用于视频分析时产生的大量计算成本。通过利用不同的优化技术,这些模型提高了效率,并能够以更少的计算资源进行学习。

附加资源 (Additional Resources)

< > 在 GitHub 上更新 (Update on GitHub)