一种基于支持向量机的手语翻译方法
技术领域
本发明涉及一种手语翻译方法,特别是公开一种基于支持向量机的手语翻译方法,结合支持向量机及传感技术实现手语的自动翻译识别。
背景技术
现在社会聋哑人和正常人交流过程中,由于正常人无法理解手语,使聋哑人和正常人之间存在了隔阂,限制了聋哑人的交际圈,给他们生活与发展空间带来很大的限制。现在市场上存在的聋哑人辅助设备有两种,一种是从上世纪50年代就开始的电子喉,它是通过装在喉节处,感应声带的振动并将之扩大化来帮助发声,但用于发声的材料价格昂贵,一般没有社会工作保障的残疾人根本负担不起。另一种是近几年出现的基于计算机视觉的手语翻译设备,该类设备价格不高,但是对于肢体动作识别技术尚处于起步阶段,同时图像处理对采集环境的要求很严格,在采集环境复杂的状况下识别率不高。
支持向量机(Support Vector Machines)是一种监督学习算法。支持向量(Support Vector)就是离分隔超平面最近的那些点,机(Machine)就是表示一种算法,而不是表示机器。SVM最初是为解决二分类问题设计的,其简单,高效率的计算速度为许多二分类决策模型提供了解决方案。为解决电压值组转换为手语词语的有监督多分类问题,采用DAG(有向无环图)技术和支持向量机结合有着计算量小,准确率高的优点。因此用DAG和SVM结合来构建一个非线性数据分类模型是一种提高多环境识别率的好方法。
发明内容
本发明的目的是解决现有技术的不足,设计一种基于支持向量机的手语翻译方法,利用传感技术采集手势电压信号作为支持向量机的输入,利用支持向量机二分类的简单、高效以及有向无环图技术的分类多元性将电压信号转换为正常所需的对应语义输出,为制造出基于手势电压的以及基于SVM(Support Vector Machine)支持向量机的手语翻译系统提供了可行性,方便残障人士与正常人的交流,拉近相互间的距离,让聋哑人更好的融入正常社会。
本发明是这样实现的:一种基于支持向量机的手语翻译方法,其特征在于所述的手语翻译方法包括如下步骤:
步骤1:由STM32开发板通过设于可穿戴数据手套上的柔性传感器以及加速度传感器采集手势电压信号,并将手势电压信号滤波、放大后经其集成的蓝牙模块传输至储存器存储;
所述步骤1中的可穿戴数据手套上设置的柔性传感器为固定在10根手指部位处的应变片,所述的加速度传感器为两块分别固定在左、右手的手背部位处的六轴传感器,利用应变片跟随手指的弯曲程度及两块六轴传感器的相互位置变化来表征手势电压信号,所述采集手势电压信号是采集10个手指弯曲信号和12个手势方向信号,共22个信号。
步骤2:利用信号筛选程序将每一组信号对应的手语词语和常用手语句子编入手语库,制成手语语句库,将多次收集的手势电压信号和对应手语词语以9:1分为训练集和测试集;
所述步骤2中手语语句库包括手语词语库和手语句子库,手语语句库的制成是将收到的当前22个手势电压信号先记录于Excel中,进行归一化整理后再保存至Access数据库。
步骤3:编写建立支持向量机分类模块的程序,程序主要包括支持向量机分类模块、数据传输模块和储存模块三大模块,通过步骤2所述训练集对支持向量机分类模块进行训练,并将训练好的支持向量机分类模块导入测试集测试,测试结果符合预期后将支持向量机分类模块储存于存储模块,所述的支持向量机分类模块基于支持向量机二分类算法,采用有向无环方案构成多分类模型;
所述步骤3中的支持向量机分类模块输入向量有22个元素,对应22个电压信号,有153个子分类模型,采用有向无环的分类方案,经过17次二分类,得出编号为0到17,18个分类结果,依次对应18个常用词组,常用词组随机组合成53个常用短语。
步骤4:将每次采集到的手势电压信号通过支持向量机分类模块转换为手语词语,包括如下步骤:
步骤4.1:接收可穿戴的数据手套的手势电压信号,利用信号筛选程序筛选齐全的信号;
步骤4.2:通过训练好的支持向量机分类模块将手势电压信号转换成词语。
步骤5:将步骤4在一段时间内由手势电压信号转换获得的手语词语再转换为手语词语组,将手语词语组与手语语句库进行匹配并联想填充成句输出结果,包括如下步骤:
步骤5.1:将手语语句库中的句子或者收集到的词汇组进行分词并进行统计,将句子里频数大且具有象征意义的词汇规定为元素1,其余词汇为元素0;
步骤5.2:将手语语句库中的所有常用手语句子按照步骤5.1规定为词频向量格式,生成对应的词频向量;
步骤5.3:将在一段时间内通过步骤4采集的手势电压信号转换后获得的词语再转换为手语词语组,获得的手语词语组按照步骤5.1规定为词频向量格式,转换成对应词频向量;
步骤5.4:计算步骤5.3转换后的词频向量与步骤5.2中手语语句库中的词频向量的余弦相似度,选择余弦相似度最大的手语语句库中的手语词语作为输出词语;
步骤5.5:将步骤5.4获得的输出词语根据手语语句库中的所有常用手语句子的索引匹配对应书面语语句,并将匹配到的书面语语句作为最后的输出结果。
本发明的有益效果是:据统计,全国共有2000多万听障生理性及语言障碍人群,他们和正常人的交流存在障碍,聋哑人交流不畅是他们不能正常工作的重要原因。本发明方法通过STM32开发板外接声音或视频播放设备,可将手势转换为正常的语句音频或视频的形式输出,翻译准确率高,响应迅速,可为残障人士与正常人的交流提供了极大的便利,满足聋哑障碍人士与正常人群交流的迫切需求。本发明方法采用的硬件设备成本较低,能快速有效解决聋哑人遇到的交流障碍问题,为他们的就业打开了更大的空间,帮助聋哑障碍人士更好地融入社会,提高他们的生活水平。
附图说明
图1是本发明方法的工作步骤组成示意框图。
图2是本发明方法中采集手势电压信号用的单个可穿戴的数据手套的结构示意简图。
图3是本发明方法的信号筛选程序工作原理示意图。
图4是本发明方法的能划分训练两本的超平面示意图。
图5是本发明方法的支持向量与间隔示意图。
图6是本发明方法的有向无环算法框架示意图。
图7是本发明方法的经支持向量机分类模块转换后生成的词语进行匹配联想填充成句输出的工作处理流程示意图。
具体实施方式
根据附图1,本发明为一种基于支持向量机的手语翻译方法,包括以下步骤:
步骤1: 由STM32开发板通过设于可穿戴数据手套上的柔性传感器以及加速度传感器采集手势电压信号,并将手势电压信号滤波、放大后经其集成的蓝牙模块传输至储存器存储。
步骤2:利用信号筛选程序将每一组信号对应的手语词语和常用手语句子编入手语库,制成手语语句库,将多次收集的手势电压信号和对应手语词语以9:1分为训练集和测试集;
步骤2.1:基于C#语言编写手语库记录软件,该软件能将每次收到的手势电压信号和该信号所表示的语义记录在Excel中;
步骤2.2:利用信号筛选程序检查每次收到的信号是否齐全,齐全则收录在Excel表格中,反之则剔除;
步骤2.3:将多次收集的手势电压信号和对应手语词语从编号0开始编号,并以9:1的比例分成训练集和数据集。
步骤2.4:将上述Excel表格中记录的的手势电压信号对应的手语词语和常用手语句子进行归一化整理后导入Access数据库,制成手语语句库。
步骤3:编写建立支持向量机分类模块的程序,程序主要包括支持向量机分类模块、数据传输模块和储存模块三大模块,通过步骤2所述训练集对支持向量机分类模块进行训练,并将训练好的支持向量机分类模块导入测试集测试,测试结果符合预期后将支持向量机分类模块储存于存储模块,所述的支持向量机分类模块基于支持向量机二分类算法,采用有向无环方案构成多分类模型;
步骤3.1:生成支持向量机学习算法子模型;
步骤3.2:建立DAG(有向无环图)算法框架。
步骤4:将每次采集到的手势电压信号通过支持向量机分类模块转换为手语词语;
步骤4.1:接收可穿戴数据手套的手势电压信号,利用信号筛选程序筛选齐全的信号;
步骤4.2:使用训练好的支持向量机分类模块将手势电压信号转换成手语词语。
步骤5:将步骤4在一段时间内由手势电压信号转换获得的手语词语再转换为手语词语组,将手语词语组与手语语句库进行匹配并联想填充成句输出结果;
步骤5.1:将手语语句库中的句子或者收集到的词语组进行分词并进行统计,将句子里频数大且具有象征意义的词语规定为元素1,其余词语为元素0;
步骤5.2:将手语语句库中的所有常用手语句子按照步骤5.1规定为词频向量格式,生成对应的词频向量;
步骤5.3:将在一段时间内通过步骤4采集的手势电压信号转换后获得的词语再转换为手语词语组,获得的手语词语组按照步骤5.1规定为词频向量格式,转换成对应词频向量;
步骤5.4:计算步骤5.3转换后的词频向量与步骤5.2中手语语句库中的词频向量的余弦相似度,选择余弦相似度最大的手语语句库中的手语词语作为输出词语;
步骤5.5:将步骤5.4获得的输出词语根据手语语句库中的所有常用手语句子的索引匹配对应书面语语句,并将匹配到的书面语语句作为最后的输出结果。
下面结合附图和具体实施例对本发明作进一步详细说明。
本发明一种基于支持向量机的手语翻译方法的具体工作步骤如下:
步骤1:将STM32开发板和可穿戴数据手套上的柔性传感器、加速度传感器及恒定电阻串联,柔性传感器和加速度传感器会根据手指弯曲及手部位置的变化来改变输出电压,将采集到的手势电压信号滤波、放大后由STM32单板机的蓝牙模块传输至储存器存储。
根据附图2,所述步骤1中的可穿戴数据手套上设置的柔性传感器为固定在10根手指部位处的应变片,所述的加速度传感器为两块分别固定在左、右手的手背部位处的六轴传感器,每副可穿戴数据手套有左、右手两只手套,由十个应变片组成的柔性传感器输出十个电压值,两块六轴传感器每块输出x,y,z轴前后两个方向共十二个电压值,每次输出包括开始信号Numi和结束信号Numo总共24个信号依次为:Numi,X 1 ,X 2 ,……X 22 ,Numo。其中X 1 ,X 2 ,……X 22 代表手势的电压值。
步骤2:将每一组采集到的手势电压信号对应的手语词语和常用手语句子编入手语库,制成手语语句库。将手语语句库以9:1分为训练集和测试集。
步骤2.1:手语库记录软件是基于C#语言编写的,该软件能将每次收到的手势电压信号和该信号所表示的语义记录在Excel表格中。
步骤2.2:附图3为信号筛选程序工作原理图,利用信号筛选程序检查每次收到的信号是否齐全,齐全则收录在Excel表格中,反之则剔除。信号筛选程序接受手势电压信号,遇到开始信号Numi时开始计数,当遇到停止信号Numo时计数停止。当计数K值为22时候说明传输数据完成,记录于Excel表格中,否者剔除,重新开始计数。
步骤2.3:将多次收集的手势电压信号和对应手语词语从编号0开始编号,并以9:1的比例分成训练集和数据集。
步骤2.4:将Excel表格中的手势电压信号、对应手语词语和常用手语句子进行归一化整理后导入Access数据库制成数据库。
步骤3:编写建立支持向量机分类模块的程序,程序主要包括支持向量机分类模块、数据传输模块和储存模块三大模块,所述的支持向量机分类模块基于支持向量机二分类算法,采用有向无环方案构成多分类模型。通过步骤2所述训练集将编号0至17的数据集分别的导入对应支持向量机子分类器对支持向量机分类模块进行训练,再将训练好的支持向量机分类模块导入测试集测试,测试结果符合预期后将支持向量机分类模块权重数据储存于存储模块。
每做一个手势,装有柔性传感器的可穿戴数据手套便会传出22个传感器数值,建立一个模型。将不同组的电压值与手势对应建立索引库是一种方法。但是中文语法手势很多,建立相关语法库需要花费很多时间。而且不同的人做手势而形成的电压值组并不完全相同,随着使用者的增加,每一手势将对应的电压组将越来越大,这会导致索引时长的增加。再者,由于器件的灵敏度的限制,存在不同的手势电压值组相差不是很大的情况,这让精准的识别带来了许多局限性。为了能达到又快又准确的识别,本发明采用机器学习中的支持向量机来搭建电压组的分类模型。
本发明的支持向量机分类模块具体由支持向量机分类部分,模型预测部分组成。支持向量机分类部分又分支持向量机学习算法子模型和多分类程序两个类。本发明的支持向量机分类部分由Python语言编写,在Python语言构建支持向量机的好处是方便修改支持向量子模型的数目并快速计算大量的数据。编程环境为PyCharm,所用到的程序库有Numpy、Pandas和SciPy。其中Numpy用于支持向量机学习算法子模型编写,Pandas用于数据导入,SciPy用于输出存储。
支持向量机分类部分分为支持向量机学习算法子模型和多分类程序两个部分。支持向量机学习算法子模型采用二分类思路,主要目的是生成一个二分类决策程序。多分类程序采用DAG(有向无环图)方法,结合二分类决策程序将手势电压分成多类,本发明将手势电压分成18个常用词组输出,每一个输出序号为0到17,依次对应有18个常用词组,常用词组随机组合可以组成53个常用短语。常用词组和编号的对应如下表。
表1部分常用词组编号对应表
步骤3.1:生成支持向量机学习算法子模型;
以区分编号1,词语为“好”和编号17,词语为“喜欢”为例,生成支持向量机学习算法子模型思路如下:
给定训练样本集
,其中
,支持向量机学习算法的基本思想就是基于训练集D在样本空间中找到一个划分超平面,将不同的类别样本分开。
能将训练样本是分开的划分超平面特别多,但应该去找位于两类训练样本“正中间”的划分超平面,如附图4中的实线所示,因为该划分超平面对训练样本局部扰动的“容忍”性最好,例如,由于训练集的局限性或者噪声的因素,训练集外的样本可能比附图4中的训练样本更接近两个类的分隔界,这将使许多划分超平面出现错误。而根据附图4可以看出,实线所在位置的线条划分对超平面的影响最小,简言之,这个划分超平面所产生的结果是鲁棒性的。
如附图4所示,一个线性函数能够将样本分开,通常称这些数据样本是线性可分的,即附图4上多条虚线。但是很显然不只有一条线性函数直线可以将样本分开,而是存在有无数条,本发明所说的线性可分支持向量机就对应着能将数据正确划分并且间隔最大的直线。线性方程可以由下式方程来描述:
其中
W为超平面的法向量,决定了超平面的方向,
b为位移量,决定了超平面与原点的距离。假设超平面能将训练样本正确的分类。即对于训练样本
,满足以下公式:
表示样本电压为词语“喜欢”,
表示样本电压为词语“好”,上式表示若超平面函数
大于1则分到词语“喜欢”的那一类,小于-1则分到词语“好”的那一类。
要得到间隔最大的超平面就需要设定间隔函数,如附图5所示,距离超平面最近的样本点满足
或
,这两个点称之为“支持向量”。虚线称之为边界,间隔就是两条虚线的距离。
间隔等于两个异类支持向量的差在W方向上的投影,W方向是指附图5所示实线的法线方向。将代表圆形样本称为x +,代表矩形样本称为x -,可以得到:
进而可以推出:
故有:
要使间隔最大化,也就是:
采用拉格朗日乘子法对其进行对偶问题求解:
对w,b求偏导可得:
使得偏导为0,可得:
带入拉格朗日函数中可得:
最后带入下式:
求解出w,b值,最终得到支持向量机分类编号1和编号17的模型:
同理求出f 0-17(x),f 2-17(x),f 3-17(x)…f 16-17(x),f 0-16(x),f 1-16(x)…f 15-16(x)…f 0-1(x)等共153个子分类器模型。本发明的训练样本由Pandas库中read_excel函数将保存为Excel文件的手语库导入。手语库为Excel文件,第1列至第22列为电压值,第23列为对应的手势词组。本发明采用支持向量机模型预测可达到86%的准确率。
进行完模型训练后需要对模型进行存储,将训练完成后的153个子分类模型系数矩阵存储成Mat格式。Python里的Scipy库中的savemat函数可以将训练完成的参数矩阵保存为Mat格式的数据文件,loadmat函数可以将Mat文件里的数据导入程序,用来预测调用。
步骤3.2:建立DAG(有向无环图)技术算法框架,如附图6所示。
得到子分类器模型后,就要将所有子分类器构成一个两向有向无环图,包括153个节点和18个叶。其中每一个节点为一个分类器,并于下一层的两个节点(或叶)相连。当对一个未知样本进行分类时,首先从顶部的及分类结果开始,用下一层的左节点或右节点继续分类,直到达到底层某个叶为止,该叶所表示类别即为未知样本的类别。
步骤4:将每次采集到的手势电压信号通过支持向量机分类模块转换为手语词语。
步骤4.1:接收可穿戴数据手套的手势电压信号,利用信号筛选程序筛选齐全的信号。
步骤4.2:使用训练好的支持向量机分类模块将手势电压信号转换成手语词语。
具体操作为:采集当前2秒手势电压信号,将采集的手势电压信号经支持向量机分类模块转换为手语词语。
步骤5:将步骤4在一段时间内由手势电压信号转换获得的手语词语再转换为手语词语组,将手语词语组进行匹配填充成句子。
从经支持向量机分类模块转换后生成的手语词语到进行匹配联想填充成句输出的具体工作处理流程如附图7所示。
步骤5.1:将手语语句库中的句子或者收集到的词语组进行分词并进行统计,将句子里频数大且具有象征意义的词语规定为元素1,其余词语为元素0,如:根据手语语句库中的句子[“我收到有”,“她漂亮很”,“你衣穷”]进行分词统计得到语句库中出现的词语及其出现的频次[我:1,你:1,她:1,衣服:1,穷:1,漂亮:1,收到:1,有:1,很:1],规定其词频向量格式为[我,你,她,衣服,穷,漂亮,收到];
步骤5.2:将手语语句库中的所有常用手语句子按照步骤5.1规定为词频向量格式,生成对应的词频向量,如:语句“我收到有”对应的词频向量为[1,0,0,0,0,0,1];
步骤5.3:将在一段时间内通过步骤4采集的手势电压信号转换获得的手语词语再转换为手语词语组,获得的手语词语组按照步骤5.1规定为词频向量格式,转换成对应词频向量,如:词语组“她漂亮很”对应的词频向量为[0,0,1,0,0,1,0];
步骤5.4:计算步骤5.3转换后的词频向量与步骤5.2中手语语句库中的词频向量的余弦相似度,选择余弦相似度最大的手语语句库中的手语词语作为输出词语。
步骤5.5:将步骤5.4获得的输出词语根据手语语句库中的所有常用手语句子的索引匹配对应书面语语句,并将匹配到的书面语语句作为最后的输出结果。
输出结果可通过树莓派3B单板机外接声音和/或视频播放设硬件备或装置进行,可采用语句音频或视频的形式输出翻译结果。