经典StNet行为识别网络「建议收藏」

经典StNet行为识别网络「建议收藏」论文题目:StNet:LocalandGlobalSpatial-TemporalModelingforActionRecognition论文链接:https://arxiv.org/abs/1811.01549代码:https://github.com/PaddlePaddle/models/blob/develop/fluid/PaddleCV/video/model…

大家好,又见面了,我是你们的朋友全栈君。

论文题目:StNet: Local and Global Spatial-Temporal Modeling for Action Recognition

论文链接:https://arxiv.org/abs/1811.01549

代码:https://github.com/PaddlePaddle/models/blob/develop/fluid/PaddleCV/video/models/stnet

10月份比较忙,很久没有写博客文章了。今天,我给大家带来一篇视频行为识别网络StNet,这是百度视觉技术部联合PaddlePaddle团队2018年开发用于视频分类的网络,该文章被收录在AAAI顶会上。

接下来,我将从以下几个方面来对StNet进行阐述,首先,介绍一下StNet的思想;接着是行为识别领域的研究成果;然后我会对StNet的方法进行详细阐述(重点),最后描述StNet的对比实验,来体现其优于当前一些state of the art。

首先介绍一些StNet的思想,StNet将n个连续的视频帧叠加成一个具有3N个通道的super-image,并对super-image进行二维卷积以获取局部的时空关系。为了建立全局时空关系模型,接着将时序卷积应用于局部时空特征图。

接下来,我会用少量的篇幅,再次阐述行为识别的研究成果(其实之前的文章中,我也有过阐述)。对于视频行为识别,做研究的人都知道,要想让算法识别某个动作,首先要将视频输入算法,视频输入算法,最重要的过程是提取特征,有用的特征是成功识别某个动作的关键。对于视频行为识别,我们除了要获取每个视频帧空间信息,不仅要获取动作的时序信息,这是为什么

经典StNet行为识别网络「建议收藏」

                                                         图1. 局部信息和全局时空特征作用

呢?空间信息告诉我们图片中是什么东西,时序信息告诉我们如何变换,而空间+时序信息告诉我们所关注的东西随时间如何变换,如图1说明了空间和时序信息不同作用。对于基于深度学习的行为识别,目前有两个主要的研究方向:(1).利用CNN+RNN(Donahue et al. 2015; Yue-Hei Ng et al. 2015) ,CNN用来提取空间特征,而RNN用来提取时序特征,然而对于RNN,由于其重复结构,使得端到端优化变得非常困难;(2).使用纯的卷积网络进行行为识别(Simonyan and Zisserman 2014; Feichtenhofer, Pinz, and Wildes 2016; 2017; Wang et al. 2016; Tran et al. 2015; Carreira and Zisserman 2017; Qiu, Yao, and Mei 2017),Simonyan and Zisserman 使用2D卷积来提取经采样RGB帧局部空间特征,对于时序上动作变化,仅仅对几个片段分类得分进行融合,这种方式没有充分考虑时空特征;Tran(2015)和Carreira and Zisserman(2017)使用3D卷积来同时获取时空特征,然而由于3D卷积巨大的参数量,导致其构成的网络深度很浅。

下面的篇幅,我将对StNet的Approach进行阐述,图2是基于ResNet的StNet。StNet包括几个重要的细节模块,具体有Super-Image,Temporal Modeling BlockTemporal Xception Blocks。接下来,我会对每个模块进行详细阐述。       

经典StNet行为识别网络「建议收藏」

,                                                                    图2 基于ResNet backbone的构造的StNet

Super-Image  [图二]

从输入的视频中采样T个时序段,每个时序段包括N张连续的RGB帧,N张图片在通道上进行堆叠形成super-image,StNET网络的一个张量size为:TX3NXHXW。Super-Image中不仅仅包含单帧局部空间信息,而且也包含局部连续视频帧之间时序依赖信息。为了能获得局部时空信息,同时降低参数量和计算代价,使用2D卷积作用于每个T super-images上,具体来说,局部时空相关性由resnet的conv1、res2和res3块内的2d卷积核来获取,具体如图2所示。作者设置N=5,在训练阶段,除了第一卷积层外,2D卷积块可以直接用ImageNet预先训练的主干2D卷积模型的权值初始化,而conv1的权重可以按照i3d中所做的操作初始化。

Temporal Modeling Block  [图2]

该block的作用可以理解为将一个视频经过2D卷积产生的多个局部时空序段进行聚合产生全局的时空特征。具体为:经过2D卷积的作用,得到T个局部时空特征图,通过这T个时空特征图建立全局的时空特征图对于理解视频是至关重要的,相关实现在图2,经过2D卷积作用之后,通过TMB(Temporal Modeling Block)来获取一个视频长时序的时序变换信息,TMB由3D卷积实现(Conv3d-BN3d-ReLU),为了节省计算量,3D卷积空间核size为1,时序kernel size为3。在res3和res4产生的局部时空特征图上应用TMB来获取全局时空信息。在TMB模块中,Conv3d的权重最初设置为1/(3×Ci),其中Ci表示输入通道大小,而偏压设置为0,BN3D是初始化为恒等映射。

Temporal Xception Block (图3)

该模块设计的初衷是为了在特征序列之间高效的时间建模和易于端到端优化而设计的。具体结构如图3所示,输入TXB模块 tensor 的size为TxCin,TxCin是对T个super-imags的feature map 进行全局均值池化所得到。在TXB中输入先经过1DBN层,为

经典StNet行为识别网络「建议收藏」

                                                                              图3 Temporal Xception Block

了使得输出同方差分布,1DBN输出为V,具体计算如图4。\alpha,\beta为模型参数,m和var通过mini-batchs获得。为了建立时间关系,将时间维上的卷积应用于V。作者将时间卷积分解为基于逐通道和逐时序分组的一维卷积。技术上,对于基于逐通道的分组一维卷

经典StNet行为识别网络「建议收藏」

                                                                                              图4 1DBN计算

积,时序核大小设置为3,卷积核的数目和组数设置为与输入通道数目相同。对于基于逐时序的分组一维卷积,其卷积核和组数为1,因此,逐时序分组卷积核在每个时序步沿通道维度在所有元素上操作。具体逐通道卷积和时序卷积描述如图5。具体逐通道

经典StNet行为识别网络「建议收藏」

                                                                             图5 逐时序分组卷积核逐通道分组卷积计算

卷积和时序卷积卷积运算如图6,时域 Xception 块(TXB)。时域Xception 块的详细配置如图3所示:括号中的参数表示 1D卷积的(#kernel,kernel size,padding,#groups)配置。绿色的块表示 channel-wise 的 1D 卷积,蓝色的块表示 temporal-wise 的 1D 卷积。图6描绘了 channel-wise 和 temporal-wise 的 1D 卷积。TXB 的输入是视频的特征序列,表示为 T×C_in 张量。Channel-wise 1D 卷积的每个卷积核仅在一个通道内沿时间维度应用。Temporal-wise 的 1D 卷积核在每个时序特征中跨所有通道进行卷积。类似于bottleneck结构,图3TXM结构采用了长短分支,短分支采用了单个ID逐时序卷积,kernel size =group size =1。同时,长分支采用了两个逐通道1D分组卷积。

经典StNet行为识别网络「建议收藏」

                                                                                  图6 逐通道和时序卷积

最终经过TXB模块输出的特征,在时序维度进行最大池化操作,得到特征向量表示对视频时空特征的表示,最后经过softmax层进行分类。至此,我已经将StNet的每个模块都阐述完毕。

最后是实验部分,作者在新发布的大规模行为识别数据集Kinetics(Kay等人2017年)对StNet进行了评估。实验结果表明,stnet的性能优于目前几个state of the art 2D和3D的行为识别模型,同时从FLOPs角度来看,StNet在识别精度上优于3D CNN。

经典StNet行为识别网络「建议收藏」

                                                                                   图7 不同网络配置结果图

为了验证stnet的有效性,作者在UCF101上进行了比Kinetics小得多的迁移学习实验。为了说明StNet中每个模块的有效性,作者也做了消融实验,具体如图7。图8表示TXN中每个模块重要性。图9 为StNet和一些最优的2D和3D网络对比,结果在Kinetics400和Kinetics600验证集上的评估。图10不同模型迁移学习。为了帮助更好地理解StNet如何学习用于行为识别的区分性时空描述符,作者使用CAM可视化了模型的特定类的激活图(Zhou等人2016)方法。在实验中,T设为7,并从kinetics600验证集中的视频序列中均匀地采样7个片段,以获得它们的类特定激活图。作为比较,作者还可视化了TSN模型的激活图,它利用局部空间信息,然后通过平均分类得分来融合T片段,而不是联合建模局部和全局时空信息。作为说明,图11列出了两种模式的四个动作类(气垫板、高尔夫驾驶、填充眉毛和玩扑克)的激活图。图11表明,与TSN无法联合建模视频中的局部和全局时空动态相比,StNet能够捕获视频帧内的时间交互信息。它关注的是与GT行为作用密切相关的时空区域。例如,它更关注附近有眉笔的人脸,而只有人脸的区域则不那么活跃特别是在“玩扑克”的例子中,StNet仅通过手和赌场令牌被显著激活。然而,TSN被许多面部区域激活。

经典StNet行为识别网络「建议收藏」

                                                                      图 8.Ablation study of TXN on Kinetics400

经典StNet行为识别网络「建议收藏」

                                                                   图9 为StNet和一些最优的2D和3D网络对比

经典StNet行为识别网络「建议收藏」

                                                                       图10 不同模型迁移学习在UCF-101评估

经典StNet行为识别网络「建议收藏」

                                                                      图 11 TSN和StNet可视化

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/152063.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java 大整数取余_java 整数取余

    java 大整数取余_java 整数取余java整数取余是建立在java整数除法的基础上的,java整数除法可以参考我的上一篇文章java整数除法。Theremainderoperationforoperandsthatareintegersafterbinarynumericpromotion(§5.6.2)producesaresultvaluesuchthat(a/b)*b+(a%b)is…

    2022年5月18日
    37
  • HashMap常见面试题_java面试题大汇总

    HashMap常见面试题_java面试题大汇总1.HashMap的数据结构?哈希表结构(链表散列:数组+链表)实现,结合数组和链表的优点。当链表长度超过8时,链表转换为红黑树。2.HashMap的工作原理?HashMap底层是hash数组和单向链表实现,数组中的每个元素都是链表,由Node内部类(实现Map.Entry<K,V>接口)实现,HashMap通过put&get方法存储和获取。存储对象时,将K/V键值传给put()方法: ①、调用hash(K)方法计算K的hash值,然后结合数组长度,计算得数组下标;

    2022年8月10日
    9
  • 零基础学习JAVA其实并不难!不相信?进来看看你就知道了

    零基础学习JAVA其实并不难!不相信?进来看看你就知道了其实Java并没有想象中的那么难,首先想要入这个行,要做好一个心理准备,那就是你想走远点,就得不间断的去学习,去汲取知识,前期不能怕辛苦,不要闲下来就打LOL、吃鸡、王者农药,有空就得多看看各种开源项目的代码,API的设计方式,各大网站的设计架构,理解各个环节的作用。补齐自己的知识视野。  当然这个行业也并不是什么门槛都没有,不要再私信我初中生、高中生、中专生能不能学习Java了。反正我个人是认为不可行的,或许你可以去问问其他大神?或许他们会觉得可以的。  下图是我更新过的自学表,分别分为4个阶段。按

    2022年7月7日
    40
  • java执行curl命令带json(执行shell脚本命令)

    需要注意的是,命令需要以数组的形式传递参数,就是把正常的命令以空格切分成数组就行了。而且参数前后不能有空格,不然会报错。具体的测试代码如下:importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;publicclassTestCurl{p…

    2022年4月16日
    243
  • Linux shell if [ -n ] 正确使用方法「建议收藏」

    Linux shell if [ -n ] 正确使用方法「建议收藏」if[str1=str2]      当两个串有相同内容、长度时为真 if[str1!=str2]     当串str1和str2不等时为真 if[-nstr1]      当串的长度大于0时为真(串非空) if[-zstr1]       当串的长度为0时为真(空串) if[str1]        当串str1为非空时为真

    2022年7月27日
    3
  • UCI数据集整理(附论文常用数据集)

    UCI数据集整理(附论文常用数据集)摘要:UCI数据集作为标准测试数据集经常出现在许多机器学习的论文中,为了更方便使用这些数据集有必要对其进行整理,这里整理了论文中经常出现的数据集,并详细介绍如何使用MATLAB将数据集文件整理成自己需要的格式以及如何使用数据集文件。要点如下UCI数据集介绍用程序整理数据集如何使用数据集文件点击跳转至UCI数据集下载页1.前言UCI数据集是一个常用的机器…

    2022年6月28日
    43

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号