刘驰,周晋,陈雨
(1.四川大学电子信息学院智能控制研究所,四川成都610065;2. 四川大学制革清洁技术国家工程实验室,四川成都610065;3.四川大学电子信息学院智能控制研究所,四川成都610065)
行走是人类最基本的运动,在行走过程中,人体的各个关节处于一个周期型运动的状态,通常称为步态周期。步态周期可根据下肢着地的情况,分为着地期和摆动期,其中着地期包含五个关键事件(接触初期、压力承受期、站立中期、站立末期和摆动前期)[1]。通过检测和分析人体行走过程中的运动状态、受力情况以及关节之间的夹角反映了人体骨架的健康情况,因此,步态分析可以被广泛的应用于体育、医疗、人体康复等领域[2-3]。
当前大多采用视频分析法来针对步态过程以及过程中的参数进行分析,视频拍摄作为最简单的运动学分析数据来源,数据的采集简便且处理工具众多,因此应用广泛[4-5]。该方法对膝关节分析的重点是通过人为的切片分析或是视频捕捉关键部位,找到所需时刻的图像,对其进行处理得到所需的步态参数[6-7]。然而,人为的切片以及确定时刻,不便于进行大量的数据分析和处理,也不免在处理过程中造成误差。
随着人工智能技术的快速发展,利用人工智能技术对人体姿态的识别、预测的研究也更加深入,Openpose 算法模块便是其中之一。Openpose 算法模块是由美国卡耐基大学提出的基于卷积神经网络和监督学习的开源库,可实现对人体姿态和动作的捕捉识别,具有极强的鲁棒性。当前Openpose 算法主要应用在人体骨骼点的识别以及姿态识别等领域[8-9],但是当前Openpose 算法应用的更多的是对人体姿态趋势进行判断和预估等宏观分析,并未使用该算法来精确的计算各种步态参数,要使用Openpose 算法对步态参数进行精确分析或是将Openpose 算法应用在临床研究上,就需要对Openpose 算法的可靠性进行实验。
因此,本研究的目的是应用Openpose 算法来实现步态参数的定量评价,并且对新方法的可靠性进行评估。
本研究共招募了10 名受试者,平均年龄(9.7±0.5)岁,平均身高均在(147±2.7)cm 之间,平均体重在(34.8±0.8)kg 之间,参与样本采集的儿童均无骨骼畸形(包括脊柱侧弯、骨折以及先天性关节畸形等疾病)等可能影响研究结果的疾病。在测试开始之前,测试的目的和方法以及测试数据用途均已向受测人员阐明,在征得其个人以及监护人的书面同意后方才进行测试。
大量研究指出,儿童控制步态的能力在5 岁就发育成熟,膝、髋关节的时空参数呈现较小的差异性[10],因此本研究的受试人员均为9~11 岁的健康儿童。同时人体的腿部的刚度、频率以及幅度的大小,在自然的步态下几乎保持恒定,膝关节角度等步态参数呈周期性[11~13]。因此,膝关节可以作为稳定的人体运动关节,膝关节角度可以被用于评价Openpose 算法的可靠性。
在平坦的室内放置长度为5 米的跑道,摄像机(JVC 高速摄像机250 Hz,JVC,日本)垂直于跑道放置,所有受试人员在测试过程中均以侧面经过视频采集设备,以便于对膝关节角度进行分析。并且在数据采集过程中,完成3~4 个步态周期运动,以便于再数据分析过程中找到一个完整步态周期的数据。
为了保证数据的可靠性和受测试人员在测试时的步态一致性,每位受测试人员均有两至三分钟热身时间,以便于受试者熟悉测试流程,并在热身过程中达到正常的步态状态。热身完成后开始进行测试,受测试人员以正常的步态平稳的走过跑道,便完成一次数据的采集,完成一次测试后,由测试者检查数据的完整性和可使用性,如果测试时受测试人员出现明显的步态不稳定,判定本次数据无效并重新测试,最终每位受测试人员采集五次有效数据,最后在数据处理和分析过程中,选取周期性更好的三组数据,作为本研究采用的数据。
本实验在得到一个完整步态周期的数据后,关键在于如何在一个完整步态周期中找到关键事件发生的时刻点。五个关键事件分别为接触初期(IC)、压力承受期(FFC)、站立中期(FF)、站立末期(HO)和摆动前期(TO)。7~11 岁的儿童的五个关键事件发生时间在一个步态周期中的占比由文献可知[14]。同样的关键步态周期占比将被切片分析和Openpose 算法所采用。
2.3.1 切片分析
首先对视频数据进行切割,从原始视频中截取出一个完整步态周期的视频数据,按照不同关键事件发生时刻的占比定位出关键事件发生时刻的图像帧,并将所有关键事件发生时刻的图像提取出来。然后针对每一帧提取出的图像,定位出髋关节、膝关节以及踝关节的位置,连接关节点可得到膝关节夹角。以此方法计算出所有关键事件发生时刻的膝关节角度,把此组数据记为对照组。切片处理的过程如图1 所示。
2.3.2 Openpose 算法方法
首先是通过Openpose 算法直接处理视频数据得到人体的关节点集合,其处理流程是将所有的图像帧经过VGG19 网络转化为图像特征向量,将得到的特征向量分为两个分量分别传入卷积神经网络,通过分析各个关节点之间的置信度以及亲和度,然后使得代价函数最小时就可以得到所有关节点的聚类,最终得到人体的各个关键部位的位置以及各个关节点之间的关联的集合,处理结果如图所示。最终将视频数据中的每一帧的关节点的坐标输出为文本文件。基于图像的处理如图2 所示。
图1 切片处理流程示意图Fig.1 Schematic diagram of slicing process
得到各个关节的坐标后,本研究使用Matlab(2018a)来处理原始数据,首先通过Openpose 算法处理后的数据为髋关节、膝关节以及踝关节的关节点的坐标,先通过计算两点之间的欧式距离可以得到两两关节点之间的长度,再通过余弦定理即可计算出对应每一帧图像中的膝关节夹角,最终得到整个测试过程中受试者的膝关节夹角变化曲线,如图3(a)所示。可以看出该受试者的膝关节夹角曲线呈明显的周期性,由于数据均是离散的点,所以波形有较多跳变和高频部分,不便于后续的快速傅里叶变换寻找信号周期。所以需要将数据通过一个低通滤波器,使得信号更加平滑。本研究中有效数据的频率较低,经过对数据进行傅里叶变换,得到数据的主要频率分布在20~30 Hz。但是如果选择的截止频率过低,则信号的波形会受到较大影响,经过测试选择50 Hz 作为低通滤波器截至频率时,可较好的滤除噪声并不影响数据的整体波形,因此本研究选取50 Hz 作为低通滤波器的截止频率,经过低通滤波处理后信号波形如图3(b)所示。
对滤波后的信号进行快速傅里叶变换(FFT),并计算其功率谱密度。为了便于直观的找出周期所在,然后跟据奈奎斯特采样定理和数据点总长度就可以得到周期-功率谱图,功率谱的峰值点所在的横坐标值就是我们所求的信号周期,也就是本文所求的一个步态周期数据的长度。周期-功率谱图形如图3(c)所示。
得到数据的周期后,就可以从实验组的数据中提取出一个步态周期的膝关节角度数据。从原始数据中提取出一个周期的膝关节角度数据点后,按照关键事件发生时刻在步态周期中的占比,就可以从中找出关键事件发生时刻的膝关节角度,并将此组数据记为实验组数据。
本研究使用MedCalc_19.0 统计软件对两种方法处理所得的数据进行统计学计算。采用Bland-Altman 方法来分析切片分析和Openpose 方法处理的结果之间的一致性。
Bland-Altman 方法可以计算不同方法间测量结果之间的差异,并且计算出两种方法测量结果差值的平均数和95%的波动范围,该方法以两组结果的差值作为纵轴,两组结果的平均数作为横轴,并在图中标注出差值均数、以及95%LoA 这2 个限值的可信区间估计。本研究采用的为95%的一致限,当两种方法测量结果的差值在一致界值之间时,我们认为该组数据的一致性较好。
相关系数结果如图4 所示(其中x、y 分别代表通过切片处理和open pose 方法处理后的数据),在150组数据的对比中,从差值均值上看,差值均值为2.2。从整体的一致性上看,共有143 组数据处于95%的一致限内,7 组数据位于一致限之外,也就是95.3%的数据的一致性较好。
图2 Openpose 图像处理示意图Fig.2 Openpose processing flow diagram
图3 信号处理流程Fig.3 Signal processing
图4 Bland-Altman 散点图(x、y 分别代表通过切片处理和open pose 方法处理后的数据)Fig.4 Bland-Altman scatter diagram(X and Y represent the data processed by slicing and open pose methods respectively)
研究采集了10 名健康儿童在正常短步态周期下行走的视频数据,并且对同一名受试者进行了三次有效数据的采集,来客观的评价Openpose 算法运用在步态参数分析过程中的可靠性。通过比较Openpose 算法与切片处理后的膝关节夹角,并通过Bland-Altman 算法计算两组数据之间的一致性。结果显示,95.3%的数据均位于95%的一致限内,数据之间的一致性好,并且所有数据的差值的平均值为2.2,而数据均处于120°~180°之间,差值相较数据本身而言,影响较小。由此得到切片处理和Openpose 算法两个方法得到的结果差异性小,从而关联性较强。
但是,结果表明仍然有4.7%的数据在数据的一致性上未达到较好的状态,可能有以下两个方面的原因。其一,可以看出直接通过Openpose 算法处理后的原始数据并不平滑,存在不少的跳变数据点,在经过滤波以及插值等操作后,会使得数据与原始数据的值有一定偏差,因此可以采用更精细的视频拍摄设备,来尽量降低拍摄设备对结果的影响。其二,采用平面的数据采集方式,使得Openpose 算法在下肢重叠时刻,会出现左右膝关节识别错乱的问题,导致数据在该时刻附近出现偏差,因此可以通过采用三维立体的采集方式,多个维度来确定膝关节的位置,来避免识别错乱带来的误差。
本研究也存在以下不足:首先是测试的样本比较单一,均为9 至11 岁的正常儿童,未来的研究应该扩大样本量和包含更多年龄层以及患病的受试人员。其次本次使用的是Openpose 算法的开源算法,可能使得该算法在步态分析中存在一些不能分析的盲区,之后的研究可以通过修改该算法的核心代码,使Openpose 算法精度进一步提高并且更适用于步态过程中的参数分析。
综上所述,Openpose 算法计算的膝关节角度数据与切片方法计算的数据具有较好的数据一致性;同时,Openpose 算法来计算如膝关节角度等步态参数,可以使得计算的过程更简便,便于大量数据的分析,并且可以避免人工误差。因此,该方法可以被更广泛的于关节角度测量等相关领域。