基于手部关键点与双层双向LSTM网络的动态手势识别方法

文档序号:37127938发布日期:2024-02-22 21:42阅读:44来源:国知局
基于手部关键点与双层双向LSTM网络的动态手势识别方法

:本发明涉及动态手势识别,具体涉及基于手部关键点与双层双向lstm网络的动态手势识别方法。

背景技术

0、
背景技术:

1、手语是一种被广泛应用于世界各地听障人士和语言障碍者之间的交流媒介,有效地突破了其与社会之间的沟通壁垒。手语具备独立的语法、语义组织和特定的手势逻辑。它通过手的形态、方向和位置,以及体态、手臂姿势、目光接触、口形和面部表情等多种信息传递语义含义,而不依赖于任何口语交流方式,这使得非听障人士难以理解手语的含义。手语识别技术的发展有助于非听障人士与听障人士或语言障碍者之间进行有效沟通。

2、目前,手语识别可分为两类:孤立符号识别(即静态手势识别)和连续符号识别(即动态手势识别)。孤立符号识别是指对独立标识动作进行细粒度识别,而连续符号识别则是指将连贯的手语视频映射至同序注释序列中。由于静态手势识别代表着无上下文或零句型字符,在日常使用场景中存在一定的限制。动态手势具有记忆表达和上下文感知的能力,能够表述时序依赖关系,因此动态手势识别(从原始模态序列到离散标记流)更具发展前景。根据时序特征提取方式的差异,动态手势识别可以分为传统的机器学习模型和流行的深度学习模型。

3、在深度学习领域,研究者们取得一些成果:杨观赐等人提出了基于全局注意力机制的lstm模型,该模型在推断上下文向量时考虑了编码器的全部隐藏状态,实现了对长序列手语的识别;sharma和kumar提出了一种整合3d-cnn和运动历史图像的时空信息追踪模型,该模型可以提取基于动态的空间关注和其相关属性,提升识别精度;dwivedi提出了时间多通道视觉变换器模型(简称tmc-vit),通过使用emg信号对灵巧手动操作任务中的物体运动进行解码,实现了多通道手势追踪;王帅等人提出了连续手语识别的transformer模型,通过线性高维映射来等比例增加注意力头数和嵌入维度,以实现对较长手语序列的整体内部帧挖掘。然而,手语识别仍然面临着一些挑战:手势伪影、手部运动模糊、低分辨率和复杂多变的背景会导致识别困难,限制模型的拟合能力。同时,主体结构的遮挡、光照过曝和欠曝等使得手语的注释在格式和语言粒度上缺乏多样性。这些因素使得手语识别变得更加困难。

4、需要说明的是,上述内容属于发明人的技术认知范畴,并不必然构成现有技术。


技术实现思路

0、
技术实现要素:

1、本发明的目的在于解决现有技术所存在的问题,提供基于手部关键点与双层双向lstm网络的动态手势识别方法,对手语视频数据集进行采集得到关键点信息,用双层双向lstm网络模型对关键点信息手语识别,充分挖掘和利用关键点信息,提高手语识别速度和准确率。

2、本发明通过采取以下技术方案实现上述目的:

3、基于手部关键点与双层双向lstm网络的动态手势识别方法,包括以下步骤:

4、s1、获取手部关键点数据集

5、从手语视频数据集获取手语视频数据并依次进行初始化mediapipe人体姿势模型、给定轴对矩阵进行采样、初始化holistic模型、循环读取视频的每一帧、进行关键点检测并将检测到的关键点信息数据保存到列表中、绘制手部姿势关键点和连接线、将关键点列表转换为numpy数组及对关键点列表进行采样处理,得到输入序列;

6、s2、生成网络模型输入层

7、将上一步获取的输入序列进行时间翻转数据增强处理生成翻转序列,将输入序列和翻转序列作为网络模型输入层;

8、s3、构建双层双向lstm网络模型进行手语动态识别

9、双层双向lstm网络模型包括依次设计的两层双向lstm层,每层双向lstm层包括一正向lstm层和一反向lstm层,输入序列经过正向lstm层得到正向的隐藏状态和细胞状态,正向隐藏状态和细胞状态在正向lstm层内部传递和更新,翻转序列经过反向lstm层得到反向的隐藏状态和细胞状态,反向隐藏状态和细胞状态在反向lstm层内部传递和更新,输入层经过双层双向lstm网络模型处理提取数据时间特征,得到翻转反向输出序列;

10、s4、使用注意力层对翻转反向输出序列进行处理,分别计算正向和反向的注意力加权输出,拼接正向和反向的注意力输出;

11、s5、使用全连接层将注意力加权的输出映射到输出维度。

12、步骤s1中,在手部关键点数据的收集阶段,实例化捕获对象,以便接入和解码连续视频帧,利用mediapipe的手部模型实施手势追踪,从视频帧中鉴别并定位手部的关键点,比对连续帧间关键点位置的变化,收集动态手势视频流的关键点坐标numpy集合,根据时序数据的稀疏程度进行优先经验回放采样,优先经验回放具体步骤如下:

13、s11、计算td误差,对于每个经验计算其td误差:

14、

15、式中,tderror(t)是在时间步t的td误差,rt+1是在时间步t+1获得的实际奖励,γ是折扣因子,用于计算未来奖励的当前估计值,π(a|st+1)是在状态t+1下选择动作a的策略的概率,π(a|st+1)和q(st+1,a;θ)是状态-动作值函数,计算在给定状态和动作下预期的未来回报,θ表示网络的权重;

16、s12、赋予优先级,使用td误差来赋予每个样本优先级,同时给td误差添加正数ε,确保每个经验都有被采样的可能:p(t)=|tderror(t)|+ε

17、式中,p(t)是时间步t的优先级,|tderror(t)|表示时间步t的td误差的绝对值,正数ε用以确保每个经验都有被采样的可能性;

18、s13、计算采样概率

19、根据经验的优先级和超参数α来计算每个经验被采样的概率:

20、

21、式中,p(t)是在时间步t的经验被采样的概率,p是该经验的优先级,α是一个介于0和1之间的超参数,用来控制优先级的影响程度;

22、s14、权重更新

23、当采样并使用经验进行学习后,计算重要性采样权重来调整该经验在更新q值时的影响:

24、

25、式中,n是经验池的大小,p(t)是经验被采样的概率,β是一个介于0和1之间的超参数:

26、

27、式中,ρ是衰退因子,θ是学习率,是过去梯度平方的移动平均值,是关于θ的损失函数梯度。

28、步骤s1中,在关键点检测过程中,引入像素级掩膜和形变波动变换,用于指导网络的注意力并追踪手势细粒变化;像素级掩膜的连续形式表达式为:

29、

30、像素级掩膜的离散形式表达式为:

31、

32、式中,e(u)为形变向量场u的能量;ω为区域的定义,是一个二维或三维的空间;u1和u2为u的分量,在二维空间中,表示u在x和y方向上的变化;这四项表示u的梯度;dx为积分的微元,表示空间中的一个小区域;λ为正则化参数,该参数控制u的大小对能量的贡献;i和j为在图像或者一个离散的网格中的坐标;ui+1,j、ui-1,j、ui,j+1、ui,j-1这四项表示在离散网格中,u在各个方向上的差异;n和m为表示图像或离散网格的大小;

33、所述形变波动变换表达式为:

34、

35、i(x,y)=wr·r(x,y)+wg·g(x,y)+wb·b(x,y)

36、式中,a(x,y)为像素(x,y)的注意力权重,i(x,y)为输入图像在(x,y)的像素值,分母的求和操作是对整个图像进行的;r(x,y)、g(x,y)和b(x,y)分别表示像素(x,y)的红色、绿色和蓝色通道的强度,而wr、wg和wb是对应通道的权重。

37、步骤s2中,针对在各个时间步长中包含高维特征的rgb通道时间序列,结合时间平移和时间噪声注入使用时间翻转增强,将每个rgb通道视为独立的序列,并对每个通道的序列进行翻转;所述时间平移是将整个时间序列向前或向后移动一定的时间单位,使模型对于事件发生的绝对时间的依赖性降低,而更注重事件发生的相对顺序或者模式,具体步骤:

38、设获取到的输入数据是一个t×m×n×3的张量x,x∈rt×h×w×c,其中t是时间步长的数量,m和n是每个时间步长中的图像高度和宽度,3表示rgb三个颜色通道,张量的每个元素xijkl表示在时间i,高度j,宽度k,颜色通道l的像素值;选择一个平移步数s,将张量x沿时间轴移动s步,得到新的张量x′,为新的张量x′分配相应的空间,可以表示为:

39、x′∈rt×h×w×c

40、定义新的张量x′的每个元素x′i,j,k,l,可以表示为:

41、x′i,j,k,l=x(i+s)modt,j,k,l

42、式中,(i+s)modt表示在时间轴上对i进行平移,modt保证索引在有效范围内,这个过程可以用以下方程进行表示:

43、

44、对于每个j∈[0,h),k∈[0,w)和l∈[0,c),上述方程组都成立;

45、x′=x(i+s)modt,j,k,l式中,mod表示模运算,保证索引在有效范围内。

46、所述时间噪声注入是为时间序列添加随机噪声,以模拟在真实世界中可能出现的测量误差或其他形式的不确定性,使得模型更健壮,能够处理实际应用中的噪声数据,具体步骤:

47、设获取到的输入数据是一个t×m×n×3的张量x进行噪声注入,为张量x的每个元素添加噪声,得到新的张量x′:

48、x′=xi,j,k,l+noise(i,j,k,l)

49、式中,noise(i,j,k,l)为高斯噪声生成函数;

50、假设有一个四维张量x∈rt×h×w×c,其中t是时间步长的数量,h和w分别是图像的高度和宽度,c是颜色通道的数量,还需要定义一个噪声生成函数g,这个函数产生的噪声满足高斯分布,定义一个新的张量x′,其元素x′i,j,k,l为原张量的对应元素加上生成的噪声:

51、x′i,j,k,l=xi,j,k,l+g(0,σ)

52、式中,g(0,σ)表示均值为0,标准差为σ的高斯噪声,上述过程表示为方程组:

53、x′0,j,k,l=x0,j,k,l+g(0,σ)

54、x′1,j,k,l=x1,j,k,l+g(0,σ)

55、x′t-1,j,k,l=x(t-1),j,k,l+g(0,σ)

56、对于每个j∈[0,h),k∈[0,w)和l∈[0,c),上述方程组都成立。

57、步骤s3中的,所述正向lstm层和反向lstm层分别包括多个lstm单元,所述lstm单元包括输入门、遗忘门、输出门、细胞状态和隐藏状态,所述输入门用于控制输入数据的权重和信息流入细胞状态,所述遗忘门用于控制细胞状态中需要被遗忘的信息,所述输出门用于控制从细胞状态到隐藏状态的信息流出,所述细胞状态是lstm单元的记忆部分,负责存储和传递信息,所述隐藏状态是lstm单元的输出,是下一个时间步骤的输入。

58、步骤s3中,第一层双向lstm层为接收并处理手语关键点序列输入x∈rinput_size,同时考虑数据的正向和反向信息,lstm通过刻画该关键点序列的动态变化,捕获手语的时间特性:

59、ht=f(w*[ht-1,xt]+b)

60、式中,ht是隐藏状态,xt是输入关键点,w和b是学习的权重和偏置,f是激活函数;

61、对于每个时间步t,第一层的正向lstm执行以下计算:

62、i1,t=σ(wi1*xt+ui1*h1,t-1+bi1)

63、f1,t=σ(wf1*xt+uf1*h1,t-1+bf1)

64、o1,t=σ(wo1*xt+uo1*h1,t-1+bo1)

65、g1,t=tanh(wg1*xt+ug1*h1,t-1+bg1)

66、c1,t=f1,t*c1,t-1+i1,t*g1,t

67、h1,t=o1,t*tanh(c1,t)

68、式中,i,f,o,g分别表示输入门、遗忘门、输出门和记忆单元的候选状态;h和c分别表示隐藏状态和记忆状态;w表示输入与隐藏状态之间的权重,u表示输入与候选记忆单元之间的权重,b表示偏置向量;σ和tanh分别表示sigmoid函数和双曲正切函数;下标1表示第一层,t表示时间步;

69、lstm在此基础上增加反向的信息流,反向lstm计算同上,但是时间步是反向进行的设隐藏层的维度为hidden_size,则正向和反向信息的计算可以表示为:

70、

71、

72、式中,→和←分别表示正向和反向传播,为权重矩阵,为偏置项;

73、由于lstm是双向的,故其输出维度为2*hidden_size,为了增强模型表达能力,引入残差块和跳跃连接,对于每一层的输出ht添加跳跃连接,使得它可以直接传播到后面的层,即:

74、

75、式中,f(·)表示层l的函数映射,wl为该层的权重,该连接可帮助网络在不增加模型参数和计算复杂度的情况下增大感受野,使得模型能够捕捉到输入数据中的长距离依赖关系;

76、在激活函数的选择上,使用参数化relu,即:

77、f(x)=max(0,x)+amin(0,x)

78、式中,α是一个可学习的参数,通过引入更多的非线性,使得模型能够学习更复杂的映射关系,prelu相比于relu更具灵活性,因为它引入了可学习的参数,使得网络在训练过程中可以自适应地调整激活函数的形状;为提高模型的训练稳定性和速度,使用批量标准化:

79、

80、式中,μ和σ2分别为x的均值和方差,∈是一个很小的数以防止除以0,批量标准化可以使每一层的输入都近似于零均值和单位方差,这样可以加速模型的收敛,同时还有助于防止过拟合,提高模型的泛化能力。

81、步骤s3中,第二层双向lstm层接收第一层双向lstm层的输出,并进行进一步的处理,以获取更丰富的动态特征,其计算过程:

82、i2,t=σ(wi2*h1,t+ui2*h2,t-1+bi2)

83、f2,t=σ(wf2*h1,t+uf2*h2,t-1+bf2)

84、o2,t=σ(wo2*h1,t+uo2*h2,t-1+bo2)

85、g2,t=tanh(wg2*h1,t+ug2*h2,t-1+bg2)

86、c2,t=f2,t*c2,t-1+i2,t*g2,t

87、h2,t=o2,t*tanh(c2,t)

88、式中,i,f,o,g分别表示输入门、遗忘门、输出门和记忆单元的候选状态;h和c分别表示隐藏状态和记忆状态;w表示输入与隐藏状态之间的权重,u表示输入与候选记忆单元之间的权重,b表示偏置向量;σ和tanh分别表示sigmoid函数和双曲正切函数;下标2表示第二层,t表示时间步;

89、其输出维度为2*hidden_size,因本层同样需要考虑前向和后向的信息,为进一步提高模型性能,引入注意力机制,注意力机制可以使模型在处理序列数据时,对不同的输入元素赋予不同的注意力权重,从而更好地捕捉序列中的重要信息,使用scaled dot-product attention:

90、

91、式中,q,k,v分别为查询、键和值,dk为键的维度;在计算过程中,首先计算查询和键的点积,然后除以进行缩放,接着通过softmax函数将结果转化为概率分布,最后用该分布对值进行加权求和;

92、此外,在第二层双向lstm层的输出上应用了归一化操作,使得输出的每一维都有相同的尺度,提高模型的稳定性,加快训练速度:

93、

94、式中,xi是输入,μb和分别是批量的均值和方差,是归一化后的输入,γ和β是可学习的缩放因子和偏移项,∈是一个很小的数以防止除以0。

95、步骤s4中,所述注意力层为输入中的每个元素分配权重,所分配权重反映了该元素的重要程度,所述注意力层包括三个子注意力层中,注意力机制用于对第二层双向lstm层的输出进行加权,从而让模型能够更加专注于关键的手势,注意力权重计算公式:

96、

97、

98、

99、式中,eij是未归一化的注意力权重,αij是归一化的注意力权重,ci是上下文向量,hj是隐藏状态,w、u和v是三个子注意力层的学习权重,tanh和exp是激活函数;

100、三个子注意力层的计算过程分别由w、u和v三个线性层完成,其过程如下:

101、s41、计算注意力权重

102、将双向lstm的输出通过w和u这两个线性层计算得到注意力权重,计算步骤为:

103、使用tanh激活函数处理w的输出:

104、

105、使用σ激活函数处理u的输出:

106、

107、将上述两个步骤的结果进行逐元素相乘,得到注意力权重:

108、

109、s42、计算注意力分数

110、将上一步计算得到的注意力权重通过v层得到注意力分数,表达式为:

111、sij=vt·eij

112、s43、计算注意力概率

113、对注意力分数应用softmax函数,使得所有的分数归一化到0到1之间,且总和为1,从而得到每个位置的注意力概率,公式如下:

114、

115、s44、引入注意力机制

116、将上一步骤得到的注意力概率应用到lstm的输出上,计算注意力加权的输出,该过程可以看作是将每个位置的输出乘以其对应的注意力概率,然后将所有位置的结果求和,得到最终的注意力输出:

117、

118、s45、合并前向和反向的注意力输出

119、将前向和反向的注意力输出进行拼接,得到最终的输出:

120、

121、

122、步骤s5中,所述全连接层整合前述各卷积层或池化层提取到的局部特征信息,融合成全局的特征描述,该全局信息不仅包含各单一特征细节,还嵌入特征间的关系,为后续的分类任务注入更丰富的信息;

123、在隐藏层引入多层感知前馈机制,神经元数量可根据任务的复杂度以及数据集的特性进行动态调整:

124、设输入为其中n(0)是输入层神经元的数量;

125、隐藏层l的权重矩阵和偏置向量分别为w(l)和b(l),则第l个隐藏层的输出h(l)为:

126、h(l)=f(w(l)th(l-1)+b(l))

127、式中,当l=0时,h(0)即为初始输入x,f(·)是激活函数;

128、设输出层的权重矩阵为w(l+1),偏置矩阵为b(l+1),则输出层的输出y为:

129、y=g(w(l+1)th(l)+b(l+1))

130、式中,g(·)是输出层的激活函数;

131、通过寻找理想的平衡点,使得模型能有效地揭示数据中的复杂模式,同时避免引入过多的参数,以防止过拟合现象的出现;

132、采用残差连接来优化模型输出:

133、z(l)=w(l)a(l-1)+b(l)

134、a(l)=φ(z(l))+a(l-1)

135、式中,z(l)是第l层的加权输入,a(l-1)是上一层的激活,w(l)和b(l)是权重和偏置参数,φ是激活函数;

136、对全连接层进行增强,引入批量标准化层,它通过对每批数据进行标准化处理,使输出的平均值接近0,方差接近1,从而在训练过程中增强网络的稳定性。该方法降低了网络对权重初始化选择的敏感度,并有助于防止梯度消失问题:

137、计算出每一批数据的均值和方差:

138、

139、通过减去均值并除以标准差来标准化输入:

140、

141、引入缩放因子γ和偏移因子β:

142、

143、引入嵌入层(embedding),对具有高维离散特征的数据进行处理。嵌入层可将每个离散特征映射到低维的实数向量空间,使得相似的输入被映射到接近的嵌入向量,从而有效地捕捉和利用输入特征之间的关系。

144、设每个手部关键点序列有m个关键点,每个关键点为k个可能位置中的任何一个。为每个可能的关键点位置初始化嵌入矩阵ekeypoint,其大小为k×d,其中d是嵌入向量的维度。

145、对于每个手部关键点序列,查找各个关键点在嵌入矩阵中的对应行来得到其嵌入向量,并将所有关键点的嵌入向量进行拼接,得到表示整个关键点序列的嵌入向量:

146、ei,m=ekeypoint[ki,nv:]

147、

148、式中,ei,m是第i个手部关键点序列中第m个关键点的嵌入向量,ki,m是该关键点的位置索引,ekeypoint是关键点嵌入矩阵,ei是整个第i个手部关键点序列的嵌入向量。

149、基于该方法,可以学习每个关键点位置的嵌入,同时得到表示整体关键点序列的嵌入向量,更好地捕捉手部关键点序列中关键点之间的相互关系。

150、添加循环层,用于处理序列数据,循环层保留了先前时刻的信息,从而使得模型能够捕捉到输入数据中的时间序列性质,隐藏状态ht是基于前一时刻的隐藏状态ht-1和当前的输入xt计算得出的:

151、ht=φ(whhht-1+wxhxt+bh)

152、式中,whh和wxh是权重矩阵,bh是偏置项,φ是非线性激活函数,该结构允许网络记住过去的信息,并在必要时使用该信息来影响当前的输出。

153、本发明采用上述方法,能够带来如下有益效果:

154、首先将手语视频数据集转为关键点,基于关键点进行手势识别,使得网络模型更加关注重要的手部关键点,有助于提高识别的准确性和效率。通过设计双层双向lstm层能够更加充分挖掘保留关键信息,提高网络模型训练数据质量,提高网络模型识别效率。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1