APP下载

基于嵌入式系统的改进SVM手势识别算法研究

2016-05-14刘妙阁

数字技术与应用 2016年5期
关键词:手势识别嵌入式系统支持向量机

刘妙阁

摘要:随着嵌入式设备智能化水平不断提高,人和设备交互方式也多样化,手势就是其中一种新的更自然的人和设备交互方式。实现有效的手势识别系统具有实际意义。分类算法的选择对手势识别性能有重要影响,本文选择改进SVM算法作为识别算法。SVM算法相比神经网络算法具有更好的泛化性能。但原始SVM算法直接作为手势的分类算法还是无法满足应用需求,所以本文提出了改进SVM算法。经过实验验证了改进算法比原算法有更快的训练、识别速度。

关键词:手势识别 支持向量机 嵌入式系统

中图分类号:TN912 文献标识码:A 文章编号:1007-9416(2016)05-0000-00

手势识别的分类器选择对识别性能有较大影响,选择好的分类器才能达到较好的识别准确率。SVM算法(SVM,Support Vector Machine)是基于统计学习理论的分类算法[1],SVM相对较早的神经网络等分类算法有更好的泛化性能,本论文选择它作为分类算法。SVM算法一般运行在PC机或服务器,将整个SVM算法在嵌入式平台实现有很多问题要解决。本文针对手势识别应用,改进SVM算法,然后将算法以C++库的形式提供给手势识别应用程序。

1 系统设计

本文实验使用的嵌入式平台是飞凌的OK6410开发板,处理器采用的是SAMSUNG公司的基于ARM11的S3C6410芯片,采用USB摄像头ZC301采集视频图像。SVM算法是智能算法,与模板匹配等分类算法相比有自身独有的学习能力。为了缩短识别时间,提高实时性,本文手势识别的过程在使用简单的肤色模型分割出肤色区域后直接提取特征训练SVM分类器,省去了预处理等步骤。

2 改进SVM手势识别算法

2.1样本子集筛选

SVM算法适用于小规模训练样本集,较大的样本集会降低运算速度,占用较大内存空间。SVM模型训练时所需存储空间与训练样本数的平方成正比,时间复杂度与训练样本数的立方成正比[2]。

为获得分类模型,不总是需要提供完整的训练集,因为训练集中有噪声样本和不影响分类模型的样本,尤其当使用SVM作为分类器时。SVM算法寻求最大间隔超平面将两类样本分开,训练得到的模型只需要少部分样本(支持向量)信息,这些样本分布在特征空间中同类样本集合的边缘,去掉位于其它位置的样本得到的模型是一样的。基于这一点,本文首先对正负样本分别进行聚类,得到若干集合,然后去掉集合内部的样本,保留集合边缘附近的样本构成训练样本子集。首先对正负样本分别进行聚类,得到若干集合。 K均值聚类等划分类型的聚类算法都存在一个问题,就是k值的选取需要花费时间。为了减少训练时间,本文采用无需选取参数的层次聚类,聚类完成后去除每个集合内部样本。

2.2 SVM核函数选择

SVM核函数的选择对于算法的性能有较大影响[3],目前核函数的选择还没有很强的规律可循,可以通过对比不同核函数的SVM分类各方面性能(如错误率和支持向量个数)来选择最适用的核函数。常用的核函数有多项式核函数、径向基核函数、sigmoid核函数。

近些年也有较多新的核函数被提出像切比雪夫核函数,小波核函数等新的核函数。切比雪夫核是用于标量值的标准核。一种构成新核函数的方法是混合现有的核函数,但是需要注意不能增加过多参数,否则会降低训练速度。径向基核函数的参数只有一个,而且经对比它是常用核函数中应用于手势识别性能最好的核函数。本文将切比雪夫核函数、小波核函数和径向基核函数结合,产生新的核函数,将两个核函数相乘得到的核函数一般有两个核函数的特性和优点,对比新的混合核函数和单一核函数的性能,选取性能最佳的核函数。

对比实验结果表明径向基核函数和切比雪夫核函数混合成的核函数有最低错误率和最少支持向量数,说明它是手势识别应用的最适合的核函数,所以本文选其作为核函数。

3 实验结果及分析

本系统选择Linux作为嵌入式操作系统,界面设计基于当前流行的android实现。由于手势识别算法的运算量较大,所以适合用执行效率高的C/C++语言而不是JAVA实现。SVM算法的训练和预测均用到了浮点数,一般嵌入式系统并不支持浮点运算。如果在嵌入式系统中采用软浮点运算,运算速度会大大降低,不能满足实时性要求。为加快手势识别算法在嵌入式系统的运行速度,本文将浮点运算转化为定点运算。然后将改进SVM的C++算法源程序编译成.so库文件,将生成的.so库文件拷贝到工程根目录 /libs/armeabi/中,android应用程序就可以调用库文件中函数。程序分成手势图像样本采集,分类模型训练和手势识别三部分。实验结果表明系统能较好地识别出手势代表的数字,光照条件的变化和手的旋转对手势识别的影响较小。

本文对比了基于SVM算法和本文提出的改进SVM算法两种分类器的手势识别程序在嵌入式系统中的性能如表1。

从表中可以看出改进SVM算法在识别准确率,训练时间和测试时间上都比原始SVM算法要好。实验结果验证了本文提出的SVM手势识别算法的可行性。

4 结语

本文对SVM算法的改进包括:

(1)筛选训练样本子集,减少训练时间。

(2)采用切比雪夫-径向基混合核函数作为手势识别SVM算法的核函数。

(3)采用定点运算代替浮点运算,以较小的代价换取了更快的运算速度。

最后对比了基于不同分类算法的嵌入式手势识别系统的性能,验证了本文提出的改进SVM手势识别算法的可行性。

参考文献

[1] 李航.统计学习方法[M].北京:清华大学出版社,2012:95.

[2] Ha M, Wang C, Chen J.The support vector machine based on intuitionistic fuzzy number and kernel function[J].Soft Computing,2013,17(4):635-641.

猜你喜欢

手势识别嵌入式系统支持向量机
基于手势识别的工业机器人操作控制方法
基于红外的非接触式手势识别系统设计
基于嵌入式的智能手表设计
动态场景中的视觉目标识别方法分析
论提高装备故障预测准确度的方法途径
基于物联网项目驱动的嵌入式系统教学改革的研究与实践
基于熵技术的公共事业费最优组合预测
嵌入式系统课程“中断、异常与事件”教学实践及启示
面向实践创新人才培养的嵌入式系统教学研究
基于支持向量机的金融数据分析研究