时空图卷积网络ST-GCN论文完全解读记录


前言

最近在研究基于图神经网络的行为识别方法,在此研读ST-GCN论文《Spatial Temporal Graph Convolutional Networks for Skeleton-Based Action Recognition》,并对文章进行详细解读,便于理解。


一、基于图神经网络的图分类问题

在介绍ST-GCN文章内容前,先简单介绍一下什么是基于图神经网络的图分类问题。

图神经网络本质上也是一种特征提取方法,不过提取对象是”图“这类非欧几里得结构的数据。如下图所示(为了避免与图片(image)混淆,后续内容将用graph来代替“图”)
从graph到二维特征向量
图神经网络的本质工作就是特征提取,并在图神经网络的最后实现图嵌入(将graph转为特征向量)。图分类的实现过程如下图所示,首选使用图神经网络进行graph的特征提取,最后进行readout操作(将graph的信息转换为可直接用于分类的n维特征向量),然后送入softmax进行分类,实现对graph的分类(如果有传统卷积神经网络分类经验的话应该很好理解)。
在这里插入图片描述
在本文中,图分类具体表示为下图(可与上图比较相看,利于理解)。

Input Video可根据人体关键点组成graph,作为输入数据,中间的ST-GCNs负责特征提取,最后readout用于softmax分类。
在这里插入图片描述


二、ST-GCN文章解读

1.基于openpose实现人体骨骼提取

openpose是一个开源的人体关键点检测工具,可以直接在github下载源码并使用CMAKE编译生成可调用API,在此不做赘述。ST-GCN直接使用openpose工具进行人体关键点提取(将输入视频分割为多个帧,对每一帧进行关键点检测,并将其打包,用于后续操作),文中没有针对关键点提取的进一步研究(毕竟关键点提取并不是本文重点)。


2. 基于人体关键点构造graph

现在我们有了一段视频中,不同帧之中的人体关键点信息。我们在骨架序列上构造了一个无向时空图G = (V, E),该骨架序列包含N个关节和T个帧,同时具有体内和帧间连接,即时间-空间graph

组合方法:把一帧中每个人体关键点作为node,人体关键点之间的自然连接和时域连接作为edge,构成graph(可以理解为三维的graph),如下图所示。
在这里插入图片描述

2.1 构造单帧graph(空间域)

一个graph可表示为G = (V, E),V为节点特征(node),E为边特征(edge)。其中

V = {vti|t = 1, . . . , T, i =1, . . . , N}

即vti表示不同节点特征,其中t表示不同帧的节点(即时间域),i表示同一帧中不同人体关键点(节点),vti的维度为(x,y,confidence),其中x,y为该关键点的坐标,confidence为该关键点的置信度。

根据V节点即可即可组成单帧的graph(即上图的深蓝色部分)。

2.2 构造帧间graph(时间域)

在连续帧中找到相同节点,并将其连成时域信息(edge的信息)。

edge信息由两个子集组成。

第一个子集:同一帧中,关键点间的关系(i表示同一帧中不同的关键点,j表示不同帧间的同一关键点)
在这里插入图片描述
第二个子集:不同帧间的人体关节间的关系
在这里插入图片描述
至此,根据一段视频中不同帧的人体关键点信息组成了,包含空间与时间信息的graph。

其中,节点信息为(横坐标,纵坐标,置信度);边信息为(ES,EF)。


3. ST-GCN模型

ST-GCN模型中介绍了如何对上述过程构造的graph进行计算。

在这里先写出传统卷积网络的公式
在这里插入图片描述
其中,p为采样函数,采样x像素点周围h,w范围内的相邻像素点做卷积运算;W为权重函数,提供用于与输入采样特征进行内积运算的权重矩阵。

将这种方法扩展至graph上,x像素点等同于graph的node;一个像素点位置包括n维特征,等同于一个node上包含着n维特征。在此定义graph上的卷积运算,即把Vt节点特征经过卷积运算后得到c维的向量特征。
在这里插入图片描述
下面对graph上的采样函数p和权重函数w进行重新定义。

3.1 采样函数

在传统卷积神经网络中,采样函数可以理解为卷积核的大小,即每次进行卷积运算(特征提取)时所覆盖的范围。例如,一个3*3的卷积核,在对某一个像素点进行卷积操作时,实际是将该像素点于其相邻的8个像素点的信息进行计算、聚合。

在ST-GCN中,节点等同于传统卷积的图像像素点,采样函数就是负责指定对每个节点进行图卷积操作时,所涉及到的相邻节点范围,在本文中D = 1,即一阶相邻节点(直接相连的节点),用公式表示如下,其中d表示两个节点间的距离。
在这里插入图片描述在这里插入图片描述
对于D=1,采样函数p可以写为下式,即只采样直接相邻的节点
在这里插入图片描述

可视化如下图,这张图在原文中是解释分区策略的,但也比较适合解释采样函数。若以红色节点为计算图卷积的中心node,则其采样范围为红色虚线内的节点,也就是D=1的相邻节点。
在这里插入图片描述

3.2 权重函数

在传统神经网络中,权重函数可通过按照空间顺序(如从左到右、从上到下)索引一个(c,K,K)维张量(即c *K *K的卷积核)进行来实现。对于graph,没有这种默认的空间排列,所以需要自定义一种排列方式。

本文采用方法:对graph中某node的相邻node进行子集划分,每个子集都有一个label,即实现映射:
在这里插入图片描述
将相邻节点映射至它所属的子集label。具体划分规则在后文有具体介绍。

至此,权重函数(W(vti, vtj)表示基于某node及其邻域得到权重向量Rc)
在这里插入图片描述
可以通过直接下标一个(c,K)张量实现,或用下式(lti(vtj)表示vtj在以vti为中心节点进行分子集标签中的所属标签)实现
在这里插入图片描述

3.3 空域图卷积

传统卷积公式更新为graph上的卷积公式:
在这里插入图片描述
其中
在这里插入图片描述在这里插入图片描述
是标准化项,即相应子集的基数,用于平衡不同子集的贡献度。

再把前面讲到的采样函数、权重函数更新至公式,得到下式:
在这里插入图片描述

3.4 空间-时间模型

在上一小节,我们已经得到了针对广义graph的卷积运算公式,现在针对ST-GCN中的空间-时间graph进行图卷积公式的进一步优化更新。

在前文中一直提到graph中某个节点的相邻节点,那么在时间-空间graph上又该如何定义相邻节点呢?本文提出的定义公式为:
在这里插入图片描述
从上式可以看出,相邻节点的定义是“在空间距离上小于K,在帧距离上前后小于Γ/2”,即在空间邻域的定义上加入了时间约束。
在这里插入图片描述
上文介绍的采样函数、权重函数是针对空间graph的,时间上的图卷积也需要一套采样函数、权重函数。其基本原理一致,只是重新定义一下标签分组的映射函数,其余计算方式相同
在这里插入图片描述

3.5 分区策略

文章中共提到三种分区策略,如下图所示。我对分区label的理解就是,同一个分区中的节点在卷积计算时,与之内积的权重向量时一样的,有几个分区就有几种权重向量。
在这里插入图片描述
(a) 输入骨骼序列的示意图,红色节点为本次卷积计算的中心节点,红色虚线内蓝色节点为其采样的相邻节点。

(b) 单一划分:把节点的邻域节点全划为一个子集(包括自身),缺点:邻域节点与同一个权重进行内积,无法计算局部微分属性。

© 基于距离划分:中心节点为一类,相邻节点(不包括自身)为另一类

(d) 空间配置划分(也是本文真正采用的方法,这么分配或许更能表征人体关键点的向心运动与离心运动):按照关节点的向心离心关系定义,r表示节点到骨骼图重心的平均距离。此时对于一个节点的卷积运算,其权重矩阵包括三种权重向量。
在这里插入图片描述

3.6 可学习的边重要性权重

因为人体在运动时,某几个关节经常时成团运动(如手腕和肘),并且可能出现在身体的各个部分,因此这些关节的建模应包含有不同的重要性。

为此,ST-GCN为每层添加了一个可学习的掩膜M,它基于骨骼graph中边的信息学习到的重要性权重来衡量该节点特征对其相邻节点的贡献度。

这里最初我看的时候没太看明白,就用自己的话又说了一遍:ST-GCN为由人体关键点构成的graph中的每个边都赋予了一个衡量这条边所连接的两个节点间相互影响大小的值,而这个值是通过graph的边信息训练学习得到的。

这种方法提升了ST-GCN的效果,文章最后说可以再考虑加入注意力机制。


4. ST-GCN模型的实现

4.1 图卷积经典公式

ST-GCN的图卷积思想来源自《Semi-Supervised Classification with Graph Convolutional Networks》,文中介绍了一种基于频域的图卷积方法,公式如下。如果想学习这篇论文,可以结合我的另一篇博客DGL-GrapgConv源码注释,里面有我的笔记,可能会更便于理解。
在这里插入图片描述
在这里插入图片描述
其中,A是graph的邻接矩阵,I是单位矩阵,A+I即给graph加了个自环,以保证数据传输的有效性。W则是由多个输出通道的权重向量组成。fin是输入的特征图,其维度为(c,V,T),其中V为节点数,T为帧数

4.2 图卷积实现

在这里再放一下基于频域的图卷积公式
在这里插入图片描述
实现过程:先执行 1 × Γ的2D标准卷积fin W,再与Λ− 1/2 (A + I)Λ− 1/2相乘。

4.3 对于有多个子集划分策略的处理

上述公式只适用于单一子集划分的方法,即所有的W都一样,对与有多个子集的划分策略,邻接矩阵A被分为多个矩阵Aj,其中
在这里插入图片描述
因此,之前的频域图卷积公式变成了
在这里插入图片描述
在这里插入图片描述
这里加个α是为了不让Λ存在全为0的一行,不然会没有办法求Λ-1/2。

4.4 可学习的边重要性权重实现

ST-GCN为每个邻接矩阵(表示了graph的内部连接关系)配有一个可学习的M

对于4.2与4.3中的公式,分别把其中的A+I和Aj改为:A+I叉乘一个M(元素相乘);Aj叉乘一个M,如下式所示。
在这里插入图片描述
在这里插入图片描述


5. ST-GCN网络架构与训练

至此,已经实现了基于openpose提取人体关键点,根据关键点建立时间-空间graph,再重新定义时间-空间graph上的卷积方法。最后进行网络架构设计和训练设计。

1、由于在同一层GCN中,不同的节点共享权重矩阵,因此要保持输入数据的规模是一致的。所以再输入数据时先进行一次批规范化Batch-Normalization。

2、ST-GCN由9层ST-GCN模块组成,前三层输出64维特征,中间3层输出128维特征,最后3层输出256维特则会那个,每一层的时间核Γ都为9,并且每一层都有resnet机制
3、为了避免过拟合,每层都加入dropout=0.5,第4、7层的池化stride=2。

4、最后是对graph进行readout操作,即将图嵌入,将graph数据转为n维向量,并送入经典分类器softmax进行图分类。

5、再训练过程中,采用随机梯度下降方法,初始学习率设为0.01,每经10epoch衰减0.1倍。

6、为了防止过拟合,在数据方面进行增强。首先对骨架序列进行仿射变换(模拟相机移动);再在原始序列中随机抽取片段进行训练。


总结

论文最后一部分就是各种比较实验了,这里就不在过多讲述了,总之比较了半天,得出ST-GCN在NTU-RGB+D数据集上效果优异,但在kinetics数据集表现一般的结论,论文分析说可能是因为ST-GCN没有充分考虑人物与背景的互动关系所致。

时空图卷积神经网络(Space-Time Graph Convolutional Network,简称ST-GCN)是一种用于处理时空数据的神经网络模型。它主要应用于视频动作识别、姿态估计等任务,能够有效地从连续视频序列中学习时空特征。 ST-GCN的核心思想是将视频序列抽象为时空图结构。在时空图中,每个节点代表一个视频帧,节点之间的边表示它们之间的时序关联关系。通过构建时空图ST-GCN能够捕捉到视频中相邻帧之间的时序信息。 ST-GCN通过两个关键的操作来处理时空图。首先是图卷积操作,它通过聚合相邻帧的时序信息来更新每个节点的特征表示。这种图卷积操作可以有效地传播并整合时序信息,从而将时空关系编码到节点的特征中。 其次是1D卷积操作,它在每个节点上进行,用于进一步提取节点的时序特征。通过多个1D卷积层的叠加,ST-GCN可以逐渐抽象出更高级别的时序特征。 最后,ST-GCN会将最终的表示传递给分类器进行动作识别或其他任务。分类器可以是全连接层、支持向量机等,用于从抽取的时空特征中预测视频的标签。 总结来说,ST-GCN是一种专门用于处理时空数据的神经网络模型。它通过构建时空图,并通过图卷积和1D卷积操作来抽取视频序列中的时序特征。ST-GCN在视频动作识别等任务中取得了较好的性能,对于时空关联关系的建模具有较强的能力。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值