达摩院快速动作识别TPS ECCV论文深入解读

news/2024/4/30 2:58:37/文章来源:https://blog.csdn.net/sunbaigui/article/details/128080081

一、论文&代码

论文:https://www.ecva.net/papers/eccv_2022/papers_ECCV/papers/136630615.pdf

模型&代码:ModelScope 魔搭社区

二、背景

高效的时空建模(Spatiotemporal modeling)是视频理解和动作识别的核心问题。相较于图像的Transformer网络,视频由于增加了时间维度,如果将Transformer中的自注意力机制(Self-Attention)简单扩展到时空维度,将会导致时空自注意力高昂的计算复杂度和空间复杂度。许多工作尝试对时空自注意力进行分解,例如ViViT和Timesformer。这些方法虽然减小了计算复杂度,但会引入额外的参数量。本文提出了一种简单高效的时空自注意力Transformer,在对比2D Transformer网络不增加计算量和参数量情况下,实现了时空自注意力机制。并且在Sthv1&Sthv2, Kinetics400, Diving48取得了很好的性能。文章已被ECCV 2022录用。

三、方法

视觉Transofrmer通常将图像分割为不重叠的块(patch),patch之间通过自注意力机制(Self-Attention)进行特征聚合,patch内部通过全连接层(FFN)进行特征映射。每个Transformer block中,包含Self-Attention和FFN,通过堆叠Transformer block的方式达到学习图像特征的目的

在视频动作识别领域,输入的数据是连续采样的多帧图像(常用8帧、16帧、32帧等)学习视频的时空特征,不仅要学习单帧图像的空间视觉特征,更要建模帧之间的时域特征。本文提出一种基于视觉transformer的高效时空特征学习算法,具体来说,我们通过将patch按照一定的规则进行移动(patch shift),把当前帧中的一部分patch移动到其他帧,同时其他帧也会有一部分patch移动到当前帧。经过patch移动之后,对每一帧图像的patch分别做Self-Attention,这一步学习的特征就同时包含了时空特征。具体思想可以由下图所示:

在常用的2D图像视觉Transformer网络结构上,将上述patch shift操作插入到self-attention操作之前即可,无需额外操作,下图是patch shift transformer block,相比其他视频transformer的结构,我们的操作不增加额外的计算量,仅需进行内存数据移动操作即可。对于patch shift的移动规则,我们提出几种设计原则:1. 不同帧的块尽可能均匀地分布。2.合适的时域感受野。3.保持一定的移动块比例。具体的分析,读者可以参考正文。

我们对通道移动(Channel shift) 与 块移动(patch shift)进行了详尽的分析和讨论,这两种方法的可视化如下:

通道移动(Channel shift) 与 块移动(patch shift)都使用了shift操作,但channel shift是通过移动所有patch的部分channel的特征来实现时域特征的建模,而patch shift是通过移动部分patch的全部channel与Self-attention来实现时域特征的学习。可以认为channel shift的时空建模在空域是稠密的,但在channel上是稀疏的。而patch shift在空域稀疏,在channel上是稠密的。因此两种方法具有一定的互补性。基于此,我们提出交替循环使用 patchshift和channel shift。网络结构如下图所示:

四、实验结果

1. 消融实验

2. 与SOTA方法进行对比

3. 运行速度

可以看到,PST的实际推理速度和2D的Swin网络接近,但具有时空建模能力,性能显著优于2D Swin。和Video-Swin网络相比,则具有明显的速度和显存优势

4. 可视化结果

图中从上到下依次为Kinetics400, Diving48, Sthv1的可视化效果。PST通过学习关联区域的相关性,并且特征图能够反映出视频当中动作的轨迹。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_228018.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开源共建 | TIS整合数据同步工具ChunJun,携手完善开源生态

TIS整合ChunJun实操 B站视频: https://www.bilibili.com/video/BV1QM411z7w5/?spm_id_from333.999.0.0 一、ChunJun 概述 ChunJun是一款易用、稳定、高效的批流统一的数据集成框架,可基于实时计算引擎Flink实现多种异构数据源之间的数据同步与计算&…

flink学习

Flink学习之路(一)Flink简介 - 走看看 Flink(一)-基本概念 - 知乎 Flink架构: Flink整个系统包含三个部分: 1、Client: 给用户提供向Flink系统提交用户任务(流式作业)的能力。用户提交一个F…

全球无人驾驶大洗牌,百度Apollo Day宣告Robotaxi进入2.0时代

作者 | 德新 编辑 | 王博1. 全球无人驾驶大洗牌,Robotaxi越发向头部聚集 全球无人驾驶落地正呈现两幅面孔。随着资本热潮褪去,一部分公司在资金和研发上已经难以为继,Robotaxi落地的资源和希望,正无限向头部公司聚集。 10月&#…

OVS DPDK VXLAN隧道处理

在学习OVS VXLAN实现之前,我们先回顾一下传统VTEP设备是如何处理VXLAN报文的。如下图所示: vxlan报文进入交换机端口后,根据报文头部信息进行vxlan隧道终结。隧道终结后,根据underlay信息进行overlay映射,得到overlay的…

鲲鹏devkit性能分析工具介绍(四)

鲲鹏devkit性能分析工具介绍(四) 前面我们已经介绍了鲲鹏devkit性能分析工具的全景分析、热点函数分析、进程/线程分析、微架构分析、和访存分析,由此可见进行性能调优绝对不能够仅仅去进行一方面的考察而是需要全方面的数据分析进行一定的舍…

8、多进程之间的通信

多进程之间的常用通信方法有两种,及Queue和Pipe 一、Queue Queue([maxsize]):创建共享的进程队列。maxsize是队列中允许的最大项数。如果省略此参数,则无大小限制。底层队列使用管道和锁定实现。另外,还需要运行支持线程以便队列中…

[附源码]计算机毕业设计springboot基于Web的软考题库平台

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

[论文阅读] Curriculum Semi-supervised Segmentation

[论文地址] [代码] [MICCAI 19] Abstract 本研究调查了半监督CNN分割的课程式策略,它设计了一个回归网络来学习图像级信息,如目标区域的大小。这些回归被用来有效地规范分割网络,约束未标记图像的softmax预测,使其与推断的标签分…

16-JavaSE基础巩固项目:拼图小游戏

阶段项目-拼图小游戏 一、项目介绍 1、目的 锻炼逻辑思维能力,让我们知道前面学习的知识点在实际开发中的应用场景。 1、为了学习一个新知识:GUI GUI全称:Graphical User Interface(又称图形用户接口)是指采用图形化…

【Android进阶之旅】内存泄漏的危害有哪些?(案例分析)

随着计算机应用需求的日益增加,应用程序的设计与开发也相应的日趋复杂; 开发人员在程序实现的过程中处理的变量也大量增加,如何有效进行内存分配和释放,防止内存泄漏的问题变得越来越突出 例如: 服务器应用软件&#x…

Redis 内存淘汰和过期删除策略

提起使用Redis的优点,大家可以列举出许多,比如:数据存储在内存,读写速度快,性能优异。比如数据持久化,便于数据备份及恢复等等。 分布式服务系统平台发展至今,Redis活跃在平台的各个领域&#…

RabbitMQ事务消息

通过对信道的设置实现 channel.txSelect();通知服务器开启事务模式;服务端会返回Tx.Select-Ok channel.basicPublish;发送消息,可以是多条,可以是消费消息提交ackchannel.txCommit() ;提交事务;…

mmdetection3d SUN RGB-D数据集预处理

SUN RGB-D是普林斯顿大学发布的一种关于室内场景理解的数据集,共包含了10335个样本,其中训练样本和验证测试样本数量分别为5285和5050。每个样本包含了彩色图像(RGB)和深度(D)信息,并且分别进行…

基于BDD的接口自动化框架开箱即用

1、背景说明 项目思想:BDD 行为驱动开发的思想褒贬不一,这里不多说。遵循的宗旨能解决业务痛点的思想就是好思想。 接口测试工具在实际的业务测试场景中往往会遇到一些使用上的局限性,自定义扩展要求技术较高,如果二次开发工具…

小程序瀑布流实现

什么是瀑布流布局 瀑布流布局,一般等宽,不等高的列表排列 原理是找出高度之和最小的那一列,在高度最小列继续添加元素 可以通过 absolute 定位实现,动态计算每一项的 top 和 left 封装瀑布流方法 function getAllRect(context…

[附源码]Python计算机毕业设计Django的疫苗接种管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

c#、wpf开发中页面在win10下被缩放125%引起页面错乱的解决办法。

正常情况下,我们开发的页面页面应该是100%缩放的,这样程序在win7和win10下保持一致,但是win10里面会根据显示器的情况自动调整“缩放与布局”,这使得桌面程序有时候会发生页面错乱,怎么调整就是个问题。 如图:在“缩放与布局”100%显示如下: 而在 “缩放与布局”125%显…

基于AD Event日志检测LSASS凭证窃取攻击

01、简介 简单介绍一下,LSASS(本地安全机构子系统服务)在本地或域中登录Windows时,用户生成的各种凭证将会存储在LSASS进程的内存中,以便用户不必每次访问系统时重新登录。 攻击者在获得起始攻击点后,需要获取目标主机上的相关凭证…

小程序中的confirm-type设置键盘的确认按钮

详情: confirm-type是很多小程序组件中的一种设置,用于改变输入键盘右下角的确认按钮。比如说,正常情况下,键盘上的默认提示可能是完成,但是你可以通过confirm-type将其设置为发送,搜索等,在特…

搬砖日记:关于sync用不了的问题

自己封装了个输入框的组件&#xff0c;想要实现的输入框的值的修改可以实时修改到父组件的值 印象中看到过人家用.sync修饰符去实现这个功能&#xff0c;大抵是 //父组件 <searchInput :value.sync"value"></searchInput> //子组件 <input v-model&qu…