Spatial Temporal Graph Convolutional Networks for Skeleton-Based Action Recognition ------STGCN学习笔记
STGCN学习笔记
论文标题:Spatial Temporal Graph Convolutional Networks for Skeleton-Based Action Recognition
(基于骨骼的动作识别的时空图卷积网络)
作者: Sijie Yan, Yuanjun Xiong, Dahua Lin
Department of Information Engineering, The Chinese University of Hong Kong
fys016, [email protected], [email protected]
文章下载地址:https://arxiv.org/abs/1801.07455
代码下载地址:https://github.com/yysijie/st-gcn?
1.摘要
这篇论文主要是提出STGCN(时空图卷积网络)。在摘要中指出这个方法克服了传统方法依赖于手工部分或者traversal rules(遍历规则)的局限性。主要特点是:自动学习了data的Spatial(空间)和temporal(时间)的特性。在大型数据集Kinetics 和 NTU-RGBD取得了优越的成绩。
看完摘要很期待弄清楚这个STGCN的工作原理。
2.引言
人类动作识别在视频理解中发挥着重要的作用,近年来已成为一个活跃的研究领域。前人在外观、深度、光流(optical flows)建模研究已经很深入,但是在dynamic skeletons(动态骨架)模型的关注还是很少。所以这篇论文的宗旨:就是对dynamic skeletons(动态骨架)进行建模,并且利用其完成动作识别。
动态骨架的形态可以自然的表现为:人体关节点的时间序列,我们通常以二维或三维坐标的形式表示。通过人体的运动模式可以分析得到人的行为。早期的人们正是利用这一点,将单个时间步长的关节坐标形成特征向量,结合时间序列分析人类的行为(这也是我们最常想到的方法)。而理解人类行为很关键的一点就是关节点与关节点之间的空间关系,原始的方法的局限性就是未能很好利用这一点。近期人们开始尝试利用关节之间的自然连接,这一改进产生了很多新的method,结果证明这种改进是正确的。
在引言中提到,现在的方法有一个很大的局限就是通用性,即为了分析Spatial patterns,导致模型依赖于手工部分或者traversal rules(遍历规则),所以大部分模型是为特定应用程序设计的,很难推广到其他应用程序。如何自动地捕捉关节的Spatial信息以及它们的时间动态信息?---------利用Deep Learing可以解决这个难题。但是遇到比较困难的一点是,骨架数据是图形式的,直接利用已经很成熟的深度学习技术如CNN并不难很好的处理。而恰好GCN将CNN推向了图类数据。
在引言部分的最后,作者提到这篇文章提出将图神经网络扩展到时空图模型,即时空图卷积网络(ST-GCN),设计一个用于动作识别的通用骨架序列表示。并且说明了这个模型应用在骨架图上。
骨架时空图::也属于图这种数据类型,即由结点和边(edges)组成。
1)结点:骨架图的结点就是人骨架中的关节点。这一点很好理解
2)边:骨架图中的边就相当具有“时空特色”,边的类型分为两类。为了方便理解我使用“控制变量法”来描述:
a)在同一时间(帧)内,某个骨架数据各个关节点之间连接关系称为第一类边。
b)在同一关节点处,某个骨架数据的某个关节点在各个时间(帧)之间的连接关系称为第二类边。示例如下图所示:
可以看出随着Temporal的变化,某一帧(例如第一帧)深蓝色的关节点之间构成第一类边;深蓝色帧和淡蓝色帧在某一关节点之间由构成了第二类边。第二类边连接相同的关节,具有线性关系。(就是一条直线)
正是这种层次化特性,消除了手工编写的部分或者traversal rules(遍历规则)的需要。
3.相关工作
这一部分主要介绍了两个部分:Neural Networks on Graphs和Skeleton Based Action Recognition. 在这里简单总结:
3.1 Neural Networks on Graphs
在图上构造GCNs的原理通常遵循两个stream:
1)spectral 的角度:以频谱分析的形式考虑图卷积的局部性
2)spatial 的角度:卷积滤波器直接应用于图节点及其相邻节点
这篇文章的工作是从spatial的角度考虑的。
3.2 Skeleton Based Action Recognition
人体的骨骼和关节轨迹对光照变化和场景变化具有很强的鲁棒性。并且由于高度精确的深度传感器或姿态估计算法,数据很容易获得。因此,有一系列广泛的基于骨骼的动作识别方法。这些方法可以分为基于手工特征的方法和深度学习方法。
4.时空图卷积网络
4.1bady parts
在进行活动时,人类的关节会以局部小组的形式移动,这就是所谓的bady parts.
之前已经有人验证了在建模中引入bady parts的有效性。作者认为:这种改进很大程度上是因为局部区域内关节轨迹的建模与整个骨架相比受到了限制,从而形成了骨架序列的层次表示。而CNN可以帮助实现层次表示和局部性,这就是作者将CNN的思想引入骨架数据的启蒙思想。
4.2数据来源
基于骨架的数据可以从运动捕捉设备中获得,也可以从视频中获得姿态估计算法。通常数据是一系列的帧,每一帧都有一组关节坐标。构造出了骨架时空图(引言中有提到)。
4.3骨架图的构造
骨架序列通常由每个帧中每个人体关节的二维或三维坐标表示。之前使用卷积进行骨骼动作识别的工作是将所有关节的坐标向量串联起来,形成每帧一个特征向量。在这篇论文中,作者利用时空图来形成骨架序列的层次表示。作者构造了一个无向时空图G = (V;E),具有N个关节和T个框架的骨架序列,具有身体内部和框架之间的连接(骨架时空图的特性)。对于结点集合:
V = { v t i ∣ t = 1 , . . . , T , i = 1 , . . . , N } V=\left\{ v_{ti}|t = 1,...,T,i=1,...,N\right\} V={
vti∣t=1,...,T,i=1,...,N}
由t帧的第i个关节点构成。t表示帧数,i表示关节点编号。
构造过程分为两步:
1)将每一帧内将所有关节点连接。
2)然后每个关节在连续的坐标系中连接到同一个关节
注意:在这个连接过程中是没有手动分配的。这一点的好处:是使得这个神经网络可以处理更多的数据集,增加其通用性。基于这点,论文中给出了个例子: a)对于Kinetics数据集,作者使用OpenPose 工具箱输出了具有18个关节点的2D姿态估计的结果;b)对于NTURGB+D 数据集,作者使用3D关节跟踪,产生了具有25个关节点的跟踪结果。这一点可以体现出STGCN的通用性。
5.STGCN的原理
整个STGCN的大致过程如下图所示:我们可以看到,输入一段录音并且利用姿态估计算法得到骨架数据(这里也可以使用mocap设备等方法获取数据),输入STGCN中结果softmax分类器得到分类结果。这个应用还是十分广泛的,例如输入一段民族舞视频,可以输出是哪个少数民族的舞蹈。
5.1卷积
文章中简单介绍了图像domain中传统卷积的方法。给定卷积核大小为K × K ,channels大小为c,输入feature map f i n f_{in} fin ;单个通道在空间位置x处的输出值可以表示为
<