基于高效时空图卷积的异常步态识别算法研究*

2023-10-12 05:15尹梓名姜艺喻洪流单新颖于龚瑶傅宇栋罗军
生物医学工程研究 2023年3期
关键词:关节点集上步态

尹梓名,姜艺,喻洪流,2,3△,单新颖,于龚瑶,傅宇栋,罗军

(1. 上海理工大学 健康科学与工程学院,上海 200093;2.上海康复器械工程技术研究中心, 上海 200093;3.民政部神经功能信息与康复工程重点实验室,上海 200093;4. 国家康复辅具研究中心,北京 100176;5. 南昌大学第二附属医院 康复科,南昌 330000)

0 引言

异常步态通常由老年退行性疾病、神经系统疾病和肌肉骨骼疾病引起,严重影响患者的日常生活[1]。异常步态的分类诊断有助于医生确定患者潜在的疾病,协助医生及早发现与治疗,降低疾病对患者和家庭的影响。然而,由于传统的步态分析方法大多依赖于临床医生的经验或繁琐的仪器测量,导致诊断的主观性强、成本高、效率低,难以在社区医院和家庭推广,不利于疾病的早期发现。因此,急需一种面向社区医院和家庭的低成本、易操作,又能准确识别异常步态的可靠方法。

目前常用于人体步态分析的传感器有可穿戴和非可穿戴两类。相比于可穿戴传感器,非穿戴式传感器作为一种非入侵式的测量工具,可收集受试者最真实状态下的步态数据。足底压力传感器是用于步态分析的典型非穿戴式传感器[2-3],当受试者在传感器上行走时,通过测量每个承重传感器上的垂直压力值,即可收集行走时准确的脚部压力,但足底压力传感器成本较高,难以应用于社区医院和家庭。近几年,微软先后推出了两款面向家庭的体感游戏设备Kinect v2和Azure Kinect,已在游戏领域获得广泛应用。作为一种深度相机,其不仅能获得RGB数据,还能获取每个像素的深度数据,无需将传感器连接到身体上即可轻松获取人体3D骨架数据,同时Kinect传感器捕获数据的准确性也已得到验证[4-5],Azure Kinect的精度更是高于Kinect v2和Kinect v1[6]。Kinect提供的可获取人体骨架信息的开发工具包(software development kit, SDK),加上人工智能算法的快速发展,都为基于视觉的步态分析[7-8]和异常步态识别[9-10]提供了良好的软硬件基础和技术支持。

步态分析的传统方法一般为目测分析和使用可穿戴传感器(如三维动捕设备[11]和惯性传感器[12])等。智能步态分析方法可分为机器学习和深度学习。一些研究基于异常步态的先验知识从人体3D骨架数据中手工提取步态特征[13-14],最早采用贝叶斯分类器[13]和人工神经网络分类器[14]从Kinect V1中提取骨骼数据和计算步态特征来识别帕金森疾病,但手工特征表达能力有限,难以泛化,且可能会丢失关键特征。深度学习技术如递归神经网络(recurrent neural network, RNN)和长短期记忆网络(long short-term memory, LSTM)在处理高维步态数据、自动提取数据特征等方面具有优异表现,也显著提高了步态分析的性能。Guo等[15]比较了支持向量机(support-vector machine, SVM)和LSTM对异常步态识别的准确率,发现直接输入骨架数据的LSTM网络能有效地提高步态分类的准确率。Chen等[16]使用CNN-LSTM网络提取手工特征和深度特征,并将二者结合,通过SVM来进行步态分类。Jun等[17]通过使用基于RNN的自动编码器从三维骨架中提取特征,并通过分类器识别异常步态。然而,由于人体骨架本质上是一系列非欧几里得图,该类方法无法有效地学习到骨架关节中潜在的空间关系。

随着图卷积神经网络的发展,基于骨架的动作识别算法在时空图卷积上有了更深入的研究。Yan等[18]提出的ST-GCN建立了骨架序列在时间和空间上的特征提取模型和基于骨架的动作识别模型。受ST-GCN的启发,大量的时空图卷积网络模型相继出现。Shi等[19]在ST-GCN的基础上采用双流框架2s-AGCN,使网络捕获的动作特征更加丰富,但增加了网络计算量。Chen等[20]提出一种多尺度时空图卷积网络MST-GCN,可捕捉短程关节和远距离关节间的关系,同时丰富了模型在时间和空间上的感受野。Cheng等[21]提出的位移图卷积网络Shift-GCN,通过将位移操作加入到图卷积中,不仅增大了模型的感受野,还显著减少了模型复杂度。Liu等[22]提出了一种解开和统一图卷积网络,采用解开多尺度图卷积的方法和G3D统一时空图卷积算子,促进了跨空间和时间的直接动作信息交流,实现了有效的特征学习。Song等[23]提出了残差图卷积网络ResGCN,采用早期融合多分支输入策略,而非将多个模型进行融合,减少了模型负担。

基于此,本研究将高效时空图卷积Efficient-GCN[24]从人体动作识别领域应用到异常步态识别领域,在ST-GCN的基础上,采取早期多分支融合策略,显著减少了冗余的可训练参数。同时在每个卷积块中加入时空联合注意力模块ST-JointAtt,该注意力模块可联合处理空间和时间注意,可在整个骨架序列中找到最重要的关节,以增强模型的鉴别能力。最后分别在两个公开数据集上进行了实验,得到的结果均优于其他图卷积网络和异常步态识别方法。

1 方法

1.1 数据集

本研究使用了两个基于骨架的步态评估公开数据集进行模型训练。

Kinect V2骨架数据集[25]:使用6个传感器分别放置在10 m长的步道两侧,步道宽3 m,同一侧的传感器之间间隔2.2 m。骨架数据由每个传感器单独生成。当受试者与传感器之间的距离小于1 m时停止采集。10名健康受试者在指南的指导下,被要求模拟镇痛、僵硬、蹒跚、跨步和特伦德堡等5种病理步态。每位受试者、每种步态走20次,最终包含7 200个步态数据。根据关节点数量该数据集简称为Kinect25。

Azure Kinect病理步态数据集[26]:设置4 m长的步道,步道尽头放置一台Azure Kinect传感器。由12名健康男性参与数据收集,观看病态步态的视频并训练后开始模拟镇痛、僵硬、蹒跚、跨步和特伦德堡等5种病理步态进行数据采集,每个人每种步态走20次,最终包含1 440个步态数据。根据关节点数量该数据集简称为Azure32。

本研究的步态骨架数据见图1。Kinect V2和Azure Kinect传感器所采集到的人体关节点见图2。

图1 正常步态和病理骨架步态

图2 Kinect V2 和 Azure Kinect 的采集点

1.2 实验设计

所有实验均在具有一个NVIDIA TITAN RTX GPU的PyTorch 1.12深度学习框架上进行。使用随机梯度下降(stochastic gradient descent ,SGD)优化器,以端到端的方式训练模型。初始学习率设置为0.1,并运行70个epoch。批量大小(batchsize)设置为16,权重衰减设置为0.001。每个输入数据由一个连续的288帧骨架组成,不满288帧的骨架序列由0填充。总体实验流程见图3,通过Kinect收集步态数据,从中获取人体骨骼关节点坐标,对坐标数据进行多分支处理,最后输入到网络进行训练,得到最终的预测结果。

图3 实验方法流程图

在模型训练过程中,为得到更准确的结果,实验中每个数据集都选择其中1名受试者的数据作为验证集,进行交叉验证,其余数据作为训练集。根据两个数据集不同的受试者人数,Kinect25进行了10次交叉实验,Azure32进行了12次交叉实验,最后计算交叉验证的平均准确度和其他评价指标。

1.3 构建网络模型

1.3.1数据预处理 将人体三维骨骼数据经预处理后得到三类输入特征:关节位置、运动速度和骨骼特征。

假设原始3D序列坐标集为X={x∈RCin×Tin×Vin},其中Cin,Tin,Vin分别表示输入坐标,帧数和关节点数。相对关节位置集可表示为R={ri|i=1,2,…Vin)},其中:

ri=x[:,:,i]-x[:,:,c]

(1)

式中,c为中心脊柱关节的索引。因此关节位置特征的输入由X和R联合组成。

运动速度特征集由快速运动F={ft|t=1,2,…Tin}和慢动作S={st|t=1,2,…Tin}构成,其中:

(2)

骨骼特征集包含关节长度L={li|i=1,2,…Vin}和关节角度A={ai|i=1,2,…Vin},各关节点的长度和角度计算公式为:

li=x[:,:,i]-x[:,:,iadj]

(3)

式中iadj为与第i个关节点相邻的节点,w∈{x,y,z}为关节点的三维坐标点。

1.3.2构建模型 在获得关节、速度和骨骼三种类型的输入数据后,与多流模型不同,本研究在模型早期阶段融合三个输入分支,并使用一个主流来提取鉴别特征,见图4。该结构不仅保留了丰富的输入特征,而且减少了大量训练参数,更易于训练。

图4 Efficient-GCN模型结构图

输入分支由有序堆叠的一个批归一化层、一个由ST-GCN层实现的用于将数据转为特征向量的初始化层,以及两个用于信息特征提取的图卷积层组成。将三个输入分支得到的特征拼接后,作为模型的输入特征,经两个图卷积层输出。将输出特征经过全局平均和全连接层后,得到最终的步态分类结果。

每个图卷积层由有序堆叠的一个空间图卷积、多个时间图卷积层和一个注意力模块组成。时间图卷积层的数量决定了图卷积的深度。本研究采用的注意力模块为ST-JointAtt,将帧数层和关节点层分别进行平均池化处理后变成的特征向量作为输入特征,输入注意力模块,再通过一个全连接层连接信息,之后使用两个独立的全连接层分别获取到帧维度和关节点维度的注意力分数,最后的结果可作为整个动作序列的注意力分数,见图5。其公式表达如下:

图5 ST-JointAtt模块结构

finner=θ((poolt(fin)⊕poolv(fin))·W)
fout=fin⊙(σ(finner·Wt)⊗σ(finner·Wv))

式中,fin和fout分别表示输入和输出特征图,⊕表示连接操作,⊗和⊙分别表示频域外积和元素乘积操作,poolt(·)和poolv(·)分别表示在帧维度和关节点维度的平均池化操作,θ(·)和σ(·)为两个激活函数,W均为训练参数。

2 实验结果与分析

本研究使用两个数据集在模型上分别重复进行10次交叉实验,每折交叉实验均进行10次,取其平均值作为该次交叉验证的结果,将所有交叉验证结果的平均值和标准差作为模型结果,见表1。最终,在Kinect25数据集上10次实验的平均准确率达到了99.37%,在Azure32数据集上12次实验的平均准确率达到了96.10%。由于每次交叉验证选取该数据集中单个试验者的步态数据作为验证集,虽然因个体步态数据的不同,导致在Azure32数据集上第6和10次实验的结果与其他结果存在差异,但对大部分数据和最终的平均准确率无影响,并且在两个数据集上的单次最高准确率都达到了100%。

表1 模型准确率

本研究使用混淆矩阵来评估模型性能,混淆矩阵显示了实际值与预测值间的差异。两个数据集上最大准确率和最小准确率的混淆矩阵见图6。图6(a)、(b)为Kinect25数据集上具有最大、最小准确率的训练模型;图6(c)、(d)为Azure32数据集上具有最大、最小准确率的训练模型。步态类别的标签为:1-正常步态;2-镇痛步态; 3-蹒跚步态;4-跨步步态; 5-僵硬步态;6-特伦德伦堡步态。

图6 混淆矩阵比较

根据混淆矩阵计算出各自的真阳性(TP)、假阳性(FP)、真阴性(TN)和假阴性(FN),表2和表3分别展示了两个数据集在最小准确率训练模型的敏感性(TP/(TP+FN))和特异性(TN/(TN+FP))。结果可知,在两个数据集上,特伦德伦堡步态都常被误分为镇痛步态,出现该情况的原因在于两种步态在临床表现上有一定相似性,特伦德伦堡步态是由于髋关节外展机制异常所致,臀肌组织肌无力会导致盆骨在行走时下垂致对侧,身体躯干会向站立一侧倾斜,而镇痛步态是由于下肢任何部位的疼痛导致的步态异常,患者行走会减少患侧的站立时间,且将躯干向健侧依靠,因此,这两种步态都存在步行站立期长、重心偏移的特点,导致在模型分类结果上出现误差。而其他五种类别的步态敏感性和特异性均较高。

表2 Kinect25数据集上训练模型的敏感性和特异性

为证明本研究网络模型的有效性,本研究还将骨架数据输入到基于图卷积骨架数据的模型中进行结果比较。表4为每个算法在两种数据集上的精度比较。

表4 模型准确率比较

3 结论

本研究利用深度相机传感器获取人体三维骨架数据,使用深度学习图卷积网络算法进行训练,提高了异常步态识别的准确率,为临床自动步态分析和康复训练方案的制定奠定了基础。

本研究采用早期多分支融合技术,将人体三维骨骼数据经预处理后,得到关节位置、运动速度和骨骼特征三类输入特征。将三类特征融合后,输入主流网络进行训练。为网络中每个卷积块增加了ST-jointAtt模块,在时间和空间维度均可捕捉到人体运动中最关键的节点。对比结果显示,本研究所采用的Efficient-GCN能更有效地对异常步态进行分类,在两种数据集上的平均准确率分别达到了96.10%和99.37%,均优于其他模型。但由结果分析可知,模型对有些步态的分类还不够准确,后续考虑对网络模型进行修改,在多分支输入过程中增加一个重心特征,或探索更适合异常步态的注意力模块。同时由于数据限制,本研究识别的异常步态的类别有限,后续将进一步与临床医院和康复中心合作,收集真实患者的步态数据和更多类型的异常步态,以提高分类的准确性。

猜你喜欢
关节点集上步态
步态异常,老年人应警惕这些疾病
基于深度学习和视觉检测的地铁违规行为预警系统研究与应用
关节点连接历史图与卷积神经网络结合的双人交互动作识别
Cookie-Cutter集上的Gibbs测度
链完备偏序集上广义向量均衡问题解映射的保序性
基于面部和步态识别的儿童走失寻回系统
基于Kinect的学步期幼儿自然步态提取
复扇形指标集上的分布混沌
搞好新形势下军营美术活动需把握的关节点
RGBD人体行为识别中的自适应特征选择方法