APP下载

复杂背景下的静态手势识别研究

2022-08-25穆平安

软件导刊 2022年8期
关键词:手势预处理准确率

颜 超,穆平安

(上海理工大学光电信息与计算机工程学院,上海 200093)

0 引言

根据我国第七次人口普查报告可知,全中国聋哑人数量已经达到2 000 多万人。聋哑人由于听力受损、发声不完全等原因,与外界交流非常不便,只能借助于手势与其他人进行沟通交流。但遗憾的是,大多数普通人并不理解手势,这一客观事实也导致聋哑人群体很难通过手语和其他人进行交流。由于手势识别的复杂性和综合性[1],国内外对手势识别的研究相比于人脸识别等能够直接应用的研究是少之又少,若可以高效地将手势识别出来并转换为文字,则可以帮助聋哑人进行更好的沟通。因此,促进手势识别的提升和发展是一项非常有意义的工作[2]。

实际应用中,手势图像中通常有人体肤色或复杂背景[3](如图1 所示,第一张为简单背景,第二张和第三张为复杂背景),这会给手势识别带来很大挑战。

Fig.1 Simple background and complex background图1 简单背景和复杂背景

手势主要分为静态手势和动态手势,静态手势指在固定时间内保持静止的手势,而动态手势是由一个个静态手势组合而成。本文主要研究静态手势,为下一步识别动态手势奠定基础。当前,静态手势识别有传统和基于深度学习的方法,对于传统的手势识别方法已有较多研究。Wang 等[4]提出使用Kinect 传感器的基于手势的人机交互解决方案,他们通过计算手指移动器的距离进行手势识别,并在两个现实应用中展示了其实用性。Dai 等[5]提出一种基于隐马尔科夫模型的连续词汇手势识别方法,可以有效地提高图像分割精度,并达到了92.22%的准确率。Na 等[6]提出一种基于数据手套读取手势数据的方法,但是因为其便捷性差、成本高、维护较困难和硬件方面的约束,不利于大部分学者研究;Pugeault 等[7]提出一种多类随机森林分类器,通过4 个层次的Gabor滤波器提取特征,识别美国手语字母表中的24 个静态符号。Karami 等[8]提出一种多层感知器,利用离散小波变换(DTW)导出的特征识别波斯手语(PSL)中的字母和数字,识别率达94.06%。Pisharady 等[9]利用高和低水平图像特征的组合来检测手,并将注意力集中在手区域上。使用贝叶斯推理生成显著性映射,然后使用基于形状和纹理的手区域特征和SVM分类器对手势进行识别处理,在数据集上进行测试,得到了94.36%的准确率。

最近一些学者提出的深度学习和卷积神经网络(CNN)的手势识别方法在识别率和识别速度上有了更好的提升,它避免了从图像中导出复杂的特征描述。Mohanty 等[10]提出一个深度学习框架以识别手势,对3 个数据集进行训练预测并获得了89.1%的识别准确率。包兆华等[11]通过肤色提取出手的轮廓信息的二值图像,然后利用改进的LeNet-5 模型在自己制作的数据集上达到了较高的识别率;Ameen 等[12]利用CNN 提出一种美国手语字母的识别模型,他们利用两个平行的中枢神经系统从手势颜色和深度图像中提取的特征,在美国手势数据集上实现了80.34%的识别准确率。Suri 等[13]采用一种迁移学习模型的方法,更进一步地缩短了模型训练所浪费的时间,在数据集上的手势识别准确率为95%;Adithya 等[14]提出一种基于卷积神经网络结构的手势识别方法,该模型可以在复杂背景和不同照明条件下识别静态手势,他们提出的模型已经在两个公开的基准数据集上进行了测试,并且取得94.7%的识别精度。

针对现有算法未能克服在复杂环境下识别准确率低等问题,本文提出一种基于YCbCr 颜色空间和卷积神经网络相结合的静态手势识别算法。实验结果表明,该算法适用于复杂的环境且识别效果较好。

1 系统框架

系统整体框架如图2 所示,首先对数据集图片进行手部区域提取、降维、灰度化和数据增强预处理,然后使用卷积神经网络对预处理后的图片进行训练分类,最后得到识别结果。

Fig.2 System framework图2 系统框架

2 图像预处理

2.1 数据集选取

第一个数据集选自新加坡国立大学的公开数据集NUSII[15],这些手势是在新加坡国立大学及其周围拍摄,背景是复杂的自然背景,手的形状和大小各不相同。这些姿势由40名不同种族、不同复杂背景的受试者完成。受试者包括年龄范围为22-56岁的男性和女性。要求受试者展示10个手势,每个姿势5次。这是一个10 类手势数据集,分别对应着A-J的10个英文字母,图像大小为160×120。每一个种手势图像有200张,总计2 000张图像。其10个不同手势图片如图3所示。

Fig.3 Sample image of NUS-II dataset(Part A-J)图3 NUS-II数据集的样本图像(A-J部分)

第二个Marcel 数据集选自拥有复杂背景的室内,相对于第一个数据集较为简单。该数据集共有6 种不同的手势,一共有5 494张图片。其样本图片如图4所示。

Fig.4 Sample images from the Marcel dataset图4 Marcel数据集中的样本图片

2.2 图像预处理

图像预处理的主要目的是加快模型训练速度,增加训练数据量,从而提高模型识别效率和泛化能力。预处理部分包括手部区域提取、图像降维、和旋转等操作。其具体步骤如下:

第一步,利用YCbCr 颜色空间方法对数据集中的手势图像进行手势肤色区域提取。YCbCr 颜色空间方法是先将皮肤信息映射到YCbCr 空间,然后通过判断像素点是否在椭圆分布内来划分手部区域,这样便有效地去除了复杂背景。提取后的手部区域如图5所示。

Fig.5 Comparison of the original image with the extracted hand image图5 原图与手部提取图对比

第二步,将提取后的图像转换为灰度图像,如图6所示。

第三步,将所有数据集的手势图像从原始大小160×120像素降维到64×64像素,如图7所示。

Fig.6 Gray scale(160×120)图6 灰度图(160×120)

Fig.7 Dimension reduction diagram(64×64)图7 降维图(64×64)

第四步,对图片进行增强处理,将所有图片进行水平翻转、垂直翻转(见图8)和左右30°、60°和90°旋转操作(见图9)。

Fig.8 Horizontal flip and vertical flip(64×64)图8 水平翻转和垂直翻转图(64×64)

经过图像预处理,数据集扩增到原来的8 倍,每种手势包括1 600张,一共得到16 000张手势图片。

3 网络模型

3.1 CNN基本理论

Fig.9 Rotation by 30,60 and 90 degrees(64×64)图9 旋转30°、60°和90°图(64×64)

卷积神经网络(Convolution Neural Network,CNN)是一种具有深层结构的前馈神经网络[16]。CNN 主要是基于卷积运算,卷积运算特别适合图像处理。在图像处理过程中,卷积神经网络方法与传统图像特征提取方法不同,CNN 通过使用多层卷积操作提取图像的卷积特征图,通过不断地迭代训练CNN,就可以获取较好的图像特征,极大提高了图像特征提取准确度。这是卷积神经网络的优势所在,因此CNN 在图像处理领域应用广泛。CNN 网络主要由卷积层、池化层、全连接层、激活函数和Softmax 分类器等构成。

(1)卷积层。卷积层(Convolution Layer)是卷积神经网络的核心部分,其卷积运算过程是通过一个卷积核以滑动窗口的形式对特征图像加权求和,也即完成了一次滤波过程,滤波器为卷积核。卷积主要用来提取图片中的复杂特征。一般前几个卷积层用来提取基础简单的特征,后几层则从简单特征中用来提取更繁杂的特征。

(2)池化层。池化层(Pooling Layer)一般应用于卷积层之后,虽然卷积层也可以一定程度地减少参数数量,但是特征维度如果只是通过卷积层进行运算则有效率非常低。池化层是起到简化卷积层输出参数信息的作用,同时还可以保持图像原始信息不发生改变。池化层其实是另外一种形式的降采样,即在给定区域内,通过相应策略选取特定值作为输出,该输出值代表整个区域一定的特征,这样就达到了降维效果。例如,最大池化(Max Pooling)选择该图像相邻区域内的最大值作为该区域池化后的值,平均池化(Average Pooling)是相计算该图像相邻矩形区域内的平均值作为该区域池化后的值。实际上,池化的作用就是对卷积层输出的图片信息进行某种方式的凝缩。

(3)激活函数。激活函数(Activation Function)是为了解决输入样本非线性可分问题,通常在卷积计算后增加一个激活函数,这在很大程度上提高了网络的非线性表达能力。在实际应用中,最常用的激活函数主要有Sigmoid、tanh、RELU 等,本文模型中的卷积层后接的激活函数都是RELU[17]。RELU 函数公式如式(1)所示。

可以看出,如果输入为负值或0 时,则输出为零;如果输入为正值,则输出保持不变。它可以对输入信号进行过滤,保留部分满足条件的信号,而且可以有效克服梯度消失问题。

(4)批量归一化(BN)。将批量归一化加入每个ReLU层之后,主要为了防止训练数据和测试数据在学习数据分布时,避免因分布不一致而导致网络泛化能力下降。它可以将一个批量里的输入数据进行归一化然后输出。如果将批量归一化层放置在网络各层之间,就可以不断地对中间输出进行调整,从而保证整个网络中间输出的数值稳定性。同时,减少梯度对参数或其初始值尺度的依赖性。因此,可以使用较大的学习速率对网络进行训练,从而加速网络收敛。

(5)全连接层。全连接层(Fully Connected Layer)是卷积层的一种,在整个网络中起到分类器的作用。它把从卷积层和池化层得到的卷积特征中代表图像局部特征的数值组合起来,然后将每一个特征图转换为一维数组,再将所有特征图的一维数组拼接成一个特征向量,作为手势图像的完整表示,最后输入全连接层。全连接层一般位于卷积层和池化层后面,主要作用是整合图像特征并实现分类。

(6)Softmax。Softmax 分类器将上一层全连接层的输出转换成一个概率向量,该向量中的值代表当前样本属于每一个类的概率[18],其表达式如式(2)所示。

其中,N表示分类的类别数,a表示全连接层的输出向量,aj表示向量a中的第j个值。

3.2 提出的卷积网络模型

本文提出的卷积神经网络结构如图10 所示,CNN 的输入图像是尺寸大小为64×64 的灰度图像。该网络由12个卷积层和4 个池化层组成。每个卷积层都应用了ReLu激活函数并利用BN 进行了数据标准化处理。在前两个卷积层使用了64 个卷积滤波器,在接下来的卷积层中分别扩展到128、256、512 个滤波器,以便于提取图像中更深的特征。在所有卷积层中实现了一个内核大小为3×3 和步长为1 的滤波器。在各种池化函数中,最大池化层以其速度快、收敛性好等优点优于其他池化函数,因此本文在每个卷积层之后加入最大池化层以减少参数量。采用大小为2×2 的不重叠采样进行池化,经池化层处理后,手势特征图的分辨率将缩减一半。全连接层中共有256 个神经元,在全连接层中也应用了ReLu 激活功能。最后输出层由Softmax 进行处理,用于对输出的不同手势特征进行分类,将最终分类结果输出到一列向量中从而输出手势图像的分类结果。

3.3 优化模型训练策略

(1)在构建CNN 网络模型时,由于神经网络模型具有大批量的参数和较深的层次,从而导致训练的网络模型易形成过拟合。因此,利用Dropout 方法避免模型产生过拟合现象,在训练过程中随机按照比例将部分神经元权重设置归零,即输入不与隐藏层的权重进行相关运算[19]。使得模型不会完全依赖于全连接层中的某个权重,缩减了参数量,有效避免了过拟合现象的发生。

(2)在分类不同手势时,采用交叉熵损失函数衡量模型预测结果和真实值之间的误差。其离散的函数表达式如式(3)所示。

其中,N表示批处理块的大小,p、q表示一批样本中第i个样本的真实标签和预测标签。

(3)模型优化器选择Adam 优化器,利用它对整个神经网络进行优化。Adam 算法是梯度下降算法的一种变形,相比于普通的梯度下降算法,该算法可以通过考虑梯度的一阶矩估计和二阶矩估计自动调整每个参数学习率,同时具有AdaGrad 和RMSProp 两种优化算法的优点,是深度学习领域比较流行的优化算法。

如图11所示,通过对比其他常用的优化器算法后,Adam 优化器训练出来的模型拟合效果最好,梯度下降曲线的波动最为平稳。综合以上因素,选用Adam 作为模型的优化器。

Fig.11 Effect of optimizer on model performance图11 优化器对模型性能的影响

(4)为进一步提高模型识别准确率,本实验采用的学习率为0.000 1。通过多次遍历数据集的方式增强模型拟合能力,并且在每次遍历训练集过程中随机打乱训练集的排序以提高模型鲁棒性。

4 实验与结果分析

4.1 实验环境与配置

为了客观地进行算法性能对比,手势识别实验环境和配置如表1所示。

4.2 在NUS数据集上的实验结果分析

本实验使用未经过预处理的数据集与经过手部区域提取和预处理后的数据集作对比实验,结果如表2所示。

(1)使用未经过预处理的数据集用于CNN 训练。NUS数据集样本照片为2 000 张,其中每一种静态手势照片为200 张。按照8∶2 的比例将图像分别用于训练和测试。该模型迭代运行了100 次,计算得出随着训练数据迭代次数的增加,其准确率达到95.65%。

Table 1 Experimental environment and configuration表1 实验环境与配置

Table 2 Comparison of experimental results表2 实验结果对比

(2)使用经过手部区域提取和预处理后的数据集用于CNN 训练。在预处理期间,首先利用YCbCr 颜色空间对数据集的手部区域进行提取,然后利用降维、灰度化和数据增强等预处理,经过数据增强后一共得到16 000 张手势图片。按照同样的方式进行训练和测试,模型迭代运行了100 次,保存模型每次迭代的准确率和损失值。由表2 可以看出,经过预处理后,手势的识别准确率相对于预处理前提高2.65%。经过预处理后的手势图像有效去除了复杂背景,并达到了较好的手势识别准确率。预处理后网络模型的准确率和损失函数如图12所示。

Fig.12 Accuracy and loss function of the model after preprocessing图12 预处理后模型的准确率和损失函数

可以看出,随迭代次数的增加,训练集和验证集的准确率在训练过程中不断提高,并达到稳定状态,损失值持续下降后也趋于平稳。两条线基本接近重合,说明网络模型能够很好地对数据集进行拟合,本文提出的预处理方法也有效避免了训练过程中过拟合现象的发生。

经过相同NUS-II 数据集训练后,本文算法与其他文献提出算法的比较如表3 所示。可以看出,传统手势识别方法识别准确率远不如基于神经网络的方法。该算法在YCbCr 颜色空间和卷积神经网络模型上有效识别出了手势特征,识别准确率为98.32%,相比于文献[14]中单独使用卷积神经网络的方法准确率提升3.62%,该算法达到了更优的识别效果。

4.3 在Marcel数据集上的实验结果分析

为了验证该算法在复杂环境下的有效性,经过同样预处理方法训练后,本文算法和其他算法在Marcel 数据集上的识别准确率比较如表4 所示。可以看出,在该数据集上达到98.96%的准确率。相比于文献[22]中卷积神经网络结合SVM 的方法提升0.96%的准确率。

Table 4 Test results of different algorithms on Marcel data sets表4 在Marcel数据集上不同算法的测试结果

本文提出的算法使用YCbCr 颜色空间对手势进行提取,有效去除了复杂背景,在很大程度上提升了卷积神经网络效率。经过两个数据集的验证可以看出,该算法在各种复杂背景下都可以很好地对手势进行识别。

5 结语

针对现有手势识别方法在复杂环境下识别率低的问题,本文提出了一种基于Ycbcr 颜色空间和卷积神经网络相结合的手势识别算法。实验表明,对复杂背景下的NUS-II 数据集和Marcel 数据集进行识别,可以有效去除复杂背景,准确率得到很大提升,可以很好地在复杂环境下对静态手势进行识别。本实验只是对数据集中的静态英文字母进行识别,在实际应用中还有许多局限性,未来需作出如下改进:①由于该算法只是对静态手势进行识别,在接下来的研究中,会重点研究动态的手语动作,以达到手势实时识别效果;②由于中国手语的复杂性,目前国内学者对中国手语的识别研究较少,在下一步会考虑对中国手语进行识别,以此造福更多的中国聋哑人。

猜你喜欢

手势预处理准确率
不同序列磁共振成像诊断脊柱损伤的临床准确率比较探讨
挑战!神秘手势
V字手势的由来
高速公路车牌识别标识站准确率验证法
基于预处理MUSIC算法的分布式阵列DOA估计
络合萃取法预处理H酸废水
基于自适应预处理的改进CPF-GMRES算法