用于3D面部跟踪的方法、装置和系统与流程

文档序号:15307802发布日期:2018-08-31 21:17阅读:188来源:国知局

近来,实时三维(3d)面部跟踪技术已经得到了一定程度的研究和开发。然而,对于这些现有的实时3d面部跟踪技术而言,提供足够满意的跟踪准确性仍然是一个挑战。根据这些技术,用于执行跟踪的存储器成本通常较高。此外,这些技术也经常被限制为使用rgb深度(rgb-d)相机来输入面部图像。



技术实现要素:

本公开提出了将本地特征回归用于实时3d面部跟踪。可以利用通用的rgb视频相机来重构人类的3d面部。根据本公开的实施方式可以使用本地特征来学习一个小的但更好的回归随机森林,并进而使用该随机森林来执行本地特征回归。从而,可以提高跟踪准确性并且降低存储器成本。受益于改进的跟踪准确性、降低的存储器成本和通用rgb视频相机的使用,根据本公开的实施方式可以被有效地应用在更广泛的应用场景中,例如,游戏工作站(gamestudio)、面部相关移动手机应用等。

在一个方面,本公开提供了一种用于3d面部跟踪的方法。该方法可以包括:获得二维(2d)面部图像;对所述2d面部图像执行本地特征回归,以确定对应于所述2d面部图像的3d面部表示参数;以及基于所确定的3d面部表示参数来生成3d面部网格和对应的2d面部特征点。

在另一个方面,本公开提供了一种用于3d面部跟踪的装置。该装置可以包括:获得模块,用于获得2d面部图像;回归执行模块,用于对所述2d面部图像执行本地特征回归,以确定对应于所述2d面部图像的3d面部表示参数;以及生成模块,用于基于所确定的3d面部表示参数来生成3d面部网格和对应的2d面部特征点。

在另一个方面,本公开提供了一种用于3d面部跟踪的系统。该系统可以包括:一个或多个处理器以及存储器。该存储器可以存储计算机可执行指令,当所述计算机可执行指令被执行时,使得所述一个或多个处理器执行根据本公开各个方面的用于3d面部跟踪的方法的任意步骤。

在另一个方面,本公开提供了一种非易失性计算机可读介质。该非易失性计算机可读介质可以包括指令,当所述指令被执行时,使得一个或多个处理器执行根据本公开各个方面的用于3d面部跟踪的方法的任意步骤。

应当注意,以上一个或多个方面包括以下详细描述以及权利要求中具体指出的特征。下面的说明书及附图详细提出了所述一个或多个方面的特定示例性特征。这些特征仅仅指示可以实施各个方面的原理的多种方式中的一些方式,并且本公开旨在包括所有这些方面和其等同变换。

附图说明

以下将结合附图描述所公开的多个方面,这些附图被提供用以说明而非限制所公开的多个方面。

图1示出根据本公开实施例的用于获得轮廓顶点的示例性实施方式。

图2示出根据本公开实施例的示例性本地特征回归森林。

图3示出根据本公开实施例的本地特征回归森林中的回归树的示例性配置。

图4是根据本公开实施例的用于3d面部跟踪的示例性方法的流程图。

图5示出根据本公开实施例的用于3d面部跟踪的示例性装置。

图6示出根据本公开实施例的用于3d面部跟踪的示例性系统。

具体实施方式

现在将参考多种示例性实施方式来讨论本公开。应当理解,这些实施方式的讨论仅仅用于使得本领域技术人员能够更好地理解并从而实施本公开的实施例,而并非教导对本公开的范围的任何限制。

本公开的实施例可以提供用于执行3d面部跟踪的方法、装置和系统。例如,可以将单个rgb视频相机用于获得2d面部图像。所获得的2d面部图像可以被输入到根据本公开的计算机制中。所述计算机制可以包括配置用于执行根据本公开的本地特征回归的任何类型的计算单元,例如通用计算单元或移动计算设备。通过所述计算机制,可以将本地特征回归应用在2d面部图像上,以便生成3d面部网格(mesh)和对应的2d面部特征点(landmark)。所生成的3d面部网格和对应的2d面部特征点可以被可选地呈现在显示屏上。由此,可以实现从2d面部图像向3d面部网格和对应的2d面部特征点的3d面部跟踪过程。

所述计算机制可以一般性地包括回归模型训练系统和回归模型应用系统。根据本公开的实施方式,执行3d面部跟踪可以包括两个阶段:回归模型训练阶段以及回归模型应用阶段。

在回归模型训练阶段期间,可以将回归模型训练系统配置为接收训练数据并且基于训练数据生成回归模型。训练数据可以是数据集,其包括训练面部图像、猜测的和对应的真实(groundtruth)的形状向量对、等等。回归模型训练系统可以基于训练数据来生成用于执行3d面部跟踪的回归模型。该回归模型可以被进而用于建立2d面部图像与3d面部网格之间的映射关系。

在回归模型应用阶段期间,可以将回归模型应用系统配置为接收输入的2d面部图像,并且基于所训练的回归模型和所述输入来执行本地特征回归。本地特征回归可以确定对应于2d面部图像的3d面部表示参数,以便生成3d面部网格和对应的2d面部特征点。

应当理解,以上描述的示例性环境仅仅用于说明的目的,而并非教导对本公开的范围的任何限制。本公开可以利用不同的结构和/或功能来实施。

本公开的一些实施例采用3d面部表示模型。根据该模型,3d面部网格f可以表示为:

f=r(bet+b0)+t公式(1)

其中,b是与面部图像中的人对应的混合形状基础(blendshapebasis)矩阵,b0表示中性脸,e是表情系数向量,r是刚性旋转(rotation)四元数,以及t是刚性平移(translation)向量。

混合形状基础矩阵b是表情混合形状的线性组合,其可以表示为b=[b1,…,bn]。在一种实施方式中,b可以由不同表情与中性脸之间的差异来构建,从而,b中的每一列bi指示一个表情与中性脸之间的差异。表情系数向量e可以包含分别对应于b中的多个混合形状的多个权重系数,并且可以表示为e=[e1,…,en],其中ei应当位于[0,1]的范围内。刚性旋转四元数r可以用于指示3d面部网格的旋转信息,并且刚性平移向量t可以用于指示3d面部网格的平移信息。取决于不同的实施方式,b、e、r和t可以具有不同的维度。例如,在一种实施方式中,b可以是一个10000×46的矩阵,e可以是一个1×46的向量,r可以是一个4×1的四元数,并且t可以是一个1×3的向量。

可以利用任何3d面部表情数据库来导出与面部图像中的人对应的混合形状基础矩阵b。例如,在一种实施方式中,可以使用称为facewarehouse的3d面部表情数据库,其提供来自不同种族背景的150个的个体的数据。可以将某个人的混合形状基础矩阵b构建为:

其中,是多线性张量模型,是张量乘积,u是面部图像中的人的用户标识向量。取决于不同的实施方式,和u可以具有不同的维度。例如,在使用主成分分析(pca)方法从3d面部表情数据库的个体数据中导出了50个本征向量的情况下,可以是一个10000×46×50的张量,并且u可以是一个1×50的向量。

基于以上描述的对3d面部网格f的表示,可以利用面部网格上的3d顶点来表示面部图像的2d面部特征点。例如,在一种实施方式中,可以将2d面部特征点sk表示为:

其中,π是投影函数,πq是由投影矩阵q参数化的透视投影运算符,是面部网格f上的第k个3d顶点,以及dk是2d位移(displacement)。可以将所有的2d面部特征点的集合{sk}表示为s。可以将2d位移的集合{dk}表示为位移向量d。取决于不同的实施方式,公式(3)中的参数可以具有不同的维度。例如,在一种实施方式中,sk可以是一个2×1的向量,dk可以是一个2×1的向量,d可以是一个(73×2)×1的向量,可以是一个3×1的向量,面部网格f可以具有10000个顶点,并且投影矩阵q可以是一个3×3的矩阵。

应当注意,对于内部2d面部特征点(例如,眼睛、鼻子),对应的3d顶点可以是预定义的和固定的,而对于沿着面部轮廓的2d面部特征点,对应的3d顶点并非是不变的。这是因为面部轮廓部分会随着3d面部姿势而改变。在一种实施方式中,本公开提出了下面的方式来获得面部轮廓部分上的正确的3d顶点。

图1示出根据本公开实施例的用于获得轮廓顶点的示例性实施方式。首先,如图1(a)所示,可以通过在面部网格上画出多段线来人工地标记可能的轮廓区域。然后,对于每一条多段线,如果至少一个点是可见的,则可以将最外侧的可见点作为轮廓点。否则,可以将最内侧的点作为轮廓点。然后,可以将所有的轮廓点链接起来以形成一条密集轮廓点线。图1(b)示出了一条密集轮廓点线,其由左轮廓点线101和右轮廓点线102形成。可以看出,左轮廓点线101是通过链接面部左侧部分中的最外侧的可见点来形成的,而右轮廓点线102是通过链接面部右侧部分中的最内侧的点来形成的。图1(c)以另一视角示出了右轮廓点线102。在形成了密集轮廓点线之后,密集轮廓点线可以被均匀地采样,以便获得沿着面部轮廓的对应于2d面部特征点的轮廓顶点。

在公式(3)中,引入了投影矩阵q,其可以指示关于rgb视频相机的属性信息。在一种实施方式中,可以将投影矩阵q表示为:

其中,fl是相机的焦距,并且(p0,q0)是图像中心点。

根据以上公式(1)至(4),可以将2d面部特征点s视为是对应的3d面部顶点的函数,其取决于q、u、e、r、t和d,如下:

γ(q,u,e,r,t,d)=s公式(5)

其中,γ是用于将3d表示参数(例如q、u、e、r、t和d)映射到2d面部特征点的映射函数。

应当注意,对于同一个人和同一台视频相机,q和u通常在所有面部图像上是不变的。因此,q和u可以被预先解出并且可以不在回归中涉及。后面将解释q和u的求解。考虑到q和u是不变的,公式(5)中的余下的未知变量可以被定义为形状向量p=(e,r,t,d)。因此,可以将3d面部表示参数视为包括q、u和p。p的维度取决于e、r、t和d的维度。例如,在e是一个1×46的向量、r是一个4×1的四元数、t是一个1×3的向量以及d是一个(73×2)×1的向量的情况下,p可以是,例如,一个(46+4+3+73×2)×1的向量。

根据本公开的各种实施例,可以在实时3d面部跟踪期间应用本地特征回归。例如,在一种实施方式中,可以将本地特征回归一般性地表示为:

其中,i是输入面部图像,pin是来自先前面部图像的输入形状向量,并且是对应于输入面部图像的输出形状向量。

如上所述,可以在执行本地特征回归之前解出q和u。可以将待跟踪的某个人的初始输入面部图像用于解出q和u。例如,在一种实施方式中,可以利用任何2d面部对齐技术来从初始输入面部图像中检测出初始2d面部特征点s0。然后,可以通过下面的公式来获得q和u:

基于公式(7),通过使其中的表达式最小化,可以获得q和u。可以看出,也可以从公式(7)中获得e、r和t。因此,在假设d=0的情况下,也可以相应地确定初始p0。

可以采用各种方式来求解公式(7)。例如,在一种实施方式中,可以将图像宽度用作初始焦距以解出q,然后可以将二进制搜索方式应用在初始焦距上以找到候选焦距。候选焦距可以接着用于确定使得公式(7)中的表达式的拟合误差最小化的q。利用所确定的q,如果将u固定为面部表情数据库中的用户标识系数的平均值并且将e固定为中性脸的权重系数e0,则可以通过公式(7)来解出r和t,反之亦然。

在根据公式(7)解出q和u之后,可以将其用作本地特征回归中的已知常量。下面的回归公式是从公式(6)变形得到的:

其中,pt-1表示先前面部图像的形状向量,并且表示为面部图像获得的形状向量。

基于以上本地特征回归,可以为面部图像获得所有的3d面部表示参数,从而,这些参数可以用于构建3d面部网格。

根据本公开的一些实施方式,可以进一步改善在上述过程中获得的形状向量pt。例如,这些实施方式可以有效地确保表情系数向量e可以位于例如[0,1]的有效范围内,从而有助于获得无失真的构建的3d面部。此外,这些实施方式可以考虑到所获得的形状向量的时间平滑性,从而有助于在例如不发生一组帧之间的抖动问题的情况下来显示3d面部。

例如,在本公开的一种实施方式中,可以在本地特征回归过程之后执行可选的后处理。在后处理中,可以确保表情系数向量位于[0,1]的有效范围内,并且可以获得经过时间平滑的后处理的形状向量。可以采用各种方式来执行后处理。例如,在一种实施方式中,可以通过下面的公式来表示后处理:

pt=(et,rt,tt,dt)公式(12)

在公式(9)中,表示由本地特征回归所输出的形状向量。可以通过应用边界约束以使得e位于[0,1]的范围内,来对公式(10)中的第一项进行求解。例如,可以将基于梯度的求解器“lbgfs-b”用于第一项。公式(10)中的第二项可以用于解决在z方向上刚性平移向量t的模糊性。例如,可以将双边(bilateral)滤波器应用于第二项,其中,双边滤波器是一种用于图像的非线性、边缘保护且降低噪声的平滑滤波器。通过公式(9)至(11),可以最终在公式(12)中获得经过后处理的形状向量pt

根据本公开的实施例,在执行了本地特征回归和可选的后处理之后,可以可选地进行用于确定新的代表帧以及更新用户标识向量u的机制。

在一种实施方式中,如果面部图像中的表情是极端的,并且该表情与先前表情之间的最小差异高于阈值,则可将该面部图像视为是一个新的代表帧。例如,如果该面部图像的表情系数与由现有面部图像形成的线性空间足够远,则可以将该面部图像确定为一个新的代表帧。该新的代表帧可以进而用于更新用户标识向量u。例如,在一种实施方式中,可以通过使得下面的公式最小化来获得更新的用户标识向量u:

可以将从公式(13)获得的更新的用户标识向量u用于后续的本地特征回归。因此,本公开可以通过在本地特征回归期间更新用户标识向量来实现更准确的3d面部跟踪。

本公开可以采用各种实施方式来执行本地特征回归。例如,在一种实施方式中,本地特征回归可以基于标准的随机森林。应当注意,以下涉及随机森林的公开仅仅旨在解释本公开的一些实施例的一些示例性技术细节,而并非旨在以任何方式限制本公开。

图2示出根据本公开实施例的示例性本地特征回归森林200。如图2所示,本地特征回归森林200可以包括l个回归级,并且每一级可以包括m棵回归树。每一棵回归树是一棵二进制决策树。

图3示出根据本公开实施例的本地特征回归森林中的回归树300的示例性配置。

回归树300可以是图2的本地特征回归森林200中的m棵回归树中之一。如图3所示,回归树300可以包括非叶子节点301~303以及叶子节点304~307。每一个非叶子节点301~303设置有特征索引和阈值。例如,在非叶子节点303处,特征索引设置为2,阈值设置为-0.1。此外,每一个叶子节点304~307被分配有更新向量。例如,在叶子节点305处,更新向量被分配为δp1。应当注意,图3中的回归树300仅仅是示例,根据本公开的回归树并不局限于回归树300的配置(包括,例如,非叶子节点或叶子节点的数量、非叶子节点中设置的特征索引和阈值、以及为叶子节点分配的更新向量)。

回归树300的回归输入是本地特征向量fi,其中,i是输入面部图像的索引。fi用于表示本地特征,其可以是从与回归树300对应的特征点附近的采样点所获得的。后面将解释fi的获得。

在单棵树回归过程期间,取决于在非叶子节点处设置的特征索引和阈值,可以将输入的本地特征向量从根节点传递到叶子节点之一,并且可以由所映射到的叶子节点返回更新向量。

可以用映射函数(其中j是回归树300的索引)以及回归函数来表示回归树300。

映射函数可以将本地特征向量映射到回归树300的一个叶子节点。从而,映射函数的输出可以是指示所映射到的叶子节点的索引的二进制向量。例如,在一种实施方式中,当回归树300中的遍历到达某一个非叶子节点时,将输入的本地特征向量fi中的、由该非叶子节点处设置的特征索引所索引到的特征值与该非叶子节点处设置的阈值进行比较。如果该特征值小于阈值,则该遍历将前进到,例如,左侧子节点,否则,该遍历将前进到,例如,右侧子节点。通过这种方式,该遍历将会最终到达叶子节点304~307中的一个。假定本地特征向量被映射到叶子节点305,则映射函数的输出可以是[0100],其中“1”表示所映射到的叶子节点305。

回归函数的输出可以是分配给所映射到的叶子节点的更新向量。例如,如果本地特征向量被映射到叶子节点305并且叶子节点305被分配有更新向量δp1,则回归函数的输出可以是δp1

提供以下示例以便有助于理解单棵回归树的整体回归过程。将示例性的本地特征向量fi=[0.3,0.5,-0.2,0.1]输入到回归树300,其中,fi中的特征值“0.3”、“0.5”、“-0.2”和“0.1”的特征索引分别是0、1、2和3。应当注意,fi中包含的特征值的数量以及fi中的所有特征值都是示例性的。

在节点301处,特征索引已设置为3,并且阈值已设置为0.0。由于fi[3]=0.1并且其高于阈值0.0,所以该遍历前进到右侧子节点203。在节点303处,特征索引设置为2,并且阈值设置为-0.1。由于fi[2]=-0.2并且其低于阈值-0.1,所以该遍历前进到左侧子节点306。叶子节点306被分配有更新向量δp2。因此,在该示例中,映射函数的输出为[0010],并且回归函数的输出为δp2

以上结合图3解释了单棵树回归过程。下面的表1将示出整个本地特征回归森林的示例性的一般性本地特征回归流程。应当注意,表1中的所有步骤都仅仅是示例性的,本公开并不局限于表1中的任何步骤或这些步骤的顺序,而是应当覆盖在相同或相似概念下的所有其它等同变换。

表1

在一种实施方式中,本地特征回归森林的本地特征回归可以利用当前形状向量以及回归森林中所有回归树所输出的更新向量来最终获得导出的形状向量。

在步骤1.1,将初始形状向量p0赋值给当前形状向量pcur。步骤1.2规定了在l个回归级上的迭代。在步骤1.3,利用函数derivefeature(i,pcur,q)来获得本地特征向量fi,其中,该函数可以从当前面部图像中导出本地特征向量,这将在后面进行解释。在步骤1.4至1.6,通过与某一回归级l中的m棵回归树所输出的所有更新向量相加来更新当前形状向量pcur。在步骤1.7,最终获得导出的形状向量pout。

参照以上本地特征回归流程,其回归行为可以用数学形式表示为:

pl=pl-1+δpl公式(14)

δpl=wlφl(fl)公式(15)

pout=pl-1=pl-2+δpl-1公式(16)

其中,φl=[φl,0,φl,1,...,φl,m],并且φl包括一组映射函数,该组映射函数对应于某一回归级l中的m棵回归树,以及wl是回归矩阵。wl的列数等于回归级l中的叶子节点的数量,并且wl的每一列包括分配给对应的一个叶子节点的更新向量。根据公式(14)和(15),可以获得回归级l的形状向量pl。此外,根据公式(16),可以获得整个回归森林所输出的形状向量pout。

如以上结合表1所述,可以从当前面部图像i获得本地特征向量fi。下面的表2示出用于获得本地特征向量的示例性流程。应当注意,表2中的所有步骤都仅仅是示例性的,本公开并不局限于表2中的任何步骤或这些步骤的顺序,而是应当覆盖在相同或相似概念下的所有其它等同变换。

表2

在步骤2.1,可以根据例如公式(3)和(5)来将3d面部表示参数映射到2d面部特征点。在步骤2.2至2.9,定义并更新本地特征向量f中的特征值的索引。步骤2.3规定了在lengthof(s)个特征点上进行迭代。步骤2.4至2.9规定了针对某一特征点k的本地特征向量的获取。在一种实施方式中,可以为特征点定义本地区域,使得可以进而从该本地区域中选择采样点。本地区域可以是,例如,以该特征点为中心的圆。应当注意,本地区域也可以具有除圆以外的任何其它形式,只要其可以定义特征点附近的用于从中选择采样点的确定区域即可。在采用圆作为本地区域的情况下,圆的中心可以表示为s[k],其半径可以表示为∈。在步骤2.4,可以在圆内随机地选择x个采样点,这些采样点被表示为ρ。例如,在一种实施方式中,x的值可以设置为50。在步骤2.5,可以将函数app(i,ρ)用于获得fraw,该fraw包含采样点的所有提取的特征测量。函数app(i,ρ)可以用于在当前面部图像i中在采样点ρ处提取特征测量,并且可以用各种方式来实施。在一种实施方式中,所提取的特征测量可以是采样点的强度。在步骤2.6至2.9,计算任意两个采样点的特征测量之间的色差,从而,所获得的本地特征向量f将这些色差包含作为一组特征值。例如,在一种实施方式中,如果采样点的数量x是50,则本地特征向量f中包含的一组特征值的数量将是

在一种实施方式中,对应于某一特征点的本地区域的大小可以从一级到下一级逐渐缩小。例如,当采用圆作为本地区域时,圆的半径∈可以随着级的增加而减小。即,当本地特征回归进行到下一级时,将在更小的区域中选择对应于某一特征点的采样点。

在一种实施方式中,考虑到面部的大小或形状可能随着帧而改变,可以可选地以归一化坐标来定义特征点和采样点。

在一种实施方式中,可以将模板3d面部图像投影到2d图像平面。所投影的模板面部图像可以归一化到单位方形(unitsquare)。从而,可以用归一化坐标来定义对应于所投影的模板面部图像的特征点和相应采样点的位置,其中,对于每个面部特征点,可以在其本地区域中随机地确定采样点。当输入进一步的面部图像时,可以将移动最小二乘法用于对所投影的模板面部图像的面部特征点位置进行变形,以对应于所述进一步的面部图像的面部特征点,由此在不同的面部图像之间对准坐标。从而,对于变形操作之后的面部特征点,可以在进一步的面部图像中随机地确定相应的采样点,并且这些采样点也是以归一化坐标来定义的。

如上所述,在执行本地特征回归之前,应当配置本地特征回归森林中的节点。例如,应当在非叶子节点处设置特征索引和阈值,并且应当为叶子节点分配更新向量。可以通过训练过程来实现对本地特征回归森林中的节点的这种配置。

可以利用一组训练数据来训练本地特征回归森林。训练数据可以包括,例如,训练面部图像、猜测和真实形状向量对、等等。可以按如下方式获得训练数据。

首先,可以从任意公共资源,例如facewarehouse数据库,获得训练面部图像。然后,可以人工地在每个面部上标记例如73个2d面部特征点,表示为{si}(其中,i是面部图像的索引)。然后,根据下面的公式,可以解出3d面部表示参数,以通过最小化投影差异来最佳拟合{si}。

对于面部图像ii,可以通过公式(17)至(19)来获得真实的参数其中,真实形状向量

然后,可以构建各种类型的猜测-真实训练对。此处,pij表示猜测形状向量,表示真实形状向量,其中,j是对应于面部图像ii的猜测-真实对的索引。此外,表示从随机面部图像取得的猜测位移向量。下面构建了一些示例性类型的猜测-真实训练对,但是应当注意,本公开并不局限于这些训练对。

随机旋转:加入随机旋转δrij,导致

随机平移:加入随机平移δtij,导致

随机表情:选择随机面部图像ii′和其对应的表情系数向量导致

随机标识:选择随机面部图像ii′和其对应的用户标识向量导致

其中,是利用新的真实用户标识向量来重新计算的位移向量。

随机相机:加入随机焦距偏移导致

其中,是利用新的投影矩阵来重新计算的位移向量。

在如上所述获得了训练数据之后,可以将训练数据进而用于分别为本地特征回归森林中的非叶子节点学习特征索引和阈值,以及为本地特征回归森林中的叶子节点学习更新向量。

下面的表3示出了用于为单个非叶子节点学习特征索引和阈值的示例性流程。应当注意,表3中的所有步骤都仅仅是示例性的,本公开并不局限于表3中的任何步骤或这些步骤的顺序,而是应当覆盖在相同或相似概念下的所有其它等同变换。

表3

表3中所示的流程旨在有助于使得映射到同一叶子节点的真实形状向量增量尽可能相似。考虑到有限的计算资源,可以首先随机地选择y个候选特征索引,然后可以针对非叶子节点确定这些候选中的最佳的一个。关于非叶子节点的阈值的确定,可以使用k-means方法,其中,可以将训练数据分类成两个簇,并且可以将两个簇的中心的平均值确定为阈值。

表3定义了n个输入训练数据g,其中fi是从面部图像ii获得的本地特征向量,并且δpi是可以从一对猜测-真实训练形状向量获得的真实形状向量增量。在步骤3.1,可以在范围[0,lengthof(fi)]中随机地选择y个特征索引。在步骤3.2,将初始值分别赋值给最佳特征索引变量vbest、最佳阈值变量hbest以及最小决策变量gcoremin。步骤3.3规定了在v中在y个特征索引上进行迭代。在步骤3.4,利用k-means方法来确定候选阈值hcand。在步骤3.5,通过与候选阈值hcand进行比较来将n个输入训练数据g分割成两个簇gleft和gright。在一种实施方式中,对于某一输入训练数据,如果其fi[v]<hcand,则将会把该输入训练数据分配给gleft,否则分配给gright。在步骤3.6至3.7,分别计算gleft和gright中的δpi的方差,即,lvar和rvar。在步骤3.8,基于lvar和rvar以及gleft和gright中的输入训练数据的数量来获得决策变量gcore。在步骤3.9至3.11,取决于gcore与gcoremin之间的比较,分别更新vbest、hbest和gcoremin的值。

通过表3的流程,可以为单个非叶子节点学习特征索引和阈值。下面的表4示出了用于学习一棵树的所有非叶子节点的示例性的一般流程。应当注意,表4中的所有步骤都仅仅是示例性的,本公开并不局限于表4中的任何步骤或这些步骤的顺序,而是应当覆盖在相同或相似概念下的所有其它等同变换。

表4

在步骤4.1,将n个输入训练数据g用作对树的根节点的输入。步骤4.2规定了在树的所有非叶子节点的索引上进行迭代。在一种实施方式中,可以按照例如广度优先搜索(bfs)顺序来对树的所有非叶子节点进行索引。在步骤4.3,通过表3中示出的函数learnnonleafnode(gj)来为第j个非叶子节点学习特征索引vj和阈值hj,其中,gj是第j个非叶子节点的输入训练数据。在步骤4.4,分别确定当前的第j个非叶子节点的左子节点和右子节点的索引,即,j_left和j_right。在步骤4.5,通过以与表3中步骤3.5类似的方式对输入训练数据gj进行分割,来分别确定第j_left个节点和第j_right个节点的输入训练数据,即,gj_left和gj_right。

通过表4的流程并结合表3的流程,可以为树的所有非叶子节点学习特征索引和阈值。

关于叶子节点的更新向量的学习,在一种实现方式中,可以应用全局优化来为叶子节点找到最佳的更新向量。可以将目标函数表示为:

其中,i是输入面部图像的索引,l是回归级的索引,并且是真实形状向量增量。公式(20)中的第一项是回归目标,并且公式(20)中的第二项是对wl的l2正则化,其中,λ控制正则化强度。第二项用于避免过度拟合。由于此处所求解的是大离散线性系统,所以可以使用双坐标下降(dualcoordinatedescent)方法来对其进行求解。所获得的wl是第l个回归级中所有叶子节点的更新向量的集合,其中,wl的每一列是分配给对应叶子节点的更新向量。为了方便,以上公式(20)可以称为learnupdatevectors。

基于对非叶子节点和叶子节点的所有上述学习过程,下面的表5示出了用于学习整个本地特征回归森林的示例性的一般流程。应当注意,表5中的所有步骤都仅仅是示例性的,本公开并不局限于表5中的任何步骤或这些步骤的顺序,而是应当覆盖在相同或相似概念下的所有其它等同变换。

表5

表5定义了n个输入训练数据g,其中,并且i是输入面部图像的索引。在步骤5.1至5.2,为每个输入面部图像i的当前形状向量pcur[i]赋值初始形状向量。步骤5.3规定了在回归森林中的l个回归级上进行迭代。在步骤5.4到5.5,确定对应于每个输入面部图像i的本地特征向量flist[i]l,其中,调用表2中示出的函数derivefeature。在步骤5.6至5.8,确定第l个回归级中所有树的索引。此处,应当注意到,尽管在表5中将面部特征点的数量设置为73并且将为每个面部特征点建立的树的数量设置为5,这些数量仅仅是示例性的和可选的,其可以基于不同的需求和设计而具有任何其它值。例如,仅仅为每个面部特征点建立一棵树也是适用的。在步骤5.9,为树中的非叶子节点学习索引和阈值,其中,调用表4中示出的函数learntree。通过步骤5.9,可以分别获得第l个回归级中每棵树的映射函数并且相应地,也可以确定这些映射函数的集合φl。在步骤5.10,可以学习第l个回归级中所有叶子节点的更新向量,即wl,其中调用基于公式(20)的函数learnupdatevectors。在步骤5.11至5.12,将所获得的wl和φl用于更新对应于每个输入面部图像i的当前形状向量pcur[i]。

如上所述,通过表5的流程,可以对整个本地特征回归森林进行学习。现在,可以结合表1示出的流程来将该本地特征回归森林用于执行本地特征回归。

图4是根据本公开实施例的用于3d面部跟踪的示例性方法400的流程图。

在s410,可以获得2d面部图像。

在s420,可以对2d面部图像执行本地特征回归,以确定对应于2d面部图像的3d面部表示参数。

在一种实施方式中,执行本地特征回归可以包括:将对应于先前2d面部图像的3d面部表示参数用作本地特征回归的初始输入参数。

在一种实施方式中,所确定的3d面部表示参数可以包括投影矩阵q、用户标识向量u以及形状向量p。形状向量p可以包括表情系数向量e、刚性旋转四元数r、刚性平移向量t以及位移向量d。3d面部表示参数可以进而用于根据3d面部表示模型来呈现3d面部网格,并且有助于确定对应的2d面部特征点。

在一种实施方式中,执行本地特征回归可以包括:基于图2所示的随机森林来执行所述回归。随机森林可以包括多个回归级。每个回归级可以包括多棵回归树。每一级中的至少一棵回归树可以对应于一个特征点。

所述至少一棵回归树中的每一棵回归树的回归输入可以是从所述特征点的对应于所述级的本地区域所获得的本地特征向量。可选地,所述特征点的对应于所述级的所述本地区域可以是以该特征点为中心点的圆,该圆的半径随着所述级的增加而减小。每一棵回归树的输出可以是来自该回归树的多个叶子节点中的一个叶子节点的更新向量。

在一种实施方式中,本地特征向量可以包括在所述特征点的对应于所述级的所述本地区域中的任意两个采样点之间的色差。可选地,采样点是通过使用,例如,移动最小二乘而以归一化坐标来定义的。

在一种实施方式中,可以利用一组训练数据来训练随机森林。当训练随机森林时,可以为每个非叶子节点确定特征索引和阈值,并且可以为每个叶子节点确定更新向量。

在一种实施方式中,本地特征回归可以使用先前2d面部图像的形状向量以及随机森林中的回归树所输出的更新向量来导出输出的形状向量。

在一种实施方式中,可以将所输出的形状向量用于从混合形状基础矩阵b来生成3d面部网格。

可选地,可以对所输出的形状向量执行后处理。通过后处理,表情系数向量e可以位于有效范围内,和/或可以获得经过时间平滑的后处理的形状向量。

在一种实施方式中,在后处理之后,可以更新用户标识向量u。

在一种实施方式中,可以由3d面部网格上的对应顶点对每一个2d面部特征点进行投影。在这种情况下,可以通过以下方式来确定沿着面部轮廓的对应于2d面部特征点的轮廓顶点:通过在3d面部网格上画出多段线来标记可能的轮廓区域;对于每一条多段线,基于该多段线中的至少一个点是否是可见的,将最外侧的点或最内侧的点选择作为轮廓点;将所有的轮廓点链接起来以形成一条密集轮廓点线;以及对密集轮廓点线均匀地采样,以便获得轮廓顶点。

在s430,可以基于所确定的3d面部表示参数来生成3d面部网格和对应的2d面部特征点。

图5示出根据本公开实施例的用于3d面部跟踪的示例性装置500。

装置500可以包括:获得模块510,用于获得二维(2d)面部图像;回归执行模块520,用于对所述2d面部图像执行本地特征回归,以确定对应于所述2d面部图像的3d面部表示参数;以及生成模块530,用于基于所确定的3d面部表示参数来生成3d面部网格和对应的2d面部特征点。

在一种实施方式中,回归执行模块520可以进一步用于基于随机森林来执行回归。随机森林可以包括多个回归级。每个回归级可以包括多棵回归树。每一级中的至少一棵回归树可以对应于一个特征点。所述至少一棵回归树中的每一棵回归树的回归输入是从所述特征点的对应于所述级的本地区域所获得的本地特征向量。每一棵回归树的输出是来自该回归树的多个叶子节点中的一个叶子节点的更新向量。

在一种实施方式中,所述特征点的对应于所述级的所述本地区域可以是以该特征点为中心点的圆,该圆的半径随着所述级的增加而减小。

在一种实施方式中,本地特征向量可以包括在所述特征点的对应于所述级的所述本地区域中的任意两个采样点之间的色差。采样点可以是通过使用,例如,移动最小二乘而以归一化坐标来定义的。

在一种实施方式中,每一棵回归树的输出可以是来自该回归树的多个叶子节点中的一个叶子节点的更新向量。本地特征回归可以输出形状向量。所输出的形状向量可以是根据先前2d面部图像的形状向量以及随机森林中的回归树输出的更新向量来导出的。

在一种实施方式中,装置500可以进一步包括后处理执行模块,其用于对所输出的形状向量执行后处理,以便使得表情系数向量e位于有效范围内和/或获得经过时间平滑的后处理的形状向量。

在一种实施方式中,装置500可以进一步包括更新模块,其用于在后处理之后更新用户标识向量u。

此外,装置500也可以包括用于实施与根据本公开的用于3d面部跟踪的方法的任意步骤相对应的功能的任意其它模块。

图6示出根据本公开实施例的用于3d面部跟踪的示例性系统600。系统600可以包括一个或多个处理器610。系统600还可以包括存储器620,其与所述一个或多个处理器连接。存储器620可以存储计算机可执行指令,当所述计算机可执行指令被执行时,使得所述一个或多个处理器执行根据本公开的用于3d面部跟踪的方法的任意步骤。

本公开的方案可以实施在非易失性计算机可读介质中。该非易失性计算机可读介质可以包括指令,当所述指令被执行时,使得一个或多个处理器执行根据本公开的用于3d面部跟踪的方法的任意步骤。

已经结合各种装置和方法描述了处理器。这些处理器可以使用电子硬件、计算机软件或其任意组合来实施。这些处理器是实施为硬件还是软件将取决于具体的应用以及施加在系统上的总体设计约束。作为示例,本公开中涉及的处理器、处理器的任意部分、或者处理器的任意组合可以实施为微处理器、微控制器、数字信号处理器(dsp)、现场可编程门阵列(fpga)、可编程逻辑器件(pld)、状态机、门逻辑、分立硬件电路、以及配置用于执行本公开被描述的各种功能的其它适合的处理部件。本公开涉及的处理器、处理器的任意部分、或者处理器的任意组合的功能可以实施为由微处理器、微控制器、dsp或其它适合的平台所执行的软件。

软件应当被广泛地视为表示指令、指令集、代码、代码段、程序代码、程序、子程序、软件模块、应用、软件应用、软件包、例程、子例程、对象、执行线程、过程、函数等。软件可以驻留在计算机可读介质中。计算机可读介质可以包括例如存储器,存储器可以例如为磁性存储设备(如,硬盘、软盘、磁条)、光盘、智能卡、闪存设备、随机存取存储器(ram)、只读存储器(rom)、可编程rom(prom)、可擦除prom(eprom)、电可擦除prom(eeprom)、寄存器或者可移动盘。尽管在本公开涉及的多个方面中将存储器示出为是与处理器分离的,但是存储器可以位于处理器内部(如,缓存或寄存器)。

应当理解,所公开方法的步骤顺序是示例性过程的说明。基于设计优选,应当理解,方法中的步骤顺序可以重新排列。

本说明书被提供用于使得本领域技术人员可以实施本文所描述的各个方面。这些方面的各种修改对于本领域技术人员是显而易见的,本文描述的一般性原理可以应用于其它方面。因此,权利要求并非旨在被局限于本文示出的方面。关于本领域技术人员已知或即将获知的、对本公开所描述各个方面的元素的所有结构和功能上的等同变换,将通过引用而明确地包含到本文中,并且旨在由权利要求所覆盖。

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