APP下载

基于肢体子图的图卷积人体动作识别

2021-02-11石祥滨

沈阳航空航天大学学报 2021年6期
关键词:子图邻域骨架

石祥滨,王 佳

(沈阳航空航天大学 计算机学院,沈阳 110136)

人体动作识别是计算机视觉领域的重要研究内容,已经被广泛应用于医疗保健、视频监控和人机交互等诸多领域。虽然人体动作识别已经取得了飞速发展,但由于人体动作语义的模糊性和多样性,使得人体动作识别仍然面临着巨大挑战。

人体骨架反映了人体的空间结构,骨架中关节点的连续变化代表了人体动作的时序特征。随着深度传感器的发展,利用其可以获取3D关节点的位置信息,从而使得基于骨架的动作识别成为可能。目前基于人体骨架的动作识别方法可分为两类:基于人工特征的传统方法和基于深度学习的方法。在基于人工设计特征方法中,Hussein等[1]提出了关节轨迹的协方差矩阵方法,Wang等[2]利用关节的相对位置,Chellappa等[3]利用了身体部位之间的旋转和平移特征,这些方法通过人工制定的规则分析骨架的空间结构,只能获取有限的动作特征,且只针对某种特定的动作进行识别,很难泛化。基于深度学习的人体骨架动作识别方法,可以自动捕获关节的空间结构特征和时序动态特征,进而提取骨架的高层次特征,因此基于骨架的图神经网络成为动作识别的研究热点。

在基于人体骨架数据的深度学习方法中,在Yan等[4]没有将图卷积应用于动作识别之前,人们普遍一直使用RNN方法进行动作识别。文献[5]提出了分层RNN从骨架序列中学习运动表示特征。Shahroudy等[6]引入了部分感知的LSTM网络,进一步提高了LSTM框架的性能。为了对辨别特征进行建模,Song等[7]提出了一种基于LSTM的时空注意模型,以聚焦于辨别关节并对不同帧给予不同的权重。为了将图神经网络和CNN结合,Yan等[4]成功地将图卷积网络应用于人体动作识别领域,提出了ST-GCN模型,通过对骨架中每个节点一阶邻域做卷积,获取了整个骨架的动作特征,但是该方法不能准确获得不同肢体的动作特征。该方法在划分肢体边缘节点的邻域时,将与此节点相邻的肢体外部的节点包含在此节点的一阶邻域内;对该肢体进行卷积提取特征时,导致不能准确获得该肢体的动作特征。例如,做一个鞠躬动作时,躯干部分有较大的移动幅度,但是腿部并未移动,这种将腿部因素也考虑在内的卷积方式,实际上削弱了躯干的动作特征。

为了捕获不同肢体的动作特征,Thakkar等[8]提出了基于Part的动作识别方法。该方法在划分邻域时,仅考虑肢体内的相邻节点,通过卷积可以有效获得单个Part的动作特征,但是该方法仍然存在两个严重问题。首先,该方法忽略了不同肢体之间内在的关联性关系,而这种关系为动作识别提供重要特征。例如,当人体走路时,腿部向前移动,同时需要手臂的摆动来协调身体的平衡,这表明手臂和腿部之间存在一种内在的关联性关系;其次,过多数量的Part会导致特征值丢失。在训练阶段,网络在反向传播时,Part数量过多会因梯度消失引起Part特征值丢失。

1 主要思想

通过以上分析,本文设计了一种基于肢体子图的图卷积动作识别方法。首先,为了捕获不同肢体的动作特征,本文给出了一种骨架划分方式。考虑到人在做某些动作时,存在偏侧性的习惯,将左臂和右臂以及左腿和右腿分别划分为手臂和腿部,因此本文将骨架划分为有公共顶点的4个肢体,分别为头部、手臂、躯干和腿部。在划分节点的邻域时,采用文献[4]的邻域划分方式,仅考虑肢体内部相邻的节点,如图1所示,图1包围区域表示手臂肢体中脖子节点的一阶邻域。

图1 手臂肢体中脖子节点的一阶邻域

其次,针对PB-GCN不能捕获肢体之间的关联性关系问题,本文设计了组合肢体子图表示两个肢体之间的空间结构,如图2所示,其表示人体走路时,手臂和腿部空间关联关系。对肢体子图进行空间卷积,得到肢体的空间特征;对组合肢体子图进行空间卷积,可捕获两个不同肢体之间的空间关联关系特征;根据权重聚合每一帧骨架中肢体的空间特征和关联关系特征,再对聚合特征进行时间卷积。

图2 手臂和腿部的关联性关系

最后,在训练阶段,在每个时空单元加入了残差结构。由于过多数量的子图在反向传播时存在特征值丢失现象,因此本方法在每个时空卷积单元中加入了残差结构[9],将时空单元分解为附加的残差项,一定程度上避免了特征值丢失。此外,为了进一步优化模型,本文引入几何特征[10]和运动特征[5]作为每个骨架关节的原始特征,可进一步提高动作识别的准确率。图3是本文提出模型的整体结构图。

图3 网络结构图

2 基于肢体子图的时空图卷积神经网络

为了提取一帧骨架图中不同肢体的动作特征以及肢体之间内在的关联性关系特征,首先根据人体骨架图构造不同肢体子图,分别表示相应的身体部位;其次,用组合肢体子图表示两个不同身体部位之间的关联性关系;最后,定义肢体子图和组合肢体子图的时空图卷积进行动作识别。

2.1 人体骨架图的定义

人体骨架图定义为:G=(V,ε),其中V是图的顶点集合,ε⊆(V×V)是边的集合,图4a表示人体骨架图。用A表示骨架图的邻接矩阵,如果(vi,vj)∈ε,则A(i,j)=w,w∈R,否则A(i,j)=0,w表示人体骨架图的边权重。用Nk:v→V关节点v的k邻域集合。在本方法中,用标签函数L:V→{0,1,2,…,J}(J

2.2 子图划分方法

为了表示不同身体部位的空间结构,本模型把人体骨架图划分成p个肢体子图,分别表示不同的身体部位,划分方式如下

G=Uk∈{1,2…,p}Pk|Pk=(Vk,εκ)

(1)

其中,Pk表示肢体子图,Vk是肢体子图Pk节点的集合,εκ为其边集合。图4b是文献[8]中提出的骨架划分方法,将人体骨架划分为6个部分,分别为头部、左臂、右臂、躯干、左腿和右腿。这种划分方式没有考虑到人体偏侧性的习惯,并且在训练阶段,过多数量的子图会因梯度消失引起肢体特征值丢失,降低网络模型的拟合能力。为了避免上述问题,本文给出了一种新的肢体子图划分方式,如图4c所示,将人体划分为4个子图,分别为头部、手臂、躯干和腿部。本划分方式在相邻肢体之间共享一个公共节点,以便对其进行聚合。

图4 人体骨架划分方式

(2)

图5 组合肢体子图

2.3 基于肢体子图的时空图卷积

在输入到网络的骨架序列中,节点vi的时间关系定义为相邻帧中同一个子图中的相同节点,图6b表示手臂子图中脖子节点的时空邻域。本方法首先对每一帧中划分的肢体子图和组合肢体子图独立地进行空间卷积,分别得到肢体子图的空间动作特征和内在关联性关系特征;其次,用Fagg函数对一帧中肢体子图的动作特征和关联性关系特征进行聚合;最后,对其聚合结果进行时间卷积。在对肢体子图和组合肢体子图进行空间和时间卷积之前,首先定义骨架序列中节点vi的时空邻域为

N1Qk(vi)={vj|d(vi,vj)≤1,vi,vj∈VQk}

(3)

(4)

其中,N1Qk(vi)表示组合肢体子图Qk中节点vi的1邻域,VQk是组合肢体子图中节点的集合。ta和tb表示骨架序列中两个瞬时时刻,Nτ(vita)表示节点vita的τ邻域。同理,用式(3)和式(4)定义肢体子图Pk(k=1,2,…,m)的空间邻域和时间邻域。图6a、图6b和图6c分别表示手臂子图中脖子节点的空间邻域、时间邻域和时空邻域。

图6 手臂中脖子的空间、时间和时空邻域

为了保证子图中不同节点vi卷积核的大小,为其中心节点时空邻域内的每一个节点分配标签,方式如下

LS(vjt)={0|vjt∈N1Qk(vit)}

(5)

(6)

其中,Ls(vitb)表示为节点vit的空间邻域内的每个节点分配相同标签,从而实现共享卷积核;在时间上,LT(vitb)表示为骨架序列中节点vit的时间邻域分配不同的标签。同理,用式(5)和式(6)分别为肢体子图Pk中节点vi的时空邻域分配标签。

分别为每一帧中肢体子图和组合肢体子图分配标签之后,开始定义组合肢体子图和肢体子图空间和时间图卷积,如式(7)~(10)所示。

(7)

(8)

(9)

(10)

图7 手臂和躯干的时空图卷积

人体做一个动作时,不同肢体的位移不同,并且各部位之间关联关系的重要性程度不同。因此,在训练模型时,每个肢体子图和组合肢体子图分别学习不同权重。本方法聚合函数Fagg定义如下

(11)

其中,Wagg(i)表示肢体子图和组合肢体子图的权重,Yi表示肢体子图和组合肢体子图的空间卷积输出特征。

在训练阶段为了避免因子图数量过多,导致网络在反向传播时因梯度消失引起的子图特征值丢失问题,本文在每个时空单元中加入了残差结构,将时空单元分解为附加的残差项,在一定程度上避免了特征值丢失。为了进一步优化模型,本文将几何特征和位移特征作为人体关节点的原始特征。

3 实验对比分析

3.1 实验配置与数据集

本模型用几何特征和运动特征作为骨架节点的原始特征,使用随机梯度下降(SGD)作为优化器。本网络模型由9个时空单元组成,前3层输出通道为64,中间3层输出通道为128,最后3层为256。NTU-RGB+D数据集一共迭代了90次,初始学习率为0.1,在20、50、70、80次时分别衰减一次,衰减系数为0.000 5。HDM05数据集一共迭代了120次,迭代80次时衰减一次,衰减系数为0.000 1。本实验使用的显卡为NVIDIA GTX1070,一次批量处理数据的数量为4。测试本模型时,用到2个3D数据集分别为NTU-GRB+D和HDM05。

NTU-GRB+D是目前最大的人体骨架数据集,此数据集一共包含了56 880个视频序列,60个动作类别,每个骨架有25个人体关节。该数据集是由3个Kinect V2 相机从不同角度拍摄的,并且设置了交叉对象(CS)和交叉视角(CV)2种训练基准。在交叉对象(CS)中包含的训练集和测试集的样本数量分别为:40 320个和16 560个。在交叉视角(CV)中,训练集和测试集的样本数量分别为:37 920和18 960个。

HDM05是运动类别最多的数据集,此数据集中每个骨架有31个关节点,2 337个动作序列,涵盖了由5名动作表演者表演的130个动作类别。本文在此数据集中采用Huang等[11]提出的验证方式,即在这个数据集上共进行10次实验,每次实验随机选择一半的序列进行训练,另一半用于测试。

3.2 实验结果分析

本文提出了基于肢体子图的图卷积动作识别方法,通过构建肢体子图和组合肢体子图,可以有效提取肢体之间的关联性特征。为了验证本模型的有效性,分别在NTU-RGB+D和HDM05两大数据集中进行了测试。

(1)表1中CS为本方法在NTURGB+D(CS)中的实验结果,本模型在CS中的准确率为87.9%,比PB-GCN高0.4%,比ST-GCN高6.4%,这初步验证了本方法的有效性。

(2)表1中CV为本方法在NTURGB+D(CV)中的实验结果,本模型在CV中的准确率为94.3%,比ST-Attention的82.1%高出12.2%,比PB-GCN高出0.4%,比ST-GCN高出6%。

表1 不同算法在CS和CV的实验结果

(3)表2为本方法在HDMO5数据集上的实验结果,在该数据集上采用了文献[11]所给出的实验方法,即在这个数据集上共进行10次实验,每次实验随机选择一半的序列进行训练,另一半用于测试,实验结果为88.79%±1.13%。通过实验充分证明了本文提出方法的可行性和优越性。

表2 不同算法在HDM05数据集的实验结果

在NTU-RGB数据集和HDM05数据集上,对于一些日常动作,如刷牙、走路、跑步、搓两手等动作具有更好的识别效果,但是一些区分左右手臂和左右腿部的动作,如举手、捡东西等动作本方法识别效果欠佳。一种可能的原因是人的偏侧行习惯,如有的人用左手捡东西,有的人用右手。本方法在划分肢体子图时,将左手和右手划分成一个子图,一定程度上导致了不能区分偏侧行的问题,该问题是一步研究的重点。

4 结论

本文提出了基于肢体子图的时空图卷积动作识别方法。本方法挖掘人体骨架中更多的动作特征,定义肢体子图和组合肢体子图分别表示肢体的空间结构和肢体之间内在关联性关系,对它们分别进行时空卷积,得到每个肢体的动作特征和肢体之间的关联性关系特征,通过实验证明本模型的有效性。本模型在两个3D数据集上得到了验证,进一步研究将本模型应用在2D数据集进行动作识别,例如COCO姿态数据集。未来,本文提出的动作识别方法可应用于考场异常行为分析中,识别考生更多的动作特征。

猜你喜欢

子图邻域骨架
基于混合变邻域的自动化滴灌轮灌分组算法
浅谈管状骨架喷涂方法
含例邻域逻辑的萨奎斯特对应理论
异构属性网络中统计显著密集子图发现算法研究
“超级大陆”发现新物种完整骨架
骨架密度对炭/炭多孔骨架压力浸渗铜的影响
基于Spark 的大规模单图频繁子图算法
不含3K1和K1+C4为导出子图的图色数上界∗
周博士考察拾零(六十六)日光温室前屋面开机具作业门处骨架的处理方法
邻域平均法对矢量图平滑处理