基于时空图卷积网络改进的人体行为识别方法
2022-06-25王松
王 松
(楚雄师范学院 管理与经济学院,云南 楚雄 675000)
人类行为识别(Human Action Recognition)是在计算机视觉(CV)和模式识别(PR)交叉领域的针对视频片段进行动作分类的人类行为理解问题,对姿势估计、理解视频信息有重要作用。以人类为主体的行为识别研究,主要应用集中在智能家居、智能监控安防、人机交互,还有基于内容的视频检索和推动智慧城市发展等方面。
在很多行业都可以使用行为识别技术,由于其具有广泛的应用前景和社会价值,行为识别一直都是计算机视觉(CV)和模式识别(PR)交叉领域的研究热点。行为识别算法的关键是能否从包含人类行为的视频中有效获取时间和空间上的行为信息,目前主流的行为识别算法主要是根据光流信息来训练卷积神经网络(Convolutional Neural Network,CNN)模型,受制于数据量以及光流信息对动作信息的表达很模糊,这种基于RGB图像的行为识别模型经常会因为视角的变化和复杂背景的干扰,从而导致泛化能力不足,在现实生活中很难应用[1]。而基于骨骼数据的行为识别可以较好地解决这个问题。目前,从2018年出现的时空图卷积网络(Spatial Temporal Graph Convolutional Networks)ST-GCN行为识别模型开始,各种实验已经证明GCN用于基于骨骼的行为识别能大幅提高识别的准确性,确定了在行为识别方向上利用图卷积的必要性,但如何更好地学习骨骼数据中关节点和骨架边所表达的动作特征仍然待解决。
本文针对以上问题,改进现有的时空图卷积网络(ST-GCN)行为识别模型。改进方法可进一步促进人体行为识别技术在智能家居、智能监控安防、人机交互、基于内容的视频检索、智慧城市发展等领域的广泛应用。
1 时空图卷积网络(ST-GCN)行为识别模型
1.1 ST-GCN模型结构基于骨骼数据的行为识别属于分类问题,需要从骨骼数据中提取骨架信息,获得动作特征,推理出该动作的分类。目前,ST-GCN首先提出了一个通用的基于图的框架对人体骨骼进行建模,取得了较好的效果。动作识别可以从人体的多种形态去识别,比如外形、深度、光流、身体骨架,但是人们对外形和光流的研究比较多,对包含有大量信息的动态骨架研究较少,先前有相关工作提出了一种有原则的、高效的时空图卷积网络(Spatial Temporal Graph Convolutional Networks)对动态骨架进行建模[2]。其中图卷积(GCN)之前大多被应用在图像分类、文献分类、半监督学习等任务中,然而很多任务都是将一个固定的图作为输入,在ST-GCN之前,利用图卷积在大规模数据集上对动态图进行建模还没有被研究,比如在人体骨架序列上。ST-GCN通过将图卷积网络扩展到时空图模型,设计出一种用于动作识别的骨架序列的通用表示。模型建立在由骨骼序列构成的图结构之上,其中图中的每一个点都对应人体骨架结构中的每一个关节点。这里有两种类型的边,一种是空间边(spatial edges),它建立在每一帧人体骨架的自然连接节点上,另外一种是时序边(temporal edges),它将连续两帧中相同节点连接起来,这样多层的时间空间图卷积就能被构造出来,学习时间维度和空间维度的运动特征。层级性的ST-GCN避免了手动划分身体部分和设计遍历规则,这不仅使得网络表达能力更强并且性能更好,同时也很容易在不同的场景中泛化。
1.2 ST-GCN模型邻域划分策略图结构数据和传统卷积的图像数据是不同的,在图像为代表的欧式空间中,结点的邻居数量都是固定的,而在图结构为代表的非欧氏空间中,邻居节点数量不固定、图结构大多不规则、节点顺序不确定[3]。处理图结构数据的难点在于邻居结点数量不固定,无法用固定大小可学习的卷积核来抽取特征,需要提出一种可处理变长邻居结点的卷积核在图上抽取特征,才能应用图卷积[4]。在ST-GCN中提出三种图邻居节点的分区策略:
第一:唯一划分(Uni-labeling):将节点的邻域划分为一个子集。
第二:基于距离的划分(Distance partitioning):将节点的邻域划分为两个子集,距离d=0表示节点本身与d=1表示邻居节点集,这样有两个不同的权重向量,它们能够对局部特性(例如关节之间的相对平移)进行建模。
第三:空间构型划分(Spatial configuration partitioning):将节点的邻域划分为3个子集,第一个子集连接了空间位置上比根节点更远离整个骨架的邻居节点,第二个子集连接了更靠近中心的邻居节点,第三个子集为根节点本身,分别表示了离心运动、向心运动和静止的运动特征。
1.3 ST-GCN模型图卷积实现ST-GCN模型主要利用图傅里叶变换(Graph Fourier Transform)实现图卷积操作[5]。单个帧内骨骼数据的内连接由邻接矩阵A和表示自连接的单位矩阵I表示。在单帧情况下,具有第一种分区策略的ST-GCN可以通过以下公式实现:
当采用第二种和第三种划分策略时,A+I=
设置a=0.001,是为了避免A j为空。为了实现可学习性的权重变化,对于每个邻接矩阵,增加一个可学习的权重矩阵M,将式(1)中的(A+I)替换成(A+I)⊗M,将式(2)中的A j替换成A j⊗M。
ST-GCN通过线性堆叠的GCN和TCN来间接扩大每个节点的感受野,有助于时空信息的提取。对邻域的手工划分虽然会增加参数数量,但也能提高网络对不同关节特征的刻画能力。但没有建立非相邻关节之间的直接连接,因此远端关节之间的信息交互可能会有困难。
2 基于ST-GCN改进的行为识别模型
2.1 骨骼图结构
2.1.1 骨骼信息通常基于骨骼信息的行为识别的输入为原始骨架数据,用开源姿态分析工具OpenPose处理NTU-RGB+D数据集中的骨骼数据,得到一系列动作帧,每个帧包含一组关节坐标。根据这些坐标,提取骨骼信息。记一个有N个节点和T帧的骨骼序列图为G=(V,E),其节点集合为V={vti|t=1,…,T,i=1,...,N},第t帧的第i节点的特征向量F(v ti)由该节点的坐标向量和估计置信度组成。
先前相关工作表明将关节点信息和骨架边信息结合在一起对于基于骨骼数据的动作识别效果有提升[6]。这里骨架边表示为两个相连关节点之间的坐标差,以3D骨骼数据为例,原始数据中的关节点表示为具有三个元素的向量,即其x坐标,y坐标和z坐标。给定两个关节点v1=(x1,y1,z1)和v2=(x2,y2,z2),从v1到v2连接的骨架被公式化为两个关节点向量的差,即e v1,v2=
2.1.2 有向图结构传统方法总是将骨骼数据建模为由循环神经网络(Recurrent Neural Network,RNN)或卷积神经网络(Convolutional Neural Network,CNN)处理的矢量序列或伪图像[7,8]。但是,这些表示忽略了关节和骨架之间的运动学依赖性。在ST-GCN提出的邻域划分策略启发下,将骨骼数据表示为有向图,来处理不同的信息方向,其中关节点为顶点,而骨架为边。每条边的方向由顶点与根节点之间的距离确定,距离根节点较近的顶点指向距离根节点较远的顶点,并且定义根节点为骨架的中心。如图2所示,显示了一个骨架对应的有向图表示的示例,其中标号为一的顶点是根顶点。从生物学上讲,人体骨骼是一个关节系统,距离人体中心较远的关节始终由更靠近中心的相邻关节进行物理控制。例如,腕部位置由肘部的位置和前臂的形状确定。这样,手前臂可以表示为从肘部指向腕部的有向边。
对于每个顶点v i,将以它为终点的边定义为传入边e-i,将从它出发的边定义为传出边e+i;类似的,对于每条边e j,定义为它是从出发点v sj到目标点。如果v i是e j目标点(出发点),则e j是v i的传入边(传出边)。如图2(a),v1和v2分别是e1出发点和目标点,相对的,e1是v2的传入边,e2和e3是v2的传出边。实际上,每条边仅有一个出发点和一个目标点,但对于每个顶点,传入边和传出边的数量是不确定的。分别用和ε+i表示顶点v i的传入边和传出边的集合。这样骨骼信息可以公式化为G=(V,ε),其中,V是顶点(关节点)集合,ε是有向边(骨架边)集合,则多帧的骨骼视频可以表示为S={G1,G2,…,G T},T为视频长度。
图1 骨架对应的有向图Fig.1 Digraph corresponding to skeleton
2.2 有向图网络对骨骼数据处理后,已将骨骼数据表示为有向图,因此现在的问题在于如何提取图中包含的信息以进行动作分类,尤其是如何得到图中关节点和骨架之间的依赖关系。针对此问题,借鉴图神经网络中的不动点理论和基于空间域的图卷积神经网络[9],提出有向图神经网络来解决此问题。该网络包含多个层,每层的输入为包含骨骼边和顶点参数的图结构,输出为更新参数后的相同图结构。这里的参数表示向量形式的骨骼边和顶点的属性。在每一层中,顶点和边的参数根据其相邻的边和顶点信息而更新。
在底层,每个顶点和边仅能从其相邻的边或顶点接收参数信息。这种多层网络在更新参数时能提取顶点和边的局部信息。例如,该模型可以提取关节的角度信息,该角度信息仅需要一个关节点及其两个相连骨架边的信息。而在顶层可以将彼此距离较远的关节和骨骼的信息聚集在一起。因此,提取的信息对于识别任务而言更具全局性和语义性。与传统CNN相比,该网络的输入为有向图,且可以对类似树状结构的骨骼数据进行建模。该设计借鉴于以前的基于骨骼的动作识别工作中的“身体部位”概念[10],其概念是为了划分人体区域,进行局部部位的关节建模。但是改进后的方法相比于ST-GCN,不需要手动设计邻域划分策略的过程也同样能得到骨骼的角度方向等信息,并且具有更好的性能。
有向图网络单元是有向图神经网络的基本块,它包含两个更新函数hv和he,以及两个聚合函数g e-和g e+。更新函数用于根据顶点和边连接的边和顶点来更新其参数,聚合函数用于聚合连接到一个顶点的多个传入(传出)边的属性。这是因为连接到每个顶点的传入(传出)边的数量是变化的,而参数的数量是固定的,由于这些边没有明显的顺序,因此聚合函数应该对其输入的排列保持不变,并且可以采用可变数量的参数,例如平均池化,最大池化和逐个元素求和。更新过程的公式如下:
v′和e′分别是v和e的更新后的值,e-表示输入边,e+表示输出边。该过程涉及四个步骤:
第一步:对于每个顶点v i,指向它的所有传入边都由传入聚合函数g e-处理,该函数返回聚合结果。
第二步:与步骤1相似,从v i发出的所有传出边都由传出聚合函数g e+处理,该函数返回聚合结果。
第三步:v i,和被一起作为顶点更新函数hv的输入,该函数将v i更新为v′i。
第四步:对于每条边e j,它的出发点、目标点和它自己将作为边更新函数he的输入,该函数将更新边e j为e′j。
该过程也可以概括为顶点更新过程,然后是边更新过程,如图2所示,(a)是原始图;(b)显示了顶点更新的过程,其中顶点本身(v2)的属性及其输入边缘(e1)和输出边缘(e2和e3)的属性被组合以获得更新的顶点(v′2);(c)显示出了边缘更新的过程,其中边缘本身的属性(e1)以及其源顶点(v′1)和目标顶点(v′2)的属性被组合以获得更新的边缘(e′1)。蓝色圆圈表示要更新的边(或顶点)。橙色圆圈和绿色圆圈分别表示更新中涉及的源顶点(或传入边缘)和目标顶点(或传出边缘)。在本次实验中,选择了平均池化作为传入边和传出边的聚合函数,并选择了单个全连接层作为更新函数。
图2 顶点和边的更新过程,(a)原始图,(b)顶点更新,(c)边更新Fig.2 Update process of vertex and edge,(a)Original drawing,(b)Vertex update,(c)Edge update
在实现有向图网络层时,顶点的输入数据实际上形成C×T×N v的张量f v,其中C是通道数,T是帧数,N v表示骨架图中顶点的数量。类似地,边的数据形成一个C×T×N e的张量f e,其中N e是图中的边的数量。这种类似ST-GCN的输入数据来实现有向图网络并不好,因为实现有向图网络单元的目的是找到每个顶点的传入边和传出边(ε-i和ε+i),并找到每条边的出发点和目标点(v sj和)。为此,使用图的关联矩阵(incidence matrix)来表示节点与边之间的连接关系,给定有N v个顶点和N e个边的有向图,A为N v×N e的边和节点的对应关联矩阵,其元素(A_ij,i=1,…,N_v;j=1,…,N_e)表示相应顶点(v j)与边(v j)之间的关系。详细来说,如果v i是e j的出发顶点,则A ij=-1。如果v i是e j的目标顶点,则A ij=1。如果v i和e j之间没有连接,则A ij=0。
为了将出发顶点和目标顶点分开,使用As表示出发顶点的关联矩阵,其中仅包含A中绝对值小于0的元素。类似地,将At定义为目标顶点的关联矩阵,其中仅包含A中大于0的元素。例如,对于图2(a)所示的图,下式显示了关联矩阵及其对应的As和At。
图2 训练集和验证集损失函数变化Fig.2 Change of loss function of training set and verification set
目前已经有了输入张量和关联矩阵,现在可以找到相关联的边和顶点,并通过矩阵乘法执行聚合函数。例如,给定f v和As,首先将f v变为CT×N v矩阵。那么,f v和As的乘积可以提供一个CT×N e张量。根据矩阵乘法的定义,该张量的每个元素对应于对应边的出发顶点的和。值得注意的是,本文实验中使用的聚合函数是平均池化函数,并且需要对关联矩阵进行归一化。而且,定义A的归一化为=AΛ-1,其中Λ是对角矩阵,Λii=∑j A ij+ϵ。ϵ设置为e-6,是为了避免A为零的情况。通过这些修改,将等式(3)转换为:
其中H表示单层全连接层,即式(3)中的更新函数。与常规卷积层相似,在每个有向图网络单元之后添加BN层和ReLU层。
2.3 注意力机制对动作识别而言,每个动作的信息往往集中在某一个或几个关节,而且肢节末端的关节由于运动更频繁,幅度更大,往往具有更多的关键信息。有向图网络单元的输入图是根据人体的骨骼自然结构手动设计的,这种方法在识别动作时可能忽略一些非连接信息。例如,左手和右手之间没有连接,但是对于拍手和拥抱之类的许多动作而言,两只手之间的关系对于识别至关重要。为了给图构造提供更大的灵活性,常规方法旨在通过在训练过程中学习图的拓扑结构来构造自适应图。先前有相关工作提出的ST-GCN在图的原始邻接矩阵上应用注意力机制,以将不同重要性的权重分配给不同的边[2]。如果使用A o表示原始邻接矩阵,即自然人体骨架结构图,则新的邻接矩阵A由A=PA o得到,其中P的元素初始化为1,并在训练过程中更新。然而,乘法运算不能改变原始邻接矩阵中的0元素,这意味着该方法只能改变已经存在的边的重要性,并且不能生成新的边,例如两只手之间可能存在联系。先前有相关工作提出与ST-GCN不同的方法,直接将邻接矩阵设置为网络参数,为了稳定训练过程,设置A=A o+P,其中P具有与A o相同的大小,并用0初始化[2]。这样就能够通过参数P在学习过程中添加新的边。但是,由于A o是不可修改的,因此我们无法删除不需要的边,这也降低了模型的灵活性。如果删除A o,则直接使得骨骼图的特征学习不受任何约束,反而会降低性能。实际上,在训练过程开始时存在更多不确定性,有或没有A o的差异主要在于训练过程的开始阶段。因为约束较少但参数众多的模型很容易收敛到局部最优。所以可以添加具有固定拓扑的图对模型进行标准化,这可以帮助模型收敛到全局最优值。
基于以上讨论,在原始矩阵A0的基础上添加常用动作的连接,这里设定人体动作中带有非自然连接的部分以手部关节为主,在自然连接的基础上连接手部与其他关节的连接,组成动作关联矩阵A=A0+A ha nd,将其作为固定拓扑结构,在前几个训练周期将其固定,将关联矩阵设置为模型的参数并用A初始化,但固定在前n个时期(标记为A n)。这样在早期确定图结构可以简化训练,而在训练后期可以为图构建提供更大的灵活。总结以上几种策略:
第一:A=PA0,ST-GCN的实现方式,这种方法只能改变已经存在的边的重要性,不能生成新的边。
第二:A=A0+P,这种方式可以生成新的边,但是无法移除原有的边。
第三:A=P,这种方法会使得图结构的学习不受骨骼自然连接的约束,可能会降低性能。
第四:A=A n,表示前n次迭代A=A0+A ha nd,后面的迭代A=P,这样用固定的图结构使得前期更容易训练,且容易学习到非骨骼连接关系,后期的不固定的图结构带来了更多的灵活性。
2.4 时间信息建模在基于骨骼数据的行为识别中,人类动作被记录为骨骼序列帧。在有向图网络只能处理单个帧的空间信息,即空间中关节的局部特征。因此,现在需要对骨架序列中的时间信息建模,学习时域上关节变化的局部特征。这里借鉴ST-GCN[11]所采用的时间卷积(TCN)思路和伪3D CNN[12]在基于RGB的动作识别中的方法,伪3D CNN使用2D卷积对空间信息进行建模,然后使用1D卷积对时间信息进行建模。受到这种方法的启发,在更新每个有向图网络单元中关节和骨架的空间信息之后,在时间维度应用一维卷积来对时间信息进行建模。因为在视频帧中,相同的关节或骨骼可以自然地组织为一维序列,较容易实现。
时间卷积可类比图像的卷积操作,关节的特征数、帧数、关节数(C,V,T)对应于图像中的通道数、图像的宽、图像的高(C,W,H)。卷积核的大小为kernel_size×1,则每次完成1个节点,进行kernel_size个帧的卷积。stride为1,则每次移动1帧,完成1个节点后进行下1个节点的卷积。
类似于有向图网络单元,每个1D卷积层之后是BN层和ReLU层,组成时间卷积单元。自适应的有向图神经网络的总体体系结构有10层,每个层包含一个有向图网络单元和一个时间卷积网络单元。单元的输出通道为64、64、64、64、128、128、128、256、256和256。最后在全局平均池化层之后添加softmax层,以进行类别预测。
2.5 双流框架由于仅从空间信息中很难识别出诸如“站起来”与“坐下来”之类的动作,这是由于缺少运动信息,即不同帧中骨骼位置的改变。之前基于常规RGB的动作识别方法通常使用光流场来描述视频的运动信息,都是通过计算连续帧之间的像素移动得到运动信息[13]。受这些方法的启发,在本次研究中提取了关节点和骨架在相邻帧之间的运动信息,以提高动作识别效果。由于骨骼数据表示为关节的坐标,因此可以将沿时间维度的坐标差视为关节的运动信息,类似地,骨架的形变表示为连续帧中同一骨架边的向量之差。理论上,关节点v在时间t中的运动计算为mv t=v t+1-v t,同样的,骨架边的形变定义为me t=e t+1-e t。与空间信息建模一样,运动信息被公式化为有向图序列:
然后,将运动信息图序列输入到另一个自适应图卷积网络中,组成双流网络,以对动作标签进行预测。最后,通过添加softmax层的输出得分来融合两个网络。
3 实验与分析
3.1 实验数据及预处理本文采用新加坡南洋理工大学ROSE实验室建立的行为识别数据集NTU-RGB+D作为实验数据[14]。数据集由60个动作类别(分成日常动作、医疗相关动作、双人交互行为三大类)和56880个视频动作样本组成,每个视频包含一个动作,包括单人动作(例如坐下)和双人动作(例如互相握手)。同时有四种不同的动作数据形式:RGB视频、3D骨架数据、深度图序列和红外视频。在本文实验中,选用3D骨架数据进行基于骨骼信息的行为识别研究。
3.1.1 数据的预处理原始数据集的输入为NTU-RGB+D的骨骼数据,然后要将人的臀关节和脊椎之间的骨骼与z轴平行,将人的右肩和左肩之间的骨骼与x轴平行,填充空帧等预处理,以NTU-RGB+D数据集为例,具体步骤(算法1处理骨骼数据为numpy张量)如下:
输入:骨骼数据文件(例如S001C001P001 R001A001.skeleton)。
输出:分别得到Cross-Subject与Cross-View基准下的训练集和验证集的骨骼点数据、关节数据和相应的标签数据文件,即data_joint.npy,data_bone.npy,label.pkl。
算法具体步骤:
第一步:获取动作标签数据,得到数据集中各个.skeleton文件名的AXXX,即表示action_class。
第二步:获得骨骼点数据,使用(N,C,T,V,M)的数据张量表示,分别表示动作标签,通道数,帧标签,节点标签,人数标签,如果有多个人,只取前两个body。
第三步:预标准化,得到第二步的数据张量,对于空帧用前一帧填充,将臀关节和脊柱关节之间的关节与z轴平行,将右肩和左肩之间的关节与x轴平行,减去中心关节(脊柱关节)。
第四步:获得关节数据,利用得到的骨骼点数据,定义关节数据为joint1-joint2,即data[:,:,:,v1,:]-data[:,:,:,v2,:]。
第五步:获得motion数据,利用得到的骨骼点数据,定义motion数据为相邻两帧的差异,即data[:,:,t+1,:,:]–data[:,:,t,:,:]。
3.1.2 数据的读取经过预处理,原始的骨骼数据已经处理成numpy张量保存在文件中,这里用一个Feeder类来对数据文件进行读取,同时按置信度排序,随机选择等方法导出,具体步骤(算法2数据的读取)如下:
输入:骨骼点数据文件路径,关节数据文件路径和标签数据路径。
输出:分别得到相应的dataset。
算法具体步骤:
第一步:输入参数为文件路径。
第二步:提供随机选择、归一化输入、计算数据的均值与标准差等方法,返回需要的dataset,包括骨骼点数据,关节边数据和标签数据。
3.2 准确性评估对于NTU-RGB+D,准确性评估有两个基准[15]:
第一:Cross-subject(CS),训练集和验证集中的人员互不相同。将40个主题分为训练和测试组。每组包括20个subject。对于此评估,训练和测试集分别具有40320和16560个样本。在此评估中,训练对象的ID为:1、2、4、5、8、9、13、14、15、16、17、18、19、25、27、28、31、34、35、38;其余科目保留供测试。所以训练集包含40320个视频,验证集包含16560个视频。
第二:Cross-view(CV),训练和验证集中使用的摄像机的水平角度不同。为了进行交叉视图评估,选择相机1的所有样本进行测试,并选择相机2和3的样本进行训练。换句话说,训练集包括动作的正视图和两个侧视图,而测试集包括动作的左右45度视图。对于此评估,训练和测试集分别具有37920和18960个视频样本。
3.3 基于ST-GCN改进的行为识别模型实现
3.3.1 有向图结构的定义用有向图来表示骨骼数据,对于NTU RGB+D,设定脊椎中心为“骨骼中心”,得到关节边的集合directed edges,得到骨骼图的关联矩阵。具体步骤(算法3定义有向图结构)如下:
输入:directed edges,节点数。
输出:得到有向图。
算法具体步骤:
第一步:得到骨骼原始边的集合directed edges,骨骼点数量num_nodes。
第二步:由骨骼自然连接得到原始关联矩阵A0,加上手部关节与其他关节的有可能的边A ha nd,得到关联矩阵A=A0+A ha nd,对A进行方向划分得到,出发顶点的关联矩阵As,目标顶点的关联矩阵At,归一化后得到骨骼图的关联矩阵source_matrix,target_matrix。
第三步:返回Graph,其中包括num_node、edges、source_M、target_M。
3.3.2 改进模型的定义定义模型,构造时间卷积单元和有向图网络单元。具体步骤(算法4定义网络模型)如下:
输入:骨骼数据的图结构Graph,图的关联矩阵。
输出:得到自适应图卷积网络模型Model。
算法具体步骤:
第一步:构造时间卷积单元。在C×T×N的特征图上,用K t×1对时间域进行卷积。
第二步:构造有向图网络单元。其中加入可调整的权重矩阵torch.nn.Parameter(torch.from_numpy(source_M.astype('float32'))),初始化为关联矩阵source_M和target_M,加上更新函数,再添加BN层和ReLU层。
第三步:自适应的有向图神经网络的总体体系结构有10层,每个层包含一个有向图网络单元和一个时间卷积网络单元。每层的输出通道为64、64、64、64、128、128、128、256、256和256。最后在全局平均池化层之后添加softmax层,以进行行为类别预测。
3.3.3 参数设置及结果本文实验设置的主要参数为学习率、每批数据量、优化器和训练轮次,具体的参数设置如表1所示。在数据集上训练时间约45小时,损失值和准确性的变化情况用tensorboard框架记录,得到结果如图3所示。可以看出,模型在80k次迭代训练后收敛。
表1 模型训练参数设置Table 1 Model training parameter setting
3.4 对比分析本文基于ST-GCN模型的改进,首先在邻域划分策略上,用有向图来处理不同方向的关节信息,相比于ST-GCN不需要手动设计邻域划分策略的过程,顶点和边的信息更新就可以获得类似于骨骼方向、角度等信息;其次在注意力机制上,增加注意力权重矩阵,在自然连接的基础上增加手部关节与其他部位有可能的连接,既可以改变边的权重还可以进行边的增加和删除,更好的捕捉动作特征;最后在数据增强方面,在原始骨骼信息反映的节点位置基础上,对相邻关节点取差值得到骨骼边动态信息,作为网络输入,不仅如此,对相邻两帧求差值,分别得到关节点和骨架边的运动信息,作为另一个网络输入,形成双流结构,提升识别准确性。
3.4.1 不同类型注意力机制对比ST-GCN在图的原始邻接矩阵上应用注意力机制,以将不同重要性的权重分配给不同的边。如果使用A o表示原始邻接矩阵,即自然人体骨架结构图,则新的邻接矩阵A由A=PA o得到,在此基础上,通过改进这种不能添加新的边的缺陷而提出的另外三种新的邻接矩阵策略,分别是改乘法运算为加法运算、替换原有的原始矩阵和前n次迭代A=A0,后面迭代A=P,本次实验设置n=10,20。表2显示了这四种方式的实验结果。
表2 不同类型注意力机制对比结果Table 2 Comparison of different types of Attention Mechanism
3.4.2 空间信息、运动信息和融合后的双流框架对比分别实验空间信息、运动信息和融合后的双流框架,对识别准确性做出比较,如表3所示,将空间信息和运动信息进行融合能提高动作识别的准确性,这也证明了学习运动信息的必要性。
表3 识别准确性的对比结果Table 3 Comparison results of recognition accuracy
4 结论
本文针对目前利用时空图卷积网络ST-GCN行为识别模型进行人体行为识别准确性有待提高和如何更好地学习骨骼数据中关节点和骨架边所表达的动作特征等问题,改进现有的时空图卷积网络(ST-GCN)行为识别模型。针对传统模型需要手动划分身体部分而在骨骼长度、方向等信息缺失的问题,提出有向图网络,聚合和更新顶点和边的局部信息,包含骨骼边与骨骼点的依赖关系,更具有全局性。将提取的骨骼点数据和骨架边数据都作为网络输入,与空间信息形成双流结构,提升对空间信息的表达能力,提升识别准确率。改进后的模型在NTU-RGB+D数据集上达到了96%的准确率。实验证明,改进后的模型在识别准确率上较原模型提高了7.7个百分点。并研究了在不同的注意力机制中,即不同的权重矩阵策略对识别准确率的影响,根据NTU-RGB+D数据集上的对比实验显示,权重矩阵在训练前期使用固定骨骼结构的关联矩阵,后期为可学习的参数矩阵,能加快模型收敛速度,对于模型识别准确率有1-2个百分点的提高。