一种精确的三维手部姿态估计方法与流程

文档序号:21459927发布日期:2020-07-10 17:58阅读:502来源:国知局
一种精确的三维手部姿态估计方法与流程

本发明涉及图像处理领域,尤其涉及一种利用卷积神经网络对深度图像中的手势进行精确的三维手部姿态估计方法。



背景技术:

三维(3d)手势估计方法,通常可以分为生成方法、判别方法以及混合方法。近几年使用的比较多的是基于cnn的判别类手势估计方法。现有基于cnn的判别类手势估计方法又可分为基于2dcnn的手势估计方法和基于3dcnn的手势估计方法,目前基于2dcnn的手势估计方法是手势估计领域研究的主流。

3dcnn的手势估计方法在一定程度上拥有比2dcnn的手势估计方法更强的提取输入图像深度信息的能力,但是,相比于2dcnn的手势估计方法,3dcnn的手势估计方法具有更多的参数和更高的网络复杂性,并且其运行成本大大增加。此外,当深度图像被映射到3d空间时,其可能导致信息丢失或添加不必要的信息并导致错误。最近几年,人们在研究基于2dcnn的手势估计方法的同时设计了一系列的模型来弥补2dcnn的手势估计方法与3dcnn的手势估计方法在信息提取上的差距。为了解决手的高度非线性问题,提出了对每根手指分别进行估计的方法,但对每根手指分别进行估计的方法虽然可以解决非线性问题,但却丢失了关节点间的信息。为了充分提取深度图像中的信息,人们提出了多任务的方法将手势估计任务分为几个子任务,并随着任务的一步一步的加深使得提取出来的信息越来越充分,现有的多任务方法大多是先提取深度图像的浅层信息,再进一步提取信息获得图像的高层语义。目前也有根据要提取的坐标维度将手势估计分为2d关节检测和深度回归两个任务的方法。但这种方法中,在深度回归处理时采用的是对整个手部进行直接深度回归,这样并未能充分利用原始图像中的深度信息,在估计深度坐标时会丢失关节点的深度信息,存在深度估计结果并不理想,无法精确估计三维手部姿态的问题。



技术实现要素:

基于现有技术所存在的问题,本发明的目的是提供一种精确的三维手部姿态估计方法,能解决现有手关节二维位置估计方法由于将整个手部进行直接深度回归,未能充分利用原始图像中的深度信息,存在无法精确估计三维手部姿态的问题。

本发明的目的是通过以下技术方案实现的:

本发明一种精确的三维手部姿态估计方法,包括如下步骤:

步骤1,采用预先训练好的卷积神经网络对深度图像中的手势进行二维关节点检测,得出包含关节点二维信息的特征图;

步骤2,根据手部关节点之间的约束关系,依据关节点在手部中的位置将手部关节点分为三个部分,利用所述步骤1得出的包含关节点二维信息的特征图,采用预先训练好的所述卷积神经网络按多阶段深度回归方式对手部关节点分成的三个部分进行深度回归处理,直至得出手部各关节点的深度坐标,完成三维手部姿态估计;所述多阶段深度回归方式为:在对选定的手部的第一个部分进行第一阶段深度处理后,后续每个阶段深度估计的部分均包含前一阶段深度估计的部分,并在此基础上增加对新的部分的估计。

由上述本发明提供的技术方案可以看出,本发明实施例提供的精确的三维手部姿态估计方法,其有益效果为:

进行深度估计时,利用了邻近关节点的约束关系将手部分为三个部分,以分阶段方式对各部分进行深度回归处理,在每一阶段关节点深度估计时会再次估计上一阶段估计的关节点的深度信息,并选取最后一个阶段对于所有关节点的估计作为最终结果,强化了相邻关节点间的信息的利用率,因此在深度回归处理过程中不会造成信息损失,相比现有直接对整个手部进行深度回归的方法,能精确的估计三维手部姿态。通过评估,本发明的方法在进行三维手部姿态估计时表现出较好的性能。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他附图。

图1为本发明实施例提供的精确的三维手部姿态估计方法的流程图;

图2为本发明实施例提供的精确的三维手部估计姿态估计方法的多阶段深度回归的流程图;

图3为本发明实施例提供的精确的三维手部姿态估计方法训练的流程图;

图4为本发明实施例提供的精确的三维手部姿态估计方法所用的神经网络的构成示意图;

图5为本发明实施例提供的手部模型以及相邻关节点模型的示意图,其中,选中手指的根节点与中间关节点作为示意图,(a)为手关节点模型,(b)为选取的相邻关节点在2d平面的运动模型,(c)为选取的关节点在高度与深度构成的平面上的运动模型;其中d为两个关节点的距离;θ为中间关节点相对于根节点的在2d平面能够运动的角度;α为中间结点相对于根节点的在深度空间中能够运动的角度。

具体实施方式

下面结合本发明的具体内容,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明的保护范围。本发明实施例中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

如图1所示,本发明实施例提供一种精确的三维手部姿态估计方法,是一种能获得精确的关节点深度坐标的方法,包括如下步骤:

步骤1,采用预先训练好的卷积神经网络对深度图像中的手势进行二维关节点检测,得出包含关节点二维信息的特征图;

步骤2,根据手部关节点之间的约束关系,依据关节点在手部中的位置将手部关节点分为三个部分,利用所述步骤1得出的包含关节点二维信息的特征图,采用预先训练好的所述卷积神经网络按多阶段深度回归方式对手部关节点分成的三个部分进行深度回归处理,直至得出手部各关节点的深度坐标,完成三维手部姿态估计;所述多阶段深度回归方式为:在对选定的手部的第一个部分进行第一阶段深度处理后,后续每个阶段估计的部分均包含前一阶段估计的部分,并在此基础上增加对新的部分的估计。

上述方法步骤2中,根据手部邻近关节点之间的约束关系,依据关节点在手部中的位置将手部关节点分为三个部分为:

手指根节点部分、中间关节点部分和指间关节点部分,其中,所述手指根节点部分包括掌心和每根手指的根节点;

利用所述步骤1得出的包含关节点二维信息的特征图,采用预先训练好的所述卷积神经网络按多阶段深度回归方式对手部关节点分成的三个部分进行深度回归处理具体包括如下步骤(参见图2):

步骤21、通过所述卷积神经网络对所述包含关节点二维信息的特征图进行回归处理得到包含手指根节点部分深度坐标的特征图;

步骤22、所述卷积神经网络以所述步骤21得出的特征图作为输入进行迭代处理;

步骤23、对所述卷积神经网络当前回归处理的输出进行几次上采样处理,得到与所述卷积神经网络开始回归处理时输入的特征图尺寸相同的特征图;

步骤24、通过特征连接方式将所述步骤23得到的特征图的输出特征与所述步骤1得到特征图的输出特征融合,将融合得到的结果作为所述卷积神经网络下一阶段回归处理的输入,并在第二阶段估计出根部关节点部分和中间关节点部分;

步骤25、重复所述步骤23和步骤24,并在第三阶段得出手部所有关节点的深度坐标。

上述方法中,对卷积神经网络预先训练的方式如下:

用预先标定手部关节点目标位置的深度图像作为训练用深度图像;

用所述卷积神经网络估计所述训练用深度图像得出手部各关节点位置,计算得出所述手部各关节点位置与预先标定手部关节点目标位置的最小均方误差,并利用所述最小均方误差设定损失函数,通过所述卷积神经网络迭代处理直至得出所述损失函数的最小值,即完成所述卷积神经网络的优化训练。

上述方法中,损失函数l为:

l=ld+lr;

其中,ld为二维关节点检测的损失函数;lr为深度回归处理的损失函数;

所述ld由两个沙漏网络的损失函数以加权形式组合而成,具体为:其中,ld1为第一个沙漏网络的损失函数,λ1为ld1的权重值,ld2为第二个沙漏网络的损失函数,λ2为ld2的权重值;

所述ld1和ld2通过以下公式得到:其中,ldi为第i个沙漏网络的损失函数,它表示两个矩阵之间对应点的第二范数的平方和;op是沙漏网络的输出,tg是目标模型,k表示第k个关节,m和n是矩阵的行和列;

该损失函数是将生成的关节热图与目标模型进行比较设计而成,其中,关节热图是通过两个沙漏网络对深度图像中的手部进行二维关节点检测,每个沙漏网络输出生成数量等同于手部关节个数的关节热图;目标模型是由2d高斯函数生成的矩阵,矩阵上的每个点表示可能成为的连接点。

上述方法步骤1中,在进行二维关节点检测时,将输出的特征图经过打分处理得到与手部关节点数量对应的矩阵,每个矩阵上的每个元素为当前位置是对应关节点的概率,选取其中最大值所代表的位置作为对应关节点的二维平面坐标作为关节点的二维信息。

本发明的方法,与已有的3d手部姿态估计方法相比,在2d关节点检测的基础上进行多阶段深度回归,预测深度坐标时可以充分利用关节点的2d信息;在采用多阶段深度回归完成深度回归任务时,配合2d信息,先后得到当前关节点以及邻近的关节点的深度信息,这样大大强化了相邻关节点间的信息利用,有利于获得精确的深度信息,该方法能精确估计三维手部姿态。此外,本发明方案的网络参数相对于现有的效果比较好的手部姿态估计方法较小,运行成本较低。

下面对本发明实施例具体作进一步地详细描述。

本发明的三维手部姿态估计方法,通过多阶段深度回归强化利用邻近关节点的坐标信息,配合当前关节点的2d位置信息获得当前关节点精确的深度坐标,包括如下步骤(参见图3):

步骤31、采用已有方法将3d手部姿态估计视为2d关节点检测和深度回归两个任务,其中深度回归是在2d关节点检测的基础上进行的;

步骤32、深度回归采用的是多阶段深度回归方式,具体是依据关节点在手指中的位置将手部关节点分成三个部分,采用多阶段深度回归对各部分进行回归处理,多阶段深度回归是指:除第一阶段是对选定的手部的第一部分进行回归处理外,后续的每个阶段估计的部分均包含前一阶段估计的部分,并在此基础上增加对新的部分的估计;直至得出所估计的手部各部分关节的深度坐标。

步骤33、将卷积神经网络得到的关节点位置与目标位置进行比较,并通过求最小均方误差的方式对卷积神经网络进行训练优化。

上述是对所用卷积神经网络的训练过程,训练后,仅进行步骤31、32的处理,即能完成三维手部姿态的估计。

上述方法中,手部相邻关节点间拥有如下特征:无论手指如何移动,一根手指上相邻关节之间的距离都是固定值。以相邻点为中心,关节只能在2d平面中执行小运动,并且只能在3d空间中以略大于90度的角度进行弧形运动;对于不同的手,相邻关节的长度与整个手的大小成比例。在这些信息的指导下,可以更准确地估计相邻关节的位置。例如知道距离为d的邻近的关节点的2d位置(x0,y0,z0),并且知道当前关节点的2d坐标(x1,y1),根据公式:

可以初步得到当前关节点的深度坐标z1。此时z1的取值有两种可能,可见仅仅依赖相邻关节点间的距离信息是不够的,因此需要更多的信息来获得准确的值,这里完全依赖网络来提取这些信息。利用这些联系的前提是得到关节点的2d信息,这里将手势估计任务分为2d关节点检测和深度回归两个子任务,在进行深度回归时,将网络分为三个阶段来提取相邻关节点间的信息。

上述方法的步骤31中:采用已有的方法将3d手部姿态估计视为2d关节点检测和深度回归两个任务;这里采用国际上的一些方法将手关节分为一定个数的关节点,在进行2d关节点检测时,输出特征图像经过打分处理得到与数量关节点个数对应的矩阵,每个矩阵上的每个元素代表当前位置是对应关节点的概率,最终选取其中的最大值所代表的位置作为对应关节点的2d平面坐标,2d关节点检测的输出特征会加入到深度回归网络中;

在步骤32中:在进行深度估计时,将深度回归网络划分为三个阶段,并依次估计初始部分的手部关节点(包括掌心和每根手指的根节点),初始部分加上每根手指的中间关节点以及手的所有关节点。每个阶段增加估计的部分是与上一阶段所估计的点相邻的关节点,上一个阶段估计出的结果作为辅助信息加入到当前阶段的输入中,进而利用cnn网络的学习能力实现相邻关节点间的信息的强化利用。

在步骤33中:在设计损失函数时,两个任务得到的关节点位置结果分别与目标的2d位置和深度真值坐标(该深度真值坐标为预先在深度图像中标注的手部关节点位置的准确深度坐标)进行比较,两个子损失函数以相加的方式组合成最终的损失函数。因为获得深度坐标不仅仅利用到了距离信息,因此采用真值设计损失函数而不是距离。

上述方法的步骤2中,在进行深度回归时,采用多阶段的方法依据关节点在手指中的位置将手部关节点分为三个的部分,并分别进行回归,包括如下步骤(参见图2):

步骤21、直接通过回归网络得到手的掌心以及每根手指的根部关节点的深度坐标;

步骤22、对当前阶段的输出进行几次上采样处理,得到与阶段开始时的输入特征图像尺寸相同的特征图;

步骤23、通过特征连接的方式融合当前阶段经过上采样后的输出特征与2d关节点检测的输出特征,并将融合的结果作为下一阶段的输入,估计出手的掌心、每根手指的根部关节点和中间关节点的深度坐标;

步骤24、重复步骤22和步骤23,得到手的所有关节点的深度坐标。

本发明在进行深度估计时,利用了通过多阶段深度回归方式邻近关节点的位置信息以及当前关节点的2d信息来估计当前关节点的深度信息。由于相邻关节点间的距离不因为手动做的变化而改变,因此当知道邻近关节点的3d坐标和当前点的2d坐标,根据空间中的欧式距离公式可以很好的求出当前点的深度坐标。相比与基于3dcnn的方法,本发明是基于2dcnn提出的,其不需要更多的参数,网络复杂度较低,可以很好的节约运行成本,而且由于是以原始深度图为输入从而不会加入一些不必要的信息。相比于基于手指的分层方法,本发明不是以解决手的高度非线性问题为目的,而是强化相邻关节点间的信息的利用率,在每一阶段关节点深度估计时会再次估计上一阶段估计的关节点的深度,并选取最后一个阶段对于所有关节点的估计作为最终结果,因此在处理过程中不会造成信息损失。通过评估,上述方案本发明公开的方法在进行3d手部姿态估计时表现出较好的性能。

实施例

本实施例提供一种通过多阶段深度回归强化利用邻近关节点的3d信息,再结合由多任务方法获取的当前关节点的2d信息,从而获取当前关节点的深度信息的方法。该方法很好的利用了关节点间的相关信息,该方法主要包括如下步骤(参见图3):

步骤31、获得关节点的2d信息:

如图4所示,首先通过若干个残差网络获取深度图像中的浅层信息。考虑到实际计算资源和操作效率的限制,在进行2d关节点检测时,本发明采用已有的方法,采用两个沙漏模块来获取手关节二维位置的热图;沙漏的下采样模块包括四个残差网络,并且在每个卷积层之后都有一个最大池化层;通过这个子采样模块,可以获得多尺度图像特征;然后,对图像进行四次上采样,并在每次上采样之前与下采样得到的相同比例的图像特征相加,从而将各个尺度的信息融合在一起;

本步骤输出的是关节点的2d信息,其经过一个打分器后会生成一定数目(等同于关节点数目)的热图,每张热图上的每个元素都代表其所处位置是对应关节点所在位置的可能性,热图在经过特定的矩阵变换后,取每张热图中的元素的最大值所处的位置(x,y)在变换后的矩阵中对应的值作为对应关节点的2d位置;

已有的沙漏网络对二维关节检测有很好的效果。它使用多尺度特征来捕获人体每个关节的空间位置信息。许多人体姿势估计方法都使用堆叠的沙漏网络作为参考并进行了改进。可以说,沙漏的结构已为业界所认可。这个部分得到的特征不仅仅可以用来获取关节点的2d位置,还可以用来帮助进行深度估计。沙漏网络同样提取了输入图像中所能提取的最高维度的特征,其对深度信息具有提取浅层信息的功能。因此可以在其基础上直接进行深度回归任务。

步骤32、估计关节点的深度坐标:

参见图5,本步骤根据关节在手指中的位置将手部划分成三个部分,并且采用连接方法将相邻关节的特征与二维手关节检测模块的输出融合起来,具体为:

st=cat(f0,ft-1);

上式中,st是f0与ft-1拼接起来后得到的特征图,并作为第t阶段的输入,f0是2d关节检测任务得到的图像特征,ft-1是第t-1阶段得到的邻近关节点的特征(t取值1,2,3),两者的特征数目相等,两者特征拼接起来后,达到一种增加维度的效果;而每一阶段的输出由这个阶段的输入经过若干次下采样和等同次数的上采样后得到:ft=upsample(downsample(st));

手部是高度非线性的,但是单个手指是近似线性的。因此,现有的分层网络基于手指将手部分成几个独立的部分;尽管这种分层方法可以缓解手部的非线性问题,但是手指之间的一些相关信息会丢失。与它们不同的是,本发明的方法不是解决手的非线性问题,而是为了更好地利用每个手指相邻关节之间的信息。

相邻关节点间拥有如下特征:无论手指如何移动,一根手指上相邻关节之间的距离都是固定值。以相邻点为中心,当前关节在2d平面中只能以较小的角度运动,并且在深度与高度构成的平面中只能以略大于90度的角度进行弧形运动,整体上其在3d空间中的活动范围为半径为d(相邻关节点间的距离,不同的相邻关节点间的距离不同)的球体的1/n大小,n受关节运动范围约束。对于不同的手,相邻关节的长度与整个手的大小成比例。在这些信息的指导下,可以更准确地估计相邻关节的位置。例如知道距离为d的邻近的关节点的2d位置(x0,y0,z0),并且知道当前关节点的2d坐标(x1,y1),根据公式:

可以初步得到当前关节点的深度坐标z1。此时z1的取值有两种可能:

虽然仅仅依赖相邻关节点间的距离信息是无法获取准确的深度坐标,还需要其它约束信息来获得准确的值,但已经很大程度的提高估计精确度,而且其它约束信息可以从浅层信息中获取。

在每个阶段提取的信息都是关于手部的某些关节的高级语义的,这对于估计相邻点具有较高的指导意义;通过利用相邻关节的约束能力,可以大致了解关节的当前运动范围,然后通过具有学习能力的cnn网络使估算更加准确。但是,某些关节的高级信息可能会丢失许多其他关节的信息;如果仅将其用于估计相邻关节的位置,则会使估计误差增大,因为无法使用有用的关节信息。因此,本发明在每个阶段开始前添加通过2d关节检测任务提取的关节的浅层信息和2d信息。

步骤33、设计损失函数:

本发明的模型损失函数由两部分组成:二维手关节检测和深度回归;在2d关节检测任务中,两个沙漏网络用于检测关节位置;每个沙漏网络的输出将生成数量等同于关节个数的关节热图;这部分的目标模型是由2d高斯函数生成的矩阵;矩阵上的每个点都表示有可能成为连接点;通过将生成的热图与目标模型进行比较来设计损失函数,如下所示:

上面的公式表示第i沙漏网络的损失函数,它表示两个矩阵之间对应点的第二范数的平方和;在此表达式中,op是沙漏网络的输出,tg是目标模型,k表示第k个关节,m和n是矩阵的行和列,两个沙漏网络的损失函数将根据重要性的加权形式进行组合:

由于第二个沙漏网络的输出用于生成手部关节最终2d位置的结果,因此它在损耗函数中的比例也更大;在深度估计的任务中,通过回归网络获得了三个阶段的深度估计,在这里,为了确保估计结果的准确性,本发明直接使用真值作为目标结果。在这一部分中,损失函数定义为:

在上面的公式中,j,k是第j阶段第k个联合点的输出,而gt是相应的目标结果。这里还根据重要性以加权形式组合每个阶段的损失函数:

其他两个阶段仅作为辅助信息用来增强信息的利用率,第三阶段的输出用于获取最终结果,因此权重更高;最后,通过组合两个任务获得最终损失函数:l=ld+lr。

本发明的方法将三维手部姿态估计分为二维手关节估计和多阶段深度回归两个子任务,在多阶段深度回归任务中,手部关节点依据在手指中所处的位置被分为手指根节点(包括掌心)、手指中间关节点和指间关节点三个部分,并在三个阶段中依次估计各部分关节点的位置,每个阶段会重复估计上一阶段的估计内容,由于相邻关节点间的约束信息得到强化利用,本发明提升了手部姿态估计的准确性。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明披露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。

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