Advertisement

(STGCN学习笔记)Spatial Temporal Graph Convolutional Networks for Skeleton-Based Action Recognition

阅读量:

时空图卷积网络用于骨架基动作识别 ------STGCN学习笔记

  • STGCN学习笔记

    • 摘要部分
    • 引言章节
    • 相关研究综述部分
      • 图神经网络概述部分

        • 基于骨骼的动作识别技术章节
      • 4.时空图卷积网络

        • 4.1bady parts
        • 4.2数据来源
        • 4.3骨架图的构造
  • STGCN的工作原理

    • 第1节 卷积操作
    • 第2节 采样机制
    • 第3节 权重分配
      • 第4小节 策略划分(Partitioning Strategies)(分区策略)
  • 5.4 图卷积的空间建模和应用分析

    • 5.5 时空关系建模与动态特征提取

    • 5.6 边权重的可学习分配机制设计

    • 5.7 STGCN模型的构建与实现细节探讨

    • 5.8 网络架构设计与训练策略研究

    • 6.实验

STGCN学习笔记

Space-Time Graph Convolutional Networks in skeleton-based action recognition

Space-Time Graph Convolutional Networks in skeleton-based action recognition

作者:Sijie Yan、Yuanjun Xiong、Dahua Lin
所属机构:香港中文大学 信息工程系
邮箱:fys016;dhling@ie.cuhk.edu;bitxiong@gmail.com
文章获取链接:https://arxiv.org/abs/1801.07455
代码获取链接:https://github.com/yysijie/st-gcn

1.摘要

这篇论文主要提出了STGCN(时空图卷积网络)这一创新性网络架构。在摘要部分指出该方法成功克服了传统方法受限于手动设计部分或遍历规则(Traversal Rules)所带来的局限性。其核心优势在于能够系统自动提取并建模其数据的空间属性和时间特征,在经过大规模的数据集KineticsNTU-RGBD 的训练与测试后,展现出显著性能优势。看完摘要后令人对该网络的工作机制充满好奇。

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)在同一关节点处,某个骨架数据的某个关节点在各个时间(帧)之间的连接关系称为第二类边 。示例如下图所示:

骨架数据时空图Demo

当Temporal发生变化时,在某一时刻(如初始时刻),所有深蓝色关节点通过连接形成第一类边。不同颜色的帧(如深蓝与浅蓝)之间的关节点通过建立第二类边实现了关联。第二类边以相同关节为连接点,并表现为直线型关系。

正是这种层次化特性, 去除了手工编写的部分或者traversal rules(遍历规则)的需要.

3.相关工作

这一阶段主要涵盖两大块内容

3.1 Neural Networks on Graphs

在构建GCN时通常遵循两种不同的视角:

  1. 从频谱的角度来看...
  2. 从空间的角度来看...
    这篇文章的核心关注于从空间视角进行分析。

3.2 Skeleton Based Action Recognition

人类的骨架和运动轨迹在应对光照条件与环境状态时展现出极强的鲁棒性. 并且由于深度传感器与姿态估算法的高度精确, 数据易于获取. 因此, 在动作识别领域中存在一系列基于骨骼特征的方法. 这些方法可被划分为基于手工特征与深度学习两类.

4.时空图卷积网络

4.1bady parts

在活动进行中,人体关节通常会以局部小组的形式移动——这被称为bad parts.已有研究表明,在建模中引入bad parts 已经被证明具有有效性.作者的观点是:这种改进主要是由于局部区域内的关节轨迹建模受限于整个骨架的情况所致.这一思想源于CNN能够实现层次表示以及其自身的局部性质.

4.2数据来源

利用骨架的数据可以从运动捕捉系统中获取,在视频中也能得到姿态估计算法。一般情况下,数据表现为多个片段,在每个片段中都有一组关节坐标。构建出了骨架时空图(引言中有提及)**。

4.3骨架图的构造

骨骼序列通常由每个帧中的人体关节点信息以二维或三维坐标形式呈现。早期基于卷积神经网络的动作识别方法通常会将各个关节点的空间位置信息以向量形式提取出来,并将这些特征向量拼接成一个完整的体征向量。在本研究中,作者通过构建时空关系图对骨骼序列进行了层次化建模。研究者提出了一个无向时空图模型G=(V,E),其中包含了N个关节点和T个时间片段。模型能够有效捕捉身体各部位间的关联以及与时间片段之间的关联特性(骨架时空图的关键属性)。对于结点集合:

V=\left\{ v_{ti}|t = 1,...,T,i=1,...,N\right\}
由第i个关节点在t帧中构成 。其中t表示视频帧的数量,i表示关节点的具体编号。
构建流程划分为两个步骤:
1)在每帧内部将所有关节点相互连接起来。
2)各关节依次在连续的坐标系中与同一关节相接形成连贯结构。
值得注意的是,在上述构建过程中并未进行人工分配操作。这一特点的优势在于显著提升了该神经网络对多样化数据集的适应能力,并增强了其通用性 。具体而言,在实验结果中可观察到以下几点优势表现:
a. 在Kinetics数据集上(Kinetics数据集),研究者利用OpenPose工具箱实现了对包含18个二维关节点的姿态估计;
b. 在NTURGB+D数据集中(NTURGB+D数据集),通过3D姿态跟踪技术获得了包含25个三维关节点的结果;
这些实验结果进一步验证了所提方法(STGCN模型)的高度通用性和适用性。

5.STGCN的原理

整个STGCN的大致过程如下图所示:

在这里插入图片描述

从技术角度来看, 我们可以看到对语音信号进行采集后运用姿态估算法可获得人体骨骼数据; 并且; 此外还可以采用运动捕捉设备等多种方法获取数据. 将这些骨架数据导入STGCN模型中进行神经网络训练与推理操作; 其中神经网络模型的输出层通过应用Softmax函数来进行分类处理. 该系统在实际应用场景中表现尤为突出; 例如, 在处理一段民族舞蹈视频时能够准确识别所属民族.

5.1卷积

文章简要阐述了图像域内传统卷集运算的基本原理;给定参数设置中,卷积核尺寸设定为K \times K;通道数量设定为c;输入特征图f_{in};每一通道在特定位置x处的空间响应值计算式可表示为

在这里插入图片描述

我刚开始也对这里的pw 很不解,后来明白了p 其实是采样函数;w其实是权重函数。这其实就是一个卷积操作。注意 :权值函数与输入位置x无关,因此fiter 权值在输入图像的任何地方都是共享的。
当然这个只是针对feature map而言,我们如果想应用在时空骨架图上还需要对采样函数和权重函数进一步的改进。

5.2采样函数

在图像领域中,在给定中心位置x的基础上定义了一个特定的采样器p(x,h,w) ,该采样器基于中心位置x的位置关系进行定义。具体而言,在h=3、w=3的情况下,则表示为节点x与其周围8个邻居元素所构成的集合。然而,在骨架图中由于缺乏与图像相似的相邻像素之间的位置关系这一特点,则需要采用一种新的计算模型来描述骨架图中的节点关联性问题。其中h=3,w=3时的情形即为节点x与其周围8个邻居元素组成的集合。

B(v_{ti}) =\left\{ v_{tj}|d( v_{tj},v_{ti} ) <=D \right\}
其实也很好理解,采样函数B就是采样中心 v_{ti} 以及到 v_{ti}路长小于等于D的元素的集合。
论文中说:在这项工作中,我们对所有情况使用D = 1,即节点的1近邻集。更多的D留给未来的工作。
数学表示如下:

在这里插入图片描述

5.3权重函数

作者并未对每个邻居节点赋予唯一的标识符。”而是通过将一个联合节点 v_{ti} 的邻居集 B( v_{ti}) 被划分为固定数量的 K 个子集来简化这一过程。”每个子集均对应一个数字标签。”

在这里插入图片描述

最初感到这个内容比较复杂难懂;但了解了partitioning strategies(论文中对应的是第3.4节,在我们这里是第5.3.1节)之后就清楚了。

5.3.1partitioning strategies(分区策略)

文中介绍了三种策略:

1)Uni-labeling
最简单的分区策略是基于邻居集本身作为子集,在这种情况下每个相邻节点均与根节点具有相同的加权向量内积关系。然而该方法的一个显著缺陷在于,在单帧情况下它等价于计算加权向量与所有相邻节点平均特征向量的内积操作。这在骨架序列分类中并非最优选择因为它可能导致局部微分属性信息的丢失。
2)Distance partitioning
另一种自然分区策略基于节点到根节点的距离度量,在本文中作者设定D = 1从而将邻居集划分为两个子集合:其中D = 0指的是仅包含根节点自身而其余邻居属于D = 1这一子集合。因此有两个不同的权重向量能够建模关节之间的相对平移特性。
3)Spatial configuration partitioning.
作者提出了一种划分方法将邻居集划分为三个子集合:
a) 根节点本身
b) 比较靠近骨架重心的相邻点
c) 剩余远离骨架重心的点。
这种划分方法的原因在于身体各部分运动大致可分为同心运动模式以及偏心运动模式两种情况。
数学上可表示为:

N = N_0 \cup N_1 \cup N_2

其中,

  • N_0 表示仅包含根节点;
  • N_1 包含比根更接近骨架重心的所有点;
  • N_2 包含剩余远离骨架重心的所有点。
在这里插入图片描述

在论文中明确规定:在一个坐标系中所有关节的平均坐标被视为其重心 ,用r_i表示。

如上所述:

在这里插入图片描述

(a)输入示例框架。骨骼关节以蓝点表示。D = 1时的过滤器接受域以红色虚线框定。(b)Uni-labe算法中, 每个邻域内所有节点均具有相同的标签(绿色)。
{c}Distance partitioning方法中, 这两个子集分别对应于距离为0(绿色)和距离为1的所有相邻点。(蓝色)
(d)Spatial configuration partitioning方法中, 根据各节点至骨架重心的距离(黑色十字)与至根节点的距离(绿色)进行标记分类. 其中距根节点较近者被标记为蓝色, 而距根节点较远者则被标记为黄色。

在基于骨骼的动作识别实验中, 作者将对所提出的分割策略展开实证检验. 预计更高阶的空间划分策略能够显著提升模型能力和识别性能.

5.4空间图卷积

利用改进后的采样函数和权函数,我们现在用图卷积的形式将式(1)改写为

在这里插入图片描述

Z_{ti} 等于对应的基数,并用于归一化处理。
将采样函数(2)和权重函数(3)被代入(4),进而得到:

在这里插入图片描述

具体内容将在后续的代码学习中深入探讨。就该二维卷积而言,这个公式仍然具备普遍适用性。

5.5时空建模

在5.4节中未将时间序列因素纳入考量。反思一下,在构建图的过程中,我们关注的是同一节点在不同时间点的关联性。具体而言,图的时间维度则通过连接同一节点的连续帧来体现。这种结构使得我们可以设计一个相对简单的策略:在空间上采用结点邻域的思想,在时间上则将这一概念拓展至相同关节点的时间序列集合中。换言之,在空间维度上我们处理的是"结点邻域"这一概念,在时间维度上则将其推广至相同关节点的不同帧数据集合上。

Γ 参数决定了时间序列的时间跨度 。这实际上表示该序列包含多少帧。

在这里插入图片描述

5.6可学习边重要性加权

该部分主要关注性能优化,并未深入展开说明。实际上,在动作执行过程中虽然人们关节会发生集体运动(collective motion),但单个关节可能位于身体的不同部位(different body locations)。因此不同关节点的重要性存在差异(differential importance),应赋予不同的权重系数(different weight coefficients)。
作者的方法是在每一层中引入了可学习的掩码参数( learnable mask parameter),通过实验验证发现引入该掩码显著提升了模型性能效果(significant improvement in model performance)。

5.7STGCN的实现

在单帧时间段内,在考虑关节内部的运动学关系时

在这里插入图片描述

其中权矩阵元素Λ_ii等于各通道权重系数j与对应元素(Aij+Iij)的乘积之和。此处通过加权求和的方式综合各通道的信息。沿着第二个维度展开时, 将其与归一化后的邻接矩阵做点积运算以获取最终特征表示. 需要注意的是, 在这种情况下邻接矩阵已经被分解为若干子矩阵{Aj}, 其中A加单位阵等于各子块Aj之和. 例如在距离划分策略和空间配置划分方法中: 当采用距离划分策略时, 可取A0=I 和 A1=A; 当采用空间配置划分方法时, 可取其他形式的具体实现.

在这里插入图片描述

同样的,Λ^{ii} =\sum_{k}(A^{ik}_j)+α,在这里我们设置α= 0:001 避免A_j空行.

5.8网络结构与训练

将输入数据首先归一化处理至一个批量处理的标准化层中。该网络架构由9个时空图卷积单元构成(ST-GCN单元),其中前3层输出通道数为64个;中间3层采用128个通道数设计;并在此基础上应用了256个通道数的设计策略。为了防止过拟合,在每个STGCN单元之后,在0.5的概率下随机丢弃特征节点。时间卷积模块设置stride=2作为池化操作。通过全局聚合操作获得每个序列对应的256维特征向量。作者还提到,在数据增强方面采用了随机仿射变换方法(Random Affine Transform),并将其命名为random moving。

6.实验

这里不详细说明,主要是在Kinetics和NTU-RGB+D大型数据集上进行的实验。实验结果如下:
1)在Kinetics上的结果:

在这里插入图片描述

2)在NTU-RGB+D上的结果:

在这里插入图片描述

全部评论 (0)

还没有任何评论哟~