解读:基于动态骨骼的动作识别方法ST-GCN(时空图卷积网络模型)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36893052/article/details/79860328

解读:基于动态骨骼的动作识别方法ST-GCN(时空图卷积网络模型)

本文为 AAAI 2018 录用论文「Spatial Temporal Graph Convolutional Networks for Skeleton Based Action Recognition」,香港中文大学提出一种时空图卷积网络,并利用它们进行人类行为识别。这种算法基于人类关节位置的时间序列表示而对动态骨骼建模,并将图卷积扩展为时空图卷积网络而捕捉这种时空的变化关系。

ST-GCN 时空图卷积网络模型
作者:颜思捷,熊元骏,林达华

文章链接:https://arxiv.org/abs/1801.07455

Github 代码:https://github.com/yysijie/st-gcn?

一、简介

近日,香港中大-商汤科技联合实验室的最新 AAAI 会议论文「Spatial Temporal Graph Convolution Networks for Skeleton Based Action Recognition」提出了一种新的 ST-GCN,即时空图卷积网络模型,用于解决基于人体骨架关键点的人类动作识别问题。该方法除了思路新颖之外,在标准的动作识别数据集上也取得了较大的性能提升。
Touch headSitting down这里写图片描述这里写图片描述
图1 ST-GCN 最末卷积层的响应可视化结果图

近年来,人类动作识别已经成为一个活跃的研究领域,它在视频理解中起着重要的作用。一般而言,人类行为识别有着多种模态(Simonyan and Zisserman 2014; Tran et al. 2015; Wang, Qiao, and Tang 2015; Wang et al. 2016; Zhao et al. 2017),例如外观、深度、光流和身体骨骼(Du, Wang, and Wang 2015; Liu et al. 2016)等。在这些模态当中,动态人类骨骼通常能与其他模态相辅相成,传达重要信息。然而,比起外观和光流建模,动态骨骼建模受到的关注较少。在这篇论文中,作者系统地研究这种模态,旨在开发一种原则性且有效的方法模拟动态骨骼,并利用它们进行人类行为识别。
在 2D 或 3D 坐标形式下,动态骨骼模态可以自然地由人类关节位置的时间序列表示。然后,通过分析其动作模式可以做到人类行为识别。早期基于骨骼进行动作识别的方法只是在各个时间步骤使用关节坐标形成特征向量,并对其进行时序分析 (Wang et al. 2012; Fernando et al. 2015)。但这些方法能力有限,因为它们没有明确利用人类关节的空间关系,而这种空间关系对理解人类行为而言至关重要。最近,研究者开发了试图利用关节间自然连接的新方法 (Shahroudy et al. 2016; Du, Wang, and Wang 2015)。这些方法的改进令人鼓舞,表明了骨骼连通性的重要性。然而,现有的大多数方法依赖手动划分的部分或手动设定的规则来分析空间模式。因此,为特定应用设计的模型难以在其他任务中推广。
为了跨越上述限制,我们需要一种新方法自动捕捉关节的空间构型、时间动态中所嵌入的模式。这就是深度神经网络的力量。然而,如前所述,骨骼并未以 2D 或 3D 网格的方式展现,而是以图像的形式展现。这就使得使用诸如卷积网络等已证实的模型变得困难。最近,将卷积神经网络(CNN)泛化到任意结构图形的图卷积网络(GCN)得到了越来越多的关注,而且被成功应用于图像分类 (Bruna et al. 2014)、文献分类 (Defferrard, Bresson, and Vandergheynst 2016)、半监督学习 (Kipf and Welling 2017) 等领域。但是,顺着这条思路,大部分前人的工作都把输入假定为一个固定的图形。GCN 在大规模数据集上的动态图模型应用,例如人类骨骼序列,还有待探索。
这里写图片描述
图2 NTU-RGBD 数据集上建立的时空图示例
在本文中,通过将图卷积网络扩展到时空图模型,设计用于行为识别的骨骼序列通用表示,称为时空图卷积网络(ST-GCN)。如图 2 所示,该模型是在骨骼图序列上制定的,其中每个节点对应于人体的一个关节。图中存在两种类型的边,即符合关节的自然连接的空间边(spatial edge)和在连续的时间步骤中连接相同关节的时间边(temporal edge)。在此基础上构建多层的时空图卷积,它允许信息沿着空间和时间两个维度进行整合。
ST-GCN 的层次性消除了手动划分部分或遍历规则的需要。这不仅能获得更强的表达能力和更高的性能(如我们的实验所示),而且还使其易于在不同的环境中推广。在通用 GCN 公式化的基础上,我们还基于图像模型的灵感研究设计了图卷积核的新策略。
这项工作的主要贡献在于三个方面:1)我们提出 ST-GCN,一个基于图的动态骨骼建模方法,这是首个用以完成本任务的基于图形的神经网络的应用。2)我们提出了在 ST-GCN 中设计卷积核的几个原则,旨在满足骨骼建模的具体要求。3)在基于骨骼动作识别的两个大规模数据集上,我们的模型与先前使用的手动分配部分或遍历规则的方法相比,需要相当少的手动设计,实现了更优越的性能。

二、ST-GCN

当我们运动的时候,人体在小范围运动的关节称之为“body parts”。现在基于骨骼点的动作识别方法都是具有在建模中具有明确的身体部分。相对于整个骨架,我们主要的改进是在建关键轨迹模型中建立有限制的部位“local regions”,并形成一个多层骨骼序列的表示。在例如图像目标识别任务中,分层表示与局部化通常由CNN的特性来表示。这种思路使得我们也想在基于骨骼点的动作识别中使用。所以我们创造了ST-GCN模型。

2.1 通道

基于骨骼的数据可以从运动捕捉设备或视频的姿态估计算法中获得。通常来说,数据是一系列的帧,每一帧都有一组联合坐标。给定 2D 或 3D 坐标系下的身体关节序列,我们就能构造一个时空图。其中,人体关节对应图的节点,人体身体结构的连通性和时间上的连通性对应图的两类边。因此,ST-GCN 的输入是图节点的联合坐标向量。这可以被认为是一个基于图像的 CNN 模拟,其中输入由 2D 图像网格上的像素强度矢量形成。对输入数据应用多层的时空图卷积操作,可以生成更高级别的特征图。然后,它将被标准的 SoftMax 分类器分类到相应的动作类别。整个模型用反向传播进行端对端方式的训练。现在,我们将介绍 ST-GCN 模型的各个部分。

2.2 骨骼图结构

通常使用每一帧每一个人体骨骼的2D或者3D坐标来表示骨骼序列。之前基于骨骼点的动作识别是通过,每一帧中所有的关节向量链接成一个特征向量。再本文中,使用时空卷积图去形成多层骨骼序列的表达。构建骨骼时空图G = (V,E),帧数为T,关节点数为N.
在图中,节点矩阵集合 V = { v t i | t = 1 , . . . , T , i = 1 , . . . N } ,包括骨骼序列上的所有的关节点。当ST-GCN作为输入的时候,关键点上的第t帧、第i个关节点的特征向量 F ( v t i ) 是由坐标点坐标以及置信度组成。使用两步构建骨骼序列的时空图。第一步,帧与帧之间的边表示人体对应骨骼点的时序关系;第二步,在每一帧内部,按照人体的自然骨架连接关系构造空间图。这种链接的建立是依靠自然结构的,没有人工手动设计的。这个模型也支持不同数量的骨骼点集上使用。例如,Kinect dataset,我们使用openpose工具在2D姿态估计中得到18个骨骼点,在NTU-RCB+D数据集上,我们是用3D骨骼跟踪的输出作为本模型的输入,产生25个骨骼点。STGCN可以在两种情况下运行,并提供一致的卓越性能。 图1中示出了构建的空间时间图的示例。
正式上,边的集合E有两个子集组成,第一个子集是每一帧帧内骨骼点的链接 E s = { v t i v t j | ( i , j ) H } ,H表示人体骨骼点集合。第二个子集表示不同帧间的链接, E F = { v t i v ( t + 1 ) i } 。因此E_F中的每一个边代表一个特定的关节随着时间推移其轨迹。

2.3 Spatial Graph Convolutional Neural Network

在我们深入了解完整的ST-GCN之前,我们先看看在一个单一帧内的图CNN模型。在实例中,在时间t的单帧中,有N个关键点 V t ,骨骼内的边 E s ( t ) = { v t i v t j | ( i , j ) H } 。从2D自然图像或特征图上的卷积运算的定义来看,它们可被视为二维网格。卷积操作输出的feature map也是一个2D网格。当选用步长为1及恰当的padding,可以使得输出faeture map与输入图像保持一样的大小。下述讨论建立在这种讨论上。设一个大小为K x K的卷积核,输入图像为 f i n ,通道数为c。单个通道在位置x的输出:
(1)

f o u t ( x ) = h = 1 K w = 1 K f i n ( p ( x , h , w ) ) . w ( h , w )

sampling function p: Z 2 Z 2 Z 2 表示位置x及其领域。在图像卷积中, p ( x , h , w ) = x + p ( h , w ) weight function w: Z 2 R c 表示权重w提供c维实空间中的权向量,用于计算具有维度c的采样输入特征向量的内积。权重函数与输入x的位置无关。因此,输入图像上的所有滤镜权重都是共享的。图像域的标准卷积,通过对p(x)中的矩形网格进行编码来实现。将上述公式的卷及操作应用到空间图Vt的features map。其中feature map f i n t : V t R c 为在图上的每一个节点。
Sampling function
在图上,sampling function p(h,w)被定义为中心像素x的领域像素。在图上,我们同样定义点 v t i 领域集的sampling function B ( v t i ) = { v t j | d ( v t j , v t i D ) } 。这里 d ( v t j , v t i v t j v t j 的最小路径。
(2)
p ( v t i , v t j ) = v t j

本任务中D=1,即取距离为1的为领域集

Weight function
与sampling function相比,权值函数更难以定义。 在二维卷积中,中心位置周围自然存在一个刚性网格。所以领域像素可以具有固定的空间顺序。 然后可以通过根据空间顺序索引(c; K; K)维度的张量来实现权重函数。对于像我们刚刚构建的图一般的图,没有这种规律的排布。 这个问题首先在(Niepert,Ahmed和Kutzkov,2016)中进行了研究,其中顺序是由根节点周围的领域图中的图标记过程定义的。我们遵循这个想法来构建我们的权重函数。 我们不是给每一个领域节点一个独特的标签,而是通过将一个骨骼点 v t i 的邻居集 B v t i 划分成固定数量的K个子集来简化过程,其中每个子集都有一个数字标签。
(3)

w ( v t i , v t j ) = w ( l t i ( v t j ) )

Spatial Graph Convolution
随着重新定义sampling function 与weight function,我们可以将公式1应用到图卷积上:

f o u t ( v t i ) = v t i B ( v t i ) 1 Z t i ( v t j ) f i n ( p ( v t i , v t j ) ) w ( v t i v t j )

这里正则化项 Z t i ( v t j ) = | { v t k | l t i ( v t k ) = l t i ( v t j ) } | 等于相应子集的基数。这一项增加了不同子集的贡献。从公式2,3,4中我们可以得出:
(5)
f o u t ( v t i ) = v t i B ( v t i ) 1 Z t i ( v t j ) w ( l t i ( v t j ) )

值得注意的是,如果我们将图像视为常规2D网格,则该公式可以类似于标准2D卷积。 例如,为了类似于3x3卷积运算,我们在3x3中有一个9像素的领域。 以像素为中心的3格。 然后应该将邻居组分割成9个子集,每个子集有一个像素。

Spatial Temporal Modeling
在定义了空间图CNN之后,我们现在开始进行在骨架序列时空动态进行建模。回想一下,在图的构建中,图的时间方面是通过在连续帧之间连接相同的关节来构建的。 这使我们能够定义一个非常简单的策略来将空间图CNN扩展到空间时间域。也就是说,我们将邻域的概念扩展为也包含时间连接的关节
(6)

B ( v t i ) = { v q j | d ( v t j , v t i ) K , | q t | [ Γ / 2 ] }

参数��控制时间范围以包含在邻居图中,因此可以称为时间内核大小。为了完成ST图上的卷积运算,我们还需要sampling function与weight function,sampling function与空间图唯一的情况相同,并且权重功能,或者特别是标签图lST。 因为时间轴是有序的,所以我们直接修改标签映射lST,以便根据vti生成一个空间时间邻域
(7)
l S T ( v q j ) = l t j ( v t j ) + ( q t + [ Γ / 2 ] K

2.4 划分方式

给定空间时间图的高级表达式卷积,实施不同的划分策略得到标签地图。 在这项工作中,我们探讨了几种分区策略 为了简单起见,我们只讨论单个框架中的情况,因为它们可以使用方程式自然扩展到时空域。
这里写图片描述
图3 本文提出的用于构建卷积操作的分割策略。从左到右:(a)输入骨骼的框架示例。身体关节以蓝点表示。D=1 的卷积核感受野由红色的虚线画出。(b)单标签划分策略。其中近邻的所有节点标签相同(绿色)。(c)距离划分。这两个子集是距离为 0 的根节点本身,和距离为 1 的根节点相邻节点(蓝色)。(d)空间构型划分。根据节点到骨架重心(图中黑色十字)的距离和到根节点(绿色)的距离的比较进行标记。向心节点(蓝色)到骨架重心的距离比根节点到骨架重心的距离短,而离心节点(黄色)到骨架重心的距离比根节点长

第一种称为「唯一划分」(uni-labeling)。其与原始 GCN 相同,将节点的 1 邻域划分为一个子集。

第二种称为「基于距离的划分」(distance partitioning),它将节点的 1 邻域分为两个子集,即节点本身子集与邻节点子集。引入基于距离的划分使得我们可以分析骨架关键点之间的微分性质。

进一步,我们针对动作识别的特点,提出了第三种,「空间构型划分」(spatial configuration partitioning)。这种划分规则将节点的 1 邻域划分为 3 个子集,第一个子集为节点本身,第二个为空间位置上比本节点更靠近整个骨架重心的邻节点集合,第三个则为更远离重心的邻节点集合。建立这种划分规则在根据运动分析的研究中对向心运动与离心运动的定义。三种划分规则的示意图请见图 4。
(8)

l t i ( v t j ) = { 0 , if  r j = r i   1 , if  r j < r i   2 , if  r j > r i

3.5 使用ST-GCN

使用图卷积网络不仅仅只是将数据当做2D或者3D,还需要有些细节。
通过图的邻接矩阵A与单位矩阵I表示单帧内的骨骼点的链接。在单帧内,使用第一种划分策略的ST-GCN的表示如下:
(9)
f o u t = Λ 1 2 ( A + I ) Λ 1 2 f i n W

这里 Λ i i = j ( A i j + I i j ) 。这里,多个输出通道的权重矢量被堆叠以形成权重矩阵W。实际上,在时空下,输入的特征图作为张量(C,V,T)维度。

三、网络结构与训练

这里写图片描述
图4 我们对视频进行姿态估计,并在骨骼序列上构建时空图。此后,对其应用多层时空图卷积操作(ST-GCN),并逐渐在图像上生成更高级的特征图。然后,利用标准的 Softmax 分类器,能将其分类到相应的操作类别中
由于ST-GCN在不同节点上共享权重,因此保持输入数据的比例在不同节点上保持一致非常重要。在实验中,将数据进行正则化在输入到batch normalization。ST-GCN模型由九层时空图卷积组成。前三层输出64通道数,中间三层输出128通道,最后三层输出256层通道数。一共有9个时间卷积核,在每一个ST-GCN使用残差链接,使用dropout进行特征正则化处理,将一半的神经元进行dropout处理。第4、7层的时间卷积层设置为poling层。最后将输出的256个通道数的输出进行全局pooling,并由softmax进行分类。是由SGD进行优化,学习率设置为0.01,并每10个epoch迭代减小0.01。

四、实验

作者在两个性质迥异的骨架动作识别数据集上进行了实验来验证 ST-GCN 的性能。

第一个数据集是 Kinetics-Skeleton,它来自于最近由 Google DeepMind 贡献的 Kinetics 视频人类动作识别数据集。我们使用 OpenPose 姿态估计软件得到视频中所有的骨架关键点信息来构成 Kinetics-Skeleton。该数据集共有约 30 万个视频与 400 类动作。

第二个数据集是 NTU-RGB+D,这是三维骨架动作识别的标准测试数据集。它包含了用 Microsoft Kinect 采集的三维骨架序列。该数据集共有约 6 万个视频,60 个动作类别。这个数据集包含了两个测试协议,即跨表演人(X-Sub)与跨视角(X-View)协议。在两个数据集的三个测试协议上,ST-GCN 相比现有方法在识别精度上均有很大提高,具体结果可见表。

猜你喜欢

转载自blog.csdn.net/qq_36893052/article/details/79860328