一种多视点下提高动态手势动作识别准确率的方法与流程

文档序号:20841650发布日期:2020-05-22 17:35阅读:781来源:国知局
一种多视点下提高动态手势动作识别准确率的方法与流程

本发明涉及一种多视点下改善动态手势动作识别准确率的方法。

技术背景

在计算机视觉的发展浪潮下,利用卷积神经网络对人体手势动作进行识别已经成为新的研究方向。在手势动作识别方面,基于卷积神经网络的方法与传统方法相比,具有成本和耗时更低、识别效率更高的优点,省下了手势分割、人工提取特征和模板匹配的步骤,降低了模型的复杂度。但目前的手势识别方法仅仅是识别静态手势或动态手势是属于哪一类手势,属于对单个手势进行识别,没有对连续且有时间上的重叠的动态手势进行识别,究其原因就是因为没有一套针对组合的连续动作的识别框架,这也就导致此类手势识别无法在实际生产应用中发挥作用。



技术实现要素:

本发明要克服现有技术的上述缺点,提出一种基于计算机视觉的手势动作识别方法。

本发明首先对cpm模型进行改进,以构建手势关节点坐标识别网络模型,然后对双视点下采集到的视频进行归一化和卡尔曼滤波处理,接着将预处理后的视频传入标准手势关节点坐标识别网络,得到手势高斯热图和关节点坐标。再把关节点坐标输入标准手势序列识别网络,得到手势动作序列,最终实现对连续动作的识别,解决单视点手势视频对动作识别准确率不高等问题。

为实现上述目的,本发明采用以下技术方案:

一种提高动态手势动作识别准确率的方法,包括如下步骤:

步骤一,构建手势关节点坐标识别网络;

本发明利用改进的cpm模型对手势视频进行处理,输出双视点下的手势关节点坐标,其实现流程如下:

(1)选择手势关节点估计的基础网络模型;

本发明选择vgg-13作为手势关节点估计的基础网络模型。

(2)设置感受野;

感受野的大小与卷积或池化的滑动窗口有关,将两者看成是一个映射,将n层特征图上的k×k范围的像素值压缩到n+1层特征图上的一个像素内,表示为fks,其中s表示滑动窗口的步长,k表示卷积核或池化核的大小,其映射关系为:

其中:xn,xn+1为第n层和第n+1层的特征图。

本发明的基本网络结构是基于vgg-13的,对于vgg-13的第一个部分,包含了两个卷积和一个池化,这三个结构形成了一个级联,因此映射过程在网络中多次重复,形成一个多级映射。各环节的感受野与卷积核或池化核的参数如表1所示:

表1级联下各层特征图对应的感受野和卷积核参数

记rfn为第n个特征图的感受野,kn为第n个卷积层的卷积核或池化核的大小,sn为kn的步长,由表1中的感受野规律,可以归纳推导出感受野与步长以及卷积核大小的关系。

在第一层卷积后特征图的感受野大小为卷积核的大小:

rf1=k1(2)

当步长为1时,第n≥2个特征图的感受野大小为:

rfn=rfn-1+(kn-1)(3)

对于步长不为1的情况,有n≥2:

rfn=rfn-1+(kn-1)×sn(4)

(3)提取特征;

本发明利用基础网络模型vgg-13对图像进行特征提取。

首先定义第p个关节在图像像素中的位置坐标为yp,则有,

其中集合z代表图像中所有像素的位置。

设有p个需要预测的关节点,目标是得到所有p个关节点坐标y:

y=(y1,y2,…,yp)(6)

由以上关系可知,y是z的子集。

接着定义一个多阶段的预测分类器gt(x),用于预测每个阶段中每个关节点所在位置。在每个阶段t∈{1,2,…t},预测分类器都会将图像中的一点z赋给yp,并在每个阶段都会给每个手势关节点生成一个热图,具体的表达式为:

当分类器在第一阶段预测手势关节点位置时,会产生一个热图和相对应的手势关节点置信得分:

其中b1p(yp=z)是分类器在第一阶段预测第p个手势关节点在z位置处时的手势关节点置信得分。

对于接下来的每一个阶段,第p个手势关节点在z位置处的置信得分可以表示为:

其中,u,v代表图像中某一处位置z的坐标值。

在后续阶段t(t≥2),基于前一阶段的热图和手势关节点的置信得分,继续为每个手势关节点赋更加精确的位置坐标z,这个更加精确的位置z是基于第一阶段分类器所提取的图像特征和前一阶段的分类器所提取到的图片上下文信息共同决定的,同样的,后续每个阶段的预测分类器仍然产生属于每个阶段的手势关节点热图对应的手势关节点置信得分:

其中,ψt(z,bt-1)表示一种置信得分与图像上下文信息之间的映射,x′z表示上一阶段在位置z周边所提取到的图像特征。

在以上过程的不断重复下,每个阶段都基于前一阶段的图像上下文信息和第一阶段提取到的图像特征对第p个手势关节点的位置做出修正,这种逐渐微调的过程使得模型最终估计出较为准确的手势关节点坐标位置。

步骤二,采集双视点视频数据;

考虑到目前的单目摄像头是不含深度信息的,并且在单视点下存在着手势的遮挡和自遮挡引起的手势关节点信息缺失以及手势沿着摄像头法向运动时引起的关节点位置坐标难以变化的问题,本发明以双视点的形式对手势视频样本进行采集。为了增强样本数据的多样性,本发明设计了两种视点角度,第一种的两个摄像头角度呈180°,第二种的摄像头角度呈90°。

(1)定义基本手势元素;

本发明重新定义了对视觉识别的基本动作元素,并将确定的具体可识别的基本动作元素,称为基本手势元素,并对其符号进行了定义。

(2)选取手势关节点;

本发明通过对手势关节点进行识别,将识别的关节点按照顺序进行连线、标号,形成一个手姿势的骨架,通过对手骨架姿势的识别实现对手的姿势的识别,且将此过程定义为手势估计。手指弯曲时,手指通常分为三小段,使手指呈现不同的弯曲程度,这三段之间的连接点恰好是手指的关节点,因此,本发明选取每个手指的指尖部位的点作为手指的起始关节点,然后连接各自手指上三小段之间上的关节点,接着每根手指上的末尾关节点都与手腕处的一个关节点相连,选定了模型的关节点之后,将模型的关节点按照一定的顺序标号、连接,以形成手势骨架。

(3)准备训练样本数据集;

基于卷积神经网络对图像或视频内容识别的基础是有标准的数据集。考虑到手势在运动变化的过程中存在关节的自遮挡问题,因此本发明采用双视点对手势视频进行采集,以建立基本手势元素数据库。

同时,对于已有的一个大数据集,通常将其划分为训练集、验证集、测试集。三个子集两两之间无交集,三者的并集为全集,由于来自同一个数据集,因此三个子集是独立同分布的。验证集和测试集均用于测试模型的准确率,且两者均与模型训练时的梯度下降过程无关,但由于验证集的参与,其验证结果调节了模型迭代数和学习率,即模型有了一个参数调整的过程,因此认为验证集参与了模型的训练。

步骤三,对基本手势元素视频样本进行卡尔曼滤波处理;

在图像滤波开始之前,首先任意选择图像中的一个像素点,按照水平或者垂直的方向依次对接下来的点进行卡尔曼滤波,通过预测和更新像素值,实现图像的去噪。

图像在第k个状态的估计值xk为:

xk=fkxk-1+bkuk+wk(11)

式中:fk为第k个状态时的增益矩阵;bk为输入控制矩阵;uk为控制向量;

wk为白噪声,服从高斯分布,wk~n(0,qk)。

对第k个状态的观测值zk为:

zk=hkxk+vk(12)

式中:hk为观测矩阵;vk为观测噪声,服从高斯分布,vk~n(0,rk)。

上述初始状态x0与白噪声wk,观测噪声vk相互独立。

有了上一个状态的估计值和当前状态的观测值,就需要对当前状态的估计值进行预测,计算当前状态的估计值包括预测和更新两个步骤。对于预测过程,首先获取上一个状态k-1的估计值xk-1,利用上述公式(11)预测当前状态k的估计值xk;对于更新过程,则将预测好的k状态下的估计值代入公式(12),得到当前k状态的估计值zk,则有公式(13)可以描述一个离散时间线性随机动态系统:

在预测开始时,有以下初始条件:

其中p0为初始误差的协方差矩阵;为观测值;为首次的估计值。

下一个状态的预测值和预测误差的协方差矩阵分别为:

在获得新的预测值之后,对新的预测值和预测误差的协方差矩阵进行滤波更新:

pk|k=(i-kkhk)pk|k-1(18)

其中为k状态下更新后的估计值;pk|k为更新后的预测误差协方差矩阵;i为单位矩阵;描述的是观测值和估计值之间偏差,即观测余量,具体的表达式为:

kk为卡尔曼增益,其实质是一个加权值,当上一状态的估计值偏小的时候,当前状态的估计值就会加上卡尔曼增益与公式(19)中的偏差值的乘积;当估计值偏大的时候,当前状态的估计值就会减去卡尔曼增益与偏差值的乘积,保证每一次新的估计都比上一次的估计更准确,循环递归多次以后估计值就会越来越准确,kk的表达式为:

其中sk为观测余量的协方差,具体表达式为:

将公式(19)、(20)、(21)代入更新公式(17)和(18),则有:

步骤四,输出手势高斯热图和手势关节点坐标;

本发明采用热图的形式对手势关节点的真实值进行标注,同时也采用热图作为模型的输出,其中生成的手势关节点热图是以图像中关节点所在像素区域的某一个点为中心,以具体的像素点个数为半径,画出一个圆域,将关节点所在的区域划分出来,作为关节点出现的概率区域,在该区域的中心颜色最深,表示关节点在这个位置的概率最大,而后区域的颜色由中心向外逐渐变浅。这种颜色会在中心达到尖峰,四周逐渐变浅的图像形式与高斯函数图像有着相似之处,因此可利用高斯函数来生成各个关节点区域的热图。本发明中热图的坐标是(x,y)的形式,即有二维高斯函数的公式:

式中,x0,y0表示手势关节点的坐标真实值;x,y表示手势关节点热图区域像素点的坐标值;表示二维高斯函数的幅度值;σ2表示x,y的标准差。

对于手势关节热图的概率区域大小,本发明将其定义为半径为1的圆域,其中对于二维高斯函数的幅度a给定值为1,σ给定值为1.5,则生成一个二维高斯函数的分布图像。

在原图片的基础上生成二维高斯函数分布形态的热点图,该热图基于手势关节点区域的中心坐标,生成一个呈高斯分布的概率区域,在这个区域的中心处的概率值最大,也就是二维高斯函数的尖峰中心点,越向四周扩散,概率值越小。以概率值最大的尖峰点为中心的高斯概率区域中,所有点的总和是超过1的,但在这个概率区域中,所有像素点位置出现手势关节点的概率总和应该为1,为此,对该区域内所有的像素点的函数值进行加和,将每一个像素点对应的函数值除以像素点函数值的总和,以此保证所有点的概率和为1,处理方式如下所示:

式中:p(x,y)表示处理后的像素点存在关节点的概率大小;f(x,y)表示概率区域内的像素点对应的二维高斯函数值;∑f(x,y)表示所有像素点的函数值的总和。

在本发明中,将这些基于二维高斯函数生成的热图称为高斯热图,在模型的每一个阶段,都会输出所有关节点的高斯热图,即每一个关节点对应一张高斯热图。

步骤五,构造手势序列识别网络;

网络模型构造的具体流程如下:

(1)定义激活函数;

本发明涉及的循环神经网络的层数并不多,在网络层次不深的情况下梯度消失的问题相对较小,因此在循环神经网络中采用tanh作为激活函数。

tanh激活函数是双曲正切函数,tanh及其导数的表达式如下所示:

(2)选择损失函数;

本发明在网络的最后一层需要输出基本手势元素的类别,采用多分类的softmax损失函数计算出输入的视频中的手势分别属于每个类别的概率,最后模型输出对该视频中手势的预测结果为每个类别中概率最大的那个类别。

假设x是循环神经网络输入到softmax层的一组特征向量,w和b是softmax的参数,则softmax的第一步是对每个类别进行打分,计算各类别的分值logit:

logit=wtx+b(28)

接着,用softmax将每个类别的分值转化为各自的概率值:

其中,i表示第i个手势类别,ei表示第i个手势的分值。

至此模型输出了每个手势类别的概率分布,这个概率分布是一个预测值,将其称为q(x),而每个手势还带有一个实际标签,也就是一个真正的概率分布,称其为p(x)。由于softmax函数又称为交叉熵损失函数,而交叉熵描述的是两个概率分布之间的距离问题,其可以定义为:

h(p,q)=-∑p(x)logq(x)(35)

假设p(x)=(a,b,c),q(x)=(u,v,w),且p(x)是真实值,q(x)是预测值,则通过q(x)来表示p(x)的交叉熵为:

h((a,b,c),(u,v,w))=-(alogu+blogv+clogw)(36)

当q(x)和p(x)的位置互换时,两者的交叉熵是不同。交叉熵是通过概率来衡量一个事件的出现可能性的,一个事件出现的可能性越大,这个事件包含的信息量越小,即熵值越小,因此当预测的概率分布q(x)与真实值p(x)之间越靠近,两者的交叉熵就越小,意味着模型的输出与真实值就越接近,模型的预测越准确。

(3)建立模型;

在模型中x=(x1,x2,x3,...,xt)是按照时间序列展开的视频帧,这些时序帧作为循环神经网络的输入,每一帧中包含的信息是每个手势的关节点坐标值,时间序列的长度设为t。第一个隐藏层的隐状态为h=(h1(1),h2(1),...,ht(1)),则对第一个隐藏层的隐状态,有:

其中,第一个隐藏层隐的第一个序列的隐状态为:

对于第二个隐藏层,其输入由前一个时刻的隐状态和上一个隐藏中同样处于当前时刻的隐状态的输入共同决定,则第二个隐藏层的隐状态可以表示为:

其中,第二个隐藏层的首个序列的隐状态为:

对于最后的输出为每种手势的预测分类结果,y=(y1,y2,y3,y4,…,yn),有:

yi=softmax(vht+c)(41)

其中i=(1,2,3,4,…,n),u、w、v均为参数矩阵,用于对输入和隐藏层的隐状态进行矩阵变换,b、c均为偏置,所有的参数是在网络的各个阶段是共享的。

最后,将步骤四得到的关节点坐标输入标准手势序列识别网络,就可以得到手势动作序列。

本发明的优点是:

本发明基于计算机视觉技术,提出了一种融合循环神经网络的手势识别算法,对生产过程中员工的手势动作进行识别。其突出特点是:针对实际生产中连续的复杂动作难以通过计算机视觉技术识别的问题,对cpm模型进行改进,建立手势关节点坐标识别网络模型来获取双视点下采集的、经过归一化和卡尔曼滤波处理的手势视频样本的手势关节点坐标,并将其输入校正完毕的标准手势序列识别网络,得到手势动作序列,提高对连续动作的识别准确率。

附图说明

图1是本发明的vgg-13的模型结构;

图2是本发明的选取的21个手势关节点示意图;

图3是本发明的手势关节点标号与骨架示意图;

图4a~图4e是本发明的5种基本手势元素视频样本的截图;其中图4a是空手移动,图4b是释放或放置,图4c是旋转,图4d是载荷移动,图4e是抓取;

图5是本发明的两个视点之间的角度为180°的布置方式;

图6是本发明的两个视点之间的角度为90°的布置方式;

图7是本发明的二维高斯函数分布图;

图8a~图8f是本发明的部分手势关节点的高斯热图;其中图8a是1号关节点,图8b是3号关节点,图8c是6号关节点,图8d是10号关节点,图8e是14号关节点;图8f是18号关节点;

图9是本发明的tanh激活函数及其导函数分布图;

图10是本发明的循环神经网络结构示意图;

图11是本发明的五个手势类别的循环神经网络结构示意图;

图12是本发明的最小化损失函数的梯度下降过程;

图13是本发明的单视点下模型损失函数的收敛情况;

图14是本发明的双视点下模型损失函数的收敛情况;

图15是本发明动态手势动作识别方法的流程图。

具体实施方式

下面结合附图,进一步说明本发明的技术方案。

基于以上问题,本发明提出了一种基于计算机视觉的手势动作识别方法,首先对cpm模型进行改进,以构建手势关节点坐标识别网络模型,然后对双视点下采集到的视频进行归一化和卡尔曼滤波处理,接着将预处理后的视频传入标准手势关节点坐标识别网络,得到手势高斯热图和关节点坐标。再把关节点坐标输入标准手势序列识别网络,得到手势动作序列,最终实现对连续动作的识别,解决单视点手势视频对动作识别准确率不高等问题。

为了验证本发明提出的方法的可行性和优越性,现选取五种基本手势进行验证及测试,包括如下步骤:

步骤一,构建手势关节点坐标识别网络;

本发明利用改进的cpm模型对手势视频进行处理,输出双视点下的手势关节点坐标,其实现流程如下:

(1)选择手势关节点估计的基础网络模型;

本发明选择vgg-13作为手势关节点估计的基础网络模型,vgg-13由5组卷积组、5个池化组、3个全连接和1个softmax分类层构成。

(2)设置感受野;

感受野的大小与卷积或池化的滑动窗口有关,将两者看成是一个映射,将n层特征图上的k×k范围的像素值压缩到n+1层特征图上的一个像素内,表示为fks,其中s表示滑动窗口的步长,k表示卷积核或池化核的大小,其映射关系为:

其中:xn,xn+1为第n层和第n+1层的特征图。

本发明的基本网络结构是基于vgg-13的,对于vgg-13的第一个部分,包含了两个卷积和一个池化,这三个结构形成了一个级联,因此映射过程在网络中多次重复,形成一个多级映射。考虑一个原始图像的6×6区域,对于第一种设计过程,卷积的层数是两层,每一层的卷积核的大小都是3×3,步长都为1,池化层是1层,池化核大小为2×2,步长为2。对于第一个卷积层输出的特征图,由于卷积核的大小为3×3,则特征图中的一个像素点在原始图像上的感受野为3×3。对于第二个卷积层输出的特征图,该层卷积核的大小仍为3×3,则第二个特征图上的像素点在第一个特征图上的感受野同样为3×3,此时第一个特征图上的3×3区域需要反推回原始图像,根据第一层与原图像的感受野关系,可以从图像上直观推出第一层特征图的3×3区域对应原图像的5×5区域,即第二个卷积层输出的特征图在原始图像上的感受野是5×5。对于最后一个池化层的特征图,经过池化之后输出的是单个的像素点,则该特征图在第二个特征图上对应的感受野为2×2,同理,此时该区域对应第一个特征图上的感受野是4×4,再次反推,则在原图像上对应的感受野应该是6×6,这也就意味着最后一个池化层输出的特征图对应在原图像的感受野就是6×6。各环节的感受野与卷积核或池化核的参数如表1所示,且原始图像对自己的感受野是1×1:

表1级联下各层特征图对应的感受野和卷积核参数

记rfn为第n个特征图的感受野,kn为第n个卷积层的卷积核或池化核的大小,sn为kn的步长,由表1中的感受野规律,可以归纳推导出感受野与步长以及卷积核大小的关系。

在第一层卷积后特征图的感受野大小为卷积核的大小:

rf1=k1(2)

当步长为1时,第n≥2个特征图的感受野大小为:

rfn=rfn-1+(kn-1)(3)

对于步长不为1的情况,有n≥2:

rfn=rfn-1+(kn-1)×sn(4)

若将这个级联结构的设计改成单个卷积层,也能达到等效的感受野,此时的卷积核的大小为6×6,步长为1,根据公式(2),第一层卷积后输出特征图的感受野等于卷积核的大小,即6×6。而本发明选择vgg-13作为基础网络结构,是因为vgg-13对于感受野结构的利用,即用两个卷积和一个池化的级联结构代替一个6×6的卷积,有以下好处:1)减小网络参数;2)加强网络的非线性结构。

(3)提取特征;

本发明利用基础网络模型vgg-13对图像进行特征提取。

首先定义第p个关节在图像像素中的位置坐标为yp,则有,

其中集合z代表图像中所有像素的位置。

设有p个需要预测的关节点,目标是得到所有p个关节点坐标y:

y=(y1,y2,…,yp)(6)

由以上关系可知,y是z的子集。

接着定义一个多阶段的预测分类器gt(x),用于预测每个阶段中每个关节点所在位置。在每个阶段t∈{1,2,…t},预测分类器都会将图像中的一点z赋给yp,并在每个阶段都会给每个手势关节点生成一个热图,具体的表达式为:

当分类器在第一阶段预测手势关节点位置时,会产生一个热图和相对应的手势关节点置信得分:

其中b1p(yp=z)是分类器在第一阶段预测第p个手势关节点在z位置处时的手势关节点置信得分。

对于接下来的每一个阶段,第p个手势关节点在z位置处的置信得分可以表示为:

其中,u,v代表图像中某一处位置z的坐标值。

在后续阶段t(t≥2),基于前一阶段的热图和手势关节点的置信得分,继续为每个手势关节点赋更加精确的位置坐标z,这个更加精确的位置z是基于第一阶段分类器所提取的图像特征和前一阶段的分类器所提取到的图片上下文信息共同决定的,同样的,后续每个阶段的预测分类器仍然产生属于每个阶段的手势关节点热图对应的手势关节点置信得分:

其中,ψt(z,bt-1)表示一种置信得分与图像上下文信息之间的映射,x′z表示上一阶段在位置z周边所提取到的图像特征。

在以上过程的不断重复下,每个阶段都基于前一阶段的图像上下文信息和第一阶段提取到的图像特征对第p个手势关节点的位置做出修正,这种逐渐微调的过程使得模型最终估计出较为准确的手势关节点坐标位置。

步骤二,双视点视频数据的采集;

考虑到目前的单目摄像头是不含深度信息的,并且在单视点下存在着手势的遮挡和自遮挡引起的手势关节点信息缺失以及手势沿着摄像头法向运动时引起的关节点位置坐标难以变化的问题,本发明以双视点的形式对手势视频样本进行采集。为了增强样本数据的多样性,本发明设计了两种视点角度,第一种的两个摄像头角度呈180°,第二种的摄像头角度呈90°。

(1)定义基本手势元素;

本发明对视觉识别的基本动作元素在模特法、十八种动素等基础上进行了调整,重新定义了动作识别元素,确定了5项具体可识别的基本动作元素,并称之为基本手势元素,即空手移动、载荷移动、旋转、抓取、释放或放置,并对其符号进行了定义,分别表示emptymove、withmove、turn、grasp、release,具体如表2所示:

表2基本手势元素表

(2)选取手势关节点;

本发明通过对手势关节点进行识别,将识别的关节点按照顺序进行连线,形成一个手姿势的骨架,通过对骨架姿势的识别实现对手的姿势的识别,且将该过程定义为手势估计。

手指弯曲时,可以看到手指分为三小段,使手指呈现不同的弯曲程度,这三段之间的连接点恰好是手指的关节点,因此,本发明选取每个手指的指尖部位的点作为手指的起始关节点,然后连接各自手指上三小段之间上的关节点,最后,每根手指上的末尾关节点都与手腕处的一个关节点相连,形成一个手的姿势的骨架,即共选取21个手势关节点。

选定了模型的关节点之后,将模型的关节点按照一定的顺序标号、连接,以形成手势骨架。手腕处的关节点是每根手指最终的连接点,因此将此关节点作为手势关节点的起始点,标为1号。接着按照关节点的空间距离,从下往上依次对大拇指的四个关节点标为2、3、4、5,即指尖处为每根手指的末端,同样的,按从下往上的顺序以对每根手指进行标号。

(3)准备训练样本数据集;

基于卷积神经网络对图像或视频内容识别的基础是有标准的数据集。由于本发明需要识别的是特定5种基本手势元素,因此建立一个以5种基本手势元素为标准的短视频手势元素样本数据集。

对5种基本手势元素进行视频采集,考虑到手势在运动变化的过程中存在关节的自遮挡问题,因此本发明安排了双视点对手势视频进行采集,每种手势采集500个1到2秒的短视频,由10个不同的人完成,每种手势每人拍摄50个短视频,共两个摄像头,总计5000个手势短视频,以建立基本手势元素数据库。

对于已有的一个大数据集,若想要完成一个有监督学习的模型的训练并对其准确率进行测试,通常会按照一定的比例,如8:1:1,将大数据集划分为训练集、验证集、测试集。三个子集两两之间无交集,三者的并集为全集,由于来自同一个数据集,因此三个子集是独立同分布的。验证集和测试集虽然都用于测试模型的准确率,且两者均与模型训练时的梯度下降过程无关,但由于验证集的参与,其验证结果调节了模型迭代数和学习率,即模型有了一个参数调整的过程,因此认为验证集参与了模型的训练。

基于以上数据集的划分规则,在保证样本是独立同分布的情况下,通过均匀随机抽样的方式,将发明的5000个视频样本按8:1:1划分为训练集、验证集、测试集。划分后的训练集、验证集、测试集的样本组成如下表3,表4,表5所示。

表3基本手势元素训练集样本组成

表4基本手势元素验证集样本组成

表5基本手势元素测试集样本组成

步骤三,对基本手势元素视频样本进行卡尔曼滤波处理;

卡尔曼滤波的本质就是在噪声为高斯分布的情况下,使得对目标物体的估计值的均方误差最小,即受到的扰动最小。在图像滤波开始之前,首先任意选择图像中的一个像素点,按照水平或者垂直的方向依次对接下来的点进行卡尔曼滤波,通过预测和更新像素值,实现图像的去噪。

图像在第k个状态的估计值xk为:

xk=fkxk-1+bkuk+wk(11)

式中:fk为第k个状态时的增益矩阵;bk为输入控制矩阵;uk为控制向量;

wk为白噪声,服从高斯分布,wk~n(0,qk)。

对第k个状态的观测值zk为:

zk=hkxk+vk(12)

式中:hk为观测矩阵;vk为观测噪声,服从高斯分布,vk~n(0,rk)。

上述初始状态x0与白噪声wk,观测噪声vk相互独立。

有了上一个状态的估计值和当前状态的观测值,就需要对当前状态的估计值进行预测,计算当前状态的估计值包括预测和更新两个步骤。对于预测过程,首先获取上一个状态k-1的估计值xk-1,利用上述公式(11)预测当前状态k的估计值xk;对于更新过程,则将预测好的k状态下的估计值代入公式(12),得到当前k状态的估计值zk,则有公式(13)可以描述一个离散时间线性随机动态系统:

在预测开始时,有以下初始条件:

其中p0为初始误差的协方差矩阵;为观测值;为首次的估计值。

下一个状态的预测值和预测误差的协方差矩阵分别为:

在获得新的预测值之后,对新的预测值和预测误差的协方差矩阵进行滤波更新:

pk|k=(i-kkhk)pk|k-1(18)

其中为k状态下更新后的估计值;pk|k为更新后的预测误差协方差矩阵;i为单位矩阵;描述的是观测值和估计值之间偏差,即观测余量,具体的表达式为:

kk为卡尔曼增益,其实质是一个加权值,当上一状态的估计值偏小的时候,当前状态的估计值就会加上卡尔曼增益与公式(19)中的偏差值的乘积;当估计值偏大的时候,当前状态的估计值就会减去卡尔曼增益与偏差值的乘积,保证每一次新的估计都比上一次的估计更准确,循环递归多次以后估计值就会越来越准确,kk的表达式为:

其中sk为观测余量的协方差,具体表达式为:

将公式(19)、(20)、(21)代入更新公式(17)和(18),则有:

步骤四,输出手势高斯热图和手势关节点坐标;

本发明采用热图的形式对手势关节点的真实值进行标注,同时也采用热图作为模型的输出,其中生成的手势关节点热图是以图像中关节点所在像素区域的某一个点为中心,以具体的像素点个数为半径,画出一个圆域,将关节点所在的区域划分出来,作为关节点出现的概率区域,在该区域的中心颜色最深,表示关节点在这个位置的概率最大,而后区域的颜色由中心向外逐渐变浅。这种颜色会在中心达到尖峰,四周逐渐变浅的图像形式与高斯函数图像有着相似之处,因此可利用高斯函数来生成各个关节点区域的热图。本发明中热图的坐标是(x,y)的形式,即有二维高斯函数的公式:

式中,x0,y0表示手势关节点的坐标真实值;x,y表示手势关节点热图区域像素点的坐标值;表示二维高斯函数的幅度值;σ2表示x,y的标准差。

对于手势关节热图的概率区域大小,本发明将其定义为半径为1的圆域,其中对于二维高斯函数的幅度a给定值为1,σ给定值为1.5,则生成一个二维高斯函数的分布图像。

在原图片的基础上生成二维高斯函数分布形态的热点图,该热图基于手势关节点区域的中心坐标,生成一个呈高斯分布的概率区域,在这个区域的中心处的概率值最大,也就是二维高斯函数的尖峰中心点,越向四周扩散,概率值越小。以概率值最大的尖峰点为中心的高斯概率区域中,所有点的总和是超过1的,但在这个概率区域中,所有像素点位置出现手势关节点的概率总和应该为1,为此,对该区域内所有的像素点的函数值进行加和,将每一个像素点对应的函数值除以像素点函数值的总和,以此保证所有点的概率和为1,处理方式如下所示:

式中:p(x,y)表示处理后的像素点存在关节点的概率大小;f(x,y)表示概率区域内的像素点对应的二维高斯函数值;∑f(x,y)表示所有像素点的函数值的总和。

在本发明中,将这些基于二维高斯函数生成的热图称为高斯热图,在模型的每一个阶段,都会输出所有关节点的高斯热图,即每一个关节点对应一张高斯热图。

步骤五,构造手势序列识别网络;

网络模型构造的具体流程如下:

(1)定义激活函数;

本发明涉及的循环神经网络的层数并不多,在网络层次不深的情况下梯度消失的问题相对较小,因此在循环神经网络中采用tanh作为激活函数。

tanh激活函数是双曲正切函数,tanh及其导数的表达式如下所示:

(2)选择损失函数;

本发明在网络的最后一层需要输出基本手势元素的类别,采用多分类的softmax损失函数计算出输入的视频中的手势分别属于每个类别的概率,最后模型输出对该视频中手势的预测结果为每个类别中概率最大的那个类别。

假设x是循环神经网络输入到softmax层的一组特征向量,w和b是softmax的参数,则softmax的第一步是对每个类别进行打分,计算各类别的分值logit:

logit=wtx+b(28)

接下来,softmax将每个类别的分数转化为各自的概率值,假设五个手势类别的分值分别为(c,d,e,f,g),则softmax将其转为概率值的公式可以表达为:

其中,i表示第i个手势类别,ei表示第i个手势的分值。则五个手势类别的概率可以表示为:

至此模型输出了五个手势类别的概率分布,这个概率分布是一个预测值,将其称为q(x),而该手势还带有一个实际标签,也就是一个真正的概率分布,称其为p(x)。由于softmax函数又称为交叉熵损失函数,而交叉熵描述的是两个概率分布之间的距离问题,其可以定义为:

h(p,q)=-∑p(x)logq(x)(35)

假设p(x)=(a,b,c),q(x)=(u,v,w),且p(x)是真实值,q(x)是预测值,则通过q(x)来表示p(x)的交叉熵为:

h((a,b,c),(u,v,w))=-(alogu+blogv+clogw)(36)

当q(x)和p(x)的位置互换时,两者的交叉熵是不同。交叉熵是通过概率来衡量一个事件的出现可能性的,一个事件出现的可能性越大,这个事件包含的信息量越小,即熵值越小,因此当预测的概率分布q(x)与真实值p(x)之间越靠近,两者的交叉熵就越小,意味着模型的输出与真实值就越接近,模型的预测越准确。

(3)建立模型;

在模型中x=(x1,x2,x3,...,xt)是按照时间序列展开的视频帧,这些时序帧作为循环神经网络的输入,每一帧中包含的信息是每个手势的关节点坐标值,时间序列的长度设为t。第一个隐藏层的隐状态为h=(h1(1),h2(1),...,ht(1)),则对第一个隐藏层的隐状态,有:

其中,第一个隐藏层隐的第一个序列的隐状态为:

对于第二个隐藏层,其输入由前一个时刻的隐状态和上一个隐藏中同样处于当前时刻的隐状态的输入共同决定,则第二个隐藏层的隐状态可以表示为:

其中,第二个隐藏层的首个序列的隐状态为:

对于最后的输出为五种手势的预测分类结果,y=(y1,y2,y3,y4,y5),有:

yi=softmax(vht+c)(41)

其中i=(1,2,3,4,5),u、w、v均为参数矩阵,用于对输入和隐藏层的隐状态进行矩阵变换,b、c均为偏置,所有的参数是在网络的各个阶段是共享的。

最后,将步骤四得到的关节点坐标输入标准手势序列识别网络,就可以得到手势动作序列。

(4)基于梯度下降法的模型更新;

神经网络利用梯度下降算法,将输出层的损失函数反向传播回网络,求得参数对损失的贡献率,以此实现对网络中的参数进行逐层的更新。梯度即微分中的导数,实际的模型中损失函数的参数是多元的,因此需要对多元函数的参数求偏导数,梯度的定义为:

对于最小化优化问题,梯度下降法的原理是损失函数j(θ1,θ2,…,θn)沿着其中一个参数梯度下降得最快的方向前进一个步长,损失函数的值下降得最快,这里的步长又称为学习率,则参数的更新过程可以表示为以下过程:

1)选择一个梯度下降的方向作为最小化损失函数的方向。被选择的最快的梯度下降方向为某一个参数的梯度最大方向:

2)选择梯度下降的步长,即学习速率η。

3)对权值进行调整和更新:

θi←θi-η·δθj(θi)(44)

梯度按照以上过程逐层向前传播,形成一个链式的求导过程,每一次各层参数都按照以上三个步骤进行更新,直至模型训练完毕,找到最优解。

(5)训练模型;

本发明输入的是视频序列,视频序列是按照时间顺序排列的帧序列,因此每一个状态下的输入是每一时刻输入的视频帧。对于时间长度为t的帧序列,在每一个时刻都有损失函数l(t),则所有时刻的损失之和构成总的损失函数为:

紧接着对输入视频进行预测分类,使其与给定的真实标签尽可能一致,因此是一个将预测值与真实值尽量靠近的过程,即最小化损失函数。为了达到最小化损失函数的目的,就要对网络中的参数进行更新。每一个时刻序列的输出为o(t),损失l(t)是由o(t)经过softmax函数转换而来,因此在损失函数的梯度反向传播的过程中,首先需要对输出o(t)中包含的参数v,c求梯度,分别为:

对于单个序列上的损失函数只需对这个时刻上的参数v,c求梯度,而参数w,u,b的梯度都与隐藏层的梯度有关,从循环神经网络的结构可以看出,t时刻隐藏层的梯度不仅与当前这个时刻的序列的损失函数有关,还与t+1时刻的损失函数有关。则首先定义t时刻隐藏层的梯度,记为δ(t)

则由于t时刻隐藏层的梯度有两个时刻损失函数共同决定的原因,其真实的梯度为t时刻损失函数对隐藏层的偏导数与t+1时刻损失函数对隐藏层的偏导数之和,即:

对于最后一个帧序列t,由于该序列已经处于末尾阶段。其隐藏层的梯度不再受到下一个时刻的损失函数的梯度影响,则末尾序列的梯度可以表示为:

接下来就可以对参数w、u、b进行梯度的计算了,对于w,有梯度:

对于u,其梯度为:

对于b,有梯度:

经过以上反向传播过程的反复进行,参数值不断得到更新,达到损失函数最优化的目的,最终使模型收敛,达到一个较优的手势分类准确率。

(6)实验结果的分析

本发明的实验开发环境如下表6和表7所示,表6列出了实验电脑的硬件环境,表7列出了实验的开发环境,包括开发语言、开发框架等具体内容,表8列出了模型的参数。

表6实验电脑配置

表7实验开发环境

表8训练参数

首先对单视点下采集到的视频样本进行训练,即将预处理后的单视点下的视频数据按照上文提到的训练集、验证集、测试集8:1:1的比例进行划分,在本发明中,5种手势样本的标签设置为:空手移动、载荷移动、旋转、抓取、释放,然后按照表8设置的参数进行模型的训练,初始化学习率为0.001,学习衰减率为0.94,运用梯度下降法进行反向传播训练,随着训练迭代次数的增加,模型训练后的参数越来越接近真实情况,此时学习率会衰减,衰减后最小的学习率为0.0001。训练时所读取的视频帧的大小为408×720,视频长度在1~2秒之间,因此每次读取的视频帧的长度不定,每完成一步迭代之后会对损失函数的值进行一次输出,一共迭代30000步后可得到训练30000步时单视点下5种基本手势元素的损失函数的收敛情况。同理可得,训练30000步时双视点下5种基本手势元素的损失函数的收敛情况。经对比分析可知,利用双视点采集的视频样本对模型进行训练确实对模型的收敛有所帮助,虽然两者的损失函数在5000步之后都没有明显的下降,但是双视点下的损失函数收敛在10到30之间,对比单视点下收敛在20到40之间的结果有所提升,因此,验证了本发明在双视点下采集视频样本对解决手势的自遮挡、手势的歧义以及手势相对视点的法向运动这三个难点的有效性。

利用验证集和测试集对单、双视点下训练好的模型做进一步的评估,评估结果分别如表9和表10所示。对比两张表可以看出,双视点下五种基本手势元素的验证集准确率比单视点都有所提高,其中空手移动(em)提高了6.24%,载荷移动(wm)提高了4.86%,旋转(tn)提高了6.92%,抓取(em)提高了5.35%,释放或放置(rl)提高了4.25%。

表9单视点下五种手势在验证集和测试集上的准确率

表10双视点下五种手势在验证集和测试集上的准确率

本发明的优点是:

本发明基于计算机视觉技术,提出了一种融合循环神经网络的手势识别算法,对生产过程中员工的手势动作进行识别。其突出特点是:针对实际生产中连续的复杂动作难以通过计算机视觉技术识别的问题,对cpm模型进行改进,建立手势关节点坐标识别网络模型来获取双视点下采集的、经过归一化和卡尔曼滤波处理的手势视频样本的手势关节点坐标,并将其输入校正完毕的标准手势序列识别网络,得到手势动作序列,提高对连续动作的识别准确率。同时,对比了单、双视点下的实验结果,验证了基于双视点的手势识别模型具有更好的识别效果,在验证集和测试集上均达到了大于78%的识别准确率。

本说明书实施例所述的内容仅仅是对发明构思的实现形式的列举,本发明的保护范围不应当被视为仅限于实施例所陈述的具体形式,本发明的保护范围也及于本领域技术人员根据本发明构思所能够想到的等同技术手段。

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