辛华磊 丁英强 高 猛 陈恩庆
(郑州大学信息工程学院,河南郑州 450001)
人体动作识别是计算机视觉领域的热门研究方向之一,包括深度相机在内的多种传感器的出现使得人们可以使用RGB、光流、深度[1]和骨骼等多种模态数据进行动作建模。其中骨骼模态数据与其他模态数据相比没有复杂的背景和动态环境,并且能够编码自然人体结构,具有较强的环境适应性和动作表达能力。同时Kinect相机的应用和姿态估计算法的发展使得人体骨骼数据可以比较容易地获得,因此基于骨骼点数据的动作识别正获得越来越多的关注和研究。
早期骨骼点动作识别方法使用人工构建的特征进行动作识别[2,3],需要大量调参且特征表现力差。近年来随着硬件资源的提升,深度学习表现出了越来越强大的建模优势,因此研究人员更多使用深度学习模型对人体动作特征进行自动提取和分类。基于深度学习的骨骼点动作识别方法最早主要使用递归神经网络(RNN)[4]和卷积神经网络(CNN)[5]提取人体动作特征。虽然这些方法都可以处理骨骼点数据的时间和空间信息,但它们并未充分利用骨点数据的天然图形结构。近年出现的图卷积网络(GCN)可以充分利用节点之间的连接关系来对数据进行建模,十分适合基于骨骼点数据的动作识别应用场景。因此Yan 等人率先将图卷积网络引入到骨骼动作识别提出时空图卷积网络(ST-GCN)[6],利用人体关节之间的自然连接关系进行动作建模。但目前基于GCN 的模型往往使用固定空间配置分区方案且手动设定各骨骼关节点之间的连接关系,无法更好适应不同动作的变化特征。针对此问题,本文提出多配置分区的自适应时空图卷积网络模型用于骨骼点动作识别。
基于GCN 的骨骼点动作识别模型中的各个分区(即邻接矩阵)即构成了模型的基本图卷积算子,用来对骨骼点数据进行卷积运算。传统用于骨骼点动作识别的GCN 模型采用的空间配置分区策略是根据人体关节的自然连接关系将骨骼点数据固定地划分为根节点、向心点和离心点三个分区。使用固定的分区策略或卷积算子,将无法为骨骼点建立更丰富的连接关系,可能不能更好适应不同动作的变化特征,无法保证该策略一定是最优的。为了探究不同分区个数对网络性能的影响,本文提出在可行的分区个数范围内(由实验室硬件条件决定)迭代训练搜索最优的分区个数的方法。同时各个分区或卷积算子(即邻接矩阵)由人工根据人体关节自然连接关系构建,人为的将三个分区分别限制在根节点集、向心集和离心集,当分区个数高于3 时将无法充分利用人体关节自然连接关系,而在一定程度上限制了邻接矩阵的自适应学习能力,因此本文提出摆脱人体骨骼点自然连接关系束缚的方法,使用可学习的矩阵代替人工构建的邻接矩阵。本文所选取的主要对比对象(基线)是石磊等人提出的双流自适应图卷积网 络(2s-AGCG)[7],在NTU-RGBD[8]和Kinetics-Skeleton[9]等大型数据集上进行的大量实验结果表明本文所提方法可以获得比目前多数文献更高的动作识别精度。
基于RNN的方法主要使用LSTM和GRU等网络对骨骼序列进行时序建模。把骨骼数据的3D位置坐标序列作为输入,可以建立时域中人体关节信息和运动之间的联系,但是单独无法处理人体骨架的空间信息,因此需要引入额外的处理模块。Du等人[4]提出分层递归神经网络将人体骨架分为五部分,对主干和四肢分别进行处理,该分层结构可以处理人体骨架各部分之间的空间关系。为了建立更强的空间依赖,Liu 等人[10]提出一种关节邻接图的遍历方法,首次探索输入序列中关节之间的连接关系。基于RNN 的方法很难建模高层语义信息,所以基于CNN的方法更为人们所青睐。Li等人[5]将人体骨骼数据转化为伪图像作为CNN 的输入,首次在时间和关节上聚合特征。文献[11]提出的全局共现网络(HCN),创造性地将关节和通道的维度进行交换从而实现特征并行计算,并可以很自然地拓展到多人的动作识别任务。虽然基于RNN 和CNN 的骨骼动作识别方法,都可以在时间和空间提取数据的动作特征,使网络性能达到较高的水平,但它们并未充分利用骨点数据的天然图形结构,未充分利用人体关节之间的连接关系。
图卷积网络(GCN)可以充分利用节点之间的连接关系来对数据进行建模,Yan 等人[6]提出了时空图卷积网络(ST-GCN),首次将GCN 引入到骨骼动作识别上。ST-GCN 使用固定的由人体自然连接构建的邻接矩阵,因此网络无法对其时空图结构进行优化。为了解决这样的问题,石磊等人[7]提出了自适应图卷积网络层(2s-AGCN),在预定义的时空图上添加了数据注意力矩阵和自适应邻接矩阵,用来为人体关节学习更丰富的连接关系。为了捕获更强的关节依赖关系,文献[12]提出添加A-link 推理模块的AS-GCN 网络。文献[13]认为节点和骨骼之间有运动相关性,提出的DGNN模型将ST-GCN 中的无向时空图定义为有向的时空图来更好地利用节点和骨骼之间的运动相关性。此外,多数GCNs 模型的最后分类阶段使用平均池化层聚合数据信息忽略了数据的时空结构,Liu 等人[14]提出的GCN-HCRF 模型为了解决这一问题将分类层替换为隐藏条件随机场保留数据的时空结构进行端到端训练。但是,以上这些GCN模型均使用固定3 个空间配置分区且手动设定各骨骼关节点之间的连接关系,无法更好适应不同动作的变化特征。针对此问题,为了搜索更合理的配置分区个数和自适应获取关节点连接关系,本文提出了多配置分区的自适应时空图卷积网络模型用于骨骼动作识别方法。下文第3 节和第4节分别介绍方法的细节和实验。
本文提出的用于骨骼动作识别的多配置分区的自适应时空图卷积网络整体结构如图1 所示。网络整体包括一个批量归一化层(BN)、十个多配置分区的自适应图卷积网络层(MP-AGCN,具体结构将在下文介绍)并分别和时间一维卷积(TCN)级联(L1 到L10),还有一个全连接层(FC)。为了保证网络的稳定性在图卷积之间添加残差连接(Res),残差连接自L2 层开始。首先经过BN 层对数据进行归一化处理,然后十个MP-AGCN 和TCN级联提取归一化后数据的动作特征,最后FC 层对特征进行分类。L1 到L10 层MP-AGCN 输入输出维度和TCN 卷积步长如表1 所示,MP-AGCN 中2D卷积核大小为1×1,TCN中一维卷积核大小为9。
表1 十层MP-AGCN参数和TCN卷积步长设置Tab.1 Ten-layer MP-AGCN parameters and TCN convolution step setting
时空图卷积网络的输入可以表示为一张时空图G=(V,E),如图2 左侧所示。V={vti|t=1,...,T,i=1,...,N},T表示序列帧,N表示关节位置,vti表示第t帧第i关节的2D 或3D 坐标数据;E包括ES和EF,ES={vtivtj|(i,j)∈H}表示在一张骨骼数据帧中人体关节之间的连接,H为关节自然连接集合,EF={vtiv(t+1)i}表示在时间纬度上相同关节互联。ST-GCN 采用空间配置分区的策略根据节点距人体重心的远近距离将时空图划分为三个分区,根节点集、向心点集和离心点集如图2 右侧所示。黑色填充的圆节点表示根节点,黑色填充的方形节点是向心点,黑色填充的三角形节点为离心点。
单张骨架上ST-GCN由下面公式(1)所定义:
其中fin作为网络输入,输入的是时空图中的骨架序列V,fout为ST-GCN 网络输出,是经过全连接层输出的行为类别。Kv的大小由配置分区个数所决定,文献[6]使用空间配置分区的划分方式,将Kv的大小设置为3。三个配置分区分别由邻接矩阵Ak表示,其中k∈{1,2,3},Ak大小为N×N。Wk是图卷积的权重函数,是一个卷积核大小为1×1 的二维卷积。Mk是一个N×N的注意矩阵用以学习邻接矩阵中节点连接的重要性权重,⊙表示点积。
由于ST-GCN 中邻接矩阵A k在各个时空图卷积网络层共享,并且只能使用人体自然连接关系,而无法建立不存在的连接,但很多动作过程中不直接相连的骨骼节点间也会存在动作的相互关联。例如穿鞋等动作,手和脚之间的骨骼关节点会有关联关系,即会存在人体自然结构关节点之外的连接关系,此时仅包含人体骨骼点自然连接关系的预定义邻接矩阵将无法保证学习得到的骨骼点连接关系是最优的。基于此,自适应时空图卷积网络[7](2s-AGCN)试图自适应地学习不存在的连接关系,同时试图学习样本之间的数据相关性。2s-AGCN 的空间图卷积结构如图3 左侧所示,该结构图可由公式(2)表示。
其中Bk是一个和Ak行列个数相同的矩阵,其参数在训练中学习,用以建立人体结构不存在的关节连接关系。Ck是样本数据之间的注意力图,可以由公式(3)得到,使该模型完全是数据驱动的,其中Wθ和Wφ是高斯嵌入函数的权重。两个高斯嵌入函数的输出相乘得到大小为N×N的关节相似性权重矩阵,该相似性矩阵经过softmax 激活函数[7]得出样本中任意两个关节之间的相似性得分。不同样本在受试者和摄像机的影响下即便是相同动作特征也会具有相当大的差异。双曲正切tanh 函数可以扩大特征效果,因此本文使用tanh函数(tanh计算公式如公式(4)所示)计算样本之间的相似性。与STGCN 一样2S-AGCN 同样添加了残差连接以保证网络的稳定性。
多数基于GCN 的模型往往使用固定空间配置分区方案且手动设定各骨骼关节点之间的连接关系,无法更好适应不同动作的变化特征。针对此问题,我们提出多配置分区的自适应时空图卷积网络模型用于骨骼点动作识别,通过搜索更合理的配置分区个数和自适应获取关节点连接关系使网络模型具有更强的动作表示和建模能力。
目前基于GCN 的方法均是将时空图划分为根节点集,向心点集和离心点集三个分区,即Kv=3。然而,不同类型的动作其骨骼数据的特点也不尽相同,因此骨骼节点配置分区的数目也应该相应灵活调整,固定的配置分区个数将限制模型对骨骼数据的建模能力。因此,本文中我们探索了不同配置分区数目对骨骼点行为识别的影响。我们使用搜索的方法,将训练集上达到最高识别率的配置分区划分个数作为模型配置分区个数选定的依据。本文所提模型的空间网络结构可以用图3中右侧图表示。该网络结构也可由如下公式(5)表示
其中,k∈{1,2,...,Kv},Kv为配置分区个数,根据不同动作训练数据的特点搜索得到,相关实验结果见4.2.1 小节。Bk和时间网络与文献[7]中使用相同的配置方案,Ck中相似性函数使用双曲正切tanh函数。
此外,文献[7]中研究了各个类型的图对于动作识别的重要性,表明公式(2)中Ak、Bk和Ck都影响模型的最终识别结果。而后续文献[7]的作者进一步探究了Ak的必要性[15],即只使用Bk和Ck两个类型的图,且Bk使用Ak进行初始化,结果表明同样可以获得与同时使用三个类型图相同的识别性能。因此可以证明Bk在训练过程中获得的信息可以代替Ak。另一方面,当分区个数不为3 时,将需要对文献[7,15]中根据人体自然连接关系构造的三个分区Ak进行改造。我们探究了多种构造方式,但均无法保证所构造的Ak是最优的,在多个分区情况下无法充分利用人体自然连接关系。因此我们提出完全舍弃预定义的Ak,不使用其对Bk进行初始化,即脱离人体关节自然连接关系,只使用Bk和Ck从零开始学习关节之间的连接关系及相应的权重。这样就可以避免模型无法充分利用人体自然连接关系而受到不必要的约束或限制,从而更好地对复杂动作进行建模。
研究表明骨骼数据中不止骨骼关节点坐标很重要,关节点与关节点之间的一段骨骼同样重要。可以使用一个向量(骨骼向量)表示一段骨骼,此向量的大小和方向分别表示该段骨骼的长短和方向。人体骨架的中心关节点被视为源关节点。骨骼向量的大小为骨骼两端关节点坐标的差值,而骨骼向量的方向是自靠近源关节点的关节指向远离源关节点的关节。自然人体结构中没有关节点指向中心关节点,因此将指向中心关节点的骨架向量设为0,可保证骨骼向量数据(骨骼模态)的矩阵尺寸与骨骼关节点数据(关节模态)的矩阵尺寸相同。因此,这两种模态可使用相同的网络,经过完全相同的实验细节,但可以获得不同的结果。本文使用双流融合的方法将两个模态数据的结果进行综合处理,以获得最佳的分类得分。
NTU-RGBD[8]:NTU-RGBD 数据集中有60 个动作类别,包含56000 个动作数据。数据集中的每一个动作数据由一系列的骨骼动作帧组成,每一帧最多包含两个骨架,每个骨架有25 个骨骼节点,每个骨骼节点都有对应的三维空间坐标数据。该数据集的训练集和验证集有两种划分方式,跨目标(X-Sub)划分方式和跨视角(X-View)划分方式。Kinetics-Skeleton[9]:Kinetics 数据集中有400 个动作类别,包含300000个动作数据。数据集中的每一个动作数据由一系列的骨骼动作帧组成,每一帧最多包含两个骨架,每个骨架有18 个骨骼节点,每个骨骼节点都有对应的三维空间坐标数据。我们首先使用文献[7]中的数据预处理方式对数据进行了预处理。
本文实验所用的硬件平台是包括2块RTX2080 Ti 显卡,软件平台包括cuda10.0 和pytorch 1.7.1 框架。本文使用的参数配置与文献[7]保持一致,在两个数据集上均使用随机梯度下降优化策略,且初始学习率和权重衰减率分别为0.1 和0.0001,而批量大小在NTU-RGBD 和Kinetics-Skeleton 数据集上分别为32 和64。在NTU-RGBD 数据集上的学习率衰减策略是在第30和第40 epoch分别除以10,训练次数设置为50 epoch。在Kinetics-Skeleton 数据集上的学习率衰减策略是在第45 和第55 epoch 分别除以10,训练次数为65 epoch。
下面首先对网络各个组件做了消融实验验证其有效性,随后对不同配置分区数量的网络分类性能进行实验分析以获得最佳的分区个数,然后计算关节模态和骨骼模态两种模态综合的分类得分,验证骨骼模态对该方法分类结果的促进作用。最后将该方法与目前一些主流和先进的方法进行比较,验证本文所提方法的性能水平。
4.2.1 激活函数和矩阵初始化方法实验
本节首先验证双曲正切tanh 函数对网络性能的影响,在2s-AGCN 网络上进行实验探究,实验结果如表2所示。表中数据表明tanh函数可以明显提高网络识别准确率。
然后比较本文自适应矩阵初始化与文献[15]中提出的矩阵初始化的性能差异,实验结果如表3所示,其中BC 表示使用Ak初始化自适应邻接矩阵Bk,BC/A 表示使用0.000001 初始化Bk,3P 和5P 分别表示分区个数3 和5(BC 方法多余的2 个分区由A2、A3初始化,BCPA 方法多余的2 个分区由0.000001 初始化)。表3 结果与表2 结果相比,充分证明了2s-AGCN 网络中A k的不必要性。Ak根据人体自然关节连接关系构建,但将其划分为根节点集、向心点集和离心点集三个分区并使其作为常数与参数矩阵Bk相加,在一定程度上限制了参数矩阵Bk的学习能力。文献[15]使用Ak初始化Bk,从而摆脱了Ak作为常数相加时的限制能力。在分区个数为3 时使用Ak初始化Bk网络识别准确率最高,表明人体关节自然连接约束对网络识别性能有促进作用,但当在分区个数不为3 时,需要对Ak进行重新构造,本文探索的多种构造方法,最优的方式是多余分区由A2、A3初始化,结果如表3 所示。但我们无法保证构造的初始化矩阵是最好的,即无法很好的利用人体关节自然连接关系,因此本文不使用这种约束条件,使用0.000001 初始化B k,在分区个数高于3 时效果最好。
表2 不同激活函数对网络性能的影响Tab.2 Influence of different activation functions on network performance
表3 不同矩阵初始化方法对网络性能的影响Tab.3 Influence of different matrix initialization methods on network performance
4.2.2 多配置分区实验
2s-AGCN 方法使用固定3 个配置分区的策略,而我们认为在分区个数增加的情况下,网络模型分类性能会有提升。本小节实验验证不同数量分区个数对网络性能的影响。在NTU-RGBD 数据集的X-View 划分方式下我们进行大量实验,结果如下表4 所示。从表中的实验结果可以看到,在配置分区数量较少情况下网络模型的识别准确率性能随着配置分区个数的增加有所增长,在配置分区个数为5 的情况下网络性能达到最优,随着分区个数的继续增加,网络性能开始下降。其原因分析如下:在网络性能未达到最优的情况下,随着配置分区的个数增加,图卷积核尺寸增大,网络可以学习到更丰富的人体关节之间的连接关系。而在分区个数达到5 之后,网络性能下降的原因是每个人体整体骨骼关节数量较小(每个人体仅包含18 至22 个骨骼关节点数据),多于5 个分区后,无法再建模更丰富的骨骼关节点连接关系。在分区个数为5的策略下,网络学习到的骨骼关节点连接矩阵可如下图4所示。
表4 不同数量配置分区对网络性能的影响Tab.4 The impact of different number of configuration partitions on network performance
4.2.3 双流融合实验
本小节验证骨骼模态对该方法分类结果的促进作用,使用双流融合的方法将两个模态数据的结果进行综合。在NTU-RGBD 数据集的X-View 划分方式下,多次实验表明骨骼数据可以提升该方法的性能。实验结果如下表5所示。
表5 双流网络性能Tab.5 Two-Stream network performance
4.2.4 与目前主流方法的性能对比
为了验证本文所提方法的性能水平,我们在NTU-RGBD 和Kinetics-Skeleton 数据集上与目前一些主流和先进的方法做了比较。参与对比的方法包括CNN 方法和GCN 方法等。下表6 和表7 分别列出了这些算法在NTU-RGBD 和Kinetics-Skeleton数据集上的准确率。结果表明本文所提方法获得比目前多数文献更高的动作识别精度。在NTURGBD 数据集X-Sub 划分方式下识别率比2s-AGCN模型提高0.7 个百分点,在其X-View 划分方式下识别率比2s-AGCN 模型提高0.5 个百分点。同时在Kinetics-Skeleton 数据集上,识别率相较DGNN 模型提升0.4 个百分点,相较2s-AGCN 模型提升1.2 个百分点。
表6 不同方法在NTU-RGBD数据集下的比较Tab.6 Methods were compared under the NTU-RGBD dataset
表7 不同方法在Kinetics-Skeleton数据集的比较Tab.7 Methods compared on the Kinetics-Skeleton dataset
本文提出一种用于骨骼动作识别的多配置分区的自适应时空图卷积网络,摆脱人体自然连接关系的约束和相应的空间配置分区策略,通过搜索更合理的配置分区个数并自适应获取关节点连接关系实现对骨骼点动作特征更充分的利用。为了验证该方法的有效性,分别在NTU-RGBD 和Kinetics-Skeleton 等大型数据集上进行大量实验,结果表明本文所提方法可获得比目前多数文献更高的动作识别精度,在NTU-RGBD 数据集的X-Sub 和X-View两种划分方式下分别达到了89.2%和95.6%的准确率,同时,在Kinetics-Skeleton 数据集上达到了37.3%的准确率。