基于卷积神经网络的手势识别方法
2018-03-30,
,
(安徽工程大学 电气工程学院,安徽 芜湖 241000)
近年来,随着计算机视觉和机器学习等相关学科的发展,基于视觉的人机交互技术逐渐成为研究热点,研究者们对人脸、表情、手势等交互信息进行了大量的研究.区别于其他的交互方式,手势具有直观、灵活、多样的特点,因此手势识别逐渐成为研究热点[1].手势识别主要分为动态和静态手势识别,研究主要对静态手势识别进行研究.传统静态手势识别算法的关键在于手势特征的提取.杨丽[2]等结合RGB和HSV颜色空间对手势进行分割,提取Hu矩和手指个数描述轮廓,然后通过ELM前馈神经网络进行训练识别.薛俊韬[3]等在YCbCr空间下对手势进行分割,提取Hu矩,并结合傅里叶描述子得出所需特征,再通过BP神经网络进行训练识别.以上两种算法都能快速地识别出手势,但是手势的分割效果对识别率影响较大.吕蕾[4]等基于数据手套,改善了手势特征提取和特征点匹配的方法,提高了数据手套手势识别的准确率和识别速度,但在手势类别增多的情况下识别率下降.蔡芝蔚[5]等利用SVM算法提取手势特征,然后结合ANN、HMM以及DTW算法对手势进行识别,取得了较高的识别率,但该组合算法的运算速度较慢,不适合实时系统.近年来,微软推出的Kinect深度相机可以捕捉图像的深度信息,为人机交互信息研究者们提供了新的研究思路[6-8].
卷积神经网络是一种深度神经网络.作为深度学习的一个重要分支,卷积神经网络近年来已经成为图像和语音识别领域的研究热点.区别于传统人工神经网络,卷积神经网络拥有较多的网络层数,卷积层的神经元能从前一层输入中提取更高层次的特征,得出特征图,并通过池化层进行降维,减少数据冗余,最后通过全连接层和分类器进行分类识别.权值共享是卷积神经网络的一大特点,通过权值共享,网络的复杂程度大大降低,减少了网络的权值数量,也就使得训练网络时的运算量大大降低.这一优点特别适用于多维图像作为样本输入的网络训练.图像可以直接输入,省去了传统识别算法中手动提取特征的复杂操作.目前卷积神经网络已成功运用于人脸识别[9-10]、目标检测[11]等领域,在手势识别领域也逐渐兴起.蔡娟[12]等通过卷积神经网络训练出的模型取得了不错的手势识别效果.操小文[13]等通过引入噪声验证了其网络结构的鲁棒性.不足之处在于上述两者的研究选取的训练样本背景较为单一,在复杂背景下的效果无法得到验证.研究提出的基于卷积神经网络的手势识别方法,相较于文献[9]用于人脸识别的卷积神经网络,提升了网络卷积层和池化层的层数,以求得到更好的高维图像特征,区别于文献[12]、文献[13],选取了复杂背景下0到5共6类手势样本进行训练和测试.
1 卷积神经网络
2006年Hinton[14]在科学杂志上发表了一篇使用多层神经网络实现数据降维的文章,引发了研究者们对深度学习的广泛关注,深度学习逐渐成为机器学习研究的新领域[15].深度学习实质上是对拥有深层结构的神经网络模型进行训练的一类方法的总称.相对于SVM、MLP等浅层结构算法,深度学习在处理内部复杂的数据时具有更好的表现.深层结构模型能够通过隐含层逐级地提取和表示特征.当输入数据内部比较复杂且具有高度非线性关系时,深层结构模型比浅层结构模型更能准确地表现出数据的内部特征[16].目前主流的深度学习模型主要包括自动编码器、稀疏编码、深度置信网络(DBN)、限制性玻尔兹曼机(RBM)和卷积神经网络(CNN).研究主要基于卷积神经网络.典型的卷积神经网络的结构主要包含卷积层、池化层、全连接层和Softmax回归层.
1.1 卷积层
卷积层是卷积神经网络核心的层结构,通过卷积层提取图像特征图的好坏直接影响到后续层的处理.卷积层主要通过卷积核与输入的二维图像数据进行局部连接,得出图像数据的局部特征,并通过权值共享的方式得出特征图.卷积层上的每个神经元通过卷积核与前一层特征图的局部区域(局部感受野)相连接,卷积核的作用就是提取局部区域的特征,一旦该局部特征被提取后,通过卷积核在前一层特征图上滑动,遍历所有区域,每个局部区域的特征也就确定了.权值共享指的是卷积层中的每个神经元用一组相同的连接权值参数与前一层局部连接,即用同一个卷积核去卷积前一层的图像,这样网络训练时的权值参数就减少了.选用不同的卷积核分别遍历卷积前一层的特征图,加上偏置,通过激活函数得出当前神经元,就构成不同的特征图.
卷积层卷积示意图如图1所示.卷积层的计算公式可表示为:
(1)
图1 卷积层卷积示意图
1.2 池化层
池化层又称为下采样层,该层往往跟随卷积层,在卷积层之后.卷积层层数的增加会导致特征图的个数随之增加,因此学习到的特征维数也会快速增加,池化层的作用就是降低卷积后特征图的特征维数,以降低网络的复杂度,减少计算量.
根据不同的需求,池化层有不同的池化方式.最大池化和均值池化是最常见的两种池化方式.假设采样大小为2×2,即将卷积层输入的特征图分割成2×2的小块,那么最大池化操作即提取每个小块中最大的值,组成新的特征.均值池化操作即取小块中参数的均值.通过池化操作,若图像稍有偏移,池化结果不会随之改变,因此也提升了系统的鲁棒性.池化的一般表达式为:
(2)
式中,l表示当前层数;j表示第j个特征图;down(g)表示池化函数.
1.3 全连接层
全连接层实际上也是一种卷积层,但区别于卷积层的局部连接,全连接层中每个神经元与前一层所有神经元相连接,但该层神经元之间不相互连接.全连接的一个作用是维度变换,把前一层的高维矩阵数据变换成低维矩阵,提取和整合有鉴别能力的特征.另一个作用是隐含语义的表达,把原始特征映射到各个隐语义节点.全连接层的一般表达式为:
(3)
1.4 Softmax回归层
Softmax回归层一般接在全连接层之后,作为卷积神经网络的最后一层输出分类.Softmax回归分析是logistic回归分析在多个分类问题上面的发展.在卷积神经网络中,Softmax分类器用于对样本种类进行概率判断,选取输出值最大的神经元所对应的类别作为分类结果.
2 用于手势识别的卷积神经网络
2.1 网络设计
提出一种用于手势识别的卷积神经网络结构,如图2所示.不包含输入,该卷积神经网络共有8层,其中包含3个卷积层,3个池化层,1个全连接层和1个Softmax回归层.网络输入为224×224的手势像素矩阵,卷积层1卷积核大小为5×5,卷积核数量为32个,得出32个特征图.池化层1的采样大小为2×2不重叠采样,与卷积层1相对应,得出32个特征图.类似的,卷积层2、卷积层3卷积核大小都为5×5,卷积核数量变为64,池化层2、池化层3与之对应.全连接层的神经元个数设置为500个,与池化层3进行全连接.全连接层后接Softmax回归层含有6个神经元,对全连接层输出的特征进行分类,得出0到5共6种手势.
图2 用于手势识别的卷积神经网络结构
2.2 网络参数训练
卷积神经网络本质上是通过大量样本训练得出输入输出之间的映射关系,是一种有监督训练,在开始训练前,用一些不同的小随机数对网络的所有权值进行初始化.卷积神经网络的训练过程一般经历两个阶段:前向传播阶段和反向传播阶段.
f(x)=max(x,0),
(4)
通过前向传播得出网络的代价函数(Loss function):
(5)
式中,n为训练样本总数;xi为当前训练样本;y=y(xi)是训练样本对应的目标输出.l表示网络层数,al=al(xi)是当xi为输入时网络输出的激活值向量.
3 实验结果及分析
3.1 实验基础
实验基于Windows平台,在开源深度学习框架Caffe上进行.采用纯CPU模式进行训练,CPU为Intel Core i7-3610QM,主频2.3 GHz,内存4 GB.由于目前统一的手势库较少,实验采集了复杂背景环境下0到5共6种手势,如图3所示.训练集每种500张,共计3 600张手势样本.测试集每种100张共计600张手势样本.训练前对样本进行归一化和灰度处理.
图3 手势类别样例
3.2 不同梯度优化策略对网络的影响
将预处理后的手势样本作为输入数据,采用研究设计的8层卷积神经网络进行训练.选取随机梯度下降法(SGD)和AdaDelta梯度下降法两种不同的梯度优化策略,对输入的样本分别进行5 000次的迭代训练.训练过程中代价函数随迭代次数变化情况如图4所示.两种不同梯度优化策略训练出的模型对测试集的识别率如表1所示.由表1与图4可以看出,相同条件下,选用两种梯度优化策略在迭代训练1 800次左右时代价函数都能下降到很小的值,但分别经过5 000次迭代后选用AdaDelta梯度下降法训练出的模型对测试集手势识别效果更好.
3.3 全连接层神经元个数对网络的影响
将预处理后的手势样本作为输入数据,采用研究中设计的8层卷积神经网络进行训练.选用AdaDelta梯度下降法,将原本网络中全连接层500个神经元提升到800和1 000,各自迭代训练5 000次.训练过程中代价函数岁迭代次数的变化情况如图5所示.全连接层不同神经元个数训练出的模型对测试集的正确识别率如表2所示.由表2与图5可以看出,选用AdaDelta梯度下降法,相同条件下,改变全连接层神经元个数后代价函数值下降速度有所变化,当全连接层神经元个数为1 000个时下降速度最快.然而迭代训练5 000次后,测试集的正确识别率并没有提升,反而是神经元个数为500时识别率最高,由此可见,增加全连接层神经元个数一定程度上能够提升训练速度,但并不是越多越好.
表1两种不同梯度优化策略训练出模型的手势识别率
策略测试集识别率/%SGD92.67%AdaDelta98.50%
表2全连接层神经元个数改变后的手势识别率对比
策略测试集识别率/%全连接层神经元个数测试集识别率/%50098.50%80096.67%100097.00%
图4 不同梯度优化策略代价函数随迭代次数变化情况图5 改变全连接层神经元个数后代价函数变化情况
4 结论
研究设计了一个8层的卷积神经网络用于手势识别,通过SGD和AdaDelta两种梯度优化策略下训练出的模型在手势测试集上分别取得了92.67%和98.50%的正确识别率.通过改变全连接层的神经元个数,得出研究设计的卷积神经网络在全连接层神经元个数为500个时,能取得较好的识别率,而且采集的手势样本皆是复杂背景下的手势,因此通过研究中设计的网络训练出的模型具有较强的鲁棒性.同时,由于本次实验在纯CPU模式下进行,训练模型所需时间相对较长,后续研究工作将进一步优化网络结构,提升训练速度和识别率.
[1] 易靖国,程江华,库锡树.视觉手势识别综述[J].计算机科学,2016,43(S1):103-108.
[2] 杨丽,胡桂明,黄东芳,等.结合肤色分割和ELM算法的静态手势识别[J].广西大学学报:自然科学版,2015,40(2):444-450.
[3] 薛俊韬,纵蕴瑞,杨正瓴.基于改进的YCbCr空间及多特征融合的手势识别[J].计算机应用与软件,2016,33(1):151-155.
[4] 吕蕾,张金玲,朱英杰,等.一种基于数据手套的静态手势识别方法[J].计算机辅助设计与图形学学报,2015,27(12):2 410-2 418.
[5] 蔡芝蔚,吴淑燕,宋俊锋.基于SVM和组合优化模型的手势识别[J].系统仿真学报,2016,28(8):1 812-1 817.
[6] Y LI. Hand gesture recognition using kinect[C]//2012 IEEE 3rd International Conference on Software Engineering and Service Science (ICSESS 2012),Washington:IEEE Computer Society,2012:196-199.
[7] 谈家谱,徐文胜.基于Kinect的指尖检测与手势识别方法[J].计算机应用,2015,35(6):1 795-1 800.
[8] 杨勇,叶梅树.基于Kinect的中国手语识别[J].重庆邮电大学学报:自然科学版,2013,25(6):834-841,849.
[9] 陈耀丹,王连明.基于卷积神经网络的人脸识别方法[J].东北师大学报:自然科学版,2016,48(2):70-76.
[10] S AHMAD RADZI,K H MOHAMAD,S S LIEW,et al.Convolutional neural network for face recognition with pose and illumination variation[J].International Journal of Engineering and Technology(IJET),2014,6(1):44-57.
[11] 周俊宇,赵艳明.卷积神经网络在图像分类和目标检测应用综述[J].计算机工程与应用,2017,53(13):34-41.
[12] 蔡娟,蔡坚勇,廖晓东,等.基于卷积神经网络的手势识别初探[J].计算机系统应用,2015,24(4):113-117.
[13] 操小文,薄华.基于卷积神经网络的手势识别研究[J].微型机与应用,2016,35(9):55-57,61.
[14] G E HINTON,R R SALAKHUTDINOV.Reducing the dimensionality of data with neural networks[J].Science,2006,313(5 786):504-507.
[15] 张建明,詹智财,成科扬,等.深度学习的研究与发展[J].江苏大学学报:自然科学版,2015,30(2):191-200.
[16] 卢官明,何嘉利,闫静杰,等.一种用于人脸表情识别的卷积神经网络[J].南京邮电大学学报:自然科学版,2016,36(1):16-22.