基于惯性传感器的精细动作能力评估分级方法*
2019-11-27王文锐李文康吴忆东杨先军姚志明
王文锐,周 旭,李文康,3,吴忆东,杨先军*,姚志明
(1.中国科学院合肥物质科学研究院,合肥 230031;2.中国科学技术大学自动化系,合肥 230026;3.安徽大学电子信息工程学院,合肥 230601)
随着年龄的增长,人体各项组织器官结构及功能也在逐渐退化,健康状况也发生显著改变,抵抗力下降,各种慢性疾病患病率增加,日常生活能力逐步丧失,大多都体现在运动机能衰退上。在运动机能的衰退中,手部精细动作控制能力的减弱十分普遍。手部精细动作控制能力主要是指个体凭借手以及手指等部位的小肌或小肌群的运动,在感知觉、注意等心理活动的配合下完成指定任务的能力[1]。如日常自主生活能力中常见的抓握、捡拾、捏合等动作的完成能力。
在对手部精细动作控制能力的评估研究方面,目前大多数还是基于传统的量表评估、图像描绘法、手指敲击试验等[1]。另外数据手套[2]、指频测试仪[3]等智能传感设备也逐步应用于精细动作控制能力评估中。量表的评估主要是通过专业的评估人员指示受试者做特定的任务,然后根据任务的完成情况对受试者的精细动作控制能力进行评估分级。康复治疗中的精细运动评价量表根据受试者将形状各异的物品转移到指定位置所花费的时间将精细运动能力分为10个级别。
数据手套是一种能够获取手指运动轨迹、手指关节活动角度、手指运动力量、指端运动距离的智能传感设备。数据手套通过获取测试者在完成精细动作时的运动轨迹、手指活动角度变化、运动速度等信息来对测试者的精细动作控制能力进行定量分析[1-2]。有学者将指频测试仪应用于评价上肢周围神经损伤患者的手部功能,实验表明其与传统的量表评估之间具有高度的相关性[3]。
综上所述,量表的评估虽然在一定程度上能够评估手部精细动作能力,但是该方法受评估者主观因素较大且评估过程需要专业的人员实施。数据手套等先进的智能设备根据受试者手部的运动信号来测量评估其手部精细动作能力,但数据手套主要用于手部动作识别分析,通过手掌、各手指及手腕部位的弯曲、外展等多部位测量,建立手部姿态模型后进行演算和分析,受个体手部形态差异及多传感器耦合等影响,不便于实际应用推广。
在手部精细动作评价中,抓握、捡拾、捏合等动作能力在老年人的日常生活中尤为重要,直接影响吃饭、喝水、刷牙、穿衣等日常起居,为了实现便捷测量,本文选取手指开合动作测试来检测拇指和食指的灵活性,只需要两个加速度传感器,附着物少、易穿戴,可有效降低测评过程对动作本身的影响。
本文提出的一种基于惯性传感器的手部精细动作能力评估分级方法。该方法首先通过惯性传感器采集受试者拇指和食指做开合动作时的惯性传感数据,提取相关特征变量,然后采用机器学习分类方法构建手部精细动作能力评估分级模型,最后通过构建的模型来测试评估手部精细动作能力。
在运动障碍康复评定与康复治疗中,一般量表将手部精细动作能力分为10个等级,对于每个级别的患者给出不同的治疗方案和康复手段。而在健康养老服务产业领域中对老年人的手部精细动作能力分级过于细化将会给相应的养老服务增加成本,将手部精细动作能力初步分为良好、中等、较差3个等级有利于为每个等级的老年人提供相应的养老服务和日常生活建议。由于采集到的样本量中,处于中等水平的样本数量远远高于处于较差水平的样本数量,导致采集到的数据存在不平衡性。传统的机器学习分类方法在不平衡数据集中的分类会更加偏向于多数类,继而对少数类的分类精度造成不良的影响[4]。Boosting和Bagging两类集成算法因通过对训练数据进行重采样或改进分类器算法,在不平衡数据集的分类学习中表现出良好的性能而被广泛应用于不平衡数据集的分类研究中[5]。在Boosting算法族中,RUSBoost算法将数据采样技术与Boosting算法相结合,较好地改善了单个分类器分类能力较弱的问题,也较好地解决了非平衡数据集分类能力差的问题[6]。因此,本文采用RUSBoost算法来构建手部精细动作能力分级评估模型。
1 RUSBoost算法介绍
Boosting是一族能够将弱学习器提升为强学习器的算法。这种类型算法先从初始训练数据集中训练出一个基学习器,然后依据基学习器的表现对训练样本数据集的分布进行修改,让之前基学习器分类错误的训练样本在后续的训练过程中得到更多的关注,再根据修改之后的样本分布来训练下一个基学习器,如此迭代,直到基学习器的数目达到指定的T值,最终将各个基学习器进行加权求和[7]。Boosting的基本思想如图1所示。
图1 Boosting算法基本思想
在Boosting算法族中使用最广泛的是AdaBoost算法,该算法根据基分类器分类结果的错误率对训练数据集和基分类器权重进行适应性调整,而后将每个基分类器的分类结果进行加权平均作为最后的分类结果。然而AdaBoost算法只考虑到训练过程中的全部错误分类,这就导致不平衡数据集中占比很小的阳性数据在基分类器的反复训练过程中没有得到足够的重视[8]。RUSBoost算法将随机欠采样技术引入AdaBoost算法中,提出一种数据采样技术和boosting算法相结合的集成学习方法,RUSBoost算法不仅快速高效而且在不平衡数据集的分类中具有十分优异的表现[9]。RUSBoost算法的基本步骤如下:
图2 RUSBoost算法基本步骤
2 实验方案
2.1 实验装置
本次实验采用的是实验室自主研发的运动信号采集器,它主要由微处理器、Wi-Fi模块、两个惯性传感器单元、电源模块等四个部分构成。两个惯性传感器单元采用InvenSense MPU6050,包括加速度计和陀螺仪,加速度计可测范围为±2 g、±4 g、±8 g、±16 g,陀螺仪可测范围可以设置为±250、±500、±1 000、±2 000 °/s,可准确追踪快速与慢速动作,能很好的满足本次实验的要求。实验过程中,在受试者的拇指和食指分别绑定一个惯性传感器单元以检测受试者在手指运动过程中的三维加速度和三维角速度信息。并将采集的数据通过无线模块发送到上位机并存储为txt文件,以便后续分析处理。由于人体运动信号不超过20 Hz[10],故根据采样定理可知100 Hz的采样频率可以很好地满足实验要求。在实验过程中,要求传感器按指定方向放置,具体如图3所示。
图3 惯性传感器单元敏感轴方向
2.2 实验过程
本次实验共采集年龄在50~72周岁的160位老年人的样本数据,其中患有帕金森病的老年人53位(帕金森患者手部功能有不同程度的下降),帕金森患者均来自安徽中医药大学神经病研究所附属医院。所有受试者均按要求签署了知情同意书。
在实验的过程中,由实验人员将运动信号采集器佩戴在受试者的拇指和食指上并固定,指导受试者用拇指和食指做连续的开合动作,要求动作的速度尽可能快,动作幅度尽可能大,图4为测试动作示意图。在受试者熟悉操作流程之后,采集大约20 s的测试数据,在测试的过程中由一名富有经验的医师对测试动作进行评估,根据测试动作的优劣将其分为良好、中等、较差三个级别。如表1所示,列出了每个级别所对应的样本数。
图4 手指开合动作测试示意图
级别样本量良好50中等88较差22
2.3 数据处理与特征选择
人体的运动信号主要集中于20 Hz以内,因此采用截止频率为30 Hz的巴特沃兹低通滤波器来对惯性传感器数据进行滤波用以除去高频噪声。
本文基于受试者的拇指和食指的运动灵活性分析受试者的手部精细动作控制能力。在实验的过程中发现受试者在做手指开合动作的时候,食指的运动幅度和速度明显比拇指大。因此研究中主要根据食指的运动信号来提取相关特征参数来研究评价受试者的手部精细动作控制能力。
由于信号的来源是固定于食指上的惯性传感器测量单元,因此研究中只能够提取加速度和角速度的物理特征来对手部精细动作控制能力的优劣进行评价。信号的物理特征包括能量特征、方差、均方根值、功率等[11]。为了避免单轴方向的加速度和角速度分析时带来的误差,提高对不同评估级别之间的辨识度,引入合加速度和合角速度来补充反映手指运动的剧烈程度[12]。本文提取的特征主要有三维加速度(ax,ay,az)和三维角速度(ωx,wy,wz)以及他们的合加速度(at)、合角速度(wt)的均方根值。具体计算公式如下:
合加速度:
(1)
式中:at是合加速度,ax,ay,az分别是每个维度的加速度值。
均方根:
(2)
式中:RMS是均方根值,m为信号序列长度,ai是加速度值。
角速度的合成以及均方根值计算与加速度的计算方法一致,在此不再赘述。
经过对原始信号的观察和分析,我们发现在传感器的敏感轴方向上,绕x轴转动的角速度ωx是食指运动信号的主要分量,因此对ωx信号进行单独分析,图5是食指惯性传感器测量单元原始六轴信号。
图5 食指传感器的六轴信号
在测试过程中,我们将受试者拇指和食指接触一次所花费的时间定义为手指开合动作的周期T1。从图5可以看出在每次手指开合动作中ωx信号都会有一个明显的波峰(代表正向最大角速度)和一个波谷(代表反向最大角速度)。本文提取每个开合动作周期内ωx信号的峰值(ωx_peak)组建一个新的信号序列,然后计算峰值的均值、峰值的变异系数、开合动作的周期均值和标准差作为4项特征参数。
具体计算公式如下:
ωx信号的峰值均值:
(3)
式中:n为ωx信号中提取到的峰值点的数目,ωx_peaki为在第i个动作周期内ωx信号的峰值。
ωx信号峰值的变异系数:
(4)
式中:ωx_peak_avg为峰值序列的均值大小,ωx_peak_std为峰值序列的标准差。
图6 ωx信号的功率谱
在现代信号分析中,功率谱估计是一种常见且有效的信号分析方法,可根据功率谱分析信号在频域能量随频率变化的情况,由功率谱密度计算的峰值功率能够较好的反映信号所蕴含的能量等信息[13-14]。图6展示的为ωx信号的功率谱。本文根据ωx信号的功率谱提取功率谱的峰值功率(wx_pp)、峰值频率(ωx_fpp)和信号的总功率(ωx_pt)作为ωx信号在频域内的3项特征参数。本文选取的时域和频域内的15维特征参数如表2所示。
表2 特征参数列表
2.4 模型构建方法的选择
手部精细动作控制能力分级评估模型的构建主要由训练阶段和评估阶段两阶段构成。训练阶段是利用训练数据集来产生分级评估模型,评估阶段则是利用另外独立的数据集对分级评估模型进行性能评估。在模型训练之前,根据以上提取的15项特征参数,我们可以得到一个160×15的数据集,按照传统机器学习中测试集-训练集划分方法,在数据集中随机抽取80%的数据作为训练集,余下的20%作为测试集。
常见的机器学习分类算法有SVM、决策树、KNN、BP神经网络、朴素贝叶斯、集成学习等方法[15]。对于同一个数据集,每种分类方法都有不同的性能。本文采用KNN分类器、SVM分类器、BP分类器、RUSBoost分类器等4种常见的分类算法进行对比验证,对比不同分类算法构建的评估分级模型在测试集上的识别准确率。
3 实验结果对比分析
为了探究不同分类器算法对模型构建的影响,采取混淆矩阵、准确率和kappa系数来对比分析不同算法所构建模型在测试集上表现的优劣[16-17]。图7~图10分别是通过 KNN分类算法、SVM支持向量机、BP神经网络算法和RUSBoost算法进行分类的混淆矩阵,纵坐标为实际类别,横坐标为预测类别。表3是不同算法分类效果评价指标对比结果。
图7 KNN分类算法混淆矩阵
图8 SVM分类算法混淆矩阵
图9 BP分类算法混淆矩阵
图10 RUSBoost分类算法混淆矩阵
算法KNNSVMBPRUSBoost准确率/%68.7571.8856.2590.63F1值0.5940.6150.5350.924Kappa系数0.4430.5220.2700.838
从表3可以看出:利用RUSBoost算法训练的分类器模型对测试集的总体精度达到了90.63%,F1值为0.924,kappa系数为0.838,其分类效果较其他分类算法构建的模型具有明显的优势。使用BP算法分类的模型识别率极低,仅有56.25%,kappa系数仅为0.270,基本不具有分辨能力,这可能是因为数据集过小导致对数据的过拟合,影响了模型的泛化能力。经过对原始训练数据集中不同分级之间数据占比的分析发现,良好、中等、较差分别占比31.25%、55%、13.75%,不同分级类别之间数据量分布不平衡。然而传统的机器学习算法大多都假设数据分布是均匀的,数据分布的不平衡会在一定程度上影响分类器的性能[8],这很可能是前几类算法分类效果不佳的原因。而RUSBoost算法通过将欠采样技术与Boosting相结合,欠采样技术通过减少多数类的样本来平衡原始数据集,虽然会丢失一定的信息量,但是由于Boosting算法会构建不同的弱分类器,在一个弱分类器中丢失的信息量很有可能会在其他弱分类器中被包含[9]。因此RUSBoost算法在对不平衡数据的分类中具有很大的优势,本文的实验也证明了这一点。
4 总结
本文提出一种基于惯性传感器的精细动作能力评估分级方法,通过采集一定量样本数据来建立精细动作能力评估分级模型,然后采用验证集验证了分级评估模型的优劣。实验证明,RUSBoost算法构建的分级评估模型分类准确度达到90.63%,可以很好地满足预期,在一定程度上能够代替临床评估量表来对手部精细动作控制能力进行评价。
由于人体手部精细动作控制能力的相关原理机制十分复杂,仅仅依据手指开合动作的速度、幅度等物理指标可能无法全面评估手部精细动作控制能力。后期将主要围绕手部震颤、手部抓握力、手指捏力等方面展开研究来更加全面地评估手部精细动作控制能力。