基于多特征融合的动态手势识别

2021-08-12 08:33李东东张立民邓向阳
计算机应用与软件 2021年8期
关键词:手部关键点手势

李东东 张立民 邓向阳 姜 杰

(海军航空大学 山东 烟台 264000)

0 引 言

手势识别应用范围广,在军用和民用均有涉及。在舰载直升机模拟训练系统中[1],手势识别方法已经得到了应用,实现着舰指挥员的模拟训练。在民用方面,由于聋哑人需要通过手势进行交流[2],通过手势识别软件可以较好地知道其表达的意思,实现与正常人的交流。

手势动作识别与人体姿态动作识别相比,存在以下难点:

1) 手部区域比较小,动作幅度相较于人体姿态动作不明显,识别起来较为困难。

2) 手部区域灵活度较高,手部动作复杂且部分动作相似度高。

3) 动态手势动作单个动作持续时间较短,对实时性要求较高。

在实际情况中迫切需要实时性好、操作简单、识别率高的指挥动态手势识别系统,因此动态手势的识别研究具有重要意义。

动态手势的获取方式根据获取数据信息的方法的不同,分为三类:使用数据手套[3]、视觉摄像机[4]和红外传感器[5]。

由数据手套使用肌电传感器来获取手势信息的方式,受距离的限制。这种限制有一定的束缚感,体验感不是很好。

微软公司推出的Kinect设备以及其配合推出的Kinect for Windows SDK开发工具包能够获得人体图像的深度信息,在人体关节位置识别及跟踪有着较好的表现,为后续的动作识别提供了有力支撑。文献[6]运用一种改进的DTW算法使用Kinect获得的深度信息对动态手势进行识别。文献[7]提出利用改进的ViBe算法处理深度图像进行人体动作检测取得了较好的效果。

Leap Motion是一个使用红外摄像头采集用户手部数据的传感器,并能返回手势相关的参数信息。相比图像数据,Leap Motion返回的数据更简洁。童政[8]通过提取单指特征和指间特征对动态手势进行描述,并使用隐条件分类器模型进行动态手势识别。

动态手势相比静态手势的识别,需要考虑时间因素,这给动态手势识别带来较大的考验。而上述三种动态手势数据信息获取方式,均需要相关配套设备,增加了研究成本,同时不利于携带及普及。

现有的动态手势识别分类器模型有:支持向量机(Support Vector Machine,SVM)模型[9]、动态时间规整(Dynamic Time Warping,DTW)模型[10-11]、隐马尔可夫模型(Hidden Markov Model,HMM)模型[12-13]、BP(back propagation)神经网络模型[14],以及长短期记忆网络(Long Short-Term Memory,LSTM)模型[15]。

DTW算法与HMM算法在序列匹配识别中应用较为广泛,文献[16]分别使用DTW与HMM算法在手势识别中应用测试,实验表明了DTW算法有更好的表现。

针对常用的动态手势数据信息获取均需要相应的设备,本文使用开源姿态识别平台OpenPose进行人体骨架关键点的获取。OpenPose[17]由CMU Perceptual Computing Lab创造,能够较准确地识别出人体骨架关键点,同时实时性比较好、开源性强。随着不断的研究,OpenPose目前可以识别包括身体、手部、面部和足共135个关键点,在没有遮挡及正常光照下,在保证实时性的同时,能够较准确地识别人体关键点的位置。

本文利用OpenPose获得手部的关键点位置,建立手部模型。根据不同手势相应的手指角度和位置变化,将角度与长度特征进行融合,使用FastDTW算法计算手势的时间序列与模板中序列的距离,取最短距离所对应的模板,即为匹配的手势。此方法能够较好地识别出动态手势。

1 手部模型建立

1.1 关键点提取

OpenPose可以提取到手部21个关键点,如图1所示[18]。

图1 手部21个关键点示意图

利用OpenPose的开源程序获取手部关键点位置,对关键点位置进行连线,如图2和图3所示。

图2 关键点识别图 图3 手部识别骨架图

1.2 手部特征提取

将手部第i个手指的指尖位置(xi,yi)与基点位置的手掌底部(x0,y0)进行连线,发现在手部进行动作变化的时候,指尖位置与基点位置的角度θ及长度d会有所变化,所以可以将手部手势的图片转化为与时间相关的指尖与基点角度的变化及长度的变化,将数据进行简化降维,如图4所示。

图4 手指顶点与手部基点示意图

利用欧拉距离可以求得手指指尖位置(xi,yi)与基点位置(x0,y0)的距离d为:

(1)

根据坐标关系可以得到指尖位置与基点位置的角度θ(如图5所示)。

图5 长度和角度关系图

(2)

由此可将图像信息降到关键点的位置坐标的角度及长度信息的变化,使所要处理的数据量明显下降。若将图片作为输入量,将每幅大小为m×n图片的各个像素点的RGB信息作为输入,共有3mn个参量,则每幅图片的计算复杂度为O(mn·3),再考虑时间信息t,则复杂度进一步增加至O(mn·3·t)。而简化之后考虑角度及长度与时间的变化的计算复杂度O(θt)和O(dt),计算量明显下降,提高了运行速度,减少了计算的时间。

2 DTW算法

DTW算法是通过相似度来对不同长度的序列进行比较,图6为DTW算法对两个不同的序列进行匹配的示意图。

图6 两个序列匹配示意图

2.1 标准DTW算法

标准的DTW算法原理如下:

假设有两个序列X={x1,x2,…,xi,…,xm}和Y={y1,y2,…,yj,…,yn},首先构造一个n×m的距离矩阵d(i,j),d(i,j)表示序列的分量xi和yj之间的距离,一般距离使用欧氏距离。

当前位置的距离矩阵d(i,j)与可以到达该点的最小的邻近点的累积距离之和为累积距离矩阵D(i,j):

D(i,j)=d(i,j)+min{D(i-1,j),D(i,j-

1),D(i-1,j-1)}

(3)

当i=m,j=n时,累积距离矩阵D(m,n)为序列X与Y的路径距离。

2.2 改进的DTW算法

本文使用改进的DTW算法为FastDTW[19],该算法主要通过限制可选择的区域和对数据进行抽象来对DTW算法进行加速的,主要分为三个步骤:

(1) 粗化。对原始序列进行数据抽象,进行多次迭代用较少的数据点来尽可能地表示原来数据序列曲线。

(2) 投影。在粗化后的序列上使用DTW算法。

(3) 细化。通过局部调整线路路径,优化粗化后投影的线路路径。

图7中,第一幅图是在较粗粒度空间下使用DTW算法得到的路径,第二幅图表示在第一幅图的基础上对方格细化,在横向、竖向、斜向扩展一个粒度,再使用DTW算法进行计算,得到归整后的路径。第三幅图和第四幅图也是按照此步骤进行迭代计算。

图7 FastDTW算法流程图

利用FastDTW与DTW进行比较,FastDTW所搜索的范围与DTW相比,搜索范围小,速度更快,时效性更好。

2.3 手部特征融合

有M个模板角度和长度特征序列以及N个待识别角度和长度特征序列。其中第a(a∈M)个模板角度序列Θa={θ1,θ2,…,θi,…,θm}与第b(b∈N)个待识别角度特征序列Θb={θ1,θ2,…,θj,…,θn}利用FastDTW求取序列之间的路径距离Dθ(a,b)(m,n)。同理也可以求取到模板长度特征序列DISTa={dist1,dist2,…,disti,…,distm}与待匹配的长度特征序列DISTb={dist1,dist2,…,distj,…,distn}的路径距离DDIST(a,b)(m,n)。最后得到输出的角度与长度特征融合的距离为:

Dθd(a,b)(m,n)=Dθ(a,b)(m,n)+DDIST(a,b)(m,n)

(4)

若在M个模板手势中找到模板手势A使得Dθd(A,b)(m,n)最小,则模板手势A与待测手势b相匹配。

3 动态手势的识别

根据实际经验通常一个手势的时间约为1 s,将30帧作为一个模板手势的长度,将30帧视频放入OpenPose中得到手部关键点的位置坐标信息,将此坐标利用上文的方法将位置坐标转化为角度信息θ及长度信息d的序列。所得到的角度序列与长度序列由于OpenPose的关键点识别会存在一些偏差,会产生一些奇异点,需要先设置阈值将这些奇异点去掉。设该点为xi,最小阈值为ε1,最大阈值为ε2,若ε1

由图8中可以看出,添加阈值后去掉了奇异点,使得模板更加具有通用性。

图8 添加阈值的曲线对比图

之后将需要匹配的动态手势与模板手势利用FastDTW算法计算两者的相似度,根据相似度来选择相近的手势。总体的流程如图9所示。

图9 动态手势识别流程

4 实验与结果分析

本实验基于Tensorflow,使用GPU1070进行加速。为验证算法的有效性,本文参照美国舰载航空兵标准指令[20],定义了4种动态手势,分别是“松开刹车”“做最后准备”“准备离舰”“左转弯”,如图10所示,并给每个手势构建了五个特征模板。

图10 四种手势示意图

将每个手势的图片使用OpenPose提取到手部关键点的坐标利用式(1)、式(2)进行处理得到四个手势五个手指的角度变化图及长度变化如图11、图12所示。

手势模板中每个模板含有300帧手势图,通过OpenPose提取关键点进行预处理后,可得到手势的角度变化序列及长度变化的序列。

本文有三名测试者参与实验,每人进行100次手势动作,得到表1实验结果。

表1 四种动态手势识别结果

由表1所示,在每个手势300次的手部动作检测中,识别正确次数较多,识别准确率较高。四个手势中“做最后准备”动作识别率最高,达到了99.33%。因为此动作与其他动作区分度较大,识别较为精确。“松开刹车”和“左转弯”手势动作识别准确率也较高,为91.67%和96.33%。但是在“准备离舰”动作识别中,识别容易出现错误,准确率为90%,与其他三个动作相比较低,因为实验者的动作习惯不同,若手势动作幅度过小,容易识别成“左转弯”的手势动作。

在计算时间方面,FastDTW和DTW的速度在序列长度较短时,区别不是很明显,但是随着序列X、Y变长,计算时间逐渐变长,而FastDTW的时间明显低于DTW的计算时间,如图13所示。

图13 FastDTW与DTW计算时间对比图

本文选用的模板序列长度为30帧,所以角度序列和长度序列为30,FastDTW的计算时间0.015 619 s,DTW的计算时间为0.015 622 s,对于本实验的结果没有太大区别。但是在较复杂手势中,FastDTW能大大缩短计算时间,实现手势识别的实时性,为后续应用提供了可实施性。

5 结 语

本文利用OpenPose提取了手部的关键点位置,将图片信息转化为坐标信息,进一步提出了将坐标信息转为角度变化序列及长度变化序列,减少了计算量,提高了实时性,且在识别准确率方面,识别动态手势较为准确,同时对于设备要求不高,可在人机交互、手势识别方面等多个领域进行应用。但对于区分度不高的动态手势识别容易出现错误,且因为每个实验者的习惯不同,在做手势时,不同人对于特定含义动作的理解不同,所做的动作不尽相同,在这些方面有待继续研究。

猜你喜欢
手部关键点手势
论建筑工程管理关键点
水利水电工程施工质量控制的关键点
高通联手Ultraleap 为XR2提供手部交互解决方案
挑战!神秘手势
厨房料理小妙招——山药去皮手不痒的窍门
利用定义法破解关键点
胜利的手势
机械能守恒定律应用的关键点
认手势说数字