人脸关键点的插值方法、装置、计算机设备和存储介质与流程

文档序号:26559470发布日期:2021-09-08 01:15阅读:195来源:国知局
人脸关键点的插值方法、装置、计算机设备和存储介质与流程

1.本发明实施例涉及计算机视觉的技术领域,尤其涉及一种人脸关键点的插值方法、装置、计算机设备和存储介质。


背景技术:

2.对于增强现实(augmented reality,ar)(如给用户试戴帽子、试戴眼镜、追加胡子等)、人脸驱动虚拟角色(如人偶、动物)等图像处理,是基于用户的人脸数据进行的。
3.这些人脸数据属于三维人脸的二维投影,为了业务需求,根据人脸数据上的人脸关键点准确地计算三维的人脸模型和三维的人脸姿态,这个过程是人脸关键点拟合的过程,处理较为复杂,计算量较高,难以在资源较为紧缺的设备上实时处理。


技术实现要素:

4.本发明实施例提出了一种人脸关键点的插值方法、装置、计算机设备和存储介质,以解决如何降低拟合人脸关键点的计算量的问题。
5.第一方面,本发明实施例提供了一种人脸关键点的插值方法,包括:
6.获取二维的第一人脸数据,所述第一人脸数据中具有二维的第一人脸关键点;
7.根据所述第一人脸关键点拟合三维的第二人脸数据,所述第二人脸数据具有三维的第二人脸关键点;
8.选定所述第二人脸数据中局部的区域,作为目标区域;
9.对所述目标区域进行线性变形,使得将所述目标区域中的所述第二人脸关键点透视投影至二维的第三人脸关键点时,所述第一人脸关键点与所述第三人脸关键点重叠。
10.第二方面,本发明实施例还提供了一种人脸关键点的插值装置,包括:
11.二维人脸数据获取模块,用于获取二维的第一人脸数据,所述第一人脸数据中具有二维的第一人脸关键点;
12.三维人脸数据拟合模块,用于根据所述第一人脸关键点拟合三维的第二人脸数据,所述第二人脸数据具有三维的第二人脸关键点;
13.目标区域选定模块,用于选定所述第二人脸数据中局部的区域,作为目标区域;
14.目标区域形变模块,用于对所述目标区域进行线性变形,使得将所述目标区域中的所述第二人脸关键点透视投影至二维的第三人脸关键点时,所述第一人脸关键点与所述第三人脸关键点重叠。
15.第三方面,本发明实施例还提供了一种计算机设备,所述计算机设备包括:
16.一个或多个处理器;
17.存储器,用于存储一个或多个程序,
18.当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面所述的人脸关键点的插值方法。
19.第四方面,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存
储介质上存储计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的人脸关键点的插值方法。
20.本实施例获取二维的第一人脸数据,第一人脸数据中具有二维的第一人脸关键点,根据第一人脸关键点拟合三维的第二人脸数据,第二人脸数据具有三维的第二人脸关键点,选定第二人脸数据中局部的区域,作为目标区域,对目标区域进行线性变形,使得将目标区域中的第二人脸关键点透视投影至二维的第三人脸关键点时,第一人脸关键点与第三人脸关键点重叠,将拟合人脸数据时的优化问题调整为线性的优化问题,线性的优化问题处理较为简单,计算量较低,可以大大降低计算耗时,在资源较为紧缺的设备上实时处理。
附图说明
21.图1为本发明实施例一提供的一种人脸关键点的插值方法的流程图;
22.图2为本发明实施例一提供的一种目标区域的示例图;
23.图3a至图3e是本发明实施例一提供的一种重投影的示例图;
24.图4为本发明实施例三提供的一种人脸关键点的插值装置的结构示意图;
25.图5为本发明实施例四提供的一种计算机设备的结构示意图。
具体实施方式
26.下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
27.实施例一
28.图1为本发明实施例一提供的一种人脸关键点的插值方法的流程图,本实施例可适用于通过线性的方式对人脸关键点进行插值的情况,该方法可以由人脸关键点的插值装置来执行,该人脸关键点的插值装置可以由软件和/或硬件实现,可配置在计算机设备中,例如,移动终端(如手机、平板电脑等)、可穿戴设备(如智能眼镜、智能手表等),等等,具体包括如下步骤:
29.步骤101、获取二维的第一人脸数据。
30.一方面,在计算机设备中,可以安装android(安卓)、ios、harmonyos(鸿蒙系统)等操作系统,用户可以在这些操作系统中安装其所需的应用程序,例如,直播应用、短视频应用、美颜应用、会议应用,等等。
31.另一方面,计算机设备可以配置有一个或多个摄像头camera,这些摄像头可以安装在计算机设备的正面(又称前置摄像头)、也可以安装在计算机设备的背部(又称后置摄像头)。
32.在ar、人脸驱动虚拟角色等业务操作中,这些应用程序可以调用摄像头面向用户采集图像数据,对该图像数据进行人脸检测,从而在图像数据中检测用户二维的人脸数据,该人脸数据以二维的人脸关键点表示,为便于区分,二维的人脸数据记为第一人脸数据,二维的人脸关键点记为第一人脸关键点,即,在二维的第一人脸数据中具有二维的第一人脸关键点。
33.其中,人脸检测也称为人脸关键点检测、定位或者人脸对齐,是指给定人脸数据,定位出人脸面部的关键区域位置,包括眉毛、眼睛、鼻子、嘴巴、脸部轮廓等等。
34.进一步地,可通过如下方式进行人脸检测:
35.1、利用人工提取特征,如haar特征,使用特征训练分类器,使用分类器进行人脸检测。
36.2、从通用的目标检测算法中继承人脸检测,例如,利用faster r

cnn来检测人脸。
37.3、使用级联结构的卷积神经网络,例如,cascade cnn(级联卷积神经网络),mtcnn(multi

task cascaded convolutional networks,多任务卷积神经网络)。
38.需要说明的是,人脸关键点的数量,可以由本领域技术人员根据实际情况设置,对于静态的图像处理,实时性要求较低,可以检测较为稠密的人脸关键点,如1000个,除了能定位人脸重要特征点之外,还能准确的描述出五官的轮廓;对于直播等,实时性要求较高,可以检测较为稀疏的人脸关键点,如68、81、106个,定位人脸上比较明显且重要的特征点(如眼睛关键点、眉毛关键点、鼻子关键点、嘴巴关键点、轮廓关键点等),以降低处理量、减少处理时间,等等,本发明实施例对此不加以限制。
39.示例性地,调用摄像头面向用户采集视频数据,视频数据中具有多帧图像数据,通过卡尔曼滤波、光流法等方法在多帧图像数据中追踪二维的第一人脸数据。
40.对于透视投影,设定p为图像数据中人脸数据的姿态,在透视投影下,人脸数据的姿态为:
41.p={r,t}
42.其中,r为旋转矩阵r0为x轴的分量、r1为y轴的分量,r2为z轴的分量,t为平移向量t=(t0,t1,t2),t0为x轴的分量、t1为y轴的分量,t2为z轴的分量。
43.在给定摄像头的参数k(如内参、外参等)的情况下,将一个三维的点v透视投影为:
[0044][0045]
其中,
[0046]
在人脸追踪的过程中,第一人脸数据f可以表示为:
[0047]
f=f(α,δ)=c0+c
exp
δ
ꢀꢀꢀ
(2)
[0048]
其中,c0是用户的无表情的中性的人脸数据,c
exp
是该用户的表情形状融合变形器,δ是人脸数据的表情。
[0049]
在人脸追踪的过程中,在给定用户的身份向量α的情况下,视频数据中的多针图像数据包含如下数据:
[0050]
{q|p,δ}
[0051]
其中,q是第一人脸关键点,p是人脸数据的姿态,δ是人脸数据的表情。
[0052]
人脸追踪的过程中,可以采用坐标下降法(coordinate descent)求解下面的优化方程,从而得到p和δ:
[0053][0054]
其中,π
p
为公式(1)定义的透视投影,j为第j个第一人脸关键点,(p
‑1,δ
‑1)是前一帧图像数据的p和δ,γ0||(p,δ)

(p
‑1,δ
‑1)||是光顺项,γ||(p,δ)||是正则项,w
j
是第j个第一人脸关键点的权重。
[0055]
步骤102、根据第一人脸关键点拟合三维的第二人脸数据。
[0056]
在本实施例中,可以使用第一人脸关键点,通过3dmm(人脸三维形变统计模型)、端到端3d人脸重建(如vrnet、prnet、2dasl等)等方法拟合三维的人脸数据,记为第二人脸数据,该第二人脸数据具有三维的人脸关键点,记为第二人脸关键点。
[0057]
一般情况下,如图2所示,该第二人脸数据可以使用网格(如三角形)的形式表示,这些网格具有多个三维的顶点,部分顶点为第二人脸关键点。
[0058]
在拟合第二人脸数据的过程中,将三维的第二人脸关键点投影到二维的第三人脸关键点,使得所有二维的第三人脸关键点逼近所有二维的第一人脸关键点。
[0059]
步骤103、选定第二人脸数据中局部的区域,作为目标区域。
[0060]
在拟合第二人脸数据的过程中,第二人脸数据投影至人脸数据后得到第三人脸关键点,可以在整体上拟合整个人脸,但是,无法保证所有的第二人脸关键点插值,部分第三人脸关键点会偏离相应的第一人脸关键点,其中,所谓插值,可以指三维的第二人脸关键点投影到二维的第三人脸关键点时,第三人脸关键点与相应的第一人脸关键点重叠。
[0061]
例如,如图3a所示,对于表示脸部轮廓的人脸关键点,三维的第二人脸关键点投影到二维的第三人脸关键点302时,第三人脸关键点302偏离相应的第一人脸关键点301。
[0062]
为了对这部分第二人脸关键点插值,可以根据业务的需求选定第二人脸数据中局部的区域,作为目标区域去进行变形,即,在拟合第二人脸数据后再做一次局部的变形,使得指定的第二人脸关键点能在透视投影下跟对应的第一人脸关键点重合。
[0063]
一般情况下,目标区域为人脸中的五官,例如,眼睛、嘴巴、眉毛,等等,目标区域可预先记录在配置文件中,在应用程序执行业务操作时,加载该配置文件,并从该配置文件中读取待变形的目标区域。
[0064]
步骤104、对目标区域进行线性变形,使得将目标区域中的第二人脸关键点透视投影至二维的第三人脸关键点时,第一人脸关键点与第三人脸关键点重叠。
[0065]
在公式(3)可以拟合整体的第一人脸关键点q
i
,但无法做到完全插值,即:
[0066]
π
p
(c0+c
exp
δ)
j
≠q
j
[0067]
在人脸追踪的过程中,有时候插值一些第一人脸关键点,如眼睛的第一人脸关键点,从而可以对眼睛做三维特效。
[0068]
假设j是待插值的第二人脸关键点,适当提高这些第二人脸关键点的权重w
j
,j∈j,可以提高这些第二人脸关键点的拟合度,但是依然无法保证插值。如果将第二人脸关键点的权重w
j
(j∈j)设置太大,又会导致结果不稳定,重建出扭曲的人脸数据。
[0069]
为了插值第二人脸关键点j,对人脸数据中包含第二人脸关键点j的局部区域(即目标区域)进行变形。
[0070]
以laplacian(拉普拉斯)变形为例,laplacian变形是对网格的局部细节特征的编码和解码的过程。编码是指网格顶点的欧氏空间坐标到laplacian坐标的转换,laplacian坐标包含了网格的局部细节特征,因此,laplacian变形能够较好地保持网格的局部细节,解码是指通过微分坐标反求欧氏空间坐标,实质上是一个求解线性系统的过程,因此,laplacian变形算法高效、鲁棒。
[0071]
假设v是该目标区域内所有的顶点,采用laplaican变形对目标区域进行变形的过程中,保持laplaican坐标不变,同时可以保证插值第二人脸关键点j。
[0072][0073]
其中,l为laplacian矩阵,δ包含每个顶点对应的laplacian坐标,π
p
是公式(1)定义的透视投影。
[0074]
第一个优化项||lv

δ||是为了保持变形前后laplaican坐标不变,第二个优化项∑
j∈j
||π
p
(c0+c
exp
δ)
j

q
j
||2是为了进行第二人脸关键点插值,这里对的第二人脸关键点进行透视投影,而透视投影本身是非线性操作。因此,优化问题(4)是一个非线性的优化问题,求解非线性的优化问题的计算量较大,难以在资源较为紧缺的设备上实时处理。
[0075]
在本实施例中,在对第二人脸关键点进行插值时,使用线性的优化方法对目标区域进行变形。
[0076]
示例性地,图2定义了眼睛作为人脸数据中的目标区域,位于目标区域边界的顶点202,在线性变形的过程中保持不变,位于目标区域内部的顶点,在线性变形的过程中更新它们的坐标,使得这些顶点尽量保持laplacian坐标,同时,将第二人脸关键点203透射投影到人脸数据上后的第三人脸关键点与相应的第一人脸关键点重叠,位于目标区域之外的顶点201用于计算位于目标区域边界上顶点202的laplacian坐标,不参与线性变形。
[0077]
根据定义,线性变形后的laplacian向量为:
[0078][0079]
其中,w为人脸数据中所有顶点的拉普拉斯矩阵,大小为3m
×
3m,w1为第一子拉普拉斯矩阵,即,在所有顶点的拉普拉斯矩阵w中移除处于目标区域边界的顶点的前n列后剩余的矩阵,大小为3m
×
3(m

n),w2为第二子拉普拉斯矩阵,即,在所有顶点的拉普拉斯矩阵w中处于目标区域边界的顶点的前n列,大小为3m
×
3n。
[0080]
u=(u
0,0
,u
0,1
,

,u
0,n
‑1)为位于目标区域边界的顶点所组成的数组,v=(v
0,n
,v
0,n+1
,

,v
0,m
‑1)为位于目标区域内部的顶点所组成的数组。
[0081]
为了保持laplacian向量不变,需要优化:
[0082]
min||w1v

(l0‑
w2u)||
ꢀꢀꢀ
(5)
[0083]
假设b为第一人脸关键点的索引,q
i
=(q
i,x
,q
i,y
),i∈b为已知的第一人脸关键点,为摄像头的参数,可以定义如下第一参考矩阵k
i,0

[0084][0085]
根据公式(1),π(
·
)是基于摄像头的参数k的透视投影,设s
0,i
,s∈{u,v}为线性变换前的顶点,将其应用于线性变形后的顶点s
1,i
,s∈{u,v}:
[0086][0087]
其中,对于i∈b,s∈{u,v},结合第一参考矩阵k
i,0
,重新将第二人脸关键点进行投射投影(即重投影)的误差可以改写为:
[0088][0089]
插值的目标为最小化重投影的误差,即最小化如下函数:
[0090][0091]
其中,为线性变形之后的顶点。
[0092]
结合公式(5)和公式(6),插值的目标是求解如下函数:
[0093][0094]
公式(7)为非线性的优化问题,为了使得人脸追踪得到的网格重投影的误差足够小,可以假设第二人脸关键点的z轴的分量在laplacian变形前后的变化很小,即:
[0095][0096]
其中,设线性变形前,u
0,i
=(u
0,i,x
,u
0,i,y
,u
0,i,z
)为线性变换前的第二人脸关键点,u
1,i
=(u
1,i,x
,u
1,i,y
,u
1,i,z
)=ru
0,i
+t为线性变换后的第二人脸关键点,设v
0,i
=(v
0,i,x
,v
0,i,y
,v
0,i,z
)为变形后的顶点,v
1,i
=rv
0,i
+t=(v
1,i,x
,v
1,i,y
,v
1,i,z
)为线性变换后的顶点,v
1,i,z
=r2v
0,i
+t2为线性变换后的顶点的z轴的分量。
[0097]
v
1,i,z
=r2v
0,i
+t2为线性变换后的第二人脸关键点的z轴的分量。
[0098]
如果公式(7)使用如下方式进行逼近,会得到扭曲结果:
[0099][0100][0101]
根据公式(6):
[0102]
[0103]
最小化||k
i
(rv
0,i
+t)||即为最小化||v
1,i,z
(π(v
1,i
)

q
i
)||。
[0104]
所以,公式(8)、公式(9)会同时最小化||π(v
1,i
)

q
i
||和||v
1,i,z
||,即在让重投影的第三人脸关键点跟第一人脸关键点重合的同时,最小化||v
1,i,z
||,从而导致扭曲。
[0105]
如图3a所示,如果对眼睛的第二人脸关键点进行插值,使得重投影的第三人脸关键点与相应的第一人脸关键点重合,图3c所示的右眼的正面视图、图3e所示的右眼的上方视图均错误地线性逼近右眼,导致扭曲。
[0106]
在本发明的一个实施例中,步骤104包括如下步骤:
[0107]
步骤1041、设定对目标区域进行形变、将顶点映射至三维的目标点。
[0108]
在本实施例中,可以对人脸数据中的目标区域进行变形,如laplacian(拉普拉斯)变形,从而在三维的空间中,将目标区域内部的顶点映射至目标点v
0,i
=(v
0,i,x
,v
0,i,y
,v
0,i,z
),目标点待求解。
[0109]
步骤1042、计算第一向量与第二向量之间的差异,作为向量差异。
[0110]
在本实施例中,可以对目标区域中的顶点进行线性变换,并在线性变化之后的向量空间中计算第一向量与第二向量之间的差异,作为向量差异。
[0111]
其中,第一向量为顶点转换的向量,第二向量为目标点转换的向量。
[0112]
示例性地,一方面,对顶点进行拉普拉斯laplacian变形,可以得到第一向量l0,
[0113]
其中,w为人脸数据中所有顶点的拉普拉斯矩阵,w1为第一子拉普拉斯矩阵,即,在所有顶点的拉普拉斯矩阵w中移除处于目标区域边界的顶点的前n列后剩余的矩阵,w2为第二子拉普拉斯矩阵,即,在所有顶点的拉普拉斯矩阵w中处于目标区域边界的顶点的前n列。
[0114]
p=(p0,p1,

,p
m
‑1)为人脸数据的顶点,首n个顶点为位于目标区域边界的顶点,p1=(p
n
,p
n+1
,

,p
m
‑1)为位于目标区域内部的顶点,p2=(p0,p1,

,p
n
‑1)为位于目标区域边界的顶点。
[0115]
进一步地,拉普拉斯矩阵w、第一子拉普拉斯矩阵w1和第二子拉普拉斯矩阵w2初始化于整个人脸追踪开始前,是基于中性人脸中的顶点进行初始化,避免每帧图像数据均计算拉普拉斯矩阵w、第一子拉普拉斯矩阵w1和第二子拉普拉斯矩阵w2,从而加快线性变形的速度。
[0116]
另一方面,对目标点进行拉普拉斯laplacian变形,可以得到第二向量w2u+w1v。
[0117]
其中,u=(u
0,0
,u
0,1
,

,u
0,n
‑1)为位于目标区域边界的顶点,v=(v
0,n
,v
0,n+1
,

,v
0,m
‑1)为位于目标区域内部的顶点。
[0118]
将第一向量减去第二向量,获得向量差异w1v

(l0‑
w2u)。
[0119]
步骤1043、计算第一人脸关键点与第三人脸关键点之间的差异,作为重投影差异。
[0120]
在本实施例中,将目标点投射投影至人脸数据中,可获得人脸关键点,记为第三人脸关键点,即第三人脸关键点为将目标点所透视投影的二维的人脸关键点,计算计算第一人脸关键点与第三人脸关键点之间的差异,记为重投影差异,重投影差异作为约束项,用于控制第二人脸关键点插值。
[0121]
在具体实现中,设q
i
=(q
i,x
,q
i,y
),i∈b为第一人脸关键点,则可以计算第一参考矩阵k
i,0
,第一参考矩阵为包含第一人脸关键点的单位矩阵与摄像头的参数之间的乘积,摄
像头用于采集第一人脸数据。
[0122][0123]
其中,为单位矩阵,为摄像头的参数。
[0124]
计算第二参考矩阵k
i
,第二参考矩阵为第一参考矩阵与对目标点线性变换后的z轴的分量之间的比值。
[0125][0126]
其中,设线性变形前,u
0,i
=(u
0,i,x
,u
0,i,y
,u
0,i,z
)为线性变换前的第二人脸关键点,u
1,i
=(u
1,i,x
,u
1,i,y
,u
1,i,z
)=ru
0,i
+t为线性变换后的第二人脸关键点,r为旋转矩阵,t为平移向量,即,旋转矩阵r与平移向量t均用于线性变换,u
1,i,z
=r2u
0,i
+t2线性变换后第二人脸关键点的z轴的分量(即z轴的分量)。
[0127]
此时,可计算第一目标矩阵j
i,0
、第二目标矩阵j
i,1

[0128]
其中,第一目标矩阵为第二参考矩阵与旋转矩阵之间的乘积j
i,0
=k
i
r,第二目标矩阵为第二参考矩阵与平移向量之间乘积的反向j
i,1


k
i
t。
[0129]
将第一目标矩阵与目标点之间的乘积,减去第二目标矩阵,获得重投影差异j
i,0
v
0,i

j
i,1

[0130]
步骤1044、计算目标点在z轴方向上移动的距离。
[0131]
在本实施例中,可计算目标点在z轴方向上移动的距离,从而作为约束项限制网格在z轴方向上的移动。
[0132]
在具体实现中,可以计算旋转矩阵的z轴的分量r2与目标点v
0,i
之间的乘积,作为第一中间值,计算第二人脸关键点线性变换后之后的z轴的分量u
1,i,z
减去平移向量的z轴的分量t2之间的差值,作为第二中间值,计算乘积与差值之间的差值,作为目标点在z轴方向上移动的距离r2v
0,i

(u
1,i,z

t2)。
[0133]
步骤1045、将向量差异、重投影差异与距离线性融合,作为目标函数。
[0134]
在本实施例中,可以将向量差异、重投影差异与距离进行线性融合,从而设定为目标函数。
[0135]
在具体实现中,对重投影差异配置第一权重,对距离配置第二权重,计算向量差异、配置第一权重的重投影差异与配置第二权重的距离之间的和值,作为目标函数,表示如下:
[0136][0137]
其中,α为第一权重,β为第二权重。
[0138]
步骤1046、以最小化目标函数作为目标,求解目标点。
[0139]
在本实施例中,可以以最小二乘法来逼近优化问题(7),使得最小化目标函数,从而求解目标点的坐标,设顶点(目标点)的数组为v=(v
0,n
,v
0,n+1
,

,v
0,m
‑1),则求解过程如下表示:
[0140][0141]
如图3a所示,如果对眼睛的第二人脸关键点进行插值,使得重投影的第三人脸关键点与相应的第一人脸关键点重合,图3c所示的右眼的正面视图、图3e所示的右眼的上方视图均正确地线性逼近右眼,并未产生扭曲。
[0142]
在具体实现中,可以构建第一稀疏矩阵a、第二稀疏矩阵b。
[0143]
其中,第一稀疏矩阵a包括第一子拉普拉斯矩阵,第一权重α与第一目标矩阵j
i,0
之间的乘积,第二权重β与旋转矩阵的z轴的分量r2之间的乘积,则第一稀疏矩阵a表示如下:
[0144][0145]
第二稀疏矩阵b包括第一向量l0减去第二子拉普拉斯矩阵w2与处于目标区域边界的顶点u之间乘积的差值,第一权重α与第二目标矩阵j
i,1
之间的乘积,第二权重β与第二中间值(u
1,i,z

t2)之间的乘积,则第二稀疏矩阵b表示如下:
[0146][0147]
设置目标关系,目标关系为线性方程,即,第一稀疏矩阵与目标函数之间的乘积等于第二稀疏矩阵,即av=b(11)。
[0148]
从而通过simplicialldlt(eigen提供了的内建直接求解器,用于直接ldlt分解)、conjugategradient(共轭梯度法)等稀疏矩阵法(sparse solver)基于目标关系求解目标
点。
[0149]
考虑到追踪人脸数据得到目标区域内部的顶点v0=(u
0,n
,u
0,n+1
,

,u
0,m
‑1)接近目标点,因此,可以将处于目标区域内部的顶点v0设置为目标点的初始值,本实施例线性变形的目标是让重投影的第三人脸关键点与第一人脸关键点重合,即π(v
1,i
)=q
i
,i∈b。实际上,在人脸数据上,π(v
1,i
)和q
i
之间保留一定的误差(如1像素以内)即可,也就是说,可以用迭代算法求解目标关系(11),设置数值较大的阈值,在初始值的基础上迭代更新目标点,直至第三人脸关键点与第一人脸关键点之间的差值小于预设的阈值,从而提高计算速度,减少计算耗时。
[0150]
示例性地,本实施例采用conjugategradient进行求解,并采用初始值v0,阈值为1e

5,从下表可以看出,这种策略耗时为simplicialldlt算法的一半,而且在结果上,没有明显区别。
[0151][0152][0153]
经测试,本实施例对左眼和右眼两个目标区域进行laplacian变形,在手机端上耗时为1ms,可以保证实时性。
[0154]
本实施例获取二维的第一人脸数据,第一人脸数据中具有二维的第一人脸关键点,根据第一人脸关键点拟合三维的第二人脸数据,第二人脸数据具有三维的第二人脸关键点,选定第二人脸数据中局部的区域,作为目标区域,对目标区域进行线性变形,使得将目标区域中的第二人脸关键点透视投影至二维的第三人脸关键点时,第一人脸关键点与第三人脸关键点重叠,将拟合人脸数据时的优化问题调整为线性的优化问题,线性的优化问题处理较为简单,计算量较低,可以大大降低计算耗时,在资源较为紧缺的设备上实时处理。
[0155]
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该
知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
[0156]
实施例二
[0157]
图4为本发明实施例二提供的一种人脸关键点的插值装置的结构框图,具体可以包括如下模块:
[0158]
二维人脸数据获取模块401,用于获取二维的第一人脸数据,所述第一人脸数据中具有二维的第一人脸关键点;
[0159]
三维人脸数据拟合模块402,用于根据所述第一人脸关键点拟合三维的第二人脸数据,所述第二人脸数据具有三维的第二人脸关键点;
[0160]
目标区域选定模块403,用于选定所述第二人脸数据中局部的区域,作为目标区域;
[0161]
目标区域形变模块404,用于对所述目标区域进行线性变形,使得将所述目标区域中的所述第二人脸关键点透视投影至二维的第三人脸关键点时,所述第一人脸关键点与所述第三人脸关键点重叠。
[0162]
在本发明的一个实施例中,所述第二人脸数据以网格的形式表示,所述网格中具有多个三维的顶点,部分所述顶点为所述第二人脸关键点;
[0163]
所述目标区域形变模块404包括:
[0164]
顶点映射模块,用于设定对所述目标区域进行形变、将所述顶点映射至三维的目标点;
[0165]
向量差异计算模块,用于计算第一向量与第二向量之间的差异,作为向量差异,所述第一向量为所述顶点转换的向量,所述第二向量为所述目标点转换的向量;
[0166]
重投影差异计算模块,用于计算所述第一人脸关键点与第三人脸关键点之间的差异,作为重投影差异,所述第三人脸关键点为将所述目标点所透视投影的二维的人脸关键点;
[0167]
移动距离计算模块,用于计算所述目标点在z轴方向上移动的距离;
[0168]
线性融合模块,用于将所述向量差异、所述重投影差异与所述距离线性融合,作为目标函数;
[0169]
目标点求解模块,用于以最小化所述目标函数作为目标,求解所述目标点。
[0170]
在本发明的一个实施例中,所述向量差异计算模块还用于:
[0171]
对所述顶点进行拉普拉斯变形,得到第一向量;
[0172]
对所述目标点进行拉普拉斯变形,得到第二向量;
[0173]
将所述第一向量减去所述第二向量,获得向量差异。
[0174]
在本发明的一个实施例中,所述重投影差异计算模块还用于:
[0175]
计算第一参考矩阵,所述第一参考矩阵为包含所述第一人脸关键点的单位矩阵与摄像头的参数之间的乘积,所述摄像头用于采集所述第一人脸数据;
[0176]
计算第二参考矩阵,所述第二参考矩阵为所述第一参考矩阵与对所述目标点线性变换后的z轴的分量之间的比值;
[0177]
计算第一目标矩阵、第二目标矩阵,所述第一目标矩阵为所述第二参考矩阵与旋转矩阵之间的乘积,所述第二目标矩阵为所述第二参考矩阵与平移向量之间乘积的反向,
所述旋转矩阵与所述平移向量均用于线性变换;
[0178]
将所述第一目标矩阵与所述目标点之间的乘积,减去所述第二目标矩阵,获得重投影差异。
[0179]
在本发明的一个实施例中,所述移动距离计算模块还用于:
[0180]
计算旋转矩阵的z轴的分量与所述目标点之间的乘积,作为第一中间值;
[0181]
计算所述第二人脸关键点线性变换后之后的z轴的分量减去平移向量的z轴的分量之间的差值,作为第二中间值;
[0182]
计算所述乘积与所述差值之间的差值,作为所述目标点在z轴方向上移动的距离。
[0183]
在本发明的一个实施例中,所述线性融合模块还用于:
[0184]
对所述重投影差异配置第一权重;
[0185]
对所述距离配置第二权重;
[0186]
计算所述向量差异、配置所述第一权重的所述重投影差异与配置所述第二权重的所述距离之间的和值,作为目标函数。
[0187]
在本发明的一个实施例中,所述目标点求解模块还用于:
[0188]
构建第一稀疏矩阵a、第二稀疏矩阵b,所述第一稀疏矩阵包括第一子拉普拉斯矩阵,第一权重与第一目标矩阵j
i,0
之间的乘积,第二权重与旋转矩阵的z轴的分量之间的乘积,所述第一子拉普拉斯矩阵为在所有所述顶点的拉普拉斯矩阵中移除处于所述目标区域边界的所述顶点的前n列后剩余的矩阵,所述第二稀疏矩阵包括第一向量减去第二子拉普拉斯矩阵与处于所述目标区域边界的所述顶点之间乘积的差值,第一权重与第二目标矩阵j
i,1
之间的乘积,第二权重与第二中间值之间的乘积,所述第二子拉普拉斯矩阵为在所有所述顶点的拉普拉斯矩阵中处于所述目标区域边界的所述顶点的前n列;
[0189]
设置目标关系,所述目标关系为所述第一稀疏矩阵与所述目标函数之间的乘积等于所述第二稀疏矩阵;
[0190]
基于所述目标关系求解所述目标点。
[0191]
在本发明的一个实施例中,所述目标点求解模块还用于:
[0192]
将处于所述目标区域内部的所述顶点设置为所述目标点的初始值;
[0193]
在所述初始值的基础上迭代更新所述目标点,直至所述第三人脸关键点与所述第一人脸关键点之间的差值小于预设的阈值。
[0194]
在本发明的一个实施例中,所述二维人脸数据获取模块401包括:
[0195]
视频数据采集模块,用于调用摄像头采集视频数据,所述视频数据中具有多帧图像数据;
[0196]
人脸追踪模块,用于在多帧所述图像数据中追踪二维的第一人脸数据。
[0197]
本发明实施例所提供的人脸关键点的插值装置可执行本发明任意实施例所提供的人脸关键点的插值方法,具备执行方法相应的功能模块和有益效果。
[0198]
实施例三
[0199]
图5为本发明实施例三提供的一种计算机设备的结构示意图。图5示出了适于用来实现本发明实施方式的示例性计算机设备12的框图。图5显示的计算机设备12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
[0200]
如图5所示,计算机设备12以通用计算设备的形式表现。计算机设备12的组件可以
包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
[0201]
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(isa)总线,微通道体系结构(mac)总线,增强型isa总线、视频电子标准协会(vesa)局域总线以及外围组件互连(pci)总线。
[0202]
计算机设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
[0203]
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(ram)30和/或高速缓存存储器32。计算机设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图5未显示,通常称为“硬盘驱动器”)。尽管图5中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如cd

rom,dvd

rom或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
[0204]
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
[0205]
计算机设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机设备12交互的设备通信,和/或与使得该计算机设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口22进行。并且,计算机设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机设备12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
[0206]
处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的人脸关键点的插值方法。
[0207]
实施例四
[0208]
本发明实施例四还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述人脸关键点的插值方法的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
[0209]
其中,计算机可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储
器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd

rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0210]
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1