基于深度卷积神经网络和支持向量机的手势识别算法
2021-09-03闫俊伢
闫俊伢, 吴 迪, 滕 华
(1. 山西大学商务学院 信息学院, 山西 太原 030031; 2. 哈尔滨工程大学 计算机科学与技术学院, 黑龙江 哈尔滨 150001;3. 西华师范大学 计算机学院, 四川 南充 637009)
随着人工智能技术的飞速发展,用于人机交互的手段也更加多样化和智能化,手势和语音作为人机交互的2种重要模式,得到了广泛关注。简单的手势作为人机交互方式使用已经较为广泛,但是,随着交互功能性和手势背景的复杂度增加,急需多种不同的手势来实现交互功能,复杂手势应运而生。复杂手势的识别成为手势交互方法在人工智能领域发展的最大挑战,复杂手势的图像特征提取及特征解析和分类成为手势识别研究的关键问题[1]。
当前,对于手势识别的研究成果较多,特别是智能算法和深度学习的发展,为手势特征的训练及分类提供了有力帮助。文献[2]中通过深度学习算法来训练复杂背景下的手势图像,从而提高手势图像的识别效率。文献[3]中采用深度视角传感获取手势图像数据,以解决复杂手势图像样本多视角提取的问题。文献[4]中采用红绿蓝三通道图像-深度图像(RGB-D)法完成复杂背景下的手势图像分割,以提高复杂背景下的手势轮廓及关键特征,这些方法从图像特征提取、图像数据训练解决复杂背景下的复杂手势识别问题,在识别准确率上均有所提升。作为一种特殊类型的神经网络,深度卷积神经网络被认为是学习图像内容的最佳技术之一,并且在图像识别、分割、检测和检索相关任务方面显示了最佳的效果。目前,大多数图像处理竞赛的优胜者都采用基于深度卷积神经网络模型。
本文中采用深度卷积神经网络,并结合支持向量机(SVM)多类别分类算法(简称本文算法)来实现复杂手势的识别,以进一步提高手势识别的准确度,解决大容量手势样本及多手势种类的识别准确率不高的问题。
1 手势特征提取
手势图像的来源主要是通过摄像头从不同角度获取的图像数据。一般比较简单的手势,只需要通过正面摄像头便可以获得图像数据,而复杂手势必须通过不同摄像方位获得图像数据综合判别其特点。从手部骨骼的轮廓及结构作为主要特征来识别手势。人手轮廓及关节如图1所示[5]。
J1、 J2、 J3、 J4和J5分别为5个指尖关节轮廓,J6为腕关节轮廓。
静态手势特征的提取主要是根据5个手指指尖及手腕关节构成的轮廓,以及5个手指的关节节点,通过指尖数量、手指长度、手势轮廓周长、手掌面积等来获取手势图像特征。考虑到手势图像的背景及周边环境和拍摄光线的影响,可以从不同角度来获取手势图像,然后构建人手轮廓及关节图[6-7],最后根据多张图片来提取手势特征。而在动态手势特征提取时,除了要根据手部轮廓和手关节分布结构来获取手势特征外,还需要考虑到手的运动特点,充分跟踪手部运动时与摄像机的距离和角度,结合旋转平移等方法来完成动态手势识别。
在手势特征提取时,还需要注意的一个问题就是手势图像去噪及二值化处理。去噪的过程一般采用滤波完成,通过高斯和中值滤波可以有效解决手掌轮廓边缘提取的毛刺问题[7],并且可以处理手指与手指之间轮廓的不光滑问题,从而提高手势图像的纯度,减少因噪声累积迭代而引起的手势识别错误的问题。手势特征的二值化处理主要根据手部和背景的颜色特点,将手势图像提取出来,合理设定手势图像及其背景分割阈值,提高手势特征提取的准确度。
2 基于卷积网络和SVM的手势识别
2.1 卷积神经网络
卷积神经网络(CNN)在基本神经网络的基础上进行卷积和池化操作,将图像样本进行处理后获得特征图,通过特征图训练,减少了原始图像样本训练规模,提高了训练效率,但在输出多类别情况下,需要经过分类器处理。深度卷积神经网络处理流程如图2所示。
图2 深度卷积神经网络处理流程
设样本集X=(x1,x2,…,xn),在第l层中对Mj个样本特征图进行卷积运算,
(1)
式中:l∈[1,n],为卷积神经网络的层序号;j∈[1,Mj],为样本特征图的序号;klj、blj分别为l层中给特征图j赋予的权重及偏置; *为卷积运算;f(·)的表达式[8]为
(2)
卷积操作对象为n个样本的m个特征。卷积核尺寸为5×3和3×3经过卷积运算得到图3所示的矩阵。
图3 卷积运算示意图
设卷积核尺寸为h×w,池化方法有2种[9],分别是
(3)
(4)
其中式(3)为均值池化,式(4)为最大值池化,本文中选择前者进行池化操作。
令M=n/(h×w),样本X=(x1,x2,…,xn)卷积池化后重新得到的样本为
X=(x1,x2,…,xM)
。
(5)
然后,根据卷积池化后的样本按照下式进行转换运算:
(6)
限制条件为
∑aij=1, 0≤aij≤1
。
(7)
根据式(7)得到卷积神经网络的全连接层,然后选择分类器预测样本类别。
设第k个节点的训练输出和实际标签分别为yk和dk,则误差项δk[10]为
δk=(dk-yk)yk(1-yk)
。
(8)
假设第l、l+1层分别有L、M个节点,则第l层节点j的误差为
(9)
式中:hj为输出;wjk为神经元j到l+1层神经元k的权重。
权重更新为
(10)
式中η为学习率。
偏置Δbk(n)的更新方式[11]为
(11)
式中α为偏置更新步长,一般α=1。
调整后的权重为
wjk(n+1)=wjk(n)+Δwjk(n)
,
(12)
调整后的阈值为
bk(n+1)=bk(n)+Δbk(n)
。
(13)
所有节点的误差E为
(14)
当E满足设定的阈值时,迭代停止,并得到稳定的深度卷积神经网络模型。
2.2 CNN全连接层的SVM分类
根据式(6)计算得到全连接层的各个节点输出值,采用SVM进行分类。设输入向量为X=(x1,x2,…,xn),经过SVM映射[12],有
f(x)=sgn((W·X)+b)
,
(15)
式中: sgn()为单位阶跃函数;W、b分别为超平面的法向量和截距。
定义函数K(xi,xj)为SVM的映射函数,本文中选择单位阶跃函数作为其核函数。那么式(15)可以转变为求解最小值问题[13],
(16)
根据对偶关系,可得
,
(17)
式中:yi、yj分别对应样本xi和xj;αi、αj分别为样本xi和xj对应的拉格朗日乘子。
计算式(17)得到
(18)
式(17)最终可以表示[14]为
(19)
2.3 手势识别流程
手势图像经过去噪处理后,获得手势图像特征样本,然后进行卷积神经网络训练,其主要流程如图4所示。
图4 手势识别流程图
3 实例仿真
以下通过实例仿真,验证卷积神经网络的SVM手势识别分类效果。仿真数据来源分别为剑桥大学MSRC-12数据集,手势图像个数为6 244;ASL数据集样本个数为6 650;Marcel数据集图像样本数为4 872, 样本的训练和测试比例为3∶1。差异化设置卷积核尺寸和池化方法,充分验证卷积神经网络和SVM对手势识别性能的影响,最后比较本文算法和常用的手势识别算法[15]在MSRC-12、 ASL和Marcel这3个数据集的性能差异。设置η=0.01,池化方法初始化为最大值池化,卷积核初始为2×2。
3.1 不同卷积核尺寸的手势识别性能
3.1.1 识别准确率
为了验证不同卷积核尺寸的手势识别性能,差异化设置卷积核尺寸,运用MATLAB软件对3个不同数据集进行仿真,结果如表1所示。
表1 不同卷积核尺寸的手势识别准确率
由表可以看出,卷积核尺寸对3种不同的手势样本数据集的识别准确率影响较大,随着卷积核尺寸的增大,手势识别的平均准确率逐渐降低,标准差增大,这可能是卷积核尺寸过大,对手势图像提取的粒度过大,漏掉了部分手势重要特征的缘故。当卷积核尺寸为2×2和3×3时,两者对手势识别的准确率差异较小,均表现出了良好的手势识别准确率,标准差也较小。相同卷积核尺寸的卷积神经网络对3种样本的识别准确率表现出了不同的性能,这主要是因为手势种类存在差异,手势种类越多,相近的手势特征也越多,导致分类的难度加大,容易造成手势分类出现错误,因此手势种类的增加为手势识别算法提出了更高要求。
3.1.2 不同卷积核的收敛时间
以下分别对卷积核尺寸为2×2、 3×3、 4×4和5×5的收敛性能进行仿真,结果如表2所示。由表可以看出,卷积核尺寸越大,算法收敛越快,卷积核尺寸为5×5的收敛速度最快,卷积核尺寸为2×2的收敛速度最慢,这是因为通过最大池化,卷积核尺寸为5×5池化卷积后,参与训练的样本变少,因此训练时间短。在实际操作中,可以综合考量手势识别准确率和手势识别时间,根据表1、 2的性能对比,本文中选择的卷积核尺寸为3×3。
表2 不同卷积核的手势识别收敛性能
3.2 不同池化方法的手势识别性能
在采用差异化卷积核尺寸对3种不同手势数据集进行识别性能分析时,默认选择池化方法为最大值池化,现采用的卷积核尺寸分别用2种池化方法进行性能仿真,结果见表3。由表可以看出,2种池化方法对3种不同数据集的手势识别准确率敏感度不强,两者准确率差异较小,但是收敛时间差异较大,这是因为求解均值比求解最大值需要耗费更多的运算时间,因此最大值池化法更适合于本文算法。
表3 不同池化方法的手势识别准确率和收敛时间
3.3 不同算法的手势识别准确率
为了充分验证本文算法的手势识别性能,采用常用手势识别算法[15]和本文算法分别对MSRC-12样本进行手势识别,结果见图5。由图可以看出,4种算法对MSRC-12手势样本的识别性能差异较大,决策树算法的手势识别准确率约为0.6,本文算法的手势识别准确率超过了0.9。而在手势识别时间方面,决策树算法在30 s左右开始收敛,神经网络算法用时最久,超过50 s才开始收敛。综上而言,本文算法的手势识别准确率性能最好,但识别时间优势不明显。
图5 不同算法的手势识别性能
4 结语
本文中将卷积神经网络和SVM分类相结合的方法用于手势识别,通过合理设置卷积核尺寸和池化方法,可以获得较好的手势识别准确率。下一步研究将在手势识别时间方面进行优化,进一步对卷积神经网络的权重和偏置求解进行优化,以提高卷积神经网络的手势识别效率,提高该算法在手势识别方面的适用度。