前言:

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. 生成元(JAVA语言)

    package 第三章; import java.util.Scanner; public class 生成元 { public static void main(String[] args) { / ...

  2. Prometheus时序数据库-报警的计算

    Prometheus时序数据库-报警的计算 在前面的文章中,笔者详细的阐述了Prometheus的数据插入存储查询等过程.但作为一个监控神器,报警计算功能是必不可少的.自然的Prometheus也提供 ...

  3. java例题_13 加上100再加上168的完全平方数问题

    1 /*13 [程序 13 根据条件求数字] 2 题目:一个整数,它加上 100 后是一个完全平方数,再加上 268 又是一个完全平方数,请问该数是多少? 3 程序分析:在 10万以内判断,先将该数加 ...

  4. Egress-Assess-出口数据安全功能测试

    简介 Egress-Assess是一款用于测试出口数据检测功能的工具,该工具可辅助完成数据安全模型测试. 在各种情况下,我们的团队都会尝试从我们正在运行的网络中提取数据,并将其移至另一个位置以进行脱机 ...

  5. 201871030116-李小龙 实验一 软件工程准备——Blog

    项目 内容 课程班级博客链接 https://edu.cnblogs.com/campus/xbsf/2018CST 这个作业要求链接 https://www.cnblogs.com/nwnu-dai ...

  6. 201871030112-贾傲羊 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告

    项目 内容 课程班级博客链接 课程班级博客链接 这个作业要求链接 作业要求链接 我的课程学习目标 学习PSP流程并运用于结对项目:学习GitHub代码的管理;学习结对编程的流程与内容 这个作业在哪些方 ...

  7. dubbo负载均衡策略和集群容错策略都有哪些?动态代理策略呢?

    (1)dubbo负载均衡策略 1)random loadbalance 默认情况下,dubbo是random load balance随机调用实现负载均衡,可以对provider不同实例设置不同的权重 ...

  8. 太全了!Redis主从复制原理以及常见问题总结

    相信很多小伙伴都已经配置过主从复制,但是对于redis主从复制的工作流程和常见问题很多都没有深入的了解.这次给大家整理一份redis主从复制的全部知识点. 下方可视频观看,效果更佳 Redis实战精讲 ...

  9. F - Lakes in Berland(BFS)

    The map of Berland is a rectangle of the size n × m, which consists of cells of size 1 × 1. Each cel ...

  10. 【DB宝50】Oracle异构平台迁移之完全可传输导出导入(Full Transportable Export & Import)

    目录 一.简介 1.1.使用场景 1.2.限制条件 二.完全可传输操作步骤 三.案例演示 3.1.环境 3.2.源库操作 3.2.1.将需要传输的用户表空间设置为RO状态 3.2.2.使用Data P ...