当前位置: 首页 > > 天 方 夜 “谈” 第19期 | 基于深度学习的手势识别

天 方 夜 “谈” 第19期 | 基于深度学习的手势识别

发表于:2020-03-25 14:52 作者: 方滨兴班 阅读数(7185人)

作者:Jing-Hao Sun ,Ting-Ting Ji ,Shu-Bin Zhang,et al.

来源:ISAPE 2018

链接:

https://ieeexplore.ieee.org/document/8634348

 

1

背景介绍

图片.png

计算机视觉的快速发展使得人们对人机交互的需求越来越广泛。其中,手势在这方面是常用的。由于手势能够表达丰富的信息,因此手势识别在机器人控制、智能家具等方面得到了广泛的应用。

这篇文章的主要思想是从复杂的背景环境中,根据手的肤色特殊性以及对剪切得到的一帧手势视频图像进行分析,建立肤色模型和基于Haar的AdaBoost分类器,实现了手势的分割。再利用CamShift算法实现手部的实时手势跟踪。然后,利用卷积神经网络对实时检测到的手势区域进行识别,实现了对10个常用数字的手势识别。

手势识别的交互系统由手势分割,手势跟踪和手势识别三部分组成。主要结构如图1所示。

图片.png

图1 交互系统的主要结构

2

手势的分割

作为手势分割的第一步,作者从采集到的视频中提取一帧切割出相关的特定手势。手势分割主要包括基于肤色、边缘检测、运动信息、统计模板的类型,它们分别具有不同的优缺点。文章论述了目前有许多方法可以实现手势分割,比如基于肤色模型的分割,根据手势肤色与外界环境的差异,建立肤色模型,实现了手势分割,并且模型不受手势姿势的影响,但不能排除与肤色相似的物体,如人脸等; 基于边缘检测的手势分割可以根据图像区域边缘区域灰度值的不连续性对手势进行分割,但容易被噪声干扰,对背景有严格的要求; 基于运动信息的手势分割,包括帧差分法和背景差分法等,采用手势运动信息在背景环境静态的前提下分割手势,静态环境效果好,但是动态背景效果不佳; 基于统计模板匹配的手势分割方法能够通过手势模板特征的训练分类器快速识别手部区域和非手部区域,但只能识别一个或几个手势,不能满足多场景的需求。文章中的手势分割方法是对图像进行预处理,根据肤色建立高斯混合模型,并结合基于Haar特征的AdaBoost分类器对手势进行分割,采用了融合算法实现复杂环境下的手势分割。

A.高斯肤色混合模型:

首先肤色识别是将图像中的肤色区域从整个图像中区分出来,其核心问题是肤色像素和非肤色像素的分类。肤色识别是人脸检测中的关键技术,肤色识别的效果关系着相关图像处理技术的应用效果。高斯模型分为单高斯模型和高斯混合模型,单高斯模型的肤色识别算法计算量小,识别效率高,但是当图像中存在干扰因素时,单高斯模型的肤色识别效果不佳。高斯混合模型的肤色识别算法则可以较好地识别存在干扰因素的图像中的肤色。高斯肤色混合模型是一种参数化的肤色分布模型。其原理是借助正态分布近似拟合人体肤色的概率密度分布。通过极大似然估计,高斯肤色混合模型的参数学习过程中的目标函数被设定为样本在该模型中的最大似然值。使用高斯肤色混合模型分割手势,效果如图2所示。

图片.png

图2 使用高斯肤色混合模型分割手势

B.基于模板特征的手势分割:

基于肤色模型的手势分割法容易被人脸等与手部颜色相近的物体打乱。为了克服上述缺点,作者在检测到肤色后采用基于模板特征的手势分割方法。通过大量手势样本提取手势特征,并且通过使用这些特征来训练分类器,区分出手区域和非手区域。实验采用基于Haar特征的AdaBoost分类器。下面是其介绍:

1. Haar特征:Haar特征反映了图像灰度值的变化。特征分为几类:边缘特征、线性特征、中心特征和对角线特征。用黑白2个矩形区域组成特征模板。在特征模板中,用黑色矩形区下的像素和减去白色矩形区域下的像素和来表示物体的特征值。如图3所示,A和B表示边缘特征,C表示线性特征,D表示对角线特征。

图片.png

图3 基本的Haar特征

在计算Haar特征值时,如果所有的矩形特征区域都被遍历,会造成大量的重复计算,浪费大量的时间。我们知道,两幅积分图像可以快速计算出矩形特征。实验的主要思想是将原始图像转换成积分图像。在计算一个特定区域内的像素和时,只需对整幅图像中矩阵区域的四个角点的值进行索引,然后简单的加和减计算即可得到Haar特征值。在整个过程中,图像只检测一次,大大提高了计算效率。

积分图像中的元素是原始图像左上角所有像素值的总和。s(i,j)表示行方向的累积和,初始化后的s(i,-1)为0;ii(i,j)表示积分图像的结果,初始化后的ii(-1,j)为0;扫描图像后,可采用以下公式实现迭代运算:

图片.png

通过对图像进行逐行扫描,构造积分图像ii,可用于快速计算Haar特征值。

2. AdaBoost分类器:AdaBoost是一种迭代学习方法,是由一组弱学习算法升级而来的强学习算法。其基本原理是针对同一数据集,训练不同的弱分类器,然后将弱分类器进行合理的结合,使其成为一个强分类器。图4是该分类器的示意图:

图片.png

图4 AdaBoost分类器示意图

实验步骤如下:

1)创建训练数据集,将包含手势的图片视为正样本,将没有手势的背景环境视为负样本。为了确保实验的准性,选择1000张正样本图片和2000张负样本图片。

2)计算这些图像的特征值以及积分图像。

3)根据生成的特征值构建多个弱分类器。

4)采用AdaBoost将弱分类器训练为强分类器。

5)测试构建的强分类器并进行相应的调整。

3. 手势的分割:基于肤色的手势分割具有适应性强,不受姿势和旋转影响的优点。然而,皮肤颜色的高斯混合模型很容易被具有相似肤色的物体打断,例如人脸,手臂等。基于Haar特征的AdaBoost分类器的准确性和鲁棒性良好,即使在复杂的环境中也具有良好的性能,但是分类器只能识别具有特定模型的手势,并且很大程度上受到手势和旋转的影响。

为了提高手势分割的准确性,文章将肤色模型和分类器相结合。首先,使用肤色的高斯混合模型从图像中分割出可能是手的区域,然后,使用AdaBoost分类器来定位手势位置。具体流程如图5所示:

图片.png

图5 结合肤色模型和分类器的手势分割流程

将手势图像按照上述流程进行分割,效果如图6所示:

图片.png

图6 手势分割效果

3

手势的跟踪

根据视频中手势的一些特点,对其进行实时定位和跟踪,这是手势识别的关键步骤。手势跟踪的目的是确保目标手势不会丢失并保持实时监控。目前,广泛应用的手势跟踪算法包括MeanShift(均值漂移),卡尔曼滤波和光流算法等。上述手势分割所采用的AdaBoost分类器只能识别特定模板的手势姿态,受手势姿态形变影响很大。如果将所有手势都进行训练,就加大了训练量,很难保证实时性,并且准确率会有所影响。因此,文章采用了CamShift算法,即改进版本的MeanShift,该算法对手势的形变具有很好的鲁棒性,而且由于算法相对简单,可以实时检测手势位置。

CamShift算法原理:CamShift算法是一种连续自适应的目标跟踪算法,也是MeanShift算法的改进版本,其核心是MeanShift。在距离相似性测量的前提下,增加了图像灰度相似性测量。CamShift算法能够实时监控手势位置并获得手势区域。CamShift的主要步骤如下:

1.为了减少光线对手势的影响,选择一帧视频从RGB颜色空间转换到HSV颜色空间; 然后对H权重进行直方图统计,计算颜色直方图hb;

2.根据hb,对前一帧图像进行反投影,得到前一帧的概率分布投影图像;

3.调用MeanShift算法。

4

手势的识别

通过上述的手势分割和手势跟踪方法,可以实时检测手势。文章采用经典的LeNet-5神经网络来识别手势。手势数据集采集自室内环境下的数字1到10共10种类型的手势,每种手势有2000张图片。

1.卷积神经网络的原理:

a)卷积层:实现最后一层的特征映射与一个卷积核之间的卷积过程。

b)池化层:在CNN中池化层描述了相同内核映射中相邻神经元组的输出。池化层采集特征图样本,将其分割成多个不重叠的n×n图像块,然后对每个图像块进行求和、平均或最大值。

c)全连接层和SoftMax函数:在卷积层和池化层之后,二维图像的特征映射被连接为用于输入全连接网络的一维特征映射。最后一个完全连接层的输出被送入一个SoftMax函数中,它产生一个超过10个类标签的分布。

2.网络结构:LeNet-5的结构包括卷积层,池化层,完全连接层和Softmax。

5

实验部分

文章中的实验数据采集自在室内环境下的10种手势,从数字1到10,每种手势有2000张图片。将执行的最大步数设置为10000,批处理设置为32,固定学习率设置为0.001,第二个正则化参数设置为0.00004。实验结果的损失曲线和准确度如图7、8所示:

图片.png

图7 损失曲线

图片.png

图8 实验准确度

从实验的结果可以得出手势识别的平均准确度为98.3%,由于7、9号手势的手势复杂,识别率不高,而且网络无法获取手势的三维信息。因此,当手势旋转时,它们将被覆盖。随着迭代次数的增加,损失曲线明显减小。当训练达到一定水平时,识别率将保持稳定。

总结:文章对手势识别的一整套流程进行了研究。通过使用高斯肤色混合模型和基于Haar特征的AdaBoost分类器进行手势分割,实现了复杂环境中手势区域的获取。根据手势的移动和变形特征,利用CamShift算法进行手势跟踪,确保了手势区域的实时获取,然后通过卷积神经网络对手势区域进行分类,最后分析了该方法的识别准确度及问题原因。

关于 天 方 夜 “谈”

天方夜谈原意讲不切实际的东西,而这里想要 “脚踏实地”真正弄懂并感受一篇文章的思想。

方班人有自己的浪漫,

我们探讨知识,谈论理想,

采摘科研的繁星,

脚下是星辰大海。

天:代表我们的理想犹如天空般浩荡

方:代表方班

夜:代表代码人的冷静与静谧

谈:代表方班愿与您,就领域内的经典思想和前沿成果“秉烛夜谈”