基于BiLSTM的表面肌电图手势识别算法
2021-07-02范秀琴喻洪流李素姣
范秀琴,喻洪流,李素姣
1. 上海理工大学 康复工程与技术研究所(上海, 200093)
2. 上海康复器械工程技术研究中心(上海, 200093)
3. 民政部神经功能信息与康复工程重点实验室(上海, 200093)
0 引言
表面肌电图(surface electromyograms, sEMG)是通过放置在人体皮肤的表面电极采集骨骼肌的电活动从而反映肌肉活动信息。该信号在康复辅具领域(如:智能假肢和主动外骨骼)已经得到了广泛的应用[1-2]。当人产生运动意图时,相应的神经细胞被激活,同时刺激肌肉细胞产生电活动,使得骨骼肌收缩以产生相应的运动。sEMG可以记录此时肌肉活动的电运动,因此sEMG携带着人脑发出的命令信息,是人运动意图的直接表现[3]。传统的机器学习主要侧重于利用特征工程增加信号中包含信息的密度。为提高手势识别的准确率,越来越多的生理信号分析和处理开始使用深度学习的方法。深度学习能够有效地处理高维特征向量,不需要使用主成分分析等方法进行降维,可以在大型数据集上显示出更高的效率。不仅如此,鲁棒性、功能性和稳定性是分类器设计的最终目标,作为传统的常规算法和机器学习方法的改进技术,深度学习技术在这三个方面的表现也是优异的[4]。
深度学习中,应用最广泛的是卷积神经网络(convolution neural, network CNN)。利用它擅长层次或空间数据提取的特性,在sEMG模式识别领域CNN也被大量应用。然而,sEMG本质上是一种序列信号,使用CNN建模无法利用sEMG中的时间信息。针对CNN的不足,我们提出了一种新型的双向长短期记忆(bidirectional long short term memory, biLSTM)神经网络架构用于实现基于sEMG的手势识别,该模型不仅可以利用之前的序列信息预测当下时刻的状态,同时可以利用之后的信息预测当下时刻的状态,能够完全利用序列之间的联系进行建模。结果表明,该模型能够有效地提取sEMG中的时间信息,实现良好的分类。
1 相关工作研究
现阶段也有大量的研究探索了深度学习在手势识别中的有效性。2016年Park 和 Lee建立了一个CNN网络,包含四个卷积层、四个子采样层和两个完全连接的层,并将引入自适应方法,以学习更好的特征进行受试者间评估[5]。 Atzori等[6]提出了一种基于LeNet的架构,并从包含空间和时间信息的sEMG图像中提取高级特征,该方法成功应用于NinaPro数据库中67名完整受试者和11名经桡动脉截肢者的49个手部运动得数据。Geng等[7]首次使用高密度电极阵列获取sEMG数据,并提供了一种新颖的CNN模型。该模型使用了瞬时sEMG图像,即从sEMG网格的瞬时值生成的图像中提取空间信息,同时改进了dropout和批处理规范化技术,后处理使用多数投票,实现了很好的分类性能。Ding等[8]在使用二维卷积进行所有通道信号的分析之前,首先使用一维卷积独立地处理每个通道中的sEMG信号,从而避免早期信号融合可能引起的错误。该体系结构对NinaPro数据集中18个手势的平均准确度为78.86%。
由于,sEMG本质上是一种序列信号,RNN更合适于序列信息的建模。文献[9]首次研究了门控循环单元(Gating Cycle Unit GRU)在手势识别中的性能。该系统利用从表面肌电传感器中提取的原始表面肌电信号来识别六种手势,并能适应新的实验对象。文献[10]提出了一种新的预测手势的RNN模型,该模型能够在手势运动开始后的每个采样时间步输出一个瞬时预测值。基于此,本研究采用两级BiLSTM模型架构,先从sEMG不同的特征向量中提取深层特征,而后进行融合并实现手势识别。
2 模型构建
2.1 肌电信号活动段检测
sEMG代表了肌肉活动的水平,当手的运动从一个手势切换到另一种手势时,肌肉会经历从活动状态切换为放松状态,此时相应的肌肉会放松,sEMG的幅值会非常低,而后sEMG的幅值瞬间提高,肌肉再切换为活动状态。该研究使用一种基于峰值检测和短时能量结合的方法检测肌肉活动的时间区域。考虑到表面肌电传感器的每个通道对不同手势的敏感程度不同,因此对所有通道进行平均操作以实现更高的可靠性。该方法是指将肌电信号用极小的时间间隔划分,在每个时间间隔中检测sEMG的峰值,并连成一条曲线。而后使用峰值计算该时间间隔内的短时能量,为:
其中,t为时间,c为通道,N为通道的总数,E为sEMG的幅值, Eavg为所有通道sEMG幅值的平均值,ω为时间窗的长度,EMA为sEMG的平均短时能量值。根据(1)式计算t时刻多通道sEMG的平均幅值,根据(2)式计算每个时间窗内sEMG的短时能量。使用起始阈值和终止阈值进行活动检测。
2.2 特征提取
肌电信号是一个瞬时非平稳信号,不同时间的变化是不同的,瞬时样本无法准确地反映肌肉活动的状态,所以需要对肌电数据进行加窗处理,本研究中,使用时长200 ms,增量50 ms的滑动窗进行处理。为了从所有窗的信号中提取出的信息具有最优性能,同时计算成本最低,需要设计合理的特征值,我们选择了肌电信号的五个时域特征:均方根(root mean square, RMS)、绝对平均值(absolute mean value, MAV)、波形长度(waveform length, WL)、零交叉(zero crossing, ZC)、斜率符号变化(slope sign change, SSC)。图1为特征提取过程。
图1 特征提取Fig.1 Feature extraction
2.3 LSTM模型架构
RNN是一种针对序列数据的神经网络,由于该网络中存在反馈回路,允许当前的输入处理之前的输出,从而为该网络提供了时间状态,并在每个步骤中融入了较早输入的影响,如图2所示。常规的RNN存在梯度消失的问题,很难学习输入序列数据中的长期时间依赖性,采用长短期记忆神经网络(long short term memory, LSTM)可以有效解决这一问题。
LSTM包含一组用于控制序列数据输入的门,包括输入门、输出门、遗忘门。图2代表一个LSTM单元,LSTM只能学习数据对之前的数据的依赖性,而BiLSTM可以通过双向的计算,同时学习数据对之前的数据的依赖性和数据对之后数据的依赖性,极大地改善了LSTM。图3所示是所提算法模型图。
图2 LSTM单元结构示意图Fig.2 Schematic diagram of LSTM unit structure
图3 LSTM单元结构示意图Fig.3 Schematic diagram of LSTM unit structure
本研究使用BiLSTM对sEMG进行识别。在分解阶段,将原始sEMG经过特征提取得到的5个特征向量作为独立的输入,输入到BiLSTM层,BiLSTM层中隐藏层的数量是特征向量长度的一半。该层后面连接全连接层,为防止过拟合两个层之间添加了Dropout层,并使用整流线性单元作为激活函数。
融合阶段首先将从5个特征向量单独学习的结果进行融合,然后再次连接Dropout层和Dense层。在融合阶段的最后使用G-way全连接层和一个softmax分类器对结果进行分类,其中G等于手势的数量。所有全连接层中的激活函数均为Relu。
为保证有足够的样本数量来训练每个类别,模型采用分层的10倍交叉验证用于划分数据集,同时,本方法也能够防止随机划分导致的模型不平衡。为了更好地优化模型,使用Adam优化器来更新模型权重,并使用交叉熵损失函数减小模型误差。初始学习率设置为0.001,并使用学习率降低机制。为保证网络合适的收敛速度,权重衰减为0.001。为防止网络的过拟合并增强网络的鲁棒性,使用L2正则化技术。
3 结果与分析
3.1 数据集
根据所用电极的数量分类,基于sEMG的手势识别通常分为两类:稀疏的多通道sEMG[11-13]和高密度sEMG[14-17]。稀疏的多通道sEMG通常用一至十几个传感器附着在皮肤表面采集肌肉的电信号。现存的几种公开的数据集使用最多的是NinaPro[13]。NinaPro数据库的一个子数据集由10个电极的sEMG构成的,来自27个受试者的总共52个手势,包括9个腕部动作,8个手势,12个手指动作以及23个抓握和功能动作。信号采样频率是100 Hz。
高密度sEMG通常指传感器数量大于100个,这些传感器以二维密集矩阵形式排列,并且覆盖皮肤的某个特定区域。这种分类的准确率受传感器位置影响相对较小,但是需要数据处理能力强的硬件。这种分类的公开数据集比较少,具有代表性的是CapgMyo[18]。该数据库中的sEMG信号是用缠绕在受试者右前臂的8×16电极网络记录的,采样率是1 000 Hz。CapgMyo数据库分为三个子数据库,分别表示为DB-a,DB-b和DB-c。DB-a中的数据来源于从23位受试者中的18位获得的8个手势。实验过程中,每个手势保持3~10 s,并重复10次。DB-a中的手势对应于NinaPro数据库中的13~20号。DB-b包含与DB-a中相同的手势集,但是从23位受试者中的10位获得的。DB-b中每个手势在不同的日期进行了两次测量,测量间隔大于一个星期。在这两次中阵列的电极覆盖的手臂位置会稍微不同。DB-c记录的数据来源于从23位受试者中的10位获得的12种手指基本运动。DB-c中的手势对应于NinaPro数据库中的1~12号。DB-b和DB-c中的每个手势保持大约3s,重复10次。表1是数据库CapgMyo DB-b中8种手势。
表1 数据库CapgMyo DB-b中8种手势Tab. 1 Eight gestures in CapgMyo DB-b database
本研究中使用的数据来源于NinaPro DB1和CapgMyo DB-a两个sEMG基准数据库。表2中显示了数据库的有关信息。
表2 两个sEMG基准数据库的详细信息Tab. 2 Details of the two sEMG benchmark databases
3.2 实验结果与分析
在该研究中,遵循相同的活动检测、预处理和手势识别的实验过程。对于CapgMyo DB-a,有两个数据集,原始数据集和预处理数据。出于本研究的目的,我们使用的是原始数据集。对于NinaPro DB1,我们选择了和CapgMyo DB-a相同的8个手势的数据。应用该研究所提出的模型分别对两个数据集进行处理。
CapgMyo DB-a的分类准确率为99.2%,NinaPro DB1的分类准确率为88.5%。结果表明,我们提出的算法架构是完全可行的
4 讨论
在这项工作中,我们提出了一种新型的BiLSTM架构,用于基于sEMG的手势识别,并分别在高密度sEMG数据库和稀疏sEMG数据库进行了验证。本算法充分利用了肌电信号序列中不同时间段信息之间的序列相关性来处理一系列的输入,在两个数据库中均获得了较高的预测性能。
对比数据库上的验证结果显示,ATZORI使用一种结构简单的CNN网络,在NinaProDB1数据库上实现了90%的准确率[6]。Geng使用一种用于瞬时sEMG图像的CNN架构,在CapgMyo DB-a和NinaProDB1分别实现了89.3%和78.9%的准确率[7]。Wei采用一种基于sEMG的两阶段多流CNN方法,在CapgMyo DB-a和NinaProDB1上分别实现了99.1%和85.0%的准确率[17],Ketykó采用一种基于域适应的两阶段RNN架构,在CapgMyo DB-a和NinaProDB1上分别实现了97.1%和90.7%的准确率[18]。本研究分别实现了99.2%和88.5%的准确率,这说明所提出的模型完全能应用于sEMG的处理,且在高密度sEMG上表现良好,在稀疏的多通道sEMG上表现相对有所不足。
5 结束语
本文提出的两级BiLSTM模型架构,首先将不同的特征向量单独的输入到BiLSTM层挖掘其深层的序列信息,而后将单独学习的结果进行融合并通过softmax分类器进行分类。本研究没有直接将所有特征向量组成特征矩阵进行学习,而是利用不同特征在学习中占用的权重进行拼接。通过在CapgMyo DB-a和NinaPro DB1两个基准数据库上的实验验证,本研究的模型与现有文献中的模型相比,在高密度sEME中能够有效提高识别准确率,在稀疏的多通道sEMG中性能有所不足。下一步进一步将融入其他结构改善所提模型。