[论文阅读]Spatial Temporal Graph Convolutional Networks for Skeleton-Based ActionRecognition
目录
一.概括
二.传统GCN与本文ST-GCN之间的区别
三.实现ST-GCN的细节
一.概括
传统的a骨骼建模方法通常依靠手工制作部分或遍历规则,从而导致表达能力有限和泛化困难.过往方法能力的限制在于不能精确的提取关节之间的空间关系,而这些空间关系对于理解人类活动是重要的。
本文旨在开发一种有原则的、有效的动态骨骼建模方法,并将其用于动作识别。提出了一种新的 ST-GCN,即时空图卷积网络模型,用于解决基于人体骨架关键点的人类动作识别问题。通过自动从数据中自动学习空间和时间模式,超越了以往方法的局限性。
1.空间上:将骨架之间的关键点作为空间关系的输入(存在着不同点之间邻域大小不定的困难,考虑到用基于Graph的CNN网络模型);
2.时间上:使用视频数据,利用图片之间的时序关系。
如何构成时空图:
1. 在每一帧内部,按照人体的自然骨架连接关系构造空间图;
2. 在相邻两帧的相同关键点连接起来,构成时序边;
3. 所有输入帧中关键点构成节点集(node set),步骤 1、2 中的所有边构成边集(edge set),即构成所需的时空图。

二.传统GCN与本文ST-GCN之间的区别
图卷积网络:
在图像上,卷积操作使用一些固定大小的卷积核(filter/kernel)来扫描输入的图像。在每个扫描的中心位置像素附近,抽取一个与权重矩阵大小相同的像素矩阵,将这些像素上的特征向量按空间顺序拼接并与卷积核的参数向量做内积以得到该位置的卷积输出值。在这里,「附近像素」可以定义为像素网格(grid)上的一个邻域(neighborhood)。将图像上的卷积操作推广到任意结构的图结构上时,我们同样可以定义任何一个节点的邻域,与一系列权重矩阵。
GCN(基于图的空间结构构造思路):
GCN是将graph当做图像输入到CNN中。通常graph中,一点的邻域中节点(neighborhood)个数不同,不能确定 1)需要使用的卷积核的参数维度;2)如何排列权重矩阵与邻域内的节点以进行内积运算。在原始的 GCN 文章中,作者提出了将内积操作变为这样一个操作:使用同一个向量与所有邻域内的点上的特征向量计算内积并将结果求均值。这使得: 1)卷积核的参数可以确定为一个固定长度的向量;2)不需要考虑邻域内节点的顺序。这个设计使得 GCN 可以在任意连接关系的图上使用,并在一些任务,如网络分析和半监督学习中取得了较好的性能。
ST-GCN:
传统GCN存在问题:平均操作在骨架动作识别会遇到一个重要问题,即:它无法建模关键点之间相对位置变化的情况。
为了解决这个问题,我们将理解了图像上的卷积操作理解为把中心像素相邻的像素集合(邻域集-neighbor set)按照空间顺序,如从左至右,从上至下,划分为一系列集合。在图像的情形中,每个集合正好包含一个像素。这些集合就构成了邻域集的一个划分(partition)。卷积核的参数只与这个划分中的子集个数以及特征向量长度有关。那么在普通的图结构中,只要定义了某种划分规则(partitioning strategy),我们就也可以参照图像卷积来定义卷积核的参数。

空间划分提出了三种划分策略:
1)Uni-labeling:其与原始 GCN 相同,将节点的 1 邻域划分为一个子集。
2)Distance:将节点为1邻域分为2个子集,一个是节点本身,一个是邻域节点。
3)Spatial configuration:将节点的 1 邻域划分为 3 个子集,第一个子集为节点本身,第二个为空间位置上比本节点更靠近整个骨架重心的邻节点集合,第三个则为更远离重心的邻节点集合。(建立这种划分规则在根据运动分析的研究中对向心运动与离心运动的定义。)
时间划分:
在时间上,由于时序边构成了一个网格,我们可以直接使用类似于时序卷积(temporal convolution)的划分规则。
最终,时空图上使用的划分规则得到的子集集合会是空间划分与时序划分的笛卡尔积。
三.实现ST-GCN的细节
单个帧内关节的体内连接由邻接矩阵A和表示自连接的单位矩阵I表示。在单帧情况下,具有第一个分区策略的ST-GCN可以用以下公式来实现:

这里将多个输出通道的权值向量堆叠形成权值矩阵w。在实践中,在时空情况下,我们可以将输入特征映射表示为(C、V、T)维度的张量。图卷积是通过执行1×Γ标准二维卷积来实现的,并将得到的张量与第二维上的归一化邻接矩阵
相乘。
对于具有多个子集的划分策略,即距离划分和空间配置划分,我们再次利用这个实现。但是现在注意邻接矩阵被分解成几个矩阵Aj,其中
网络架构和训练
由于ST-GCN在不同的节点上共享权值,所以在不同的关节上保持输入数据规模的一致性是很重要的。
首先将输入骨架输入到批归一化层来对数据进行归一化。ST-GCN模型由9层时空图卷积算子(ST-GCN单元)组成。前三层有64个通道用于输出。下面的三层有128个通道用于输出。最后三层有256个通道可供输出。这些层有9个时态内核大小。Resnet机制应用于每个ST-GCN单元。在每STGCN单元后,我们以0.5的概率随机丢弃特征,以避免过拟合。第4层和第7层时间卷积层的步长设置为2作为池化层。然后,对得到的张量进行全局池化,得到每个序列的一个256维特征向量。最后,我们将它们输入到一个SoftMax分类器。该模型的学习采用随机梯度下降法,学习率为0.01。我们每10个epochs将学习率衰减0.1。
