本发明属于计算机视觉和机器学习方法,具体涉及基于人体骨骼序列时空信息的动作识别方法。
背景技术:
1、基于人体骨骼序列的动作识别方法通过对人体动作视频中提取的相应地骨骼序列进行特征提取、编码和分类实现人体动作的识别。相对于基于视频帧的方法,骨架动作识别方法不容易受到光照或者是背景颜色混淆等这些外界环境条件的影响,这一特性可以增强动作识别技术的鲁棒性,且基于骨骼的方法信息冗余少,运动特征突出,因此受到了广泛的关注。基于深度学习的方法对人体骨骼序列通过对大量已知类别的样本的训练,得到一个深度特征提取与分类联合的分类器,进而用于给定动作样本的类别识别。
2、现有基于深度学习的方法在对人体骨骼动作序列识别时,往往不太关注人体骨骼的关节点之间的依赖关系,有些方法分时段对单帧动作中关节点的特征进行时间、空间卷积,因此会丢失掉单帧动作的位置信息。
技术实现思路
1、本发明的目的是提供基于人体骨骼序列时空信息的动作识别方法,能够得到单帧内关节点的时空深度特征表示。
2、本发明所采用的技术方案是,基于人体骨骼序列时空信息的动作识别方法,具体按照以下步骤实施:
3、步骤1、对人体骨骼关节点数据进行预处理;
4、步骤2、对人体骨骼关节点数据时间-空间深度特征提取;
5、步骤3、基于序列级别的分类token实现动作分类。
6、本发明的特点还在于:
7、步骤1具体按照以下步骤实施:
8、步骤1.1、人体骨骼中各关节点的速度计算;
9、使用帧差法得到动作序列x中各帧中每个关节点的速度:动作序列x中第t帧x(t,:,:)减去第t-1帧x(t-1,:,:),即可得到各个关节点在第t帧的速度spd_x(t,:,:),如下公式(1)所示:
10、spdx(t,:,:)=x(t,:,:)-x(t-1,:,:) (1)
11、此时,得到动作序列x的速度序列spd_x,将速度序列与动作序列进行拼接,得到了包含运动信息的人体骨骼动作序列x=[x,spd_x],此时,其中c=cpos+cspd;
12、步骤1.2、动作序列x对应的以单一骨骼点为单位的patch序列划分;
13、以单一骨骼点为单位进行patch划分,从而得到整个动作序列x对应的patch序列;
14、首先针对单帧,以单一骨骼点数据为单位划分为m个patch,再针对整个动作序列x总共t帧的每一帧进行相同的patch划分操作,则有:
15、
16、上式(2)中,x(m,t)代表第t帧的第m个patch;
17、步骤1.3、针对patch序列进行线性嵌入得到对应token序列;
18、通过一个随机生成的可训练矩阵将原始patch信息映射到一个嵌入向量中得到其对应的token,该过程数学表达为:
19、
20、上式(3)中d代表嵌入向量的维度,该维度根据实际需求进行调整,从而得到patch序列对应的token序列,两序列长度相同,维度不同;
21、步骤1.4、针对token序列进行嵌入时空编码;
22、步骤1.5、在嵌入token序列头部引入可训练的序列级动作分类token。
23、步骤1.4具体为:对所有token按照先空间再时间的顺序加入时空编码position,则对于第t帧的第m个token,其时空编码position的数学表达式为:
24、position=m+(t-1)·m (4)
25、上式(4)中m为一帧中的人体骨骼关节点数,t代表当前帧,m代表当前帧中当前token,然后针对原始时空编码position序列进行线性嵌入,通过一个随机生成的可训练矩阵将原始时空编码映射到一个嵌入向量中得到其对应的嵌入时空编码则第t帧的第m个token的嵌入时空编码表示为:
26、
27、上式(5)中d代表嵌入向量的维度;
28、将token序列与其对应的嵌入时空编码进行矩阵相加,则第t帧的第m个token的嵌入形式z(m,t)表示为:
29、
30、步骤1.5具体为:在嵌入token序列头部,即第0帧第0个token位置处额外加入一个可训练的序列级动作分类为后续动作识别的展开做准备,针对某一动作序列样本,得到了长度为mt+1的token序列,数学表示为:
31、
32、步骤2具体按照以下步骤实施:
33、步骤2.1、token序列掩码;
34、经步骤1预处理后得到的嵌入token序列使用mask进行掩码操作,令掩码其中各个元素的取值只取0或1:给定掩码比例k,随机生成包含k·mt个0元素的掩码矩阵,然后对矩阵中元素为0的mask(m,t)对应的嵌入token即z(m,t)的值全部清0,从而实现掩码操作;
35、步骤2.2、基于transformer编码器对输入token序列进行多头注意力机制计算并编码。步骤2.2中具体按照以下方式实施:
36、步骤2.2.1、计算输入token序列的query-key-value;
37、针对于单个block的单个头(l,a)将输入自己异化成query,key,value,其异化过程表示为:
38、
39、上式(8)中,分别代表输入token序列的query,key,value值,上标确定其block与注意力头,下标确定其token位置,即第t帧的第m个token在第l个block的第α个注意力头上计算的query-key-value值,分别代表query,key,value的权重矩阵,该矩阵由随机生成进行初始化,并在后续训练中通过学习更新,ln则代表层归一化操作,表示前一个block的编码表示,h则被规定为a代表每个block的注意力头数;
40、步骤2.2.2、采用先时间后空间策略计算输入token序列中各token的自注意力值;
41、以点乘注意力的方式,用当前token的query和其他token的key分别做计算,即可得到该token相对于其他token的注意力值σ,时间维度上同一空间位置tokens间的注意力,即时间注意力σtime,其数学表达式为:
42、
43、上式(9)中,sm即激活函数softmax,用于对权重矩阵进行归一化处理,在完成时间注意力计算后,再进行同一帧内空间上的注意力值计算,即时间注意力σspace,其数学表达式为:
44、
45、步骤2.2.3、基于多头注意力机制的token序列编码;
46、针对单个block单个注意力头即第l个block第a个注意力头,输入token序列的每个token的加权和表达式为:
47、
48、上式(11)中上标均表示第l个block第a个注意力头,σ的下标表示两token之间计算的注意力值;
49、将输入token序列的每个token各注意力头计算得到的加权和进行拼接,然后对拼接的多头信息进行投影,则第l个block中,输入token序列的每个token对应的编码如下式:
50、
51、上式(12)中wo.为投影矩阵,负责将多头信息投影到原始维度d;
52、在计算得到时间注意力值后通过上式得到后,以序列为新的输入重复步骤2.2.1对其进行query-key-value计算,得到其query,key,value值,再代入空间注意力计算空间注意力最后由上式得到序列,并将通过mlp即全连接层,并加入残差连接,计算公式如下:
53、
54、上式(13)中ln则代表层归一化操作,mlp代表全连接层,由上式得到融合了时空信息的编码序列其余block操作一致,且上一层block的输出为下一层block的输入,最终得到对于原始人体骨骼关节点数据的编码即新特征。
55、步骤3中将位于编码序列头部的分类token编码单独拿出,层归一化后接入一个mlp层直接进行分类任务训练,其表达式为:
56、
57、上式(14)中y为预测值,mlp代表全连接层,此处的全连接层输入为经层归一化的分类token编码,输出维度由分类任务的类别总数classes决定;
58、动作分类模型使用cross entropy loss作为损失函数loss进行训练,其表达式为:
59、
60、上式(15)中为实际值即标签;
61、最终输出一个预测向量classes代表着动作类别总数,各分量为每个动作类别对应的概率,取最大概率所代表类别为预测动作类别。
62、本发明的有益效果是:本发明提供了基于人体骨骼序列时空信息的动作识别方法,将人体骨骼关节的速度信息引入人体骨骼动作序列的表示中,增加了时间维度上信息表示,以单一关节点为单位,通过注意力机制进行时-空编码,使得各个关节点能够描述时间-空间与其他关节点的依赖关系及其在动作序列中的重要性,可训练的序列级别的动作分类token引入,从动作序列整体的角度描述动作,因此有利于进一步的分类任务的实现,人体动作序列的掩模操作处理,一方面加快人体动作序列的编码过程,另一方面则增加了动作识别算法的稳定性、泛化性。