1.一种基于人体关键点的实时视频流手语识别方法,其特征在于:所述方法包括以下步骤:
步骤1:逐帧读取输入的手语视频流;
步骤2:采用人体姿态估计网络,提取读取的任一帧图像中的人体关键点;
步骤3:逐帧计算当前帧与上一帧的动作差异度并进行累加;
步骤4:当t时间内累积的差异度高于阈值T1时,判定为手语动作开始;当差异度低于阈值T2时,判定为动作静止,采用卷积神经网络判断当前帧动作是否为结束动作;T1>T2>0;
步骤5:保存从手语动作开始到结束的时间段内,所有帧的人体关键点数据,得到人体关键点序列;
步骤6:采用时空图卷积网络,对步骤5中的人体关键点序列进行特征提取,得到特征序列X;
步骤7:采用编码器‑解码器网络,以步骤6中的特征序列X作为输入,输出完整的句子,实现连续手语识别。
2.根据权利要求1所述的一种基于人体关键点的实时视频流手语识别方法,其特征在于:所述步骤2包括以下步骤:步骤2.1:将任一帧图像输入人体姿态估计网络,输出关键点信息v,v={(x1,y1,c1),(x2,y2,c2),...,(xM,yM,cM)}其中M表示输出的关键点个数,以xi、yi、ci分别表示第i个关键点的x坐标、y坐标和预测置信度,M≥1,i为关键点的索引;
步骤2.2:筛选对于手语识别的关键点,记为
v′={(x1,y1,c1),(x2,y2,c2),...,(xN,yN,cN)}其中,N为关键点个数,1≤N≤M。
3.根据权利要求1所述的一种基于人体关键点的实时视频流手语识别方法,其特征在于:所述步骤3包括以下步骤:步骤3.1:读取当前帧的关键点坐标,
P={(x1,y1),(x2,y2),...,(xN,yN)}以Pcur为当前帧的关键点坐标集合,以Ppre为上一帧的关键点坐标集合,若当前帧是视频流的第一帧,则令Pcur=P,Ppre=P,否则,令Pcur=P;
步骤3.2:使用当前帧与上一帧对应的关键点之间的欧氏距离计算相邻帧的关键点在空间上的差异度δ,其中,x_curi和y_curi分别表示当前帧的关键点坐标集合Pcur中第i个关键点的x坐标和y坐标;x_prei和y_prei分别表示前一帧关键点坐标集合Ppre中第i个关键点的x坐标和y坐标;
步骤3.3:重复步骤3.2,将差异度δ保存在队列中;队列长度为L,L=t×fps,其中t表示时间阈值,fps表示视频流每秒传输的帧数。
4.根据权利要求3所述的一种基于人体关键点的实时视频流手语识别方法,其特征在于:所述步骤4中,对于t时间内累积的差异度S,当S>T1时,表示手语动作开始,当S<T2时,表示动作静止,把当前帧图像输入卷积神经网络中,若判断为无效手语动作,则表示手语动作结束。
5.根据权利要求3所述的一种基于人体关键点的实时视频流手语识别方法,其特征在于:所述步骤5包括以下步骤:步骤5.1:保存一段手语动作的所有帧的人体关键点信息序列V,V={v1,v2,...,vL}
其中,L表示这一段手语动作的帧数;
步骤5.2:基于时空图卷积模型的输入维度,采用抽帧或补空帧的方法把步骤3.3中关键点信息序列长度调整为Tin。
6.根据权利要求1所述的一种基于人体关键点的实时视频流手语识别方法,其特征在于:所述步骤6中,时空图卷积网络对输入数据进行空间图卷积和时间图卷积处理;以步骤2选定的关键点为图的节点,按人体结构连接成边,形成空间边,将邻帧的相同节点连接成边,形成时间边。
7.根据权利要求6所述的一种基于人体关键点的实时视频流手语识别方法,其特征在于:所述时空图卷积网络由10个时空图卷积单元构成,加入全局池化层,得到特征序列,X=(x1,x2,...,xT′)其中,T′=1,2,...Tin;
任一时空图卷积单元包括空间图卷积网络和时间图卷积网络。
8.根据权利要求6所述的一种基于人体关键点的实时视频流手语识别方法,其特征在于:所述空间图卷积的图划分策略采用空间构型划分,第一个子集连接了空间位置上比根节点更远离整个骨架的邻居节点,表示手语中的离心运动,第二个子集连接了更靠近中心的邻居节点,表示手语中的近心运动,第三个子集为根节点本身,表示手语中的静止运动。
9.根据权利要求8所述的一种基于人体关键点的实时视频流手语识别方法,其特征在于:所述空间图卷积公式为,其中fin表示输入特征序列,维度为 其中,Cin表示节点信息数据的维度,Tin表示输入帧数,N表示节点的数量;fout表示输出特征序列,维度为 其中,Cout表示输出特征维度,Tout表示输出帧数;Aj表示根据图划分策略构成的归一化邻接矩阵;Wj表示权重矩阵。
10.根据权利要求7所述的一种基于人体关键点的实时视频流手语识别方法,其特征在于:所述步骤7包括以下步骤:步骤7.1:将步骤6得到的特征序列X传入编码器的循环层,得到第i个递归单元的输出oi,oi=Encoder(xi,oi‑1)
其中,xi为X中第i个特征向量,i为正整数,o0为零向量;
步骤7.2:通过前一时刻编码器的隐藏状态hj‑1和前一时刻输出的词嵌入gj‑1,解码器生成下一时刻的输出yj,更新隐藏状态hj,yj,hj=Decoder(gj‑1,hj‑1)
gj‑1=wordEmbedding(yj‑1)
其中,初始隐藏状态h0为步骤7.1中最后一个编码单元oT对应的隐藏状态,设定初始输出y0的标识作为序列开始的标识;
步骤7.3:当序列结束标识出现时,完成输出,得到输出的词语序列Y={y1,y2,...,yp},拼接输出的词语序列,得到句子。