前言:

transformer在视频理解方向的应用主要有如下几种实现方式:Joint Space-Time Attention,Sparse Local Global Attention 和Axial Attention。这几种方式的共同点是采用ViT中的方式将图像进行分块,而它们之间的区别在于如何用self attention来处理这些块。

在本文提出了一种新的处理方式--Divided Space-Time Attention,在大规模行为分类数据集上,通过对以上几种方式与Divided Space-Time Attention的评估,作者发现使用Divided attention的方式是用于处理这些块的最好设计。

TimeSformer在几个主流的行为识别benchmarks上实现了SOTA结果,包括在Kinetics-400和Kinetics-600上取得最高准确度。此外,TimeSformer对比与其它模型训练速度更快,且有更高的测试效率。

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

代码:https://github.com/lucidrains/TimeSformer-pytorch

代码尚未完全开源,但模型已经放出来了。代码比较简单。

论文思路

视频理解与NLP有很多的相似的地方。首先,视频和语句都具有序列性;而且,一个字只能与语句中其它字联系才能理解,在视频行为中一个片段也需要与视频的上下文相关联。于是,我们期望NLP中这种long-range self-attention模型可以在视频模型中也有很高的表现。

在视频领域,2D或3D卷积是用来提取时空特征的主流操作,但卷积操作比较明显的一个问题是感受野是有限的,若要获得全局感受野,需要堆叠很多层卷积层,它们的信息传播路径比较长。而self-attention这种操作可以很轻松地获得全局感受野,捕获局部和长范围的依赖关系。

卷积操作的另一个问题是受到内存的限制,特别是视频领域,往往需要在高分辨率和长范围帧之间权衡。而最近几年一些研究者的工作指出Transformer可以比CNN获得更快的训练和推理,因此在同样计算量预算下,transformer可以使用更大学习容量。

标准的self-attention需要计算所有tokens相互之间的相似性,这样的做法就是计算量比较大,因此需要考虑如何利用self-attention来处理图像块。论文比较了这方面的几种处理方式,提出Divided attention的方式具有最好的表现。

在本文将主要介绍这几种方式。

一些细节

这几种方式的通用部分是将视频帧分成大小为PxP的块,每一帧可以分成N=HW/(P*P)块。

它们的区别就是以什么样的方式来选择哪些块放一起进行self-attention。

Space Attention是只对同一帧的所有块放一起进行self-attention。这种方式明显没有考虑不同帧之间的时序信息。

Joint Space-Time Attention是将图像的所有块都进行self-attention,这种方式最明显的问题是计算量太大。

Sparse Local Global Attention分为两步,选择局部区域的块进行self-attention提取局部信息,按一定的步长选择块进行self-attention提取全局信息,这种方式具有一定的稀疏性,特点就是计算量减少。

Axial Attention是分为三步,先对不同帧同位置的块进行time attention,再按横向和纵向分别选择同一帧中同一横和同一竖的块进行space attention。

本文提出的Divided Space-Time Attention分为两步,先对不同帧同位置的块进行time attention,再将同一帧中所有块进行space attention。

具体的示意图如下。

实验结论

这几种方式的参数量和准确度的对比。

本文来源于公众号CV技术指南的论文分享系列,更多内容请扫描文末二维码关注公众号。

最近把公众号(CV技术指南)所有的技术总结打包成了一个pdf,在公众号中回复关键字“技术总结”可获取。

CVPR2021| TimeSformer-视频理解的时空注意模型的更多相关文章

  1. 应用层级时空记忆模型(HTM)实现对实时异常流时序数据检测

    应用层级时空记忆模型(HTM)实现对实时异常流时序数据检测 Real-Time Anomaly Detection for Streaming Analytics Subutai Ahmad SAHM ...

  2. 理解 Word2Vec 之 Skip-Gram 模型

    理解 Word2Vec 之 Skip-Gram 模型 天雨粟 模型师傅 / 果粉 https://zhuanlan.zhihu.com/p/27234078 508 人赞同了该文章 注明:我发现知乎有 ...

  3. 理解 Spring 注解编程模型

    理解 Spring 注解编程模型 Spring 中有一个概念叫「元注解」(Meta-Annotation),通过元注解,实现注解的「派生性」,官方的说法是「Annotation Hierarchy」. ...

  4. 理解 Neutron Server 分层模型 - 每天5分钟玩转 OpenStack(69)

    本节开始讨论 Neutron 的各个服务组件,首先学习 Neutron Server . 上图是 Neutron Server 的分层结构,至上而下依次为: Core API对外提供管理 networ ...

  5. 深度理解Node.js单线程模型

    Node.js采用 事件驱动 和 异步I/O 的方式,实现了一个单线程.高并发的运行时环境,而单线程就意味着同一时间只能做一件事,那么Node.js如何利用单线程来实现高并发和异步I/O?本文将围绕这 ...

  6. 深入理解CSS系列(一):理解CSS的盒子模型

    接触前端也有好几个年头了,但是,讲实话,对于CSS的理解真的是不敢恭维,相信很多同行也有类似的感受吧!这是为什么呢?因为我们都认为CSS太简单了,没有必要深入学习,果真如此?其实,只不过是自己图样图森 ...

  7. 深入理解JVM一内存模型、可见性、指令重排序

    一.内存模型 首先我们思考一下一个java线程要向另外一个线程进行通信,应该怎么做,我们再把需求明确一点,一个java线程对一个变量的更新怎么通知到另外一个线程呢?我们知道java当中的实例对象.数组 ...

  8. 通过实例理解Java网络IO模型

    网络IO模型及分类 网络IO模型是一个经常被提到的问题,不同的书或者博客说法可能都不一样,所以没必要死抠字眼,关键在于理解. Socket连接 不管是什么模型,所使用的socket连接都是一样的. 以 ...

  9. 深入理解Java虚拟机内存模型

    前言 本文中部分内容引用至<深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)>第12章,如果有兴趣可自行深入阅读,文末放有书籍PDF版本连接. 一.物理机中的并发 物理机遇到的并 ...

随机推荐

  1. SHA算法摘要处理

    byte[] input="sha".getBytes();//待做消息摘要算法的原始信息,可以是任意字符串 MessageDigest sha=MessageDigest.get ...

  2. POJ_2452 Sticks Problem 【ST表 + 二分】

    一.题目 Sticks Problem 二.分析 对于$i$和$j$,并没有很好的方法能同时将他们两找到最优值,所以考虑固定左端点$i$. 固定左端点后,根据题意,$a[i]$是最小值,那么现在的问题 ...

  3. HDU_3359 Kind of a Blur 【浮点型高斯消元+BFS】

    一.题目 Kind of a Blur 二.分析 题目读起来挺费劲的. 主要就是要求一个矩阵,其中每个点及其于这个的曼哈顿距离小于D的点的值总和的平均值就是新生成的矩阵. 给定新生成的矩阵,求初始矩阵 ...

  4. 攻防世界 reverse 进阶 9-re1-100

    9.re1-100 1 if ( numRead ) 2 { 3 if ( childCheckDebugResult() ) 4 { 5 responseFalse(); 6 } 7 else if ...

  5. 阿里最强 Python 自动化工具开源了!

    1. 前言 大家好,我是安果! 最近,阿里内部开源了一个 iOS 端由 Python 编写的自动化工具,即:tidevice 它是一款跨平台的自动化开源工具,不依赖 Xcode 就可以启动 WebDr ...

  6. [Fundamental of Power Electronics]-PART II-8. 变换器传递函数-8.4 变换器传递函数的图形化构建

    8.4 变换器传递函数的图形化构建 第7章推导出的buck变换器小信号等效电路模型在图8.55中再次给出.让我们用上一节的图解方法来构造该变换器的传递函数和端阻抗. Fig. 8.55 Small-s ...

  7. Jenkins 实现Gitlab事件自动触发Jenkins构建及钉钉消息推送

    实现Gitlab事件自动触发Jenkins构建及钉钉消息推送 实践环境 GitLab Community Edition 12.6.4 Jenkins 2.284 Post build task 1. ...

  8. 201871030139-于泽浩 实验二 个人项目D{0-1} KP

    201871030139-于泽浩 实验二 个人项目D{0-1} KP 项目 内容 课程班级博客连接 2018级卓越班 这个作业要求连接 软件工程个人项目 我的课程学习目标 (1)掌握软件项目个人开发流 ...

  9. OO第三单元小结

    目录 JML理论基础 JML工具链 openjml使用 openjml总结 jmlunitng使用 代码分析 第一次作业 第二次作业 第三次作业 测试&bug分析 黑盒测试 白盒测试(Juni ...

  10. 黑马架构师v2.5.1 (codeUtil)使用注意事项

    资源 1.资料里的codeutil软件有问题,使用时部分类和接口文件名后有一串日期数字等.码云的没问题 2.生成代码后zookeeper的IP改为本机的