肌音信号模式识别在嵌入式实时手语翻译系统中的应用

2021-04-17 06:08王新平夏春明章含阳
数据采集与处理 2021年2期
关键词:手语识别率分类器

王新平,夏春明,章含阳

(华东理工大学机械与动力工程学院,上海200237)

引 言

手语在生活中是一种常用的交流方式,尤其是对于聋哑患者,实际生活中的手语晦涩难懂,普通人与聋哑患者之间交流十分困难。目前尚未出现一套成熟的实时手语识别系统,本文设计了一种基于肌音信号(Mechanomyogram,MMG)模式识别的嵌入式实时手语识别设备,利用反向传播神经网络(Back propagation neural network,BPNN)对手语发出的高频振动信号进行识别,达到手语分类的效果。

神经网络是最常用的机器学习算法之一,可以应用于各个领域,尤其是涉及分类和识别的方向:Chen和Zhou[1]基于稀疏神经网络,对人脸表情的情绪进行识别判定,实现了7种情绪89.12%的平均识别率;Zangeneh等[2]应用深度卷积神经网络(Convolutional neural network,CNN),对低分辨率图片进行人脸识别,相比于普通网络,大大提高了人脸识别率;Deshwal等[3]将BPNN应用于声音信号的分类识别,对泰米尔语,马拉雅拉姆语,北印度语和英语进行识别,综合多个实验者的样本,获得了94.6%的识别率。除了模式识别领域,神经网络还可应用于数据回归预测等方向:Sun和Huang[4]应用BPNN,建立煤炭价格估计模型,可用于预测煤炭价格的变化。

在已有关于手语识别的研究中,覆盖了各种不同的手语信号和处理方法:Ghanbari和Seyedarabi[5]通过动态图像轨迹,结合隐马尔可夫模型对20种动态手语完成识别,识别率达97.48%;Kakoty[6]采用数据手套采集手指姿态信号,在支持向量机(Support vector machine,SVM)分类器中完成26个字母的动态手语识别,平均识别率达96.7%;Cho和Lee[7]根据手势图像分析手势关节信息,采用SVM分类器实现5种静态手势的分类,平均识别率达99.58%;Karush和Gupta[8]使用陀螺仪采集了手腕一点上的姿态信号和加速度信号,通过CNN实现20种手语语句的分类,识别率达94%;除了以上的各种信号,生物医学信号也被广泛研究于手势或者手语分类,其中最为常见的是表面肌电信号(Surface electromyography,sEMG)和MMG。比如Chen和Yu[9]采集前臂上的sEMG并对其压缩,利用SVM分类器分类后,获得了11种手势95%以上的识别率。

MMG是由于肌肉纤维收缩、变形而产生的位于皮肤表面的一种机械振动信号,它是一种低频信号,能量主要集中于2~150 Hz,可以被麦克风,加速度传感器等捕捉[10]。MMG和EMG有很多相似之处,它们都是时间序列信号,可以在皮肤表面采集,但是MMG在很多方面有着不可替代的优势:更高的信噪比,采集方便,成本低,可以间隔衣服采集等。近年来,MMG被广泛研究于各个领域:Zhang和Xia[11]研究了MMG时频域特征和肌力的关系;在假肢控制的研究领域,Natasha和Chau[12]根据截肢志愿者的前臂MMG,利用线形判别分析(Linear discriminant analysis,LDA)分类器预测手部动作的意图,得到8个动作95%以上的识别率;Ding和He[13]根据前臂肌肉MMG预测了5种手指动作,应用SVM分类器,获得95%以上的识别率。MMG的模式识别除了预测手势动作,还可以应用于其他部位的动作识别:Gu和Wu[14]采集了胸锁乳突肌上的4通道MMG,应用SVM分类器对6个头部动作进行分类识别,获得了95.92%的识别率;Wu和Huang[15]采集了大腿上的4通道的MMG,应用CNN-SVM算法对6种膝盖动作进行分析识别,获得了94.04%的识别率。

基于以上一些调研,可以总结:虽然已存在不少关于手语识别和MMG模式识别的研究,但是绝大多数研究都是在PC上完成,采集和分类分步进行,因此无法实现模式识别的实时性和脱机工作,其中主要难点在于:(1)采集设备重新穿戴后传感器的位置难以保证与之前在同一位置,采集的样本与训练样本不能匹配,因此无法建立相同的分类模型;(2)分类算法的运行需要大量内存和计算量,难以在微型控制器(Micro control unit,MCU)中完成。为了克服以上两个难点,Wu和Wang[16]将加速度传感器以有线的形式连接PC端,在PC端上同步进行采集工作和执行SVM特征分类,完成6种膝盖动作的实时分割,识别率达91%。这种方式虽然可以在一定程度上实现了分类的实时性,但是由于传感器与PC主机直接相连,因此采集工作十分麻烦,而且每次穿戴后都必须重新采集训练样本,无法实现脱机工作和数据的重复使用,因此难以投入实际应用。

基于以上一些调研,针对MMG模式识别难以实现脱机工作的难题,本文结合了嵌入式系统小巧灵活的特点和神经网络分类算法高效性,在MATLAB软件中建立神经网络模型。利用神经网络算法单次前向传播计算即可完成一次模式识别的特点,将完成训练的模型参数和计算框架移植于嵌入式设备中,在嵌入式处理器上完成模式识别,实现了MMG模式识别的实时性和脱机工作。

1 方案设计

MMG作为一种生物医学信号,可以反映肌肉的动态收缩特性——皮肤表面的机械振动包含的信号与肌肉活动有关,当肌肉发生收缩时,肌肉纤维的几何形状发生改变(缩短或者伸长),此时肌肉之间的摩擦经由肌肉细胞薄膜相互传递,形成振动信号,不同的形态变化过程将产生具有不同频谱的振动波。振动信号的传播借助肌肉组织到达皮肤表面,可采用加速度传感器或麦克风对其捕捉[17]。

根据以上的原理,通过采用加速度传感器捕捉多处位置人体前臂执行不同手语时发出的MMG波形,分别做好相应的标记,在完成数据传输后,在数学分析软件MATLAB上对数据进行处理、分析,以及训练机器学习分类模型,应用模式识别算法,识别不同波形所对应的动作。

基于上述分析,本文设计了一种前臂MMG采集装置,采集多通道信号,并在嵌入式设备中完成对数据的分割,使每个动作对应一组数据,再将数据传输至PC平台,利用数据分析软件进行训练分类模型和验证,最后提取训练后的分类模型参数,导入嵌入式设备,实现手语实时识别和脱机工作。其技术路线如图1所示。

图1 技术路线流程图Fig.1 Flow chart of technical process

1.1 采集装置设计

MMG的采集需要通过麦克风或者加速度传感器完成,在以往的研究中,采集MMG的装置大多采用如图2所示的有线方式连接采集卡或者MCU,这种采集方式操作繁琐,数据线的使用在一定程度上会干扰动作模式,且重新穿戴设备后,之前采集的数据难以重复使用。

图2 常见的采集形式Fig.2 Commonly-used data collector

为降低采集MMG的难度,封万俊和夏春明[18]研究了一套面向MMG的无线采集系统,如图3所示,通过将传感器布置于环形松紧带中,避免了采集时用胶带将传感器贴于皮肤的方式,降低了采集数据的工作量,并且提高了数据的质量。

图3 环形弹性带采集装置Fig.3 Elastic bracelet data acquisition device

在此设计的基础上,本文将弹性带改为金属表带,在传感器的另一侧粘上强力磁铁,同时在表带指定位置固定极性相反的磁铁,通过磁性将传感器吸附于指定位置,整体结构如图4所示。使用金属表带可避免传感器在采集过程中处于压缩状态,从而可以采集到更真实的MMG,同时传感器的位置也更便于调整。

图4 金属表带结构采集装置Fig.4 Metal braclet data acquisition device

1.2 算法设计

1.2.1 基于指数加权平均的能量阈值分割算法

原始MMG信号是一段连续的时间序列,而分类器的训练对象是每个动作对应的序列段,因此需要运行分割算法,实现信号的实时分割。

然而,在大部分涉及数据分割的研究中,分割算法需要借助整段波形的信息,因此无法应用于对信号的实时分割处理。本文采用的分割算法基于指数加权平均,同步计算6通道波形的移动平均数据,与原始数据进行差分计算,获得每个点位的波动性信息,再以宽度为d的窗口对其进行积分运算,获得对应的能量序列,根据能量阈值法,截取动作阈值点前后一定距离的波段,作为分割结果,其数学表达式为

式中:A为原始MMG数据,A*为基于指数加权平均的预处理信号,B*为预处理信号和原始信号的差分序列,Ei为能量信号,d为窗口宽度。图5展示了该分割算法的运行流程,其中a为当前传感器采集的加速度,g为重力加速度,E为采集的能量。

对比该算法和Kaiser能量分割法,二次包络线分割法和等长分割法,本文的分割算法在每次采样后只进行一次能量阈值计算和阈值判定,由式(1)可知,每次对数据判别和分析涉及到的加法和乘法次数分别为3+d次和2次,以及若干次赋值运算。当信号能量的计算值大于阈值时,判定出现动作信号,截取数据,完成分割。

在数据分割时,不需对整段时间序列信号做频谱分析和能量计算,避免傅里叶转换等复杂计算,大大减少了芯片的运算量,因此本文的算法可以运行于嵌入式系统,实现对数据的实时分割。

1.2.2 神经网络模式识别

神经网络在模型分类、数值估计、物体定位等方面应用广泛,是机器学习最常用的算法。对于图像等多通道二维平面信号,识别和分类常用CNN,而对时间序列信号的处理更多使用BPNN和循环神经网络。本文的研究对象MMG是一种时间序列信号,故采用计算量较少的BPNN作为分类器模型训练算法。

训练时,输入层经过隐含层的前向传播计算后,将计算结果与实际结果对比,计算损失函数,通过反向传播不断更新权重和偏差,以减小损失函数值。采用K-fold交叉验证法对迭代计算结果进行评估,神经网络的前向传播数学计算公式为

图5 基于指数加权平均的能量阈值分割算法Fig.5 Energy threshold segmentation algorithm based on exponential weighted average

式中:上标字母代表网络的层数,下标字母为矩阵的维度,m为样本数量,nL为第L层的神经元个数,Z为线性计算结果,G为激活函数,A为输出结果。

本文中,数据在导入神经网络模型前进行归一化处理,传播时tansig函数作为隐含层的激活函数,softmax函数作为输出层激活函数,设置K-fold交叉验证的K值为5。2个激活函数分别为

采用交叉熵作为模型表现评估标准,具体表现为

式中:C为代价函数,为神经网络计算结果,Y为目标值,m为样本数量,和yi分别为第i个样本的计算结果和目标值。

神经网络训练过程中,通过不断迭代计算,反向传播,更新网络参数,改善网络性能。根据梯度下降原理,网络的参数更新公式为

式中:W为权重,B为偏置,α为学习率。随着迭代计算的进行,交叉熵值和更新梯度不断减小,当梯度小于一定值后,完成神经网络的训练。

经过多次测验调试,建立如图6所示的神经网络模型框架,其中输入的样本长度为1 800,共训练3 000个样本,隐含层结构为[80 50 30],输出层包含30个元素,代表30种动作分类。

图6 NN模型框架(3层隐含层,神经元个数分别为80,50,30)Fig.6 NN architecture(three hidden layers with neuron numbers of 80,50 and 30)

2 实 验

2.1 实验流程

实验对象为3名男性志愿者,年龄在23~25岁之间,身体健康,均无疾病史或者残疾症状,且提前知晓实验内容。

实验过程如图7所示,将嵌入式设备佩戴于前臂,将调整周向位置,使3个传感器位置分别对应如图8所示的3块肌肉,再利用磁铁锁定周向位置。

图7 采集手语动作样本Fig.7 Collection of sign language motion data

图8 传感器对应的前臂三块肌肉Fig.8 Three muscles of the forearm corresponding to sensors

佩戴好装置后,在PC上的MATLAB平台运行APP软件,创建虚拟TCP/IP客户端,并且连接嵌入式设备的WIFI芯片,实现数据的传输。实验中,对每个实验对象采集30种手语动作,每种动作采集100个样本,一共分5次采集,确保每次采集时实验者有足够体力。每次采集前将设备重新穿戴,并且保证每个传感器的位置对应各自的肌肉位置,这种方式可以增加训练样本的多样性,提高模型的稳定性。图9为采集的样本对应的30种手语,符合中国标准手语语言。

图9 30种中国标准手势语言Fig.9 30 kinds of Chinese sign language gestures

2.2 数据集

本文采用双轴加速度传感器,在3块肌肉位置处各采集x,y两个方向的加速度信号,获得6通道数据,每个动作的截取长度固定为300个采样点(采样频率为333 Hz,即每个动作持续0.9 s),组成形状为300×6的动作帧数据矩阵。将所有通道依次相接,组成长度为1 800的向量,作为神经网络的输入。

本文采用2种对神经网络模型的验证方式,分别对应两种数据集:第1种是模型自测,将3 000个样本贴上标签,随机打乱顺序,分成60%的训练集和40%的测试集,用训练集训练的模型对测试集预测,与实际标签对比,获得模型识别率,作为模型评价标准。第2种验证方式建立在第1种验证基础上,通过第1种验证方式确认神经网络框架,建立多个神经网络模型,分别对新接收的样本进行预测,并以投票的方式确定分类结果,完成动作实时识别,并与实际动作意图对比,每个动作重复30次,获得实时识别率。

3 结果与分析

考虑测试时的体力消耗,模型的自测重复10次,每次实验预测1 200个样本;实时性测试实验3次,每个动作重复实验30次,获得如表1所示的自测结果。

经过测试,得出在隐含层为[80 50 30]的模型结构下,获得的分类器自测效果最好,综合识别率超过99.6%。在该框架下建立多个BPNN分类器,进行动作实时预测,获得如表2所示的测试结果。

对比两次测试结果,发现分类器实时测试的平均识别率约为97.5%,略低于模型自测的识别率,分析原因可能是由于重新穿戴设备后传感器位置的微小偏差造成。根据模型的实时性测试结果,获得如图10所示的志愿者1的动作识别率混淆矩阵。

表1 模型自测结果Table 1 Self-test results

由混淆矩阵可知,在实时手语动作识别测试中,多分类器投票结果对大多数动作具有非常高的识别率,仅有少数动作容易发生误识别,平均识别率高达98.00%。

MATLAB完成模型自测,实时分类测试实验后,提取10个BPNN模型及其对应的归一化参数,将数据打包保存为.txt文件,并拷贝至嵌入式设备的SPI FLASH内存片中。编写相关嵌入式硬件驱动及软件算法,在系统上电后读取FLASH中的多个神经网络模型,缓存于SDRAM中,完成系统的初始化。当检测到新的手语动作后,整理动作帧数据,在嵌入式设备中完成数据预处理、标准化、神经网络传播计算和投票计算,获得分类结果,并将识别结果通过WIFI传输至其他客户机设备,实现嵌入式手语实时识别的应用。

为了验证神经网络算法的高效性和优越性,建立对照组,分别采用决策树(Decision tree,DT)、最近邻分类器(Nearest neighbors,KNN)、线性判别分析(Linear discriminant analysis,LDA)、朴素贝叶斯(Naive Bayes,NB)、SVM以及随机子空间判别(Random subspace,RS)对数据集进行建模和分类验证,其中60%的样本用于训练模型,40%的数据用于获取模型识别率的无偏估计。得到该数据集对应的自测识别率如表3所示。

表2 模型实时识别测试Table 2 Real-time classification accuracy

图10 志愿者1实时测试结果混淆矩阵Fig.10 Confusion matrix of volunteer 1

以上分类器算法对高维特征训练较难,时间消耗大,因此对每个通道数据提取时域,频域16种特征,组成特征向量进行测试。实验结果显示,在所有分类器中,BPNN算法对MMG模式识别的效率最高,提取特征对于BPNN算法不仅需要花费大量时间,对信号的识别率反而下降,因此本文采用BPNN+分割后的通道重组数据作为移植算法和数据预处理方式。

为了证明该嵌入式设备的实时性,对单个动作分类所耗时间进行分析:应用ST-Link仿真器对STM32芯片同步仿真运算,编写代码执行1 000次动作分类运算,并在分类计算前后设置断点,获得计算前后的时间差为517 ms,因此计算可得每次动作分类所需时间仅为517μs,基本可以忽略不计。

表3 多种分类器自测识别率对比Table 3 Self-test of different classifiers

4 结束语

本文设计了一种可用于采集MMG并在导入算法模型后可完成动作实时识别的嵌入式无线设备。该设备通过TCP/IP协议实现与MATLAB客户端的数据传输,完成MMG的采样,通过运行深度神经网络算法建立多个分类模型,对30种动态手语进行识别,在多次调整模型网络框架,获得最优模型框架后,模型平均自测识别率可达99.6%以上,实时识别率达97.5%以上,而文献[17]的研究中,采用LDA、SVM、KNN等传统机器学习算法,对11种抓取手势进行分类,仅获得了95%的识别率,本文采用的BPNN算法在识别数量和识别精度上都有了大幅提高。完成模型的训练后,将多个BPNN分类器参数导入嵌入式系统中,可以实现手语的实时脱机识别,文中设计的嵌入式设备体积小、重量轻、使用方便,具有一定实际应用价值。

本文的创新点在于将训练后的神经网络模型参数移植于嵌入式处理器,在MCU上运行神经网络分类算法,实现手语动作的实时识别。该研究可以为哑语识别,康复工程,假肢控制等方向提供一定参考。但存在数据的个性化问题,不同个体的分类器存在较大差异,因此在模型的普适性方面,仍存在提升和优化空间。

猜你喜欢
手语识别率分类器
基于特征选择的SVM选择性集成学习方法
自然手语在聋人大学生手语中的使用调查研究——以南京特殊教育师范学院为例
基于真耳分析的助听器配戴者言语可懂度指数与言语识别率的关系
听力正常青年人的低通滤波言语测试研究*
无声的世界里,怎样唱一首歌?
基于深度优先随机森林分类器的目标检测
提升高速公路MTC二次抓拍车牌识别率方案研究
基于差异性测度的遥感自适应分类器选择
高速公路机电日常维护中车牌识别率分析系统的应用
奇怪的手语图