行为识别 - ViViT: A Video Vision Transformer

文章目录

    • 0. 前言
    • 1. 要解决什么问题
    • 2. 用了什么方法
    • 3. 效果如何
    • 4. 还存在什么问题&可借鉴之处

0. 前言

  • 相关资料:
    • arxiv
    • github(非官方实现,还没做完),官方版的说要发布但暂时还没有看到
    • 论文解读
  • 论文基本信息
    • 领域:行为识别
    • 作者单位:Google Research
    • 发表时间:2021.3
  • 一句话总结:提出了两种时空token构建方式以及3中时空transformer设计方式

1. 要解决什么问题

  • 如何使用纯 Transformer 实现视频分类。

2. 用了什么方法

  • 总体结构如下图所示,主要内容就是:
    • 如何构建时空token,即左侧灰色框
    • 如何设计Transformer结构。一共提出四种结构,第一种是最朴素的,后三种都是构建时间、空间的transformer/self-attention

行为识别 - ViViT: A Video Vision Transformer_第1张图片

  • 如何构建token?
    • 换句话说,如何将一个视频转换为一组序列,作为Transformer的输入。
    • 有两种方法,如下图所示
      • Uniform frame sampling:就是先提取帧,然后每一帧按照ViT的方法提取token,然后把不同帧的token拼接起来作为输入。
      • Tubelet embedding:前一种方法是提取2D图像特征,这种方法是提取立方体,假设每个tublet的shape是t, w, h,那就是说没t帧提取一次特征,取每一帧相同位置的w, hpatch组成输入

行为识别 - ViViT: A Video Vision Transformer_第2张图片

  • Transformer 结构的变种一
    • 直接将前面提取到的时空token作为transformer的属于,使用普通transformer结构得到最终结果。
    • 这个没啥好说的,就是最普通、最直接的方法。
  • Transformer 结构的变种二 - Factorised encoder
    • 使用两个 transformer
    • 第一个是 spatial transformer,输入是某一帧的多个token,输出一个token
    • 第二个是temporal transformer,输入是前一步多帧的token(每帧对应一个token),输出结果就通过mlp进行分类

行为识别 - ViViT: A Video Vision Transformer_第3张图片

  • Transformer 结构的变种三 - Factorised self-attention
    • 通过 self-attention 层将时空数据分开处理
    • 空间层只在同一帧内不同token间进行attention操作
    • 时间层对不同帧同一位置的token进行attention操作

行为识别 - ViViT: A Video Vision Transformer_第4张图片

  • Transformer 结构的变种四 - Factorised dot-product attention
    • 与变种三类似,只不过时间、空间heads是并行的,而不是串行的。
    • spatial还是同一帧内不同token,temporal是不同帧同一位置的token

行为识别 - ViViT: A Video Vision Transformer_第5张图片

  • 其他细节
    • PosEmbedding 是从同一帧 h*w 扩展为 t*h*w

3. 效果如何

  • 谷歌的论文,消融实验非常完善,具体详情可以看论文

    • 比较不同的token获取方式
    • 比较了不同变种的transformer
    • 比较了多种数据增强方式
    • 比较了不同输入数据尺寸
    • 比较了几类变种
    • 比较了不同的输入帧数
  • 最终模型结果

行为识别 - ViViT: A Video Vision Transformer_第6张图片

4. 还存在什么问题&可借鉴之处

  • 更像是实验报告吧,毕竟Video Transformer相关基本上就没有啥研究,就需要大佬们先采坑,这就是采坑论文。
  • 具体性能怎么样、调参怎么调,估计需要自己尝试一波。

你可能感兴趣的:(CV)