常镶石,胡玉兰
(沈阳理工大学 信息科学与工程学院,沈阳 110159)
随着人工智能的火热,许多人机交互应用渐渐进入人们的生活。手势是比较热门的人机交互方式之一,手势识别是先利用计算机对手势图像进行预处理和特征提取,然后利用统计学习方法等算法使对图像特征进行学习,分析出每个手势的具体含义,进而实现人与计算机之间的人机交互操作。现在,手势识别已成为一个倍受人们关注的研究领域,尤其是基于视觉的手势识别,包括在虚拟现实(VR)、增强现实(AR)、视频游戏等方面有着很好的应用前景。
目前,关于手势识别的研究有很多。Grimes[1]被认为是最早研究手势识别的人,在AT&T最先取得了“数据手套”的专利。在实验过程中,实验者可以戴上一个带有传感器的手套,计算机通过手套可以获取手的位置、手指的伸展状况等丰富信息。Graobal等[2]在记录视频中提取实验者手套颜色的特征,采用隐性马尔科夫模型(Hidden Markov Model,HMM)识别261个手势孤立词汇,其正确率达到91.3%。杜堃等[3]研究了在复杂环境下利用卷积神经网络对手势进行识别,引入滑动窗口思想使识别率达到了96.1%,但是增加滑动窗口的同时大大增加了处理时间。范文兵等[4]通过肤色检测手掌,提取手掌质心和轮廓来识别手势,最终也达到了平均96%的识别率。杨红玲等[5]则提出了卷积神经网络和肤色检测相结合的识别方法,在识别率和处理时间取得了不错的效果。王龙等[6]将深度学习引入手势识别,利用卷积神经网络对手势图像进行降维和抽取特征并进行权值训练,网络识别率高达97.2%。
现在比较成熟的Adaboost人脸检测算法和肤色检测算法在人脸识别和手势识别领域中有着广泛的应用。Adaboost算法的基本思想是构建小型且高效的分类器用以滤除大量的负样本,使相对复杂的级联分类器在小工作量的情况下检测出目标,但是在待检测图像中,负样本的数量占整个窗口的大多数,包含目标的图像比例比较低,因此检测器将会耗费大量时间在无人脸区域的检测上,在应用实时目标监测系统中不会有太好的效果。肤色检测应用在检测人脸和手掌时有着较好的时效性,并且对于遮挡、旋转等情况均有一定的鲁棒性,但是由于其自身的局限性,使得基于该方法的目标检测有较高的误检率。
本文针对两种方法的优势和缺陷,提出一种将集成学习和肤色检测相结合的手势位置识别方法,将肤色检测理论引入基于视觉的手势识别中,对手势识别问题进行适应性研究。人脸肤色与手掌肤色有着相似的颜色模型结构,首先通过Adaboost人脸检测找到人脸所在位置,在人脸周围画出若干个位置方框图,再通过肤色检测找到手掌具体所在位置然后向计算机反馈,如果肤色检测没有找到手掌具体位置,再用已经训练好的分类器对图像进行识别。这种识别策略大大增强了整个手势识别系统的鲁棒性和实时性,减小泛化误差。
整个手势位置识别系统包括两个过程:寻找人脸过程和寻找人手过程。寻找人脸过程是先从人脸分类器入手,调用通过Haar特征结合Adaboost算法训练完成的人脸分类器对实时传输进来的每一帧图像进行人脸检测,由于分类器人脸检测会有一定误差,出现检测不到人脸的状况,出现这种情况时对图像进行亮度均衡处理,然后在图像中心利用肤色检测寻找人脸。之后是寻找人手过程,寻找人手过程需要在已经找到的人脸周围画出若干个矩形位置方框,有了矩形方框很容易通过肤色检测得到手掌的位置,人脸与人手的肤色结构很相似,通过截取人脸上的一块肤色在画好的方框中找到其相似的结构,便可以确定手掌的位置。通过肤色寻找手掌速度很快,有很高的实时性,但是有可能出现多个位置方框同时出现肤色,或者没有方框出现肤色的情况,因此,利用HOG特征训练出的手掌分类器作为辅助和补短可以在很大程度上减小误差。手势位置识别流程图,如图1所示。
本文分别利用Haar特征和HOG特征结合集成学习技术构造人脸和手掌分类器。通过研究前人的论文成果发现人脸和眼睛的生理结构与Haar特征相似,而手掌的轮廓的梯度变化适合于HOG特征,从而分别从人脸人眼和手掌提取Haar特征和HOG特征,并利用加性模型推导的Adaboost算法训练分类器。下面介绍本文使用的算法和特征。
图1 手势位置识别流程图
Kearns等[7]首先提出了“强可学习(strongly learnable)”和“弱可学习(weakly learnable)”的概念。文献[8]提出了强可学习和弱可学习的关系。在学习中,如果发现了“弱学习算法”,能否将其提升为“强学习算法”。关于提升方法的研究有很多,最具代表性的是Adaboost算法。Freund等[9]在1995年改进了提升算法,提出的Adaboost算法在速度上取得了巨大的成功,第一次在理论上实时实现了人脸检测。Paul Viola等[10]在2001年成功实现了Adaboost算法的人脸检测应用,并完成相应人脸检测系统,取得里程碑式的意义。
Adaboost算法有很多种推导方式,比较容易理解的是基于“加性模型”(additive model),即基学习器ht(x)乘以各自的权重αt线性组合成强分类器H(x)
(1)
最小化指数损失函数
lexp(H|D)=Ex~D[e-f(x)H(x)]
(2)
给定训练集D={(x1,y1),(x2,y2),…,(xm,ym)},训练集样本xi⊆Rn,训练集标签yi={-1,+1},损失函数lexp(H|D)和基学习器ht(x),学习加性模型的算法如下。
输入:
训练集D={(x1,y1),(x2,y2),…,(xm,ym)};
基学习算法ζ;
训练轮数T.
过程:
1:D(x)=1/m.
2:fort=1,2,…,Tdo
3:ht=ζ(D,Dt);
5: ifεt>0.5 then break
7:
通过加性模型[11]训练的Adaboost级联分类器是由若干个占不同权重的弱分类器组成,对图像分类采用投票机制。在分类过程中,超过半数以上的弱分类器给出的分类结果作为级联分类器最后的分类结果。
2.2.1 Haar特征
Haar特征是由Papageorgiou C等[12]最早提出的,因类似于Haar小波而得名。Haar特征是通过计算图像中灰度值相差较大的相邻区域的灰度值总和之差得到的,并且能够反映被检测对象局部特征的灰度变化。这种特征计算量较大,对计算机的算力和算法有一定要求。
Viola等[13-14]在人脸检测系统中将积分图的思想应用到Haar特征计算里,极大地提高了用于检测器的特征获取速度。Lienhart等[15]在Viola的算法基础上提出了扩展的Haar特征,使系统在识别速度没有太大变化的情况下提高识别效果。本文采用Haar特征来描述人脸的边缘及结构特征,共分4大类15种a特征,如图2所示。人脸人眼(来源自网络)特征示例如图3所示。
本项目总建筑面积51933.88m2,其中地上27层,建筑面积41902.12m2。地下1层,建筑面积10031.76m2。建筑高度99.60m。主要包括大堂、宴会厅、全日制餐厅、行政酒廊、中餐厅和客房,以及附属的门厅、大堂吧、休息厅、厨房、酒店管理用房和各种设备房,以及泳池、SPA、棋牌室、健身室等康体功能。
图2 四大类Haar特征
图3 Haar人眼和人脸特征
2.2.2 HOG特征
(3)
(4)
式中Gx与Gy分别是x方向与y方向的梯度。HOG在进行特征描述时将θ的梯度方向在[-90°,90°]区间划分为N个均匀空间Sk,像素点(x,y)在k个梯度方向上的梯度投影L为
(5)
仿真结果如图4所示(图片来自于网络)。
图4 HOG特征仿真
随着人机交互设备的普及,人的肤色逐渐成为计算机视觉中的热门研究领域,在与人有关的各种智能视觉系统中,肤色检测技术得到了越来越多的应用,有比较好的应用前景。肤色检测是一种基于颜色空间模型对皮肤颜色进行检测的方法,有着计算量小且检测速度快的优点,但由于生活中有很多与肤色相近的物体,所以,这种方法会产生较高的误检率。规定肤色范围是一种阈值化的方法,是一种常用并且非常快速的肤色建模方法,在人脸检测和手势识别中有着广泛的应用。
用数学表达式明确规定肤色范围已经被提出,Chai等[17]采用YCbCr颜色空间的CbCr平面,如果输入像素的颜色落入RCr=[133:173]和RCb=[77:127]限定的矩形区域,就认为是属于肤色像素。张洪明等[18]提到在不同的亮度分量Y上的矩形区域(RCr,RCb)不同,因此在Y分量上分段定义肤色矩形区域,并且提出在YUV空间中根据Y范围和UV平面中色度范围进行肤色检测。这种肤色检测方法计算量小,处理时间短并且可以反馈给计算机简单明确的结果,特别是在实时系统中有着巨大的优势。基于HSV颜色模型的肤色检测方法,是本文主要运用的方法。
RGB颜色模型到HSV颜色模型的变换公式如下。
(6)
式中:由于色调H不易到光线的影响,所以H(Hue)为检测肤色的主要依据;S代表颜色中的饱和度(Saturation),其值在0到1之间;V代表明暗度(Value),其值在0到1之间。由于肤色一般是分布在某一个特定的区域中,可以通过下式组合定义出在HSV中的子集合。
(7)
图5是根据式(7)的肤色范围提取的肤色区域(图片作者拍摄)。
图5 肤色检测结果
为验证本文肤色检测与集成学习技术相结合的有效性,搭建实验平台进行有效性验证。实验平台为Intel Core i5-7500 CPU 3.4GHz,8GB RAM,NVIDIA GeForce GTX 1060。显卡支持CUDA平台,操作系统为Windows 10 家庭中文版 64位。软件环境为Visual Studio 2015+OpenCV 3.2,部分结果如图6所示。
图6为作者在室内光照下,通过摄像头对手势位置识别算法的结果截图。图6中方框1代表肤色检测,方框2代表分类器,方框3代表手掌可能放置的位置,通过截取人脸肤色与绿色方框内手掌肤色对比,判断手掌的位置。分类器判断结果是基于大量训练集训练若干个弱分类器,识别手势位置时若干个弱分类器进行投票,取半数以上为结果。图6代表左、左上和右三个命令。
图6 仿真结果
图7为分类器未识别情况。
图7 分类器未识别情况
由图7可以看出,当分类器未识别时,肤色检测可以快速的给出识别结果。图7为右上和上命令。同理,肤色检测未检测出结果时,分类器会识别手掌所在的给出结果。将肤色检测与集成学习相结合,在识别速度上较分类器大大提升,有很高的实时性;两种算法相结合,加强了整个系统的鲁棒性。本文采用2000张正负样本图片作为数据集,其中,80%为训练集,20%作为测试集。Adaboost算法、肤色检测算法和本文算法对比结果如表1所示。
表1 算法对比
实验结果表明,本文提出的方法用时较少,且提高了系统识别率和鲁棒性。
提出一种集成学习与肤色检测相结合的手势位置识别方法和先寻找人脸后寻找人手的识别策略,与传统的人机交互方式相比,该方法具有较高的鲁棒性。将集成学习与肤色检测相结合,识别率较高,实时性较好。通过实验仿真,证明了该方法的有效性,在实时系统中有很好的应用前景。