【视频理解】十五、TimeSformer☆


参考资料

论文

  Is Space-Time Attention All You Need for Video Understanding?

博客

  Facebook AI 提出 TimeSformer:完全基于 Transformer 的视频理解框架


第1章 引言

首先介绍CNN与Transformer的区别:

  1. 表达能力的区别:Transformer本身含有较少的限制性归纳性偏差,从而扩宽函数可表示的范围,不需要太多的归纳性先验信息,增强了模型的泛化能力
  2. CNN局部依赖的局限性:CNN的特点是局部建模,无法对感受野以外的依赖关系进行建模,从而也限制对长期依赖关系捕捉;
  3. 资源的消耗瓶颈:训练CNN模型需要消耗资源数目较多,最近的研究表明使用Transformer在相同的资源预算下,相比CNN会有更大的学习能力;

 在视频理解相关任务中,一般的操作就是使用3D卷积,对输入增加一维(时间维),然后将2D卷积直接拓展为3D卷积(相当卷积核也增加一维),这样的代价是计算量太大。当Transformer应用到图像领域(VIT论文)时,可以代替卷积操作对图像进行特征提取,主要操作就是把图像分成一个一个的小patch,每一个patch当作一个token作为输入,直接送到transformer做分类,效果也是不错。

 如果直接将VIT用于视频理解,那要怎么做呢,就是取多帧,把每一帧的图像都分成一个一个的小patch,之后也可以直接送入transformer,只不过是输入的patch多了几倍而已。从原理上来说这样是可行的,但是就如同3D卷积一样,这样的计算量也是难以接受的,特别是对于视频时间相对长一些的数据来说,需要提取的帧数也要随之增加。

TimeSformer 基于 Transformer 中的自注意力机制,使得它能够捕捉到整段视频中的时空依赖性。这个模型将输入的视频看做是从各个帧中提取的图像块(patch)的时空序列,以将 Transformer 应用于视频。这个使用的方式与 NLP 中的用法非常相似。NLP Transformer 是通过将每个词与句子中的所有词进行比较,来推断每个词的含义,这种方法叫做自注意力机制

TimeSformer 模型通过将每个图像块的语义与视频中的其它图像块进行比较,来获取每个图像块的语义,从而可以同时捕获到邻近的图像块之间的局部依赖关系,以及远距离图像块的全局依赖性。


第2章 主要方法

 这项工作基于图像模型 Vision Transformer(ViT),将自注意力机制从图像空间扩展到时空的 3D 空间,下图展示了不同的 attention 机制,其中 divided space-time attention(分开的时空注意力机制) 的效果最好:

  • time attention 中,每个图像块仅和其余帧在对应位置提取出的图像块进行 attention;
  • space attention 中,这个图像块仅和同一帧的提取出的图像块进行 attention;

作者发现,分开的时空注意力机制,效果要好于共同使用的时空注意力机制。

在这里插入图片描述

Fig 1. 视频自注意力模块

 这里假设我们对视频提取 3 3 3 帧,即 t − δ 、 t 、 t + δ t−δ、t、t+δ tδtt+δ ,每一帧分成 16 16 16 小块。第 t t t 帧中蓝颜色的块为 q u e r y query query 块,其余颜色块为与其进行attention的patch块,没有颜色的图像块没有被使用到。

这里图中只展示了三帧,但是作用时是作用在整个序列上的。

在这里插入图片描述

Fig 2. 不同注意力施加方式

 通过对输入图像进行分块,论文中一共研究了五种不同的注意力机制:

  1. 空间注意力机制(S:只取同一帧内的图像块进行自注意力机制,即:第 t t t 时刻其余图像块参与 q u e r y query query 块的计算,即只考虑每一帧自身,不考虑时序性,即第 t t t 帧与 t + δ t+δ t+δ t − δ t−δ tδ 没有联系;
  2. 时空共同注意力机制(ST:取所有帧中的所有图像块进行注意力机制,即:三帧中所有图像块(除去 q u e r y query query 块)均参与 q u e r y query query 块进行计算,这样明显计算量大了很多。
  3. 分开的时空注意力机制(T+S:先对同一帧中的所有图像块进行自注意力机制,然后对不同帧中对应位置的图像块进行注意力机制,即:其一为 Space Attention ,第 t t t 时刻其余图像块参与 q u e r y query query 块的计算;其二为 Time attention ,第 t t t 时刻的 q u e r y query query 和 其余时刻对应位置的图像块计算。
  4. 稀疏局部全局注意力机制(L+G:先利用所有帧中,相邻的 H 2 \frac{H}{2} 2H W 2 \frac{W}{2} 2W 的图像块计算局部的注意力,然后在空间上,使用 2 2 2 个图像块的步长,在整个序列中计算自注意力机制,这个可以看做全局的时空注意力更快的近似。
  5. 轴向的注意力机制(T+W+H:先在时间维度上进行自注意力机制,然后在纵坐标相同的图像块上进行自注意力机制,最后在横坐标相同的图像块上进行自注意力机制;

 作者给出了几种不同方式的效果。作者发现 divided space-time attention(分开的时空注意力机制) 效果最好,既考虑了时空性,计算开销也能接受。

在这里插入图片描述


第3章 实验

3.1 图像大小和视频长度的影响

当每一个图像块的大小不变时,图像越大,图像块的个数越多。同时,帧数越多,输入注意力机制的数据也越多。作者也研究了这些对于最终性能的影响,结果是随着输入信息更加丰富,带来的效果提升是非常明显的。

 这里由于显存的限制,没有办法测试 96 帧以上的视频片段。作者说,这已经是一个很大的提升了, 因为目前的卷积模型,输入一般都被限制在 8-32 帧。

在这里插入图片描述


3.2 预训练和数据集规模的重要性

 因为这个模型需要非常大的数据才能够训练,作者有尝试自己从头训练,但是都失败了,因此在论文中报告的所有结果,都使用了 ImageNet 进行预训练。

在这里插入图片描述

 为了研究数据集的规模的影响,使用了两个数据集,实验中,分四组,分别使用25%,50%,75%和100%的数据。结果是 TimeSformer 当数据比较少的时候表现不太好,数据多的时候表现好


3.3 与 SOTA 比较

在本节中使用了三个模型的变种:

  1. TimeSformer :输入 8*224*224,8为帧数
  2. TimeSformer-HR:空间清晰度比较高,输入为 16*448*448
  3. TimeSformer-L:时间范围比较广,输入为 96*224*224

在 K400 数据集上视频分类的结果,达到了SOTA。

在这里插入图片描述

K600数据集上的结果,达到了 SOTA。

在这里插入图片描述


3.4 视频中的长期建模

 作者还验证了所提模型相比于 CNN 来说,对于长期视频建模的优势。这一步使用了 HowTo100M 数据集。

 其中,Input Frames 代表输入模型的帧数,Single Clip Coverage 代表输入的一段视频覆盖了多久的视频,Test Clips 代表预测阶段,需要将输入视频裁剪几段才能输入进网络。可以看到,当TimeSformer 输入96帧时,能够有效利用视频中长期依赖的信息,达到了最好的效果

在这里插入图片描述


第4章 Pytorch实现TimeSformer

参考代码

  lucidrains/TimeSformer-pytorch


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

travellerss

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值