【论文笔记】Video Transformer Network

论文地址:https://arxiv.org/abs/2102.00719

1 VTN的作用

1.1 提出问题

  • 在视频任务下,传统卷积方法中为了更好的提取时序特征,一般采用3D的卷积方式,其中的计算量不管怎么改进也避免不了计算量大的问题。

  • Transformers一开始用于具有连续性的语言模型上,在视频任务中由于视频帧也具有连续性,所以也同样可以使用。但有个问题是,基于transformer的模型自注意操作每层复杂度为 O ( n 2 ) O(n^{2}) O(n2)(n为序列长度),因此在处理长视频序列时受到限制。

1.2 解决方法

  • 抛弃3D网络。使用最先进的2D架构来学习空间特征表示,并在随后的数据流中添加时间信息,在结果特征之上使用注意机制。
    并且输入只有RGB视频帧

  • VTN的时间处理组件是基于Longformer,可以处理长视频序列。

    Longformer通过引入复杂度为 O ( n ) O(n) O(n) 的注意机制实现了冗长的序列处理。这种注意机制结合了局部上下文的自我注意(通过滑动窗口执行)和特定于任务的全局注意。

2 VTN的结构

【论文笔记】Video Transformer Network_第1张图片

上图为VTN结构。连接三个模块:

  • 二维空间特征提取模型(空间backbone)
  • 基于时间注意力的编码器(该工作中使用Longformer),它使用特征向量 ϕ i \phi_{i} ϕi 和位置编码的结合。
  • 分类器 MLP head,它通过 [ C L S ] [CLS] [CLS] 指令处理得到最后的类别预测。
    head是获取网络输出内容的网络,利用之前提取的特征,head利用这些特征,做出预测。

2.1 空间backbone

  • 特点:可以是任何用于2D图像的网络,不论深浅、是否为预训练、基于卷积还是transformer、权重固定还是在训练中学习
  • 论文中使用的backbone
    • ViT-B-VTN: 在ImageNet-21K上预训练, 12层,12个head
    • DeiT-B/BD/Ti-VTN:在ImageNet上预训练,12层,12个head
    • R50/101-VTN:在ImageNet上预训练,标准的2D ResNet-50 和 ResNet-101 网络

2.2 基于时间注意力的编码器

本文作者使用Longformer模块在推理过程中一次性处理整个视频。

  • Longformer操作使用滑动窗口注意,使计算的复杂度为线性

  • 在通过Longformer层传播序列之后,使用与 [ C L S ] [CLS ] [CLS]分类标记相关的特征的最终状态作为视频的最终表示,并将其应用于给定的分类任务头。

2.3 分类器 MLP head

MLP head包含两个线性层与者之间存在的一个GELU激活函数和Dropout。输入标记表示首先使用层归一化进行处理。

3 实验结果分析

3.1 不同backbone变体

【论文笔记】Video Transformer Network_第2张图片

  • ViT-B-VTN是性能最好的模型,top-1准确率为78.6%,top-5准确率为93.7%。
  • 预训练数据集很重要。使用相同的ViT backbone,只是在DeiT(在ImageNet上预训练)和ViT(在ImageNet-21K上预训练)在结果上得到了改善。

3.2 不同Longformer深度

【论文笔记】Video Transformer Network_第3张图片

1、3、6、12层Longformer的表现相差不大,可能是Kinetics-400数据集的视频只有10s,相对较短。

3.3 不同Longformer位置嵌入的方式

【论文笔记】Video Transformer Network_第4张图片

  • 没有任何位置嵌入的版本比固定和学习版本的效果稍好。并且打乱输入帧后效果更好。
  • 这也可能与Kinetics-400数据集相对较短有关,作者认为这可能意味着该数据集主要是一个静态框架,基于外观的分类问题而不是一个运动问题。

3.4 不同帧数和每帧的占用时间

【论文笔记】Video Transformer Network_第5张图片

top-1和top-5精度相似,说明VTN不受这些超参数的影响。

3.5 微调2D backbone

【论文笔记】Video Transformer Network_第6张图片

微调2D backbone 使Kinetics-400数据集中top1的准确率提升了7%

3.6 与其他方法的比较

【论文笔记】Video Transformer Network_第7张图片

  • 与目前最先进的SlowFast模型相比,单层的ViT-B-VTN模型就几乎实现了相同的结果,但完成一个周期更快,所需的时间更少。**端到端训练累计快了16倍。**由于采用了完整的视频推理方法,验证墙运行时间也缩短了5倍。
  • 本文的方法达到79.8%的top-1精度,与未进行此类增强的训练的相同模型相比,提高了1.2%。
  • 增强训练需要10个以上的周期,但不会影响训练墙的运行时间。

4【补充知识】Longformer

论文地址:https://arxiv.org/abs/2004.05150

4.1 Longformer解决的问题

  • 问题

    传统Tranformer-based模型在处理长文本时有着天然的劣势。因为传统模型采用的是“全连接”型的attention机制,即每一个token都要与其他所有token进行交互。其attention复杂度高达 O ( n 2 ) O(n^{2}) O(n2)

    此前的解决办法是将长文切分为若干个较短的文本序列,然后逐个处理。这就导致不同的文本序列之间无法进行交互,因而必然存在大量信息损失。

    当然,我们也可以通过添加一些其他机制来加强这种文本序列之间的交互。但这种新增机制实现起来通常比较复杂,而且往往是特定任务的,通用性不强。

  • 解决方法

    Longformer改进了Transformer的传统attention机制:对于每一个token,只对固定窗口大小的附近token计算local attention,并结合具体任务,计算少量的global attention。该方法的优点包括:

    • 复杂度低,将attention机制的复杂度降至 O ( n ) O(n) O(n)

    • 通用性强,可用于各类文档级任务

    • 部署容易。

4.2 模型

作者共提出了三种新的attention pattern,来降低传统self-attention的复杂度,分别是滑窗机制膨胀滑窗机制融合全局信息的滑窗机制。下图展示了传统attention与这三种attention pattern的示意图。

【论文笔记】Video Transformer Network_第8张图片

  1. 滑窗机制(Sliding window): 对于每一个token,只对其附近的w个token计算attention计算复杂度与文本序列长度 n n n成线性关系,为 O ( w ∗ n ) O(w*n) O(wn)。作者认为,根据应用任务的不同可以对Transformer每一层施以不同的窗口大小 w w w,对模型表示能力可能有潜在帮助。
  2. 膨胀滑窗机制(Dilated sliding window): 在对每一个进行token编码时,普通滑窗机制只能考虑到长度为 w w w的上下文。作者进一步提出膨胀滑窗机制,在不增加计算负荷的前提下,拓宽模型“视场”。其做法借鉴了空洞卷积的思想。如下图所示,在滑动窗口中,被attend到的两个相邻token之间会存在大小为 d d d的间隙。当transformer的层数为 l l l时,则视场范围可达到 l ∗ d ∗ w l*d*w ldw。实验表明,由于考虑了更加全面的上下文信息,膨胀滑窗机制比普通的滑窗机制表现更佳。
  3. 融合全局信息的滑窗机制(Global+sliding window): 在Longformer中,作者希望能够根据具体任务的不同,在local attention的基础上添加少量的global attention。比如,在分类任务上就会在 [ C L S ] [CLS] [CLS] 处添加一个global attention,而在QA任务上会对question中的所有token添加global attention。如上图所示,对于添加了global attention的token,我们对其编码时要对整个序列做attention。并且,编码其他所有token时,也都要attend到它。

你可能感兴趣的:(transformer,深度学习,计算机视觉)