基于单张图像的三维头部重建方法与流程

文档序号:18974521发布日期:2019-10-29 03:10阅读:430来源:国知局
基于单张图像的三维头部重建方法与流程

本发明属于计算机视觉领域。



背景技术:

随着虚拟现实技术的发展,人体重建已经成为计算机图形学及动画领域一个热点。而人体的头部与其他人体部位相比,具有着更多的表情以及发型样式,因此三维头部重建也是计算机图形学及动画领域的一个难点。而现阶段使用到的大部分三维模型仍然是艺术家们使用手工进行建模,虽然通过这种方法得到的模型较为精细,可以达到栩栩如生的效果,但是其缺点也显而易见,整个建模过程需要耗费大量的人力以及时间。因此寻找一种适用性强、对环境依赖少、自动化程度高的人体头部重建方法显得极为重要。

近年来,有许多研究员对基于图像进行重建的方法进行了探索,涌现出了许多优秀的成果,使用基于图像的方法进行重建便是其中之一。与普通重建的方法相比,基于照片建模所需要的成本相对较小,因此在游戏制作,影视制作、场景重现中占有的地位越来越重。目前已有很多较为成熟的基于照片的人脸重建及头发重建方法,如基于人脸形变模型(3dmorphablemodel,以下简写3dmm)等。相较于其他方法,由于图像容易获得,对软硬件要求较少,因此使用图像进行重建的方法有很大的研究价值以及适用性。

在现有基于单张图像进行三维人脸重建的方法中,一种方法是对输入的人脸图像进行68个人脸特征点检测,通过与标准人脸形变模型(3dmm)中的对应特征点进行投影方程的求解,最后通过求解最优化能量函数的方法对3dmm系数进行求解,进行完成人脸重建。然而由于人脸结构的复杂性,会不可避免的在照片中存在遮挡,尤其是侧脸部分的特征点往往会被遮挡,因此对检测到的人脸特征点往往存在误差,导致最后求解得到的3dmm系数并不准确,得不到准确的人脸模型。

另外,现有基于单张图像进行头发重建的方法中,由于头发结构的复杂性,单纯从图像中并不能得到更多关于头发生长方向、结构的信息。为了解决这种问题,一种重建方法是通过额外添加辅助信息(如头发生长信息、发丝结构信息)进行头发的重建,这种方法虽然可以较好的恢复出头发的结构,然而其重建效果极大的依赖其额外的辅助信息,并且由于需要添加辅助信息,因此在重建方面并不能实现自动化的效果,重建效率上存在缺陷。

与此同时,也有基于深度学习进行自动化头发重建的方法,在进行神经网络训练的时候,为了保证能够涵盖大部分发型,这种方法通过构建超大规模的头发数据库进行神经网络的训练,然后直接端到端的重建出头发模型,最后通过插值等方法来使得头发模型更加稠密化。然而由于头发结构的复杂及神经网络特点,即便构造了超大规模的头发数据库也难以覆盖所有头发模型的特点,而且直接从神经网络中得到的头发模型只能在整体轮廓上符合重建的要求,在头发的局部区域仍然会存在误差,无法做到与输入图像中较为相似的效果。



技术实现要素:

本发明针对现有基于单张图像进行三维人脸重建方法存在人脸模型误差大及不能实现自动化的效果的问题,提出一种方法,可以自动、完整地从单张人脸照片中重建出更加精确的三维头部模型,并采用如下技术方案予以实现:

一种基于单张图像的三维头部重建方法,包括以下步骤:

步骤a、对输入照片进行裁剪;

步骤b、设计并搭建r3m(resnet-3dmm)神经网络;

步骤c、将步骤a中得到的人脸照片输入步骤b中训练好的网络,回归得到人脸形变模型的系数,完成三维人脸的重建,使用网格补全算法对三维人脸模型进行补齐,生成完整的头部模型;

步骤d、设计并搭建psp-hairnet卷积神经网络;

步骤e、将原始照片进行尺寸修改后,输入步骤d中训练好的psp-hairnet神经网络,得到头发区域的图像;

步骤f、获得头发区域中的每个像素的方向信息,生成方向图。

步骤g、获得更多样本的usc-p头发模型数据库,并使用usc-p头发模型数据库生成方向图-头发模型数据集,设计并搭建hair-re卷积神经网络,使用生成的方向图-头发模型数据集对网络进行训练;

步骤h、将步骤f中的得到的方向图输入步骤g中训练好的hair-re神经网络,回归得到头发模型;

步骤i、将步骤h中得到头发模型进行聚类,得到头发模型的关键发丝,通过将关键发丝与头发数据库中的发丝进行匹配,获取匹配到的头发模型;

步骤j、利用步骤i中得到的头发模型构造三维方向场,对头发模型的方向信息进行融合,生长出最终的三维头发模型;

步骤k、将步骤c中得到的三维头部模型与步骤j中得到的头发模型统一到同一坐标系下,并完成渲染展示。

进一步地,所述步骤b中用于回归3dmm系数的网络结构,及其使用到的损失函数如下:

lossr3m=a·loss3dmm+b·losslandmarks

其中,loss3dmm为关于3dmm系数的loss函数,losslandmark为根据3dmm系数重建出人脸模型的68个人脸特征点loss函数,a,b为两个loss函数所占的权重;

loss3dmm=||(αpred-αgt)·w1||2

losslandmark=||(vpred-vgt)·w2||2

其中,αpred表示预测得到3dmm系数,αgt表示该样本真实的3dmm系数,w1表示对应每个系数采取不同的权重,vpred表示在得到3dmm系数αpred时,根据该系数重建出3dmm模型的68个人脸特征点,vgt表示该样本真实的68个人脸特征点,w2表示对应每个特征点采取不同的权重。

进一步地,步骤d中用于头发区域检测的网络结构,及其使用到的损失函数如下:

lossmask=||maskpred-maskgt||2

其中,maskpred是预测得到头发区域,maskgt是真实的头发区域。

进一步地,步骤g中用于回归头发模型的网络结构,及其使用到的损失函数:

losshair=||(spred-sgt)·w||2

其中,spred是预测得到头发模型信息,sgt是真实的头发模型信息。

进一步地,步骤i中对发丝进行聚类时采用如下距离公式:

d1=α·h(s1,s2)+β·e(s1,s2)

其中,h(s1,s2)是两根发丝s1、s2的豪斯多夫距离,e(s1,s2)是两根发丝s1、s2的欧几里得距离,α,β为两个距离值所占的权重。

进一步地,所述用于回归3dmm系数的网络结构中,权重系数a取值为1,b取值为1。

进一步地,所述距离公式中,权重系数α取值为0.5,β取值为0.5。

与现有技术相比,本发明的优点和积极效果在于:

相比于已有通过检测人脸特征点进行求解3dmm系数的人脸重建技术,本方法使用深度学习的方法,进行卷积神经网络的搭建来进行人脸特征的提取,并使用较大规模的人脸数据库进行训练,通过使用深度学习的方法进行3dmm系数的求解,使得重建出的人脸较已有技术重建出的人脸更为精确。

相较于已有基于图像的头发重建技术,本方法完成了自动化的头发重建,并且达到了较为准确的重建结果。

附图说明

图1为本发明实施例基于单张图像的三维头部重建方法流程示意图;

图2为本发明实施例人脸重建模块的流程示意图;

图3为本发明实施例头发重建模块的流程示意图;

图4为本发明实施例得到人脸特征点的输入图像;

图5为本发明实施例通过深度学习从输入图像中得到的头发区域;

图6为本发明实施例从头发区域中提取的方向图;

图7为本发明实施例通过深度学习从方向图中提取、聚类得到关键发丝信息。

图8为本发明实施例对自动化生成的头部模型和头发模型进行渲染的结果。

具体实施方式

下面结合附图和具体实施方式对本发明做进一步详细地说明。

图1给出了本发明实施例基于单张图像进行三维头部重建的流程图,下面结合具体的实施方式进一步说明本发明。

本实施例提供一种基于单张图像的三维头部重建方法,实现过程如下:

1.基于单张照片的人脸重建

人脸重建模块的整体重建流程如图2所示:

(1.)对于输入的人脸图像使用dlib库等(此步骤仅用来进行人脸位置的粗略标定,也可更换成其他人脸特征点检测方法),得到图像中的68个人脸特征点信息。针对特征点信息对图像进行裁剪,将人脸图像裁剪到256x256的大小(如图3所示)。

(2.)参照已有的三维人脸数据库300-lp,设计并搭建如图所示的r3m(resnet-50-3dmm)神经网络,该卷积神经网络使用res50进行人脸特征的提取,然后接入反卷积层间进行人脸特征的提取,最后连接全连接层,输出3dmm系数。在训练的过程中,使用到的loss函数如下:

lossr3m=a·loss3dmm+b·losslandmarks(1)

其中,loss3dmm为关于3dmm系数的loss函数,losslandmark为根据3dmm系数重建出人脸模型的68个人脸特征点loss函数。a,b为两个loss函数所占的权重。

loss3dmm=||(αpred-αgt)·w1||2(2)

losslandmark=||(vpred-vgt)·w2||2(3)

其中,αpred表示预测得到3dmm系数,αgt表示该样本真实的3dmm系数,w1表示对应每个系数采取不同的权重,vpred表示在得到3dmm系数αpred时,根据该系数重建出3dmm模型的68个人脸特征点,vgt表示该样本真实的68个人脸特征点,w2表示对应每个特征点采取不同的权重。

(3.)在步骤(2)完成神经网络的训练后,将步骤(1)中得到的人脸图像作为网络的输入,得到与输入图像对应的3dmm系数,根据3dmm系数完成三维人脸的重建。

(4.)在步骤(3)得到重建好的人脸模型后,使用网格补齐方法对人脸模型进行补齐,得到完整的头部模型。

基于单张照片的头发重建

头发重建模块的流程如图3所示:

(1.)设计并搭建用于分割头发区域的网络psp-hairnet,网络结构如图所示,使用现有的figaro头发图像数据库进行训练,使用到的loss函数为:

lossmask=||maskpred-maskgt||2(4)

其中,maskpred是预测得到头发区域,maskgt是真实的头发区域。

(2.)由于训练得到的psp-hairnet网络需要采用固定尺寸的图像进行输入(在实验中输入图像的尺寸固定为256x256像素),因此需要将原始图像按原宽、高比例进行尺寸的缩小或者放大,以达到网络输入的要求。将原始照片调整到固定尺寸后,作为psp-hairnet网络的输入,得到完整的头发区域图像(如图5所示),然后对头发区域使用gabor滤波核进行滤波,得到头发区域中每个像素的方向信息,生成方向图(如图6所示)。

(3.)在已有的usc-hairsalon头发数据库上进行扩充,以发束为单位,使用旋转、平移等方法生成新的发束,构建更大规模的数据库,样本数量达到2160个的新头发模型数据库usc-p。并使用usc-p头发模型数据库生成方向图-头发模型数据集。设计并搭建hair-re卷积神经网络,使用生成的方向图-头发模型数据集对网络进行训练,使用到的loss函数为:

losshair=||(spred-sgt)·w||2(5)

其中,spred是预测得到头发模型信息,sgt是真实的头发模型信息。

(4.)使用网络生成的发丝作为参考,在实际使用的时候,对发丝进行聚类,得到关键发丝,使用的距离函数为:

d1=α·h(s1,s2)+β·e(s1,s2)(6)

其中,h(s1,s2)是两根发丝s1、s2的豪斯多夫距离,e(s1,s2)是两根发丝s1、s2的欧几里得距离,α,β为两个距离值所占的权重。

通过对生成发丝进行聚类,得到符合整体结构发丝信息的关键发丝,如图7。

(5.)通过聚类得到的关键发丝与usc-p头发模型数据库中的发丝进行匹配,采用所述(6)公式作为距离公式,得到关键发丝与头发模型数据库中发丝距离最近的头发模型。最终筛选出3个较为合适的头发模型。

(6.)利用步骤(6)中得到的头发模型构造三维方向场,对头发模型的方向信息进行融合,生长出最终的三维头发模型。

3.模型组合以及渲染

(1.)在步骤1和步骤2完成重建得到人脸模型和头发模型后,由于重建三维头部模型和三维头发模型的尺度并不一致,因此需要将模型所在坐标系进行统一、对齐。在这个步骤中,由于usc-p中的头发模型依赖于其标准头部模型,因此只需要将其标准头部模型中的68个人脸特征点,与1步骤中重建得到的三维头部的68个人脸特征点进行匹配,计算出投影矩阵,便可将头部模型和头发模型统一到同一坐标系下。

(2.)在步骤(1.)准备好头部模型和头发模型后,使用opengl对其进行渲染,并对头发模型选择纹理信息,采用冯氏光照模型进行光照处理,得到最终与输入图像相近、较为真实的渲染结果。

在实验的过程中,实验使用的设备为:nvidiageforcegtx1080、intel(r)core(tm)i7-6700cpu(3.40ghz,4cores)和32gbram,运行在windows1064位系统上。

本发明使用单张正面的人脸照片作为输入,通过使用深度学习的方法,从人脸照片中回归特征信息进行三维人脸重建;对人脸模型进行补齐得到完整的头部模型;使用深度学习的方法进行头发区域的分割;获取头发区域部分的方向图;使用深度学习的方法进行发丝信息的回归;根据回归得到的发丝信息进行发丝数据库的匹配,从而完成头发重建;将头发模型坐标系与头发模型坐标系对齐,得到完整的三维头部模型。相较于以往的三维重建头部的方法,可以达到自动化进行三维人脸、头发重建,并且能够达到较为逼真的重建效果,以此为基础可以使三维模型得到更加丰富的应用。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。以上所述,仅是本发明的较佳实施例而已,并非是对本发明作其它形式的限制,任何熟悉本专业的技术人员可能利用上述揭示的技术内容加以变更或改型为等同变化的等效实施例应用于其它领域,但是凡是未脱离本发明技术方案内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与改型,仍属于本发明技术方案的保护范围。

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