吴雨浩王从庆
(南京航空航天大学 自动化学院,南京 210016)
近年来,利用sEMG(Surface Electromyography)信号对手势进行识别是康复手机器人研究的一个重要方向,目前针对基于sEMG信号的手势识别的研究,国内外提出了多种方法。Doerschuk等[1]提出了一种多元自回归模型方法,首次证实了sEMG信号在手势识别中的作用。蔡立羽等[2]提出了一种基于小波变换的方法对4种手势进行分类研究,准确率在90%。Wang等[3]提出了一种基于线性判别分析的方法对手势进行分类,准确率达到92%。席旭刚等[4]提出了一种改进的快速独立成分分析方法,准确率为90%。宋佳强等[5]通过基于组合能量特征的手势识别算法对8种手势进行识别分类,准确率达97.5%。周旭峰等[6]通过基于组合RNN(Recurrent Neural Networks)网络的手势识别方法对10种手势进行手势分类,准确率达90.78%。刘威等[7]通过对5种手势的sEMG信号提取32个不同的时频特征,进行特征组合,构建特征图,利用卷积神经网络进行手势识别,准确率达98.1%。李自由等[8]针对MYO手环旋转位置不同导致识别精度降低等问题,提出了一种基于MYO旋转偏移估计与自适应校正方法,对8种手势进行识别,准确率达78.37%。吴常铖等[9]针对手势识别准确率受肌电传感器位置的影响,提出了一种基于ANOVA(Analysis of Variance)和BP(Back Propagation)神经网络的方法,对6种手势进行识别,准确率达94.6%。
深度学习作为一种端到端的学习方法,已有较长的历史。1998年,Lécun等[10]提出了LeNet-5网络结构,在Mnist手写数字数据集上识别精度达到99.7%。2012年,AlexNet网络在ImageNet竞赛中取得冠军[11]。随后,人们提出更多的深度学习神经网络结构。
常规方法中对表面肌电信号的采集使用的主要传感器有针电极、湿电极等。由针电极信号采集的信号纯净、干扰小,但对受试者伤害较大。湿电极与皮肤接触面积小,但是佩戴前需要去除汗毛,处理过程复杂。因此,笔者最终选择MYO手环对sEMG信号进行采集。该手环有8个肌电信号传感器,通过蓝牙与电脑进行数据传输,采样频率为200 Hz。并设计了一种多路卷积神经网络,对14种手势的sEMG信号数据进行识别,准确率可达97.89%。
常规的手势识别方法通常包括信号采集、活动段提取、特征提取和分类等流程,特征提取中特征的选择会影响最终手势识别的准确率。为了简化处理流程,笔者提出了一种基于多路卷积神经网络的方法,利用预处理后的sEMG信号进行手势分类,手势识别的流程如图1所示。
图1 基于sEMG信号的手势识别流程Fig.1 Process of gesture recognition based on sEMG signals
实验的受试者为8名20~30岁的健康人员,男生6名,女生2名。受试者经过训练后,统一佩戴位置,并且遵守如下规定:MYO手环佩戴在左手,靠近手肘的位置。实验采集了8种手势,分别为手掌向左弯曲(left)、手掌向右弯曲(right)、握拳(fist)、ok手势(ok)、比V(yeah)、比6(six)、只伸食指(one)、伸出3根手指(three),手势动作示意图如图2所示。
图2 8种手势动作示意图Fig.2 Eight gestures
受试者每次采集手势的持续时间为20 s,前5 s保持手掌张开,并按照指令开始做相应的动作,整个活动段维持10 s左右,并恢复初始状态后结束。每个手势动作重复10次,一组sEMG信号采集完成后,为防止肌肉疲劳影响,休息1 min再进行下一次手势动作的信号采集。实验总计640组原始采样数据。
以一次left手势为例,图3给出了sEMG信号的单通道波形图。从图3中可观察出:在采样点为1 000点时,信号波形发生明显变化;但原始信号中难以直接找到活动段的起始点和结束点。笔者选择了短时能量的滑动窗口法[12]实现活动段检测过程。滑动窗口法的原理是:采用固定长度的窗计算窗内的平均能量,作为该点的能量值,滑动窗大小取值64。算法实现过程如下。
1)对8通道的信号幅值的绝对值进行平均,平均绝对值计算公式如下
其中采集的原始信号标记,上标j为第j个通道,下标i为第i个点。
2)计算每个信号点的能量值,公式如下
其中N为信号采样点总数,W为窗口大小,SEMGabs(i)为第i个点的8通道信号的平均绝对值。
3)设置阈值tTh,公式如下
其中m1为信号静息段能量的平均值,m2为信号能量的峰值,b为调整阈值系数,通常在0.01~0.04之间,笔者取0.02。若提取的活动段长度低于400,认为是噪音干扰,直接作丢弃处理。图4给出了sEMG信号活动段检测的示意图,经过活动段检测后,可以明显地提取出手势识别所需要的活动段信号。
图4 sEMG信号活动段检测图Fig.4 Detection of active segment
Hudgins等[13]认为两次样本之间时间窗口大小应该不超过300 ms,然而分割sEMG信号的时间窗口过小会导致识别精度下降。笔者最终选择64个点作为样本的长度,MYO手环采样频率为200 Hz,具有8个sEMG信号传感器。因此数据样本的大小为64×8。为了数据扩充处理,样本间重叠大小为32个点。
为增加对比实验,根据文献[14],从时域和频域等不同角度对sEMG信号进行特征提取,使用机器学习方法进行手势分类。时域特征有平均绝对值(MAV:Mean Absolute Value)、均方根(RMS:Root Mean Square)、过零点数(ZC:Zero Crossing)、波形长度(WL:Waveform Length)。频域特征有平均频率(MNF:Mean Frequency)、平均功率(MNP:Mean Power)、中值频率(MDF:Median Frequency)。
sEMG信号经过活动段检测后,生成数据样本大小为64×8,可以视为高度为64、宽度为8的单通道灰度图片,因此输入层(Input)大小为64×8×1。多路卷积神经网络(MB-CNN:Multi-Branch Convolutional Neural Networks)的结构示意图如图5所示。该网络层由3个不同的支路构成,分别为支路1(branch1)、支路2(branch2)、支路3(branch3)。3种支路在卷积层对应的卷积核大小不同,不同的卷积核大小对应着不同的感受野;在卷积和池化过程中,3个支路分别提取不同尺度的特征,最终经过扁平层(Flatten)后,在连接层(Concat)处完成特征融合并且形成一个大小为32 768×1的向量。经过两个全连接层(FC:Fully Connect Layer)后,输出一个大小为8×1的向量,向量中数值最大的值所在的索引即为最终手势的预测类别。
支路1、支路2、支路3的结构类似,均由3个卷积层和3个池化层以及一个扁平层组成,不同支路中不同层级的卷积层中卷积核的个数分别为64、128、256。支路1中卷积核的大小分别为4×1、3×1、2×1;池化层均采取最大值池化,池化大小均为2×1。支路2中卷积核的大小分别为3×3、3×1、2×1;池化层均为最大值池化,池化大小分别为2×2、2×1、2×1。 支路3中卷积核的大小分别为5×1、5×1、3×1;池化层均为最大值池化,池化大小均为2×1。在不同支路中其他参数均选取默认值,即填充padding=0,步长stride=1。由于不同支路具有不同大小的卷积核,这样能具有不同大小的感受野,分别能提取不同尺度大小的特征。3个支路分别完成卷积和池化后,经过扁平层(Flatten)后,在连接层(Concat)完成特征融合,最终的实验结果也证明了该模型的有效性。
MB-CNN网络中使用交叉熵损失函数和Adam[15]优化算法更新训练过程中的超参数。考虑收敛速度和最终识别精度,在前几层网络中选择ReLU[16]激活函数,在输出层则采用softmax激活函数。为了避免训练中的过拟合,全连接层使用dropout[17]方法随机失活神经元,失活率设置为0.5。训练过程中单次训练的样本批次大小(batch_size)设置为128,训练迭代周期epoch设置为100,其他超参数则设置为默认值。
在动作采样时,先将训练样本与测试样本按照4∶1随机划分,即每个人10组采样动作中随机挑选8组作为训练集的动作,2组作为测试集的动作。对sEMG信号活动段提取后,经过数据扩充,最终生成25 600个训练集样本、6 400个测试集样本。
1.4节中提取的不同时域特征和频域特征,作归一化处理后将按照以下几种方式形成组合特征:1)MAV、MNF;2)MAV、MNF、MNP;3)MAV、MNF、MNP、RMS;4)MAV、MNF、MNP、RMS、MDF;5)MAV、MNF、MNP、RMS、MDF、ZC;6)MAV、MNF、MNP、RMS、MDF、ZC、WL,特征数目依次为2、3、4、5、6、7。
分别采用机器学习算法中的线性判别分析(LDA:Linear Discriminant Analysis)、K最近邻(KNN:K-Nearest Neighbor)、支持向量机(SVM:Support Vector Machines)进行准确率分析。基于不同方式组合特征的手势识别准确率如表1所示。
从表1中可看出,随着特征数目的增多,手势识别的准确率整体都有提高。但对KNN和SVM这两种算法,在特征数目为3和5时,准确率出现了下降的情况,这可能是提取的某些特征不适合于该算法。
表1 基于不同方式组合特征的手势识别准确率Tab.1 Accuracy of different combination of features
深度学习作为一种端到端的学习方法,能利用数据自动完成特征提取和分类工作。通过构建合理的模型,也能完成手势识别分类。实验中采用的深度学习框架为Keras,使用Pycharm编程环境完成。MB-CNN模型在训练集上的准确率变化曲线如图6所示,损失函数变化曲线如图7所示。
图6 训练集准确率变化曲线Fig.6 Curve of accuracy on training set
图7 训练集损失函数变化曲线Fig.7 Curve of accuracy on training set
从图6和图7中可看出,在MB-CNN模型上,随着训练迭代周期的增加,训练集的准确率呈上升趋势,损失函数则呈下降趋势;当迭代周期达到100后,模型收敛;这证实了MB-CNN模型在训练集上训练的有效性。
笔者分别在由不同支路与全连接层单独构成的网络中进行手势识别分类,最终在测试集上不同模型的手势识别准确率如表2所示。
表2 不同模型上测试集识别准确率Tab.2 Accuracy of test set on different models
从表2中可以看出,3个支路模型在测试集上的识别准确率分别为94.79%、96.01%、95.06%,而在模型MB-CNN中,测试集上取得了最佳的识别精度97.89%。实验结果证明了该多路神经网络模型的合理性,MB-CNN模型在测试集上手势识别的混淆矩阵如表3所示。
表3 MB-CNN模型在测试集上混淆矩阵Tab.3 The confusion matrix of test set on MB-CNN model
从表3中可以观察出,在fist手势和six手势上,识别精度较高,总计800个手势中预测正确分别有795个和797个。在one手势和yeah手势上,识别精度相对较低,分别预测正确的有674个和712个。在个别手势上识别准确率较低,可能是因不同的受试者不同时间段采集的信号存在差异或是受试者在数据采集时没有严格按照规定的动作完成。在今后的研究中,对受试者的动作细节采取进一步的规范。
笔者通过对MYO手环采集的8种不同手势的sEMG信号进行分析,提出了一种多路卷积神经网络模型(MB-CNN)对常见的8种手势进行识别分类。该方法的主要优点在于能避免常规的特征提取过程,并且识别精度较高,测试集上的准确率达97.89%。sEMG信号在康复手机器人中应用广泛,因此该方法具有重要意义。在今后研究中,将对更多不同的手势进行分类识别研究,并且如何区分相似的手势也是另一个研究方向。