STM: SpatioTemporal and Motion Encoding for Action Recognition 论文阅读

STM: SpatioTemporal and Motion Encoding for Action Recognition 论文阅读

  • Abstract
  • 1. Introduction
  • 2. Related Works
  • 3. Approach
    • 3.1. Channel-wise SpatioTemporal Module
    • 3.2. Channel-wise Motion Module
    • 3.3. STM Network
  • 4. Experiments
  • 5. Conclusion

文章信息:
在这里插入图片描述

原文链接:https://arxiv.org/abs/1908.02486

无源码

发表于:ICCV 2019

Abstract

我们知道,时空和运动特征是视频动作识别中两种互补且至关重要的信息。最近的最新方法采用了一个3D CNN流来学习时空特征,并采用另一个流来学习运动特征。在这项工作中,我们旨在在一个统一的2D框架中有效地编码这两种特征。为此,我们首先提出了一个STM块,其中包含一个通道级时空模块(CSTM)来表示时空特征,以及一个通道级运动模块(CMM)来有效地编码运动特征。然后,我们将ResNet架构中的原始残差块替换为STM块,通过引入非常有限的额外计算成本,形成了一个简单但有效的STM网络。大量实验证明,提出的STM网络在时空相关数据集(即Something-Something v1和v2以及Jester)和场景相关数据集(即Kinetics400、UCF-101和HMDB-51)上胜过了最先进的方法,这得益于将时空和运动特征一起编码。

在这里插入图片描述
图1. STM块的特征可视化。第一行是输入帧。第二行是Conv2 1块的输入特征图。第三行是CSTM的输出时空特征图。第四行是CMM的输出运动特征图。最后一行是通过TV-L1提取的光流。

1. Introduction

随着云计算和边缘计算的快速发展,我们习惯于参与社交平台并生活在摄像头下。与此同时,各行各业,如安全和交通,收集了大量包含丰富信息的视频,涵盖了人们的行为、交通等各个方面。大量的视频信息吸引了越来越多的研究人员涉足视频理解领域。视频理解的第一步是动作识别,旨在识别视频中的人类动作。动作识别中最重要的特征是时空和运动特征,前者编码了不同时间戳之间的空间特征关系,而后者呈现了相邻帧之间的运动特征。

现有的动作识别方法可以总结为两类。第一种类型是基于双流神经网络的方法,包括一个RGB流,其输入为RGB帧,以及一个光流流,其输入为光流。空间流模型化外观特征(而不是时空特征),而不考虑时间信息。光流流通常被称为时间流,旨在建模时间线索。然而,我们认为将光流流称为时间流是不准确的,因为光流仅表示相邻帧之间的运动特征,而其结构几乎与具有2D CNN的空间流相同。因此,这种光流流缺乏捕捉长距离时间关系的能力。此外,光流的提取在时间和空间上都很昂贵,这限制了其在现实世界中的广泛工业应用。

另一种类别是基于3D卷积网络(3D CNNs)的方法,旨在捕捉时空特征。3D卷积能够同时表示时空特征和空间特征,得益于扩展的时间维度。通过堆叠3D卷积,3D CNN能够捕捉长距离的时间关系。最近,由于发布了大规模视频数据集(如Kinetics),对这种框架的优化变得流行起来。通过在大规模视频数据集上进行预训练,基于3D CNN的方法已经实现了比基于2D CNN的方法更优越的性能。然而,尽管3D CNN可以直接从RGB输入中建模时空信息,许多方法仍然将独立的光流动作流集成到其中,以进一步利用运动特征来提高性能。因此,这两种特征在动作识别中是互补的。然而,将卷积核从2D扩展到3D以及采用双流结构必然会将计算成本增加一个数量级,这限制了其真实应用。

受到上述观察的启发,我们提出了一种简单而有效的方法,称为STM网络,将时空和运动特征集成到统一的2D CNN框架中,而无需任何3D卷积和光流预计算。给定输入特征图,我们采用一个通道级时空模块(CSTM)来表示时空特征,并采用一个通道级运动模块(CMM)来编码运动特征。我们还插入了一个恒等映射路径,将它们组合成一个名为STM块的模块。STM块可以很容易地插入到现有的ResNet架构中,通过替换原始残差块来形成带有可忽略额外参数的STM网络。如图1所示,我们用CSTM和CMM特征可视化了我们的STM块。CSTM已经学习到了时空特征,与原始输入特征相比,更加关注动作交互的主要对象部分。至于CMM,它捕捉到了与光流类似的明显边缘的运动特征。我们工作的主要贡献可以总结如下:

  • 我们提出了一个通道级时空模块(CSTM)和一个通道级运动模块(CMM),在统一的2D CNN框架中编码互补的时空和运动特征。
  • 我们提出了一种简单而有效的网络,称为STM网络,通过引入非常有限的额外计算成本,可以将我们的STM块插入到现有的ResNet架构中。
  • 大量实验证明,通过将时空和运动特征整合在一起,我们的方法在包括Something-Something、Kinetics、Jester、UCF101和HMDB-51等几个公共基准数据集上优于最先进的方法。

2. Related Works

随着深度卷积网络在计算机视觉领域取得巨大成功,大量基于CNN的方法已被提出用于动作识别,并逐渐超越了传统方法的性能。一系列进展采用2D CNN作为骨干,并通过简单地聚合逐帧预测来对视频进行分类。然而,这些方法仅独立地对每帧的外观特征建模,而忽略了帧间的动态关系,导致在识别与时间相关的视频时性能较差。为了解决上述缺点,引入了基于双流的方法,通过使用两个网络分别建模外观和动态,并在中间或最后融合两个流。在这些方法中,Simonyan等人首次提出了具有空间和时间网络的双流ConvNet架构。Temporal Segment Networks(TSN)提出了一种稀疏的时间采样策略,用于双流结构,并通过加权平均在最后融合两个流。Feichtenhofer等人研究了两个流中间的融合策略,以获取时空特征。然而,这些类型的方法主要存在两个限制。首先,这些方法需要预先计算光流,这在时间和空间上都很昂贵。其次,从多个段获得的学习特征和最终预测仅使用加权或平均求和进行简单融合,使其不如建模时空关系。

另一类方法尝试直接从RGB帧中使用3D CNN学习时空特征。C3D是第一个使用深度3D CNN学习时空特征的工作。然而,由于需要优化的参数庞大,并且缺乏高质量的大规模数据集,C3D的性能仍然不理想。I3D将ImageNet预训练的2D核扩展到3D,以捕获时空特征,并使用另一个光流流来建模运动特征。在高质量的大规模Kinetics数据集和双流设置的帮助下,I3D在基准数据集上取得了非常有竞争力的性能。由于3D CNN尝试沿着输入通道学习局部相关性,STCNet将其STC块插入到3D ResNet中,以在整个网络层中捕获空间通道和时间通道的相关信息。Slowfast涉及慢路径来捕获空间语义,快速路径来以细粒度的时间分辨率捕获运动。尽管基于3D CNN的方法已经达到了最先进的性能,但它们仍然面临着巨大的计算压力,使其难以在现实世界的应用中部署。

为了处理3D CNN的高计算量,提出了几种方法来在精度和速度之间找到平衡。Tran等人和Xie等人讨论了几种时空卷积的形式,包括在早期层使用3D卷积和在更深层使用2D卷积(底层重)或颠倒组合(顶层重)。P3D和R(2+1)D尝试通过将其分解为2D空间卷积和1D时间卷积来减少3D卷积的成本。TSM进一步引入了沿时间维度移动部分通道的时间卷积。我们提出的CSTM分支在学习时空特征方面与这些方法类似,但我们采用通道级1D卷积来捕获不同通道的不同时间关系。虽然这些方法在平衡3D CNN的高计算量方面取得了成功,但它们不可避免地需要双流网络的帮助,其中包括光流流以获得最佳性能。运动信息是视频识别与图像识别任务之间的关键差异。然而,使用TV-L1方法计算光流在时间和空间上都很昂贵。最近,已经提出了许多方法来使用CNN估计光流或探索光流的替代方法。TSN框架涉及两帧之间的RGB差异来表示视频中的运动。赵等人使用成本体积处理来建模显著运动。光流引导特征(OFF)包含一组操作符,包括Sobel和逐元素减法用于OFF生成。MFNet采用了五个固定的运动滤波器作为运动块,以找到两个相邻时间步之间的特征级时间特征。我们提出的CMM分支也旨在找到更好但更轻量级的替代运动表示。主要区别在于我们学习不同的运动特征,为每两个相邻的时间步长的不同通道。

3. Approach

在本节中,我们将介绍我们方法的技术细节。首先,我们将描述提出的CSTM和CMM,展示如何分别进行通道级时空融合和提取特征级别的运动信息。随后,我们将展示这两个模块的组合,将它们组装成一个构建模块,可以插入到现有的ResNet架构中,形成我们的STM网络。

在这里插入图片描述

图2. 通道级时空模块和通道级运动模块的架构。特征图显示为其张量的形状。“ ⊖ \ominus ”表示逐元素减法。

3.1. Channel-wise SpatioTemporal Module

CSTM旨在进行高效的空间和时间建模。通过引入非常有限的额外计算成本,CSTM提取丰富的时空特征,可以显著提升与时间相关的动作识别性能。如图2(a)所示,给定一个输入特征图 F ∈ R N × T × C × H × W \mathbf{F}\in\mathbb{R}^{N\times T\times C\times H\times W} FRN×T×C×H×W,我们首先将F重新塑形为: F → F ∗ ∈ R N H W × C × T F\to F^{* }\in \mathbb{R} ^{NHW\times C\times T} FFRNHW×C×T,然后在 T T T维上应用通道级1D卷积来融合时间信息。采用通道级卷积而不是普通卷积有两个主要优势。首先,对于特征图 F ∗ \mathbf{F}^{*} F,不同通道的语义信息通常是不同的。我们认为不同通道的时间信息的组合应该是不同的。因此,采用通道级卷积来为每个通道学习独立的卷积核。其次,与普通卷积相比,计算成本可以减少一个因子 G G G,其中 G G G是组数。在我们的设置中, G G G等于输入通道的数量。形式上,通道级时间融合操作可以被表述为:
在这里插入图片描述
其中 K i c \mathbf{K}_i^c Kic是属于通道 c c c的时间组合核权重, i i i是时间核的索引, F c , t + i ∗ \mathbf{F}_{c,t+i}^* Fc,t+i是输入特征序列, G c , t \mathbf{G}_{c,t} Gc,t是通道级时间融合特征的更新版本。这里时间核的大小设置为3,因此 i ∈ [ − 1 , 1 ] i\in [-1, 1] i[1,1]。接下来,我们将G重塑为原始输入形状(即 [ N , T , C , H , W ] [N,T,C,H,W] [N,T,C,H,W]),并通过2D卷积来建模局部空间信息,其卷积核大小为3x3。

我们可视化了CSTM的输出特征图,以帮助理解这个模块,如图1所示。将第二行的特征与第三行的特征进行对比,我们可以发现CSTM已经学习到了更加关注动作主要部分的时空特征,比如第一列中的手部,而背景特征较弱。

3.2. Channel-wise Motion Module

正如在[29, 2]中发现的那样,除了3D CNN直接从RGB流中学习的时空特征外,通过包含光流运动流,性能仍然可以大大提高。因此,除了CSTM,我们提出了一个轻量级的通道级运动模块(CMM),用于提取相邻帧之间的特征级别运动模式。请注意,我们的目标是找到一种能够以高效方式识别动作的运动表示,而不是两个帧之间的精确运动信息(光流)。因此,我们将只使用RGB帧,不涉及任何预计算的光流。

给定输入特征图 F ∈ R N × T × C × H × W \mathbf{F}\in\mathbb{R}^{N\times T\times C\times H\times W} FRN×T×C×H×W,我们首先利用一个1x1卷积层将空间通道减少 r r r倍,以减轻计算成本,在我们的实验中设置为16。然后,我们从每两个连续的特征图生成特征级别的运动信息。以 F t \mathbf{F}_t Ft F t + 1 \mathbf{F}_{t+1} Ft+1为例,我们首先对 F t + 1 F_{t+1} Ft+1应用2D通道级卷积,然后从 F t \mathbf{F}_t Ft中减去以获得近似的运动表示 H t \mathbf{H}_t Ht
在这里插入图片描述

其中 c , t , h , w c,t,h,w c,t,h,w分别表示特征图的空间、时间通道和两个空间维度, K i , j c \mathbf{K}_{i,j}^c Ki,jc表示第 c c c个运动滤波器,下标 i , j i,j i,j表示核的空间索引。这里核大小设置为 3 × 3 3\times3 3×3,因此 i , j ∈ [ − 1 , 1 ] i,j\in[-1,1] i,j[1,1]

如图2(b)所示,我们对每两个相邻的特征图在时间维度上执行提出的CMM,即 F t \mathbf{F}_t Ft F t + 1 \mathbf{F}_{t+1} Ft+1 F t + 1 \mathbf{F}_{t+1} Ft+1 F t + 2 \mathbf{F}_{t+2} Ft+2等。因此,CMM将产生 T − 1 T-1 T1个运动表示。为了保持时间尺寸与输入特征图兼容,我们简单地使用零来表示最后一个时间步的运动信息,然后在时间维度上将它们串联在一起。最后,另一个1x1的2D卷积层被应用来将通道数恢复为 C C C

我们发现,即使设计非常简单,提出的CMM也可以提升整个模型的性能,这证明了通过CMM获取的运动特征是对CSTM中的时空特征的补充。我们在图1中可视化了CMM学习到的运动特征。从中我们可以看到,与CSTM的输出相比,CMM能够捕捉到具有明显边缘的运动特征,就像光流一样。

3.3. STM Network

在这里插入图片描述

图3. STM网络的整体架构。首先将输入视频均匀分成N个段,然后从每个段中采样一个帧。我们采用2D ResNet-50作为骨干网络,并用STM块替换所有残差块。除了最后的得分融合阶段外,不执行任何时间维度的降维。

为了保持框架的有效性和轻量级,我们将提出的CSTM和CMM组合在一起,构建一个STM块,可以同时编码时空和运动特征,并且可以轻松插入到现有的ResNet架构中。STM块的整体设计如图3的下半部分所示。在这个STM块中,第一个1x1的2D卷积层负责减少通道维度。然后,压缩后的特征图分别通过CSTM和CMM来提取时空和运动特征。通常有两种不同类型信息的聚合方式:求和和串联。我们通过实验发现,求和比串联更有效地融合这两个模块。因此,在CSTM和CMM之后应用了一个逐元素求和操作来聚合信息。然后,另一个1x1的2D卷积层被应用来恢复通道维度。类似于普通的残差块,我们还从输入到输出添加了一个无参数的恒等快捷连接。

由于提出的STM块与普通的残差块兼容,我们可以简单地将其插入到任何现有的ResNet架构中,以形成我们的STM网络,而且额外的计算成本非常有限。我们在图3的上半部分说明了STM网络的整体架构。STM网络是一个2D卷积网络,避免了任何3D卷积和预先计算光流。除非另有说明,否则我们选择2D ResNet-50作为我们的骨干网络,因为它在准确性和速度之间有一个平衡。我们用提出的STM块替换了所有的残差块。

4. Experiments

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5. Conclusion

在本文中,我们提出了一种简单而有效的网络,通过在统一的2D CNN网络中将时空和运动特征编码在一起来进行动作识别。我们将ResNet架构中的原始残差块替换为STM块,以构建STM网络。一个STM块包含一个CSTM来建模通道级时空特征,以及一个CMM来共同建模通道级运动表示。在没有任何3D卷积和预计算光流的情况下,我们的STM在时空相关数据集和场景相关数据集上取得了最先进的结果,与TSN基线相比,仅增加了1.2%的FLOPs。

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

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

相关文章

3.使用uView让tabbar更优雅

文章目录 1. 使用uView让tabbar更优雅1.1. 怎么才优雅?1.2. uView的tabbar合适吗?1.3. 引入项目过程1.3.1. 修改pages.json1.3.2. 把demo里面的pages先拷贝过来1.3.3. 引入tabbar的图片1.3.4. 运行 1.4. 我们自己的项目适配 1. 使用uView让tabbar更优雅 …

深入浅出:ConcurrentLinkedQueue源码分析与实战

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一…

【适用全主题】WordPress原创插件:弹窗通知插件 支持内容自定义

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 适用于所有WordPress主题的弹窗插件 一款WordPress原创插件:弹窗通知插件 支持内容自定义 二、效果展示 1.部分代码 代码如下(示例)&#xff1…

4.uniapp+vue3项目使用vuex

文章目录 1. uniappvue3项目使用vuex1.1. main.js引入store1.2. 创建store/index.js1.3. 项目中引用1.4. 开始解决实际问题1.5. vuex和storage的区别 1. uniappvue3项目使用vuex 这篇文章,既是使用的教程,也是用来解决一个实际问题:uView自定…

Python爬虫入门:网络世界的宝藏猎人

今天阿佑将带你踏上Python的肩膀,成为一名网络世界的宝藏猎人! 文章目录 1. 引言1.1 简述Python在爬虫领域的地位1.2 阐明学习网络基础对爬虫的重要性 2. 背景介绍2.1 Python语言的流行与适用场景2.2 网络通信基础概念及其在数据抓取中的角色 3. Python基…

Java面试八股之String s = “String“;和String s = new String(“String“);有什么区别

Java中String s "String";和String s new String("String");有什么区别 字符串字面量("String"): 常量池:使用字面量方式创建字符串时,Java虚拟机(JVM)会在运…

WWW服务器搭建(1)——HTTP协议原理篇

目录 一、WWW的相关概念 1.1 WWW的定义 1.2 超文本标记语言HTML 1.3 统一资源定位符URL 1.4 超文本传输协议HTTP 二、HTTP协议工作过程 2.1 DNS解析 2.2 TCP连接过程 2.3 HTTP 请求与响应 2.4 TCP连接断开 三、HTTP请求报文格式 3.1 请求行 3.2 请求头 3.3 空行 …

全国防灾减灾日主题活动投稿我可算找对了投稿方法

作为一名社区公众人员,我深知对外信息宣传的重要性。特别是在全国防灾减灾日这样的特殊时刻,我们不仅要向居民普及防灾减灾知识,还要通过媒体将社区的活动和成果展示给更多人。然而,在投稿的过程中,我最初却遭遇了诸多挑战。 起初,我采用传统的邮箱投稿方式,将精心撰写的稿件发…

【JavaWeb】网上蛋糕商城后台-客户管理

概念 上文中已讲解和实现了后台管理系统中的订单管理功能,本文讲解客户信息管理功能。 客户信息列表 在后台管理系统的head.jsp头部页面中点击“客户管理”向服务器发送请求 在servlet包中创建AdminUserListServlet类接收浏览器的请求 package servlet;import m…

特征提取与深度神经网络(二)

关键点/角点检测 2011论文-ORB关键点检测,比SIFT与SURF速度更快。 ORB算法可以看出两个部分组成:快速关键点定位BRIEF描述子生成 Fast关键点检测: 选择当前像素点P,阈值T,周围16个像素点,超过连续N12个像素…

Vue 局部布局 Layout 内部布局 [el-row]、[el-col]

之前的布局容器是一个整体的框架,layout里面的布局其实就是el-row和el-col的组合。 基础布局 使用单一分栏创建基础的栅格布局。 通过 ​row ​和 ​col ​组件,并通过 ​col ​组件的 ​span ​属性我们就可以自由地组合布局。 这种最简单,…

【Unity Animation 2D】Unity Animation 2D骨骼绑定与动画制作

一、图片格式为png格式,并且角色各部分分离 图片参数设置 需要将Sprite Mode设置为Single,否则图片不能作为一个整体 1、创建骨骼 1.1 旋转Create Bone,点击鼠标左键确定骨骼位置,移动鼠标再次点击鼠标左键确定骨骼&#xff0c…

【知识碎片】2024_05_13

本文记录了两道代码题【自除数】和【除自身以外数组的乘积】(利用了前缀积和后缀积,值得再看),第二部分记录了关于指针数组和逗号表达式的两道选择题。 每日代码 自除数 . - 力扣(LeetCode) /*** Note: T…

☀☀☀☀☀☀☀有关栈和队列应用的oj题讲解☼☼☼☼☼☼☼

准备好了么 目录: 一用两个队列实现栈: 1思路: 2画图理解: 3代码解答: 二用两个栈实现队列: 1思路: 2画图理解: 3代码解答: 三设计循环队列: 1思路…

MySQL5.7压缩包安装图文教程

一、下载 https://dev.mysql.com/downloads/mysql/ 选择5.7版本 二、解压 下载完成后解压,解压后如下(zip是免安装的,解压后配置成功即可使用) 注意:只有5.6以前的版本才有在线安装(install msi&#xf…

网页如何集成各社区征文活动

Helllo , 我是小恒 由于我需要腾讯云社区,稀土掘金以及CSDN的征文活动RSS,找了一下没发现,所以使用GET 请求接口对网页定时进行拉取清洗,甚至无意间做了一个简单的json格式API 最终网址:hub.liheng.work API:http://hub.liheng.wo…

李廉洋:5.13黄金原油美盘行情分析,必看策略。

黄金消息面分析:机构最新调查中的一些受访者表示,美国最大的科技股不仅是对创新行业的押注,而且可能是对冲通胀的工具。46%的受访者表示,数十年来一直是避险之选的黄金仍被视为抵御价格上涨风险的最佳保障。但近三分之一的人表示&…

前端开发者必备:Nginx入门实战宝典,从部署到优化一网打尽

🔥 个人主页:空白诗 文章目录 引言 👋一、Nginx简介 📚二、常见的Web服务器架构 🌀📌 架构概述📌 Nginx的深入探讨 三、正向代理与反向代理 🔮📌 正向代理工作原理&#…

深度解读《深度探索C++对象模型》之虚继承的实现分析和效率评测(一)

目录 前言 具有虚基类的对象的构造过程 通过子类的对象存取虚基类成员的实现分析 接下来我将持续更新“深度解读《深度探索C对象模型》”系列,敬请期待,欢迎左下角点击关注!也可以关注公众号:iShare爱分享,或文章末…

docker端口映射成功,docker端口不生效的问题解决,外界无法访问docker映射端口

docker端口映射不生效的问题解决 问题 使用docker run -p 88848:8848后,显示容器启动正常,并且使用docker logs –f xxx能够看到容器可以正常启用,docker ps 可以看到容器启动成功,并且端口已经映射,但是在浏览器访问相关地址&am…