APP下载

复杂环境下通用的手势识别方法

2016-07-19杜堃谭台哲

计算机应用 2016年7期
关键词:卷积肤色手势

杜堃 谭台哲

摘要:用来解决手势识别中光照变化、背景干扰等问题的方法,往往计算量大,耗时长。针对这一问题,提出了一种复杂环境下通用的手势识别方法。该方法利用二进制方式实现支持向量机(SVM)模型并且使用位运算代替滑动窗口从而完成目标快速筛选,然后用统一计算设备架构(CUDA)实现卷积神经网络对初筛区域进行二次判断和识别。该方法不依赖于动态手势识别技术,可以应用于动态和静态的手势识别,能够同时处理光照变化、背景干扰的问题。实验结果表明所提算法的计算效率相比基于滑动窗口的算法有100至1000倍的提升,处理一幅图片的时间约为0.01s。在修正后的Marcel数据集上实验结果达到了96.1%的准确率和100%的召回率。效率上的提升使得算法能够实时进行复杂环境下的手势识别。

关键词:

手势识别;位运算;卷积神经网络;复杂环境;肤色似然

中图分类号: TP391.413 文献标志码:A

0引言

现行的手势识别方法的主要步骤是提取精确的手势区域,然后作形状或者轮廓识别。提取手势区域的方法有依赖于测距设备的方法,比如Kinect[1-2]、双目设备[3],也有依赖于单目视觉的方法[4]。前者的主要原理是人机交互中手的位置距离传感器应该在一定的区间内,之后进行距离阈值分割。而基于视觉的方法主要是确定合理的肤色阈值,进行肤色分割和去噪,确定手势区域或者轮廓。

这些方法虽然依赖的特征不同,但是在整体处理步骤上比较相似,都需要首先对手势区域进行精确的分割。方法面临的挑战主要集中在复杂环境下的手势分割。如果希望算法在距离、光照可变的环境下表现出良好的鲁棒性,一般会将很多非手势的区域也识别为手势,这将增加手势分割的难度,在复杂背景下,这一问题会更加明显。在背景环境复杂时如果想降低手势分割的难度,一般需要对输入的图像特征进行更严格的提取,这同时也降低了模型的鲁棒性,在光照、距离等条件变化时,会出现丢失手势的问题。

两类问题相互制约,针对这一情况,研究者们把精力主要放在如何更加精准地提取特征上面。用作手势分割的特征主要集中在肤色[4]和距离[1,3],有的学者采取了将轮廓信息结合先验形状来进行更加准确的分割方式来处理这一问题[5],此类方法被广泛地用于边缘提取领域,在针对小规模噪声区域以及手势类别较少的情况时能获取不错的效果。主要问题是对于多个先验形状的表达没有特别理想的方案,在形状增多之后,形状项的作用明显下降,这与形状之间本身的冲突有关。更重要的一点是图像分割方法一般耗时都在数秒甚至数十秒,时间复杂度上无法满足手势识别的需要。因为手势分割的运用场景多为动态场景,所以运动目标检测的方法也经常用来辅助手势分割。

现行手势分割方法中最常用的是按照提取肤色特征、二值化、形态学滤波、运动目标特征或者距离特征协助检测这个过程处理[3-4]。有时还需要做人脸检测,排除人脸区域的干扰。融合了多种特征的方法在光照变化和背景拥有类似肤色的物体时仍然会出现不能有效分割的情形。

在手势识别方面,Dardas等[6]提出了一种基于特征包的手势识别方法,在识别率和计算效率上都取得了较好的结果。对于良好的手势轮廓,Belongie等[7]提出的形状上下文能够得到高准确率和对非刚性畸变鲁棒的结果。矩特征,指尖等手势的几何特征[1]也经常被用作为手势识别的特征。卷积神经网络能够自动获取特征,在处理静态图片时表现出了非常高的准确率,同时对噪声以及各种形变鲁棒。

本文提出一种新的方法来解决手势识别中鲁棒性和算法复杂性之间的矛盾。该方法第1步使用二进制运算实现的支持向量机(Support Vector Machine, SVM)分类器并用位运算代替滑动窗口,快速提取出多个可能的备选区域。第2步使用卷积神经网络来完成手势的再判定与识别工作。文中算法的实现方式非常关键,直接关系模型的运算效率。第1步中使用的分类器为线性SVM模型,需要在支持64位整型机器的环境下使用二进制运算的方式实现,在执行效率上相对于基于滑动窗口的算法有着100倍左右的提升[8]。第2步使用的分类器为卷积神经网络,在实现上使用了统一计算设备架构(Compute Unified Device Architecture, CUDA)进行卷积运算的加速,能获得10倍左右的加速比[9]。

1手势区域提取

本文手势区域提取的方法不要求精确提取手势轮廓或者锁定备选框。该方法核心思想是用最短的时间排除掉绝大部分的搜索区域,剩下无法判断的区域结合其他方法进行处理。

方法本身并不依赖于特定特征,所有能够用来排除大量备选区域的特征均可以使用,比如通过测距设备获取的距离似然特征,使用视觉设备获取的肤色似然特征。因为肤色似然特征对于硬件的要求更低,本文选择肤色似然特征进行实验。

1.1获取肤色特征

本文使用椭圆模型提取肤色似然区域[10-11]。首先将肤色变换到YCbCr空间,椭圆肤色模型认为肤色在Cr和Cb分量组成的空间里的分布集中在一个椭圆区域内。该椭圆中心点坐标为(155.6,103),长短轴比例为1∶1.6,旋转角度为43°。式(1)描述了Cr和Cb组成的空间中的像素点距离椭圆中心的距离,也可以理解成是肤色的概率。该值恒大于0,最大值为255,标准差系数为σ2。可以通过调整标准差系数σ2来控制肤色判断的严格程度,不同σ2下的分割效果如图1所示。不同的标准差系数对于肤色区域的判断影响十分明显。当σ2较小时提取区域判断为肤色的区域很小,此时真实的手势区域可能被误检成非手势区域;当σ2增大时,肤色似然图中判断为肤色的区域会一直增加,此时肤色似然图中被误检为肤色的区域也会增加。

光照变化和肤色的多样性会影响肤色似然特征的计算。针对光照变化以及肤色变化的情况。有以下方法可以改善:

方法1使用对光照鲁棒的特征,比如距离似然特征。

方法2使用较大的标准差系数σ2,后面提取区域的过程中使用较多的备选框以提高召回率。

方法3使用迭代的方法调整椭圆模型的中心坐标和标准差系数,方法3一般用于光照连续变化场景,比如视频流的处理。

1.2肤色似然特征与手势区域检测

获取肤色似然图之后,下一步需要计算似然图中的手势区域。手势区域和非手势区域在8×8肤色似然图下有着明显的差别,如图2所示。这一步的思路是使用滑动窗口的方法,对肤色似然图进行遍历。因为最终需要处理是在遍历的过程中将窗口中的肤色似然图像作为手势区域分类器的输入,得到一个“窗口值”,用来确定是否为备选窗口。

考虑到手势识别应用场景多为人机交互,手势的长宽比固定,不会被人为拉伸,所以选用“正方形”滑动窗口;并且手势区域在整幅图像中所占比例会有所变化但变化幅度不大,所以不用设定太多不同尺度的滑动窗口。在此处设定4个不同尺度的手势区域48×48、64×64、80×80、96×96用以检测不同大小的手势。

为了保证滑动窗口的大小始终为8×8,将肤色似然图调整为不同的尺度,以尺度为360×240的肤色似然图为例,当手势区域大小由48×48调整为8×8时,肤色似然图的长宽也对应变化原图的1/6,变为60×40。大小为的64×64、80×80、96×96的手势区域所对应的调整后的肤色似然图尺度分别为45×30、36×24、30×20,如图2(d)所示。

在分类器的选择上选用的是线性SVM分类器[12]。实验正样例选取的均为人工标记的手势区域的肤色似然图,在选取正样例的过程中可以先使用少量样本训练一个线性SVM分类器,然后使用该分类器进行样本初筛,之后再人工调整。负样例是在正样例以外的区域中随机选取。正负样本均需要进行归一化处理,处理成为8×8的区域。“窗口值”表示SVM系数矩阵和8×8的内积。“窗口值”的计算过程如式(2)所示:

s=〈w,x〉;w∈R8×8,x∈{0,1,…,255}8×8(2)

其中:w为权值矩阵;x为肤色似然图的像素值,如图2(c)所示;s为滑动窗口的“窗口值”。

1.3BISL二进制肤色似然特征

为了加速滑动窗口的计算,本文借鉴了文献[8]中一般物体识别时用到的方法,使用64位整型表示8×8的二进制矩阵,并且使用一些列的位运算操作来实现加速[13-14]。二进制肤色似然特征(Binary Skin LikeHood, BISL)特征,是将肤色似然特征使用多个64位整型表示之后形成的特征。

1.3.1近似参数矩阵w

线性模型矩阵w∈R8×8可以使用文献[13]中的算法1对其进行近似可得w≈∑Nwj=1βjaj。其中:Nw代表基向量的个数;aj∈{-1,1}8×8代表基向量; βj∈R代表相应基向量的系数。

算法1使用二进制方法近似w。

程序前

输入:w,Nw。

输出:{βj}Nwj=1,{aj}Nwj=1。

初始化残差:ε=w

for j=1 to Nw do

aj=sign(ε)

βj=〈aj,ε〉/‖aj‖2(将残差ε映射到aj上)

ε=ε-βjaj(更新残差)

end for

程序后

1.3.2处理输入矩阵x

本文截取x的高Nx位近似x(如图3(a)),x可以由BISL特征表示成如下形式:

x=∑Nxk=128-kbk(5)

其中:x∈{0,1,…,255}8×8,bk∈{0,1}8×8。

算法2对区域获取BISL特征。

参数含义:bx,y∈{0,1}8×8,rx,y∈{0,1}8,bx,y∈{0,1}。

程序前

输入:肤色似然图的二进制值bW×H。

输出:BISL特征组成的矩阵bW×H。

初始值:bW×H=0,rW×H=0

for each position(x,y) in scanline order do

rx,y=(rx-1,y<<1)|bx,y

bx,y=(bx,y-1<<8)|rx,y

end for

程序后

通常来说,获取8×8的BISL特征需要遍历64个位置。Cheng等[8]巧妙地利用了64位整型的特点,在算法2中使用了“按位或”和“移位”操作避免了循环。首先BISL特征bx,y和它的最后一行rx,y分别使用一个INT64变量和一个byte变量存储。然后相邻的BISL特征有重复的部分,可以通过左移8位操作保留重复的部分并给不同的部分腾出空间,将腾出的这8位的空间与新的byte变量进行“按位与”,就获取了新的BISL特征。相邻的byte变量的获取过程与之类似。

综合式(4)和(5)可以得到由BISL特征和分类器参数计算出窗口值:

s≈∑Nwj=1βj∑Nxk=1Cj,k(6)

其中Cj,k=28-k(2〈a+j,bk,l〉-bk,l)。

将窗口值topk的窗口作为候选窗口,进行进一步的识别。k的取值由实验环境确定,k越大,手势检测模型召回率越高,进一步识别的时间复杂度也会增加。

2使用卷积神经网络进行手势识别

本章所提输入是手势检测部分所得到的窗口值排名前k的候选窗口,这些窗口区域都是在上一步被判定为极有可能为手势的区域,所以本章中需要使用更为复杂的特征和更强的分类模型来处理这个问题。卷积神经网络和一般的神经网络相比,具有权值共享、局部感知等特点[15-16],充分地利用了输入值的空间关系信息,并且容易使用硬件加速[9]。综合考虑模型的分类能力、鲁棒性以及识别效率等因素,本文使用卷积神经网络进行手势识别。

2.1样本、特征以及网络结构

卷积神经网络的训练样本是根据手势检测步骤中得到的窗口值topk 8×8窗口计算出来的。在确定窗口值topk 8×8窗口时,记录下这k个窗口在对应的肤色似然图中的坐标。根据这个坐标计算出原图像所对应的窗口坐标。这个过程可以看作是根据图2(c)中的8×8窗口位置来获取图2(a)中对应尺度的窗口图像位置,进而获得窗口图像。在获取窗口图像后,本文将备选窗口图像大小调整为29×29,然后计算它的肤色似然图,得到29×29的肤色似然图作为卷积神经网络的输入。卷积神经网络的特征选择可以有很多,比如窗口的灰度图、梯度特征、局部二进制特征。选用29×29的肤色似然图的原因是肤色似然图在肤色检测的过程中已经计算过一遍,不需要再重复计算。训练样本一共分为10类,6个备选手势类,4个错误类。这里设计4个错误类的原因是因为在手势区域提取的过程中,被错分成手势区域的候选框是有着明显的特点的。主要的几类情况是识别到手势边缘,识别到手势中心,识别到非手势区域,可以参考图2(b)的情形。在网络设计的时候需要重点关注这些错误的情形,实验发现,将所有的错误情形视为1类的模型识别率要低于将错误情形分成4类的模型。将错误情形分为4类的卷积神经网络一共有10个输出节点,其中6个代表6种不同的手势,另外4个代表4类典型的错误。需要注意的是,在计算模型准确率的时候并不将4类错误加以区分。假定4类错误分别为错误1、错误2、错误3、错误4,将错误1识别成了错误2,仍然认为模型判断正确。

为了使样本具有平移和小幅度旋转的鲁棒性,对卷积神经网络的训练样本进行了一些平移和旋转上的扩展。考虑到手势与手写字符的区别,本文并没有进行弹性形变扩展。整个卷积网络的结构如图4所示。

本文参照文献[15]中提到的方法来设计卷积神经网络,网络包含两个卷积层:第1层用来提取一些类似于边缘、角点、交线的底层图像特征;第2个卷积层以这些特征为基础生成更加复杂的特征。两个下采样层均按照2×2的因子进行最大池化,卷积核的大小定为5×5,第1个卷积层有5个卷积核,第2个卷积层有10个卷积核。光栅化之后采用两层全相连多层感知机结构,隐层单元数量设定为100个,最后针对多分类问题,使用softmax设置10个输出节点。

2.2卷积神经网络的计算过程

本文使用的卷积神经网络主要参照文献[17]中提到的算法实现。下面主要针对卷积层和下采样层的正向计算和反向传播计算进行讨论。

2.2.1正向计算

2.2.2反向传播

3实验结果分析

实验平台为Intel Core i74702MQ 2.2GHz, 4GB RAM, NVIDIA GeForce GTX 760M。CPU支持POPCNT命令,显卡支持CUDA平台,操作系统为Windows 8 Pro 64位。

3.1手势检测部分

手势检测部分所采用的数据集是Sebastien Marcel Static Hand Posture Database数据集,数据集包含10个人的6种手势(a,b,c,point,five,v)(A,B,C,Point(P),Five(F),V),总共接近5000个样本(如图5)。

实验对简单环境和复杂环境分别取100张测试图片进行测试(如图6)。在实验中发现,在简单环境下,直接获取“窗口值”最大的窗口作为备选区域即可。在光照变化和背景复杂的情况下,“窗口值”大小前4的窗口已经可以覆盖所有的实际手势区域,即达到100%的召回率(如表1)。

实验对比了基于滑动窗口方法实现手势检测、多模板匹配外加人脸排除以及本文的手势检测方法的运算速度。在3种不同尺寸的样本中分别取1000张测试图片进行测试,结果如表2所示。

3.2手势识别部分

手势识别部分的样本来源于手势检测部分的结果。数据一共分为10类,除了6个手势类之外,还设定4个错误类。4类错误分别命名为E1、E2、E3、E4。其中:E1代表识别到手势中心;E2代表识别到手势边缘;E3代表识别到非手势干扰区;E4代表除E3之外的弱干扰区,如图7所示。

因为10类的训练样本数量有一定的差异。其中最多的手势Point有1395个样本,最少的V有435个样本。错误类样本中总量为1216个,其中E1 178个,E2 81个,E3 943,E4 14个,这个具体数量与手势检测所设定的备选窗口数量有关以及选择的输入图片有关,可以调整,本文实验中备选窗口数量设为4,输入图片中背景复杂的一共有473张。在样本不平衡的情况下所训练出卷积神经网络模型测试准确率为93%左右。对样本进行抽样和扩展,扩展方法如下。

1)对于6个手势类,在每个类的训练集中随机抽取350张样本,对抽取的图片在随机方向上进行1到2个像素的平移得到另外350个样本,每一类总共会得到700个样本。

2)对于错误类E1,首先对训练集进行4次随机方向上1到2个像素的平移,每一次都会得到一个新的训练样本,最后进行随机抽样,每类选择700个样本。

3)对于错误类E2,首先对训练集进行10次随机方向上1到2个像素的平移,每一次都会得到一个新的训练样本,最后进行随机抽样,每类选择700个样本。

4)对于错误类E3,直接进行随机抽样,每类选择700个样本。

5)对于错误类E4,将样本复制50次,获取700个样本。

扩展后的训练集有6000张训练样本,测试集有1000个样本。手势识别的结果如表3所示,在手势识别部分修正后的准确率为96.1%,空格部分代表0,4个错误类准确率计算方式在2.1节有说明。

图8对比了本文算法和其他算法的性能,当训练样本大于100时,本文算法和特征包算法的准确率相近。算法的运行效率明显高于特征包(Bag of Features, BoF)算法,如表4所示,平均识别时间表示的是手势识别算法对单一“窗口”图像的计算时间,整体计算时间包含了手势检测和手势识别两个部分以及一些预处理环节,基于特征包的两类算法对应的手势检测方法采用的是对模板匹配和人脸排除,本文的算法是采用位运算支持向量机和CUDA卷积神经网络。CUDA卷积神经网络处理29×29大小的图片用时约为0.001s。手势识别过程中,因为分割算法求得的是4个备选窗口,所以识别过程中需要识别4个窗口,对一幅输入图像而言手势检测和识别总用时约为0.013s。

实验结果表明,本文提出的方法能够在光照变化、背景复杂的情况下依然保持高准确率和良好的运算效率。

4结语

本文提出了一种新型的手势识别方法,与传统的手势识别方法相比,本文方法利用位运算代替滑动窗口,在数微秒的时间内将备选窗口数量由千万级别缩减到个位数。获取备选区域之后使用基于CUDA的卷积神经网络对备选区域进行细分和识别。在实际的计算过程中可以通过硬件优化得到100至1000倍的加速比。本文方法仅仅通过肤色似然特征就在Marcel数据集上得到了96%左右的准确率。本文提出的方法主要解决了鲁棒性和计算复杂度的矛盾,并且方法所使用的特征可以使用其他的特征替换,这使得模型具有良好的可扩展性。

本文方法的局限性主要体现在对特征提取的召回率有要求,如果完全没办法提取到特征,本文的方法会失效。另外,卷积神经网络的训练耗时长,网络设计依赖经验,在更加复杂的分类上,卷积神经网络网络的设计也会更加困难。

参考文献:

[1]

谈家谱,徐文胜.基于Kinect的指尖检测与手势识别方法[J].计算机应用,2015,35(6):1795-1800.(TAN J P, XU W S. Fingertip detection and gesture recognition method based on Kinect [J]. Journal of Computer Applications, 2015, 35(6): 1795-1800.)

[2]

NEWCOMBE R A, IZADI S, HILLIGES O, et al. KinectFusion: realtime dense surface mapping and tracking [C]// Proceedings of the 2011 IEEE International Symposium on Mixed and Augmented Reality. Washington, DC: IEEE Computer Society, 2011: 127-136.

[3]

谭同德,郭志敏.基于双目视觉的人手定位与手势识别系统研究[J].计算机工程与设计,2012,33(1):259-264.(TAN T D, GUO Z M. Research on location and gesture recognition of hand based on binocular stereovision [J]. Computer Engineering and Design, 2012 33(1): 259-264.)

[4]

WACHS J P, KLSCH M, STERN H, et al. Visionbased handgesture applications [J] Communications of the ACM, 2011, 54(2): 60-70.

[5]

SAMUEL D, RATHI Y, A. TANNENBAUM A. A framework for image segmentation using shape models and kernel space shape priors [J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2008, 30(8): 1385-1399.

[6]

DARDAS N H, GEORGANAS N D. Realtime hand gesture detection and recognition using bagoffeatures and support vector machine techniques [J]. IEEE Transactions on Instrumentation & Measurement, 2011, 60(11): 3592-3607.

[7]

BELONGIE S, MALIK J, PUZICHA J. Shape matching and object recognition using shape contexts [J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2002, 24(4): 509-522.

[8]

CHENG M M, ZHANG Z M, LIN W Y. BING: binarized normed gradients for objectness estimation at 300fps [C]// Proceedings of the 2014 IEEE Conference on Computer Vision and Pattern Recognition. Washington, DC: IEEE Computer Society, 2014: 3286-3293.

[9]

STRIGL, KOFLER K, PODLIPNIG S. Performance and scalability of GPUbased convolutional neural networks [C]// Proceedings of the 2010 18th Euromicro Conference on Parallel, Distributed and Networkbased Processing. Piscataway, NJ: IEEE, 2010: 317-324.

[10]

BOJIC N, PANG K. Adaptive skin segmentation for head and shoulder video sequences [C]// Visual Communications and Image Processing 2000. Bellingham, WA: SPIE, 2000: 704-711.

[11]

KOVAC J, PEER P, SOLINA F. Human skin color clustering for face detection [C]// IEEE Region 8 EUROCON 2003. Computer as a Tool. Piscataway, NJ: IEEE, 2003, 2: 144-148.

[12]

FAN R E, CHANG K W, HSIEH C J, et al. Liblinear: a library for large linear classification [J]. Journal of Machine Learning Research, 2008, 9(12): 1871-1874.

[13]

HARE S, SAFFARI A, TORR P H S. Efficient online structured output learning for keypointbased object tracking [C]// Proceedings of the 2012 IEEE Conference on Computer Vision and Pattern Recognition. Washington, DC: IEEE Computer Society, 2012: 1894-1901.

[14]

ZHENG S, STURGESS P, TORR P H S. Approximate structured output learning for constrained local models with application to realtime facial feature detection and tracking on lowpower devices [C]// Proceedings of the 2013 10th IEEE International Conference and Workshops on Automatic Face and Gesture Recognition. Piscataway, NJ: IEEE, 2013: 1-8.

[15]

SIMARD P Y, STEINKRAUS D, PLATT J C. Best practices for convolutional neural networks applied to visual document analysis [C]// Proceedings of the Seventh International Conference on Document Analysis and Recognition. Washington, DC: IEEE Computer Society, 2003: 958-963.

[16]

LECUN Y, BOSER B, DENKER J S, et al. Handwritten digit recognition with a backpropagation network [M]// Advances in Neural Information Processing Systems 2. San Francisco: Morgan Kaufmann, 1990: 396-404.

[17]

CIRESAN D C, MEIER U, MASCI J, et al. Flexible, high performance convolutional neural networks for image classification [C]// IJCAI11: Proceedings of the TwentySecond International Joint Conference on Artificial Intelligence. Menlo Park, CA: AAAI Press, 2011: 1237-1242.

猜你喜欢

卷积肤色手势
基于图像处理与卷积神经网络的零件识别
肤色(外一首)
人的肤色为什么不同
基于全卷积神经网络的变压器故障诊断
基于深度卷积网络与空洞卷积融合的人群计数
为什么人有不同的肤色?
挑战!神秘手势
胜利的手势
卷积神经网络概述
认手势说数字