基于Kinect的手势图像识别研究*
2018-07-03金宏硕刘振宇
金宏硕,刘振宇
(沈阳工业大学信息科学与工程学院,沈阳110870)
1 引言
手语识别作为一种人机交互方式,越来越受到人们的重视。相比于鼠标和键盘等人机交互方式,手语识别更加简单化、自然化和直观化。手语不但可以维持聋哑人的日常生活,而且在人工智能等方面具有很大的研究价值,所以手语手势识别具有广泛的应用前景。
早期的手语识别主要是应用数据手套等传感器设备采集手部姿态信息进行手势识别,如Zhang等人[1]通过手上佩戴的加速度传感器采样XYZ三个方向的加速度值作为手写的阿拉伯数字轨迹特征,然后使用隐马尔可夫模型对加速度特征序列进行训练和识别,最后在420个样本的数据集上取得了94.3%的识别率。Fang等[2]利用三个位置跟踪器获取双手的方向、位置和运动轨迹信息,同时利用2个数据手套获取双手手型特征,并结合运动过渡模型(transition movement models)对由中国手语构成的句子进行识别,平均识别率为91.9%。基于数据手套的识别方法穿戴复杂,手套和位置跟踪器等设备价格昂贵,严重影响了人机交互的自然性。
近年来随着技术的不断发展,基于视觉的手势识别逐渐成为主流。邹节华等人[3]通过对单个摄像头采集得到的数据采用运动检测、肤色提取手势区域,然后采用Mean Shift跟踪算法获取手势轨迹,并采用隐马尔可夫模型对手势进行识别。翁汉良等[4]利用颜色特征检测肤色区域分割人手,根据人手的轮廓及凸缺陷来检测指尖,利用指尖数目和方位来表示手势,进而完成手势识别。基于肤色和颜色等检测方法容易受到复杂背景和光照等条件的影响且识别精度不高。
2013年5月微软推出了新一代用于Xbox One的体感外设3D摄影机Kinect 2.0。它可以获取拍摄图像的深度信息,具有即时动态捕捉、影响辨别、语音识别和手势识别等功能。Zhou等[5]提出基于Kinect的手势识别方法,利用FEMD(finger-earth mover's distance)算法实现稳定的静态手势识别,该算法需要大量的数据进行训练。王松林等人[6]通过Kinect釆集和分割手势图像,通过K曲率算法识别静态手势,并将静态手势结合DTW算法识别预先定义的六个简单的动态手势(前进后退等)控制机器人的行动。Gu Y等人[7]利用Kinect摄像机从人体骨架中提取特征,并使用隐马尔可夫模型对手势动作进行训练和测试,但该方法平均识别率不高。Hasnain Heickal等人[8]利用Kinect捕捉人体关键部位关节点的运动特征作为特征矢量,通过神经网络和朴素贝叶斯两种方法进行分类,正确率分别达到98.11%和88.84%,但是实时效果不好。
本文采用Kinect深度摄像机采集手语深度图像,有效避免了光照和复杂背景对手势提取的影响,并采用了支持向量机、神经网络和随机森林三种分类器方法,对采集到的不同角度的手语手势图像进行识别。手势识别的基本流程如图1所示。
图1 手势识别流程
2 手势ROI区域提取
采用Kinect设备对手势图像进行提取,既可以拍摄深度图像又可以拍摄彩色图像[9]。如图2所示即为深度图像的一个示例。通过对深度图像进行处理,可以获得手部图像。
图2 深度图像
利用深度图像进行手势提取的流程如图3所示。
图3 分割手部图像流程
首先应用Kinect设备直接对手势进行拍摄采集,得到手部深度图像。对于深度图像来说,手掌区域是距离Kinect最近的区域,所以手部深度值和身体部分深度值之间会有很大差异。再通过对深度图像进行计算,得到深度图像的深度直方图[10]。深度直方图可以很好地反应出深度值在距离区间上的分布,从深度值出现的频率和聚集上可以很好地看出分组情况,所以可通过确定阈值来区分手势区域和背景区域。图4为深度直方图示例,其横坐标为距离区间,纵坐标为该距离区间上的像素点的数量。
图4 深度直方图
通过深度直方图可进行阈值的选取。通过对深度直方图的观察发现,像素点大致集中在三个距离区间上,第一个区间即是手掌区域,第二部分即是手臂和测试者身体部分的像素集中点,最后一部分则是测试者身后的背景区间像素点。采用第一部分与第二部分之间像素点最小值作为手部阈值分割点。在深度图像中,将距离小于阈值的所有像素点判定为手掌区域,并将数值改为“1”,大于阈值部分的像素点被舍弃,将数值改为“0”,由此完成了图像的二值化,得到二值手势图像,如图5所示。
图5 分割出的二值化手部图像
3 手势图像预处理
对采集到的手部图像进行处理可以去除噪声和冗余信息,从而减少计算量,加快运行速度。图像边缘是图像特征选择中的一个非常重要的基础特征,它可以保留原始图像的大部分信息,是图像特征提取的关键[11]。
首先对二值手势图像进行腐蚀运算和形态学重建,即腐蚀形态学重建,这样可以消除边界点、平滑手势图像边界,并且不会改变手势区域的面积。
腐蚀是一种消除边界点、使边界向内部收缩的过程,它可以用来消除小且无意义的物体。腐蚀形态学重建就相当于开运算,先对图像进行腐蚀导致图像中高亮部分像素被侵蚀,使效果图拥有比原图更小的高亮区域。而后进行形态学重建操作可以正确恢复腐蚀后的图像物体形状,使图像内部的空洞没有全部被填充,确保手语区域的完整性与精确性。上述腐蚀形态学重建处理过程如图6所示。
图6 手势图像腐蚀形态学重建处理
然后对处理过的手势图像进行边缘提取,分别使用Sobel算子、Prewitt算子、LoG算子及Canny算子,以四种不同边缘检测算法进行对比实验。对比效果如图7所示。
图7 四种不同算法的边缘检测效果对比图
通过比较,最终选用Canny算子边缘检测方法对手势图片进行边缘提取。Canny算子根据对信噪比与定位乘积进行测度,可以得到最优化逼近算子。它能够检测到图像边缘的精确位置,同时也对噪声具有很强的抵抗能力。用该算法提取手语图像的最大外轮廓,既能保证提取轮廓的完整性又能确保边缘轮廓的连续性,对后续提取Hu矩轮廓特征点的精确性具有非常重要的作用。
4 Hu矩特征提取
特征提取是手语识别的关键步骤,选取好的手势特征对手语识别的成功率有重要作用。由于采集到的每张手语图像存在平移、大小和旋转等变化,在特征提取时手语边缘图像特征值会改变,所以采用提取手部Hu矩特征的方法[12]。Hu矩特征具有平移、缩放和旋转不变性,对识别结果影响较小。Hu矩共有七个矩,是由图像的二阶矩和三阶矩组成的,包含了图像面积、重心与对称性等特征。
对于手势图像f(x,y)来说,它的(p+q)阶二维原点矩Mpq的定义为:
相应的中心矩为:
重心坐标为:根据中心矩的定义,可以推出中心矩μ10和μ01均为0。
矩的物理意义为:零阶矩表示图像的面积;一阶矩可以确定图像的灰度重心;二阶矩也称惯性矩,可以确定图像主轴、图像椭圆长短半轴等特性;三阶及三阶以上矩,主要描述了图像的细节,包括图像投影扭曲程度和图像投影峰度等。矩还具有平移变换、比例变换、旋转变换、反射变换和增强变换等特性。
由于直接用原点矩或中心矩作为图像特征不能保证特征同时具有平移、缩放和旋转不变性,所以由二阶矩和三阶矩中心矩的线性组合构成七个不变矩,可以确保图像同时具有平移、缩放和旋转不变性。表达式如下:
集了七个Hu矩特征量作为手语图像的要功能是解决在样本数量有限的情况下的模式识别问题。其基本思想是在样本空间或特征空间构造出最优超平面,使超平面与小同类样本集之间的距离最大,从而达到最大的泛化能力。
图8为二维线性可分的情况,其中f(x)为分类线,f(x1)和f(x2)分别为两类样本中过离分类线最近的点且平行于f(x)的直线,f(x1)和f(x2)之间的距离称为两类的分类间隔。特征向量,φ形成特征集合表1列出了手语a、手语b和手语c的边缘图像所对应的七个Hu矩特征值。
表1 不同手势Hu矩特征值
由于在手语采集过程中会发生旋转、平移和缩放,影响手势的识别效果,采用Hu矩特征则可以很好地解决这些问题,其描述的图像特征具有很强的代表性,涵概了图像的很多整体特征,而且数据少,识别速度快。
5 手语识别
在手语识别阶段,分别采用了支持向量机[13]、神经网络[14]和随机森林[15]三种分类方法进行研究,并对三种手语识别方法进行了实验与分析。
5.1 基于支持向量机的手语识别
首先对支持向量机进行分类识别研究,介绍它的基本原理、核函数及相关参数的选取。实验中,将前面提取的手势边缘Hu矩特征数据以N×7的矩阵作为支持向量机训练集的输入,N为训练样本数,再将M×7特征数据作为测试集的输入,M为测试样本数,最终得到不同手势的识别率。
支持向量机是一种新型的机器学习方法,其主
图8 二分类示意图
SVM的基本思想是寻找一个可以将两类样本分开的最优分类线,使分类间隔最大。设判别函数为
其中f(x)为训练类别标签;W是权重函数;x为训练样本特征。
当f(x)=0的时候,即为决策边界,f(x1)和f(x2)上的样本称为支持向量。对判别函数进行归一化后两类样本都满足分类间隔为满足的样本就是f(x1)和f(x2)上的支持向量。
支持向量机的优势主要体现在解决线性不可分问题,它通过引入核函数,巧妙地解决了在高维空间中的内积运算,从而很好地解决了非线性分类问题。常见的核函数包括
本实验选取了径向基核函数,也称高斯核函数,它具有较宽的收敛性,而本研究中的手势识别具有低维、小样本特性,非常符合高斯核函数的要求。
核函数的参数和惩罚因子C是影响支持向量机性能的关键因素。C越大,惩罚力度越大,对数据的逼近误差越小,容易发生过拟合现象;C越小则越容易发生欠拟合。σ2被用来控制回归逼近误差度,其值越大则支持向量数目越少,同时精度变差;相反,则支持向量数目变多,精度变高。
采用网格搜索方法来寻找最优参数C和1/σ2,即分别选取不同的参数组合,得出不同的错误率,选取其中错误率最小的作为最优参数组合,所以采用了台湾林智仁教授开发的libsvm支持向量机库中的数据进行参数选优,最终确定本文参数为2和0.5。
5.2 基于神经网络的手语识别
神经网络是一种按误差逆传播算法训练的多层前馈性网络,由输入层、隐藏层和输出层构成,如图9所示。它包括数据的正向传播和误差的反向传播两个过程。正向传播时,输入样本数据从输入层传入,经过隐含层计算后,再由输出层输出实际输出值,并与期望值做比较。若输出的实际值与期望值不符,则进入误差的反向传播,此时误差信号从输出层逐层反传回输入层,在此过程中将误差分配给各层各个节点,通过修改层与层之间的权值与阈值来减小误差信号,并最终收敛,得到期望的输出。
图9 神经网络示意图
神经网络的输入层输入为七个Hu矩特征量,所以取输入层节点数为7。由于需要识别出五类手势,所以输出层节点数取5。隐含层节点数可以通过如下经验公式得出:
式(14)中,h为隐含层节点数目,m为输入层节点数目,n为输出层节点数目,a为1~10之间的调节常数。因为不同隐含层节点数对神经网络的收敛速度快慢有明显影响,当有较少的隐含层节点数时,可提高神经网络的收敛速度,而较多的节点数目会导致训练时间过长。所以根据既能快速训练网络又能准确得到结果的原则,经过多次试验,取定隐含层节点数目为10。
由于需要区分的手势有五种,所以设置每种手势类别的期望值为:
式(15)中,T1~T5分别为每种手势的期望输出值。用这五个向量来表示实际输出值与该手势的期望值的相似度。激活函数选择S型函数:,输入层与隐含层之间的权值及阈值为wki,bi,隐含层与输出层之间的权值及阈值为wij,bj。
根据梯度下降法得到输入层和隐含层之间的权值和阀值调整有:
同样,对于隐含层和输出层之间的权值和阈值调整如下:
式中E(w,b)为误差函数,
首先将训练样本的Hu矩特征作为输入层的输入,通过与各层之间的权值及阈值计算,得到实际的输出,并与期望输出值进行比较得到误差函数,然后用梯度下降法将误差函数反向传播,修改阈值和权值,使系统达到收敛,网络达到稳定。为了使最终的输出值可以在网络定型时确定误差,可使最后输出的五个数值全部介于0到1之间且它们的总和为1,即为概率值。对比这5个概率值,概率最大值所在的行即为手势类别。
在构造一个神经网络时,为了使网络能够收敛,需要考虑一些参数的设定,包括:初始化权值与阈值,以及学习率。本文初始化权矩阵时,选取在-1~1之间的不同的小伪随机数。学习率的过大或过小都会导致网络的不稳定,经过多次实验,最终选取学习率为0.02。
5.3 基于随机森林的手语识别
随机森林算法是一个具有很好分类效果和具有很高实时性的机器学习方法,其基本思想是通过多棵决策树进行投票选择最终的分类结果。随机森林不但不容易陷入过拟合,而且具有很好的抗噪能力,这主要是得益于随机性的引入。
随机森林的识别过程为:首先,采用bootstrap抽样方法从原始训练集中有放回地随机抽取s个新训练集,每个新的训练集的大小约为原始训练集的2/3;然后,从七个特征中随机抽取m个(m≤M),在这m个属性中根据信息增益率选出最优的属性作为根节点,对每个新的训练集建立决策树,组成具有s棵决策树的随机森林;最后,通过统计每棵决策树的预测结果,采用投票的结果来决定最终的分类类别。由于每次的采样都会有部分数据未被选中,称为袋外数据(Out-of-Bag),将这些数据用作内部误差估计,即袋外误差。通过袋外误差可以确定随机森林中构建决策树的数量范围。
通过实验发现,分类情况的袋外误差趋于稳定时,随机森林不会出现过拟合现象,此时的随机森林中树的数目为≥200,如图10所示,所以取随机森林中决策树的棵数为200棵。随机森林中每棵决策树主要是根据信息增益最大的属性来划分样例集合。
图10 袋外误差率
选取的手语Hu矩七个特征作为决策树的属性,表示为:F=(f1,f2,f3,f4,f5,f6,f7),S 为训练数据集合。信息熵Entropy(S)表示为:
式(20)中,c表示识别的手势类别数量,Pi表示第i个类别在整个训练集中出现的概率。信息熵主要用于描述手势类型信息的不纯度。信息增益Gain(S,F)为样本按照某属性划分时造成熵减少的期望,表达式为:
式(21)中,V(F)是F的值域,Sv是S中在属性F上值等于v的样本集合。式中后半部分为:F对训练集S划分的期望信息。
由于采用信息增益来确定属性的重要性,通常偏向于取值较多的特征,信息熵的值具有偏向性,导致信息增益不准确。为了减小影响,采用信息增益率(Gain Ratio)对属性进行划分,其公式为:
式(23)中,Si为第 i类手势训练集,SplitInfo(S,F)为训练集S的分裂信息。
决策树[16]的建立是通过对样本集不断地进行划分,使其末端分支所包含的样本尽可能属于同一个类别,从而进行分类。其中属性划分点的最优选择是关键。由于手势数据集中每个手势的特征值较多,因此采用二分法选取分裂节点,即将特征属性值按从小到大排序,并去掉相同的属性值,取每两个相邻的属性值加和的一半作为划分点,再求取每个划分点的信息增益,最后信息增益最大的选取为最优划分点。以此建立每棵决策树,由多棵树组成随机森林后,采用投票的方式对每棵树的分类结果进行统计,最终选择得票最多的结构为测试样本的分类类别。
6 实验结果及分析
实验采用MATLAB软件进行程序编写及测试,主要识别了五种手语手势,分别为手语字母a、b、c、d和v,如图11所示。应用微软Xbox One 3D体感设备Kinect摄像机采集手势图像,共由50名同学采集完成,包括男生和女生且为正常人。采集数据时,通过实验发现,Kinect摄像头在120度范围内捕捉手势效果最好,因此全部数据都选在此范围内完成。其中每种手势每人采集5张,共1250张手语图像。采集的图片包括不同背景、不同光照和不同手部角度,其中不同的手势角度即摄像头平面与标准手势平面之间存在夹角,规定当手势平面与摄像头平面平行(夹角为0°)时,为标准手势。在标准手势沿竖直中线逆时针分别旋转 15°、30°、45°、60°和 90°时生成手势图像,图11为其中选取夹角为 0°、30°、60°、90°时的手势图。
图11 五种手语及不同角度手势图
图中,第一行为标准手语,其余为发生旋转之后的手势图像,可以明显看出当旋转至90度时手语已无法识别。采集数据后将手势图像进行尺寸归一化,每张手势图片大小都转化为100×100像素。
每种手势图片共采集250张手势图片,随机挑选150张图片作为训练集,另外100张作为测试集。每种手势标签完毕后,将训练数据和测试数据分别放入支持向量机、神经网络和随机森林算法中进行分类识别,识别率如表2所示。
表2 五种手语在不同分类方法下的识别率
图12为不同手部角度识别结果对比折线图。可以看出识别率在随着手势偏转角度的增大而下降,当手势平面与摄像头呈垂直角度时则完全识别不出手语手势。
图12 不同角度的手语在SVM下的识别率
对这五种手势的识别结果取平均值进一步研究的结果如表3所示。可见,在正常情况下,支持向量机的识别率最高,其次是随机森林,最后是神经网络。由于采集的手势样本数量限制,使神经网络在小样本集下识别率略低于支持向量机。对于随机森林来说最重要的参数便是特征的选取,而采用的是Hu矩特征,这对随机森林影响很大,但对于支持向量机来说就非常的适合。但在时间消耗方面,随机森林的用时最少,神经网络则最慢。这主要是因为随机森林算法对数据无需预处理,加之其算法特性使然;而神经网络算法计算量大,导致其运行速度最慢。
表3 平均识别率和平均用时
通过Kinect方法进行采集手势图像可以避免复杂背景和光照的影响,但是在手指发生重叠时识别率依然很低,识别效果较差。通过实验发现,当手势平面与摄像头平面夹角超过60°时识别率明显下降,所以Kinect识别手势的临界值为60°。考虑到对称性,Kinect设备的最佳识别范围为120°。
7 结束语
在科技水平和社会需求不断提高的今天,人机交互领域中手势识别越来越受到人们关注。如何更好解决人机交互中存在的局限性和更好地服务于大众,是目前手势识别研究的重点。应用Kinect设备,利用深度信息提取手语,解决了复杂背景及光照等因素的影响,并找到了最佳的手势采集范围。对于服务机器人行业来说具有很好的人机交互性能。研究也发现,在小样本情况下支持向量识别率最高,随机森林实时性最好,但是同时保证准确性和实时性是很难实现的,所以接下来的研究将在保证准确性的前提下,提高实时性,为研究具有更高识别率和实时性的手势识别算法做进一步研究。
[1]ZHANG S,YUAN C,ZHANG Y.Handwritten character recognition using orientation quantization based on 3D accelerometer[C]//International Conference on Mobile and Ubiquitous Systems:Computing,Networking,and Services,MOBIQUITOUS 2008,July 21-25,2008,Dublin,Ireland.DBLP,2008.
[2]FANG Gaolin,GAO Wen,ZHAO Debin.Large-vocabulary continuous sign language recognition based on ransition-movement models[J].IEEE Transactions on Systems,Man,and Cybernetics,Part A:Systems and Humans,2007,37(1):1-9.
[3]邹节华.基于单目视觉的动态手势轨迹识别系统研究[D].西安:西安电子科技大学,2012.ZOU Jiehua.Research on dynamic gesture trajectory recognition system based on monocular vision[D].Xi'an:Xidian University,2012.
[4]翁汉良,战荫伟.基于视觉的多特征手势识别[J].计算机工程与科学,2012,34(2):123-127.WENG Hanliang,ZHAN Yinwei.Multi-feature gesture recognition based on vision[J].Computer Engineering and Science,2012,34(2):123-127.
[5]REN Z,MENG J,YUAN J,et al.Robust hand gesture recognition with kinect sensor[J].MM'11-Proceedings of the 2011 ACM Multimedia Conference and Co-Located Workshops,2011.
[6]王松林.基于Kinect的手势识别与机器人控制技术研究[D].北京:北京交通大学,2014.WANG Songlin.Research on gesture recognition and robot control technology based on Kinect[D].Bejing:Beijing Jiaotong University,2014.
[7]GU Y,DO H,OU Y,et al.Human gesture recognition through a Kinect sensor[C]//Intelligent Human-Machine System and Cyberneties(IHMSC),2012 4th International Conference on.IEEE,2012,1:274-279.
[8]Heickal H,ZHANG T,HASANUZZAMAN M.Real-time 3D full body motion gesture recognition[C]//International Conference on Robotics and Biomimetics(ROBIO),December 12-14,2013,Shenzhen.IEEE,2013:798-803.
[9]宋宏亮.基于Kinect深度图像的静态手势识别的研究与应用[D].沈阳:东北大学,2013.SONG Hongliang.Research and application of static gesture recognition based on Kinect depth image[D].Shenyang:Northeastern University,2013.
[10]邓瑞,周玲玲,应忍冬.基于Kinect深度信息的手势提取与识别研究[J].计算机应用研究,2013,30(4):1263-1265.DENG Rui,ZHOU Lingling,YING Rendong.Research on gesture extraction and recognition based on Kinect depth information[J].Application Research of Computers,2013,30(4):1263-1265.
[11]武红娇.复杂背景下的静态手语识别技术研究[D].沈阳工业大学,2017.WU Hongjiao.Research on static sign language recognition technologyundercomplexbackground[D].Shenyang:Shenyang University of Technology,2017.
[12]董立峰.基于Hu矩和支持向量机的静态手势识别及应用[D].武汉理工大学,2012.DONG Lifeng.Static gesture recognition and application based on Hu moments and support vector machines[D].Wuhan:Wuhan University of Technology,2012.
[13]刘小建,张元.基于多特征提取和SVM分类的手势识别[J].计算机工程与设计,2017,38(4):953-958.LIU Xiaojian,ZHANG Yuan.Gesture recognition based on multi-feature extraction and SVM classification[J].Computer Engineering and Design,2017,38(4):953-958.
[14]李歌.基于BP神经网络的手势识别研究[D].秦皇岛:燕山大学,2013.LI Ge.Research on gesture recognition based on BP neural network[D].Qinhuangdao:Yanshan University,2013.
[15]赵显.基于随机森林的手势检测与识别系统的研究[D].湘潭:湘潭大学,2012.ZHAO Xian.Research on gesture detection and recognition system based on random forest[D].Xiangtan:Xiangtan University,2012.
[16]林水强,吴亚东,陈永辉.基于几何特征的手势识别方法[J].计算机工程与设计,2014,35(2):636-640.LIN Shuiqiang,WU Yadong,CHEN Yonghui.Gesture recognition method based on geometric features[J].Computer Engineering and Design,2014,35(2):636-640.