APP下载

基于改进的卷积神经网络的手势识别的研究

2019-04-01

计算机应用与软件 2019年3期
关键词:手势预处理卷积

谢 铮 桂

(韩山师范学院 广东 潮州 521000)

0 引 言

随着人机交互、计算机视觉技术的不断发展,基于视觉的手势识别已成为国内外学者研究的重点,也是计算机视觉领域的一个研究热点[1]。手势作为一种自然语义表达方式,在人机交互中发挥着重要的作用。

目前已经有许多国内外学者对手势识别开展相关研究。文献[2]针对手势识别提出两种异构分类器组合的方法,基于HMM来区分稳态数据和暂态数据,最后使用SVM对手势肌电信号进行识别。文献[3]提出了基于方向梯度直方图(HOG)的手势识别方法。文献[4]使用Kinect传感器去捕获图像的3D Haar-like特征,用Adaboost学习算法识别手语,并通过将3D特征信息与增强算法相结合,从而提高算法的分类效率。文献[5]采用卷积神经网络算法,对手势数据集进行训练之前先对图像进行预处理,分割出手势区域作为网络输入,分割后的图像是一个64×64像素的三通道彩色图像。

分析上述文献发现存在两个问题:(1) 文献[2-4]中提出的方法为传统的手势识别方法,需要先人工提取图像特征,再设计分类器。但人工提取图像特征难以适应手势图像复杂的背景及手势多变性,加大了手势识别的难度,降低了识别准确率。(2) 文献[5]用彩色图像作为输入,会增加卷积神经网络模型参数,使模型的算法复杂度更高。

问题(1)的解决方案是构建基于卷积神经网络的手势识别模型。近年来卷积神经网络在图像分类、物体检测和动作识别等领域之所以取得极大成功,因为相比传统人工提取图像特征,卷积神经网络能自动提取图像更高层的特征信息,实现end-to-end分类,以达到更高的识别率。

针对问题(2),可以构建基于灰度的卷积神经网络。用单通道gesture数据集训练CNN,大大减少网络参数,减少网络计算复杂度,节省网络训练时间。再用真实场景的手势图像测试,对输入图像先基于肤色阈值分割出手势区域并作掩膜处理,再输入到CNN模型测试。

1 算法设计

1.1 工作流程

传统手势识别算法进行手势识别时需要先对输入手势图像进行复杂的预处理和人工提取图像特征,然后再进行特征分类。这种算法识别结果的好坏很大程度上取决于人工提取的特征是否合理,而人工提取特征往往依靠经验,主观性较强,导致结果不准确。与传统识别方法不同,本文提出的识别算法分两个阶段:先构建和训练CNN模型,再测试CNN模型。第一阶段是先构建灰度CNN神经网络模型,接着对gesture数据集预处理,规整后作为CNN网络模型的输入。模型训练过程中自动学习输入样本的手势特征和分类,训练完成后保存CNN模型的结构和参数,如图1所示。第二阶段是先对自建手势图像数据集作预处理,分割出手势区域并作掩膜处理,再输入到训练好的CNN模型进行预测,最终得到识别结果,如图2所示。因为自建手势图像是通过摄像头采集包含了复杂的背景信息,直接输入CNN模型预测会影响识别结果,所以,需对采集图像预处理。图像预处理是基于肤色阈值对图像中的手势部分进行分割并作掩膜处理。

图1 基于卷积神经网络的手势训练模型的工作流程图

图2 基于卷积神经网络的手势识别模型的工作流程图

1.2 手势图像的预处理

为降低背景对识别结果的干扰,在进行手势识别之前,需要将手势从复杂的背景中分割出来。

分析手势图像,可以看出,手势的肤色信息是手势区别于其他物体的重要特征之一。因此,将肤色的亮度信息和色度信息分离,进而基于肤色比较不同物体与手势在色度上的差别,将手势部分分割出来。

由于单纯的RGB色彩空间难以对手势的肤色信息进行检测,而YCbCr色彩空间具有亮度和色度分离的特点,Y、Cb、Cr分别代表亮度、蓝色色度和红色色度分量。相比于RGB色彩空间,YCbCr色彩空间更符合人眼的视觉感知,从而降低了图像分析的难度[6]。

摄像头采集到的是RGB图像,因此需要转换到YCbCr颜色空间,色彩空间转换可以按下式计算:

Y=0.257×R+0.564×G+0.098×B+1

(1)

Cb=-0.148×R-0.291×G+0.439×B+12

(2)

Cr=0.439×R-0.368×G-0.071×B+128

(3)

采用基于阈值的分割方法,将手势从图像背景中分离出来之后,以二值图像的形式表现。如果Cb的值范围在77到127之间并且Cr的值范围在133到173之间则被认为是白色像素,否则被认为是黑色像素。基于肤色阈值的手势分割结果如图3所示。

(a) 原图 (b) 阈值分割图3 基于肤色阈值的手势区域分割

1.3 数据集介绍

为了验证算法有效性,本文采用两个手势数据集。分别是自建手势数据集和gesture数据集。自建手势数据集是通过摄像头拍摄采集了真人的9种不同手势,共有1 800张图像,图像包含了复杂的背景信息。如果直接用自建手势数据集训练CNN网络,必定影响识别率。因而需要对图像作预处理,分割出图像中的手势区域作为CNN网络的输入,但是如果CNN网络模型训练过程需要对每张训练图像作预处理,会加大模型训练时间,因此,自建数据集适合测试CNN网络。本文选用gesture数据集作为训练数据集,gesture数据集提供了16 989张9个类别的手势灰度图像,每张图大小是64×64像素,如图4所示。模型训练前需要对数据集作预处理,将图像大小调整为28×28像素,并作归一化处理。图像的尺寸变小并且是灰度图,加快了模型训练的速度。

图4 gesture数据集

1.4 手势识别的卷积神经网络的模型结构

卷积神经网络通过局部感受野和权值共享减少了神经网络参数的个数,因而大大降低网络模型的复杂度和缓解网络模型过拟合的问题[7]。卷积神经网络主要由卷积层、池化层和全连接层构成。本文通过构建基于手势灰度图像的卷积神经网络,自动提取输入样本的手势特征和识别。网络模型由两个卷积层、两个池化层、两个全连接层组成。模型结构如图5所示。

图5 手势识别的卷积神经网络的模型结构

1.4.1 卷积和池化

卷积层中卷积核的作用是提取图像的特征信息,对于卷积层的某一层,用卷积核与上一层特征图作滑动卷积运算再加上一个偏置值得到输出。最后再通过激活函数就能得到卷积的结果,即输出特征图[7],如下所示:

(4)

池化层把输入的特征图分成多个不重叠的n×n块,再对每个块采用最大值法或者均值法,从而使得输出特征图缩小了n倍[7]。

本文提出的模型中第一个卷积层用32个大小是3×3的卷积核,滑动步长为1,输出32个28×28的特征图。第一个池化层的池化采样的窗口大小为是2×2,步长为2,得到32个14×14的特征图。

第二个卷积层用64个大小是3×3的卷积核,滑动步长为1,输出64个14×14的特征图。第二个池化层的池化采样的窗口大小为是2×2,步长为2,得到64个7×7的特征图。

网络的激活函数采用Relu()函数,因为Relu()函数能使部分神经元的输出为0,从而使网络产生稀疏性,减少网络的复杂度,缓解了过拟合问题的发生。

1.4.2 全连接层

本文提出的模型中第一个全连接层的输入为64张7×7的特征图,因此,需要1 024个神经元。为了防止卷积神经网络出现过拟合问题,在第一个全连接层之后加入了Dropout层。Dropout算法是在训练过程中随机地按一定比例p(0≤p≤1)的忽略节点,阻止神经元过多,由此减轻了传统全连接神经网络的过拟合问题,有效地提高了网络的泛化性能[8]。

在第二个全连接层的输出通过Softmax激活函数,让识别结果以概率的形式输出。

2 网络模型训练及测试结果

用gesture数据集训练网络模型,再用自建手势数据集测试模型。训练网络模型采用批量随机梯度下降法,即从训练总样本中选取一个批次作为一个batch,然后计算这个batch的总误差,根据总误差来更新权值。使用批量随机梯度下降法的好处是网络的收敛速度更快。本文训练数据集每个批次batch的样本个数设置为2 000个。使用Adam优化器进行迭代,学习率为1e-4,dropout设置0.75。

将gesture数据集的16 989张分成两部分:13 989张图像作为训练集,3 000张图像作为验证集。网络模型的构建和训练使用深度学习框架TensorFlow,利用TensorBoard得到网络训练过程中交叉熵的变化率和准确率,分别如图6和图7所示。

图6 训练过程中迭代次数与交叉熵的变化曲线

图7 训练过程中迭代次数与准确率的变化曲线

将训练好的网络模型在自建的手势数据集上进行测试,得到识别准确率为96%。

现有的参考文献已提出了不同的方法来识别手势,表1是从实现算法、识别的手势数量以及识别率三方面将本文提出的算法与文献提出的三种算法进行性能对比结果。其中,文献[2]使用HMM+SVM方法对手势进行识别,该方法先人工提取图像的特征,再用SVM对手势肌电信号进行识别。虽然支持向量机具有训练速度快、非线性映射能力强等特点,但其准确率低于卷积神经网络。文献[9]提出用一个三层径向基神经网络RBF(Radial Basis Function)对24种美国手语手势进行识别。RBF是一个三层神经网络,一个输出层,一个隐藏层,一个输出层,属于浅层神经网络。与该网络相比,较大深度的卷积神经网络具有更高的识别率。文献[2,9]都属于传统机器学习方法,卷积神经网络CNN与其相比,训练速度较慢,但识别率更高,并且具有更好的鲁棒性。文献[5]采用卷积神经网络CNN算法,在对手势进行训练之前对图像进行预处理,分割出手势区域作为网络输入,该输入图像是一个64×64的三通道RGB图像,而本文输入图像预处理成28×28的单通道灰度图像,与其相比,本文网络模型的参数减少,降低了算法复杂度。

表1 各种算法结果对比

3 结 语

手势图像中手势的多样性和复杂的背景信息会导致识别准确率低下。本文提出了一种基于肤色阈值的手势分割结合灰度卷积神经网络的手势识别模型。首先,构建灰度手势图像的卷积神经网络模型,采用gesture数据集对模型训练,有效地减少模型复杂度,降低模型训练时间。再用摄像头采集的不同背景下的手势图像进行测试,需要先对手势图像在YCbCr颜色空间上用阈值法分割出手势区域并作掩膜处理。实验结果表明,卷积神经网络能够高效地进行特征提取,在两个数据集下对手势的平均识别率都达到96%以上,因此能有效地解决手势识别问题。

猜你喜欢

手势预处理卷积
KR预处理工艺参数对脱硫剂分散行为的影响
求解奇异线性系统的右预处理MINRES 方法
基于3D-Winograd的快速卷积算法设计及FPGA实现
一种并行不对称空洞卷积模块①
污泥预处理及其在硅酸盐制品中的运用
挑战!神秘手势
从滤波器理解卷积
基于傅里叶域卷积表示的目标跟踪算法
基于预处理MUSIC算法的分布式阵列DOA估计
胜利的手势