CN116228943B - 虚拟对象面部重建方法、面部重建网络训练方法及装置 - Google Patents
虚拟对象面部重建方法、面部重建网络训练方法及装置 Download PDFInfo
- Publication number
- CN116228943B CN116228943B CN202310518584.0A CN202310518584A CN116228943B CN 116228943 B CN116228943 B CN 116228943B CN 202310518584 A CN202310518584 A CN 202310518584A CN 116228943 B CN116228943 B CN 116228943B
- Authority
- CN
- China
- Prior art keywords
- face
- vertex
- grid
- light source
- refinement
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T13/00—Animation
- G06T13/20—3D [Three Dimensional] animation
- G06T13/40—3D [Three Dimensional] animation of characters, e.g. humans, animals or virtual beings
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/04—Texture mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/20—Perspective computation
- G06T15/205—Image-based rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/506—Illumination models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/20—Finite element generation, e.g. wire-frame surface description, tesselation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/40—Analysis of texture
- G06T7/41—Analysis of texture based on statistical description of texture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20081—Training; Learning
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Computing Systems (AREA)
- Processing Or Creating Images (AREA)
- Image Generation (AREA)
Abstract
本申请公开了一种虚拟对象面部重建方法、面部重建网络训练方法及装置,属于计算机技术领域。本申请通过将虚拟对象的面部模型进行细化,得到面部细化网格,使得面部重建的3D网格顶点数量更加密集,这样重建纹理贴图时能够得到高分辨率的纹理贴图,且针对细化产生的顶点进行光照计算,得到顶点的光照系数,这样光照计算能够覆盖到高分辨率的重建3D网格,提升了光照计算的精度,进而根据纹理贴图以及每个顶点的光照系数来进行面部渲染时,能够得到相机视角下高质量的面部图像,提升虚拟对象的面部重建精准度,优化虚拟对象的面部渲染效果。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种虚拟对象面部重建方法、面部重建网络训练方法及装置。
背景技术
随着计算机视觉的发展,用户对于图像品质(如画质、清晰度、分辨率等)的视觉要求越来越高。在游戏、影视、动漫、虚拟人、数字人等各领域中,广泛涉及到渲染虚拟对象。
虚拟对象的面部表情的逼真渲染效果,能够让虚拟对象在动态过程中变得栩栩如生、逼真生动。其中,虚拟对象的面部重建对于面部渲染优化至关重要。为了优化虚拟对象的面部渲染效果,亟需一种针对虚拟场景的虚拟对象的面部重建方法。
发明内容
本申请实施例提供了一种虚拟对象面部重建方法、面部重建网络训练方法及装置,能够提供一种虚拟场景中虚拟对象的面部重建方法,提升虚拟对象的面部重建精准度,从而优化虚拟对象的面部渲染效果。
一方面,提供了一种虚拟对象的面部重建方法,所述方法包括:
对虚拟场景中虚拟对象的面部模型进行细化,得到所述虚拟对象的面部细化网格,所述面部细化网格的顶点数量大于所述面部模型的顶点数量;
基于所述面部细化网格,重建所述虚拟对象的纹理贴图;
对于所述面部细化网格中的顶点,基于所述虚拟场景中的光源信息和相机视角,获取所述顶点的光照系数,所述光照系数表征所述虚拟场景中光源照射所述面部模型的表面经过漫反射后形成的顶点高光;
基于所述纹理贴图以及所述面部细化网格中顶点的光照系数,对所述虚拟对象进行面部渲染,得到所述虚拟对象在所述相机视角下的面部图像。
一方面,提供了一种虚拟对象的面部重建网络的训练方法,所述方法包括:
通过面部重建网络,对虚拟场景中样本对象的面部模型进行细化,得到所述样本对象的面部细化网格,所述面部重建网络用于重建所述虚拟对象的面部网格并增加所述面部网格的顶点数量;
基于所述样本对象的纹理贴图和所述面部细化网格中顶点的光照系数,对所述样本对象进行面部渲染,得到所述样本对象在所述虚拟场景的相机视角下的预测面部图像;
基于所述预测面部图像和所述样本对象在所述相机视角下的参考面部图像,获取所述面部重建网络的训练损失值;
基于所述训练损失值,对所述面部重建网络进行训练。
一方面,提供了一种虚拟对象的面部重建装置,所述装置包括:
细化模块,用于对虚拟场景中虚拟对象的面部模型进行细化,得到所述虚拟对象的面部细化网格,所述面部细化网格的顶点数量大于所述面部模型的顶点数量;
重建模块,用于基于所述面部细化网格,重建所述虚拟对象的纹理贴图;
获取模块,用于对于所述面部细化网格中的顶点,基于所述虚拟场景中的光源信息和相机视角,获取所述顶点的光照系数,所述光照系数表征所述虚拟场景中光源照射所述面部模型的表面经过漫反射后形成的顶点高光;
渲染模块,用于基于所述纹理贴图以及所述面部细化网格中顶点的光照系数,对所述虚拟对象进行面部渲染,得到所述虚拟对象在所述相机视角下的面部图像。
在一些实施例中,所述细化模块包括:
位置变换子模块,用于将所述虚拟对象的面部模型输入面部重建网络中,通过所述面部重建网络,对所述面部模型中待形变的顶点进行位置变换,得到形变顶点,所述面部重建网络用于重建所述虚拟对象的面部网格并增加所述面部网格的顶点数量;
第一确定子模块,用于基于各个待形变的顶点和各个形变顶点,确定所述面部细化网格。
在一些实施例中,所述位置变换子模块用于:
将所述虚拟对象的面部姿势参数和面部形状参数输入所述面部重建网络,通过所述面部重建网络重建所述虚拟对象的面部网格,所述面部姿势参数和面部形状参数随着所述面部重建网络训练得到;
将所述面部网格中待形变的顶点的网格位置输入所述面部重建网络的网格细化函数,得到网格细化位置,所述网格细化函数用于提升所述面部网格的分辨率;
在所述网格细化位置上沿着法线方向施加预设顶点偏移,得到形变顶点的网格位置,所述形变顶点为对所述顶点进行位置变换后的顶点。
在一些实施例中,所述纹理贴图包含所述虚拟对象的反照率贴图和法线贴图,所述反照率贴图用于表征所述虚拟对象的面部皮肤的底色,所述法线贴图用于确定所述面部细化网格中顶点的光照系数;
所述重建模块用于:
在纹理空间中,导出所述虚拟对象预先定义的反照率贴图;
基于所述面部细化网格,重建所述虚拟对象的法线贴图。
在一些实施例中,所述获取模块包括:
第二确定子模块,用于基于所述虚拟场景中的相机视角,确定所述面部细化网格在所述相机视角下的可见表面;
获取子模块,用于对于所述可见表面的任一顶点,基于所述虚拟场景中的光源信息,获取所述顶点的光照系数。
在一些实施例中,所述获取子模块包括:
第一获取单元,用于基于所述光源信息,获取所述虚拟场景的环境反射常量、漫反射常量、环境光源强度以及所述虚拟场景中每个光源在漫射表面的光源强度;
第二获取单元,用于对于所述可见表面的任一顶点,基于所述漫反射常量、所述顶点的点法线向量、所述顶点到每个光源的光照向量以及每个光源在漫射表面的光源强度,获取所述顶点的漫反射系数;
第三获取单元,用于基于所述环境反射常量、所述环境光源强度和所述顶点的漫反射系数,获取所述顶点的光照系数。
在一些实施例中,所述第二获取单元包括:
获取子单元,用于对于所述虚拟场景中的每个光源,获取所述顶点的点法线向量和所述顶点到所述光源的光照向量之间的向量点积;
相乘子单元,用于将所述漫反射常量、所述光源在漫射表面的光源强度和所述向量点积相乘,得到所述光源在所述顶点上的漫反射分量;
融合子单元,用于将所述虚拟场景中各个光源在所述顶点上的漫反射分量融合,得到所述顶点的漫反射系数。
在一些实施例中,所述融合子单元用于:
对于所述虚拟场景中的每个光源,将所述顶点的位置向量和所述光源的位置向量之间的L2范数输入到激活函数中,得到所述顶点在所述光源下的能见度系数,所述能见度系数表征所述顶点在所述光源照射下形成的自阴影;
基于每个光源的能见度系数,对所述光源在所述顶点上的漫反射分量进行加权,得到所述光源在所述顶点上的加权漫反射分量;
将所述虚拟场景中各个光源在所述顶点上的加权漫反射分量相加,得到所述顶点的漫反射系数。
在一些实施例中,所述第三获取单元用于:
将所述环境反射常量和所述环境光源强度相乘,得到所述虚拟场景的环境光系数;
将所述环境光系数和所述顶点的漫反射系数相加,得到所述顶点的光照系数。
一方面,提供了一种虚拟对象的面部重建网络的训练装置,所述装置包括:
细化模块,用于通过面部重建网络,对虚拟场景中样本对象的面部模型进行细化,得到所述样本对象的面部细化网格,所述面部重建网络用于重建所述虚拟对象的面部网格并增加所述面部网格的顶点数量;
渲染模块,用于基于所述样本对象的纹理贴图和所述面部细化网格中顶点的光照系数,对所述样本对象进行面部渲染,得到所述样本对象在所述虚拟场景的相机视角下的预测面部图像;
损失获取模块,用于基于所述预测面部图像和所述样本对象在所述相机视角下的参考面部图像,获取所述面部重建网络的训练损失值;
训练模块,用于基于所述训练损失值,对所述面部重建网络进行训练。
在一些实施例中,所述损失获取模块包括:
几何损失获取子模块,用于基于所述参考面部图像和所述预测面部图像的几何差异,获取所述面部重建网络的几何损失项,所述几何损失项用于衡量所述参考面部图像和所述预测面部图像之间的几何相似性;
外观损失获取子模块,用于基于所述参考面部图像和所述预测面部图像的外观差异,获取所述面部重建网络的外观损失项,所述外观损失项用于衡量所述参考面部图像和所述预测面部图像之间的图像相似性;
训练损失确定子模块,用于基于所述几何损失项和所述外观损失项,确定所述面部重建网络的训练损失值。
在一些实施例中,所述几何损失获取子模块包括:
轮廓损失获取单元,用于基于所述参考面部图像的面部掩码和所述预测面部图像的渲染轮廓,获取所述面部重建网络的轮廓损失项,所述轮廓损失项表征所述参考面部图像和所述预测面部图像之间的轮廓差异;
正则损失获取单元,用于基于所述面部细化网格的正则化信息,获取所述面部重建网络的网格正则化项,所述网格正则化项表征所述面部细化网格的正则化的几何信息;
加权求和单元,用于基于所述轮廓损失项和所述网格正则化项进行加权求和,得到所述面部重建网络的几何损失项。
在一些实施例中,所述正则损失获取单元包括:
正则化子单元,用于对所述面部细化网格中的顶点进行拉普拉斯网格正则化,得到第一正则项;
确定子单元,用于基于所述面部细化网格中的顶点的点法线向量,确定第二正则项;
第一获取子单元,用于基于所述面部细化网格中的顶点和所述样本对象的模板网格中的模板顶点,获取第三正则项;
第二获取子单元,用于基于所述第一正则项、所述第二正则项和所述第三正则项,获取所述网格正则化项。
在一些实施例中,所述第一获取子单元用于:
基于所述面部细化网格中的顶点,确定所述顶点在所述模板网格中关联的模板顶点;
基于所述顶点、所述顶点在所述面部细化网格中的邻居顶点、所述模板顶点以及所述模板顶点在所述模板网格中的邻居模板顶点,获取所述第三正则项。
在一些实施例中,所述外观损失获取子模块用于:
基于所述参考面部图像和所述预测面部图像之间的像素色差,获取所述面部重建网络的颜色损失项;
基于所述参考面部图像和所述预测面部图像之间的特征差异,获取所述面部重建网络的特征损失项;
基于所述参考面部图像和所述预测面部图像之间的纹理贴图的正则化信息,获取所述面部重建网络的外观正则化项,所述外观正则化项表征所述纹理贴图中反照率贴图和法线贴图的正则化的局部平滑信息;
基于所述颜色损失项、所述特征损失项和所述外观正则化项进行加权求和,得到所述面部重建网络的外观损失项。
一方面,提供了一种计算机设备,该计算机设备包括一个或多个处理器和一个或多个存储器,该一个或多个存储器中存储有至少一条计算机程序,该至少一条计算机程序由该一个或多个处理器加载并执行以实现如上述任一种可能实现方式的虚拟对象的面部重建方法或虚拟对象的面部重建网络的训练方法。
一方面,提供了一种计算机可读存储介质,该计算机可读存储介质中存储有至少一条计算机程序,该至少一条计算机程序由处理器加载并执行以实现如上述任一种可能实现方式的虚拟对象的面部重建方法或虚拟对象的面部重建网络的训练方法。
一方面,提供一种计算机程序产品,所述计算机程序产品包括一条或多条计算机程序,所述一条或多条计算机程序存储在计算机可读存储介质中。计算机设备的一个或多个处理器能够从计算机可读存储介质中读取所述一条或多条计算机程序,所述一个或多个处理器执行所述一条或多条计算机程序,使得计算机设备能够执行上述任一种可能实施方式的虚拟对象的面部重建方法或虚拟对象的面部重建网络的训练方法。
本申请实施例提供的技术方案带来的有益效果至少包括:
通过将虚拟对象的面部模型进行细化,得到面部细化网格,使得面部重建的3D网格其顶点数量更加密集,这样利用面部细化网格来重建纹理贴图时,能够得到高分辨率、高质量、高精度的纹理贴图,并且能够针对每个细化产生的顶点都进行光照计算,得到每个顶点的光照系数,这样光照计算能够覆盖到高分辨率的重建3D网格,提升了光照计算的精度,进而根据高质量的纹理贴图以及每个顶点的光照系数来进行面部渲染时,能够得到当前虚拟相机的相机视角下高质量的面部图像,能够提升虚拟对象的面部重建精准度,优化虚拟对象的面部渲染效果。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还能够根据这些附图获得其他的附图。
图1是本申请实施例提供的一种虚拟对象的面部重建方法的实施环境示意图;
图2是本申请实施例提供的一种虚拟对象的面部重建方法的流程图;
图3是本申请实施例提供的另一种虚拟对象的面部重建方法的流程图;
图4是本申请实施例提供的一种虚拟对象的面部重建方法的原理图;
图5是本申请实施例提供的一种虚拟对象的面部重建网络的训练方法的流程图;
图6是本申请实施例提供的一种虚拟对象的面部重建方法的渲染效果图;
图7是本申请实施例提供的一种虚拟对象的面部重建装置的结构示意图;
图8是本申请实施例提供的一种虚拟对象的面部重建网络的训练装置的流程图;
图9是本申请实施例提供的一种计算机设备的结构示意图;
图10是本申请实施例提供的另一种计算机设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
本申请中术语“第一”“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”、“第n”之间不具有逻辑或时序上的依赖关系,也不对数量和执行顺序进行限定。
本申请中术语“至少一个”是指一个或多个,“多个”的含义是指两个或两个以上,例如,多个顶点是指两个或两个以上的顶点。
本申请中术语“包括A或B中至少一项”涉及如下几种情况:仅包括A,仅包括B,以及包括A和B两者。
本申请中涉及到的用户相关的信息(包括但不限于用户的设备信息、个人信息、行为信息等)、数据(包括但不限于用于分析的数据、存储的数据、展示的数据等)以及信号,当以本申请实施例的方法运用到具体产品或技术中时,均为经过用户许可、同意、授权或者经过各方充分授权的,且相关信息、数据以及信号的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。例如,本申请中涉及到的虚拟对象的面部模型都是在充分授权的情况下获取的。
以下,对本申请涉及的术语进行解释说明。
虚拟场景:是游戏应用在终端上运行时显示(或提供)的虚拟环境。该虚拟场景可以是对真实世界的仿真环境,也可以是半仿真半虚构的虚拟环境,还可以是纯虚构的虚拟环境。虚拟场景可以是二维虚拟场景、2.5维虚拟场景或者三维虚拟场景中的任意一种,本申请实施例对虚拟场景的维度不加以限定。用户可以控制虚拟对象在该虚拟场景中进行移动。
虚拟对象:是指在虚拟场景中的可活动对象。该虚拟对象可以是用户通过游戏应用控制的玩家角色,也可以是设置在虚拟场景中能够进行互动的非玩家角色(Non-PlayerCharacter,NPC),还可以是不受用户控制的野怪或者陪玩机器人等。示意性地,该虚拟对象是该虚拟场景中的一个虚拟的用于代表用户的虚拟形象,例如虚拟人物、虚拟动物、动漫人物等。虚拟场景中可以包括多个虚拟对象,每个虚拟对象在虚拟场景中具有自身的形状和体积,占据虚拟场景中的一部分空间。可选地,当虚拟场景为三维虚拟场景时,可选地,虚拟对象可以是一个三维立体模型,该三维立体模型可以是基于三维人体骨骼技术构建的三维角色,同一个虚拟对象可以通过穿戴不同的皮肤来展示出不同的外在形象。在一些实施例中,虚拟对象也可以采用2.5维或2维模型来实现,本申请实施例对此不加以限定。
游戏引擎:指一些已编写好的可编辑电脑游戏系统或者一些交互式实时图像应用程序的核心组件。这些系统为游戏设计者提供各种编写游戏所需的各种工具,其目的在于让游戏设计者能容易和快速地做出游戏程式而不用由零开始。游戏引擎包含以下系统:渲染引擎(即“渲染器”,含二维图像引擎和三维图像引擎)、物理引擎、碰撞检测系统、音效、脚本引擎、电脑动画、人工智能、网络引擎以及场景管理。
渲染引擎:在图像技术领域中,渲染引擎是指将针对虚拟对象建模完毕的三维模型渲染成一张二维图像,使得二维图像中仍然保持三维模型的立体效果。特别地,在游戏技术领域中,游戏所布置的虚拟场景本身以及虚拟场景中的所有虚拟对象,都是在将建模完毕的三维模型的模型数据导入到渲染引擎后,通过渲染引擎来驱动GPU中的渲染管线进行渲染,从而在终端的显示屏上对三维模型所指示的对象进行可视化呈现的。
图形处理器(Graphics Processing Unit,GPU):一种用于现代个人计算机,服务器,移动设备,游戏主机等专门用于图形图像处理的专用芯片。
图形API(Application Programming Interface,应用程序编程接口):CPU(Central Processing Unit,中央处理器)向GPU进行通信的过程会按照特定标准的图形API进行,主流的图形API有OpenGL、OpenGL ES、Direct X、Metal、Vulkan等,GPU厂商在生产GPU时会实现某些规范的接口,在进行图形开发时,按照接口所定义的方法来调用GPU即可。
绘制(Draw Call,DC)命令:在图形API中通常提供有可供CPU命令GPU进行渲染的操作的一类DC命令,例如,DirectX中的DrawIndexedPrimitive命令,OpenGL中的glDrawElement命令等均属于对应图形API中支持的DC命令。
渲染管线:在GPU中运行的图形渲染流程。在图像渲染过程中,通常会涉及到如下几种渲染管线:顶点着色器、光栅化器、像素着色器,通过在着色器中编写代码,能够控制GPU对渲染组件进行绘制渲染。
顶点着色器(Vertex Shader,VS):GPU渲染管线的一个必选环节,一种增加3D特效的影像处理单元,VS具有可程序化特性,允许开发人员利用新式指令来调整特效,每个顶点(Vertex)被数据结构定义,顶点的基本属性有x、y、z三个方向上的顶点坐标,除此以外,顶点属性还可能有颜色、最初的径路、材质、光线特征等。程序会根据代码将三维模型的每个顶点进行逐个顶点计算,并将结果输出到下一个阶段。
光栅化器:GPU渲染管线的一个不可编码环节,程序自动将顶点着色器或者几何着色器输出的结果装配成三角形,并按照配置光栅化成离散像素点,输出到像素着色器。
像素着色器(Pixel Shader,PS):也被实施为片元着色器(Fragment Shader,FS),GPU渲染管线的一个必选环节,当模型顶点变换完、光栅化之后,是需要填充颜色的,FS/PS填充算法是针对屏幕上的每个像素点的:程序会根据代码将光栅化后的像素点进行着色计算,通过测试之后输出到帧缓冲区,完成一次渲染管线流程。
帧缓冲区:是一个内存缓冲区,其中包含代表某一帧完整游戏画面中所有像素点的数据,在计算机系统中专门用来存放正在合成或显示的图像。换一种表述,帧缓冲区是一个部分随机存取存储器(Random-Access Memory,RAM)含有的一个位图,其驱动计算机的显示屏。现代显卡的内核中包含帧缓冲电路,该帧缓冲电路将内存中的位图转换为可以在显示屏上显示的画面信号。
z缓冲区(即深度缓冲区):在帧缓冲区中用于存储所有像素点的深度信息的内存被称为z缓冲区或者深度缓冲区。当渲染三维虚拟场景中的对象时,每一个所生成的像素点的深度(即z坐标)就保存在z缓冲区中,z缓冲区通常组织成一个保存每个屏幕像素点深度的x-y二维数组。在z缓冲区中需要对同一像素点上出现的多个对象的点进行深度排序,并由GPU按照z缓冲区中记录的深度排序来进行计算,达到较近的对象遮挡较远的对象的深度感知效果。
颜色缓冲区:在帧缓冲区中用于存储所有像素点的颜色信息的内存被称为颜色缓冲区。当渲染三维虚拟场景中的对象时,每一个通过深度测试的点会被光栅化器装配成离散像素点,每个离散像素点的颜色就保存在颜色缓冲区中,按照颜色模式的不同,像素点的颜色向量具有不同的格式。
游戏线程(GameThread):游戏应用运行中采用多线程技术时的线程之一,用于维护主要的游戏业务逻辑的线程,可用于实现虚拟物体、虚拟对象等的创建/销毁逻辑。
渲染线程(RenderThread):游戏应用运行中采用多线程技术时的线程之一,用于非硬件级别的渲染指令处理逻辑。
点云(Point Cloud):指空间中一组无规则分布的、表达三维物体或三维场景的空间结构及表面属性的离散点集。根据不同的分类标准将点云划分为不同的类别,例如,按照点云的获取方式划分为密集点云和稀疏点云,又如,按照点云的时序类型划分为静态点云和动态点云。
点云数据(Point Cloud Data):点云中各个点具备的几何信息和属性信息共同组成点云数据。其中,几何信息也称为三维位置信息,点云中某个点的几何信息是指该点的空间坐标(x,y,z),包括该点在三维坐标系的各个坐标轴方向上的坐标值,例如,X轴方向上的坐标值x,Y轴方向上的坐标值y和Z轴方向上的坐标值z。点云中某个点的属性信息包括以下至少一种:颜色信息、材质信息、激光反射强度信息(也称为反射率);通常,点云中的每个点具有相同数量的属性信息,例如,点云中的每个点都具有颜色信息和激光反射强度两种属性信息,又如,点云中的每个点都具有颜色信息、材质信息和激光反射强度信息三种属性信息。
网格(Mesh):计算机图形学中的基础单元称为Mesh,常见的Mesh是三角形面片网格。
反照率(即反照率贴图):渲染阶段中用于控制模型表面的基色的一张反照率贴图,也称为Albedo贴图。反照率贴图用于体现模型的纹理,颜色,反照率贴图本身是一张颜色与纹理的贴图。反照率贴图既有贴图属性,也有颜色属性。两个属性可以单独使用,也可以组合使用;当颜色属性为纯白色时,则不影响贴图的效果;当颜色属性为其他颜色时,则叠加贴图效果。
点法线(即点法线向量):对于一个三维空间的正则曲面R(u,v),点(u,v)处的切平面(Ru,Rv)的法向量即为曲面在点(u,v)的法向量。点云中的点是曲面的一个点采样,采样曲面的法向量就是点云中的点的法向量,称为这一点的点法线向量。在GPU渲染管线中,光照模型的渲染是需要指定法线向量的,无论是面法线还是点法线,不指定的话可能会造成不可预知的渲染效果。对于虚拟对象的面部渲染来说,每个顶点的点法线向量可用于光照渲染。
纹理贴图(即UV贴图):U和V分别是图片在显示屏的水平、垂直方向上的坐标,取值一般为0~1之间的数值,例如U坐标表征水平方向的第U个像素点/图片宽度,V坐标表征垂直方向的第V个像素点/图片高度。UV坐标(即纹理坐标)是将虚拟对象的UV贴图映射到虚拟对象的3D模型表面的依据,UV坐标定义了图片上每个像素点的位置的信息,这些像素点与3D模型的表面顶点是相互联系的,能够决定表面纹理投影到图片上哪个像素点的位置。UV映射能够将图片上的每个像素点都精准对应到3D模型的表面,在点与点之间的间隙位置由软件进行图像光滑插值处理,这就是所谓的UV贴图。进一步的,为了使3D模型的UV纹理在二维画布上合理分布,将三维的表面合理地平铺在二维的画布上,这一过程称为展UV。
自阴影(Self-Shadowing):也称为自我阴影,指物体未被光线直接照亮的部分。在光照计算中进行漫反射和镜面反射计算时可能会出现一些显示错误,比如当光照向量和视线向量方向相反时像素点也会被照亮(但不应被照亮),又例如,如果光源距离物体表面过近,也可能会出现显示错误。因此,使用自阴影可以解决以上举例的光照计算产生的显示错误,即避免不应该被照亮的像素点获得光照。当物体被遮挡或不应该获得光照时,自阴影因子(即能见度系数)为零或接近于零,如果像素被照亮,则自阴影因子(即能见度系数)大于零。
3D重建:对三维物体建立适合计算机表示和处理的数学模型,是在计算机环境下对其进行处理、操作和分析其性质的基础,也是在计算机中建立表达客观世界的虚拟现实的关键技术。例如,游戏场景下对虚拟对象的3D重建,就是包含重建虚拟对象的面部模型,进而实现根据重建的面部模型来进行面部渲染。在本申请实施例中,涉及到根据虚拟对象的面部模型,重建其经过几何细化的面部细化网格(即面部细化Mesh),进而根据面部细化网格来进行纹理重建,光照计算,以及面部渲染。
可微分渲染(Differentiable Renderer,DR):可微分渲染通过可微分渲染器来实现,传统的渲染器被设计用来解决图像合成的前向过程(即将三维模型渲染成二维图像),而其逆向过程则视图利用二维图像来推断出三维模型中的几何、光照、材质、运动等信息,使得渲染器能够真实地再现观察到的场景。因此,提出可微分渲染的概念,明确对三维模型的参数变化和二维图像的观测结果(即渲染得到的图像)之间的关系进行建模。换一种表述,可微分渲染过程中,允许将三维模型的网格顶点和其顶点颜色作为输入,来生成二维图像中像素点的像素值,并从这些像素值中保留导数(这意味着像素值必须满足可微分的条件,否则将不可导),以便于准确确定出来哪些输入对于最终像素点的像素值有贡献,通过这种方式,能够基于上述逆向过程,将二维图像中像素点的像素值“反渲染”回三维模型的网格顶点和其顶点颜色。再换一种表述,由于保留导数的情况下其梯度是易知的,因此,可微分渲染可视为是一种端到端的、使用了梯度来进行优化的渲染过程。本申请的虚拟对象的3D面部重建方案能够基于可微分渲染框架实现,比如,在用于计算光照系数的光照模型具有可微分(也可导)的性质时,像素点的颜色值和深度值都满足可微分的条件,从而能够在迭代过程中通过梯度回传的方式,随着面部重建网络的训练过程一起优化,例如采用反向传播算法、梯度下降算法等,这里对优化算法不进行具体限定。
以下,对本申请实施例的技术构思进行说明。
随着计算机视觉的发展,用户对于图像品质(如画质、清晰度、分辨率等)的视觉要求越来越高。在游戏、影视、动漫、虚拟人、数字人等各领域中,广泛涉及到渲染虚拟对象,其中,虚拟对象的面部表情的逼真渲染效果,能够让虚拟对象在动态过程中变得栩栩如生、逼真生动。因此,为了提升虚拟对象的渲染效果,存在对虚拟对象的面部表情进行渲染优化的需求。
在游戏场景的相关技术中,在重建虚拟对象的3D模型时,会从现实生活的照片中学习对面部姿势、光照计算和表情控制,但是,这种训练数据所重建出来的3D模型,难以适用到游戏场景中,因为游戏场景中虚拟对象通常需要有夸张表情(现实照片中很难学习到这种夸张表情的控制),并且,还需要结合虚拟对象的可变特效(如面饰、头饰、技能特效等)来进行面部渲染,而游戏中虚拟对象的可变特效较多,因此重建的3D模型难以融入游戏场景,并且需要针对特定纹理贴图进行大量计算,难以实现通用性。
有鉴于此,本申请实施例提出一种虚拟对象的面部重建方法,能够适用于任意开放世界3D游戏,并用于智能生成多表情贴图并重建面部模型。具体而言,提出一种面部重建网络(例如被实施为卷积编辑网络),针对面部重建网络采用自我监督学习的方式进行训练,由于自监督学习对于数据量需求不大,因此并不需要花费成本去筛选大量数据集。而这种训练完毕的面部重建网络,提供了面部模型从潜在空间到3D面部参数空间的直接转换,将面部模型的潜在代码映射到3D面部参数空间以后,能够直接在3D面部空间中编辑面部的语义参数(如面部姿势参数、面部形状参数、UV空间法线贴图、照明参数等),这种简单有效的属性编辑方式,能够针对3D面部中可编辑的面部属性进行更加精确和明确的控制。并且,面部重建网络的逆变换部分,允许编辑后的3D面部转换回到原始空间,从而生成根据编辑后的3D面部所渲染得到的面部图像。进一步地,对于同一个虚拟对象,通过结合合成的多视角下的面部图像,并配置相应的可见性遮罩(即3D面部的掩码图),还能够生成高质量的纹理贴图,从而能够生成更加详细的3D网格。
在以上技术方案中,提供的面部重建网络(如卷积编辑网络)和简单有效的属性编辑方式,能够避免渲染出来的预测面部图像和参考面部图像之间的直接损失计算。并且,还能够在保持虚拟对象的身份不变的情况下,准确地生成多视角下的面部图像,并生成出来纹理丰富且高分辨率的UV贴图(表征虚拟对象的UV面部纹理)。而且面部重建网络采用自监督的方式进行训练,并不需要花费人力去进行面部动作注释,也不需要大量数据集,极大节约训练成本。
进一步的,以上技术方案,除了适用于游戏场景以外,还能够扩展到任意存在面部渲染优化需求的场景,如动画场景、动漫场景、影视场景、虚拟人场景、数字人场景等,这里对此不进行具体限定。
以下,对本申请实施例的系统架构进行说明。
图1是本申请实施例提供的一种虚拟对象的面部重建方法的实施环境示意图。参见图1,在该实施环境中涉及终端101和服务器102,终端101和服务器102通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
终端101安装和运行有支持虚拟场景的游戏应用。可选地,该游戏应用包括:ARPG(Action Role-Playing Game,动作角色扮演游戏)、MMORPG(Massive Multiplayer OnlineRole-Playing Game,大型多人在线角色扮演游戏)、MOBA(Multiplayer Online BattleArena,多人在线战术竞技)游戏、MMOG(Massive Multiplayer Online Game,大型多人在线游戏)、射击类游戏、虚拟现实应用程序、三维地图程序、多人器械类生存游戏等。
在一些实施例中,终端101是用户所使用的电子设备,当用户在终端101上运行并登录游戏应用后,终端101加载并显示虚拟场景,并在虚拟场景中显示用户控制的虚拟对象,以及该虚拟对象视野范围内的其他虚拟对象(如其他用户控制的虚拟对象、NPC等)。
服务器102包括一台服务器、多台服务器、云计算平台或者虚拟化中心中的至少一种。服务器102用于为支持虚拟场景的游戏应用提供后台服务,服务器102能够提供游戏的基本玩法逻辑。可选地,服务器102承担主要游戏逻辑运算工作,终端101承担次要游戏逻辑运算工作;或者,服务器102承担次要游戏逻辑运算工作,终端101承担主要游戏逻辑运算工作;或者,服务器102和终端101之间采用分布式计算架构进行协同游戏逻辑运算。
可选地,服务器102是独立的物理服务器,或者是多个物理服务器构成的服务器集群或者分布式系统,或者是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)以及大数据和人工智能平台等基础云计算服务的云服务器。
在一个示例性场景中,服务器102中创建GameSvr进程来提供游戏的基本玩法逻辑。相应地,终端101运行游戏应用时则创建有游戏线程GameThread和渲染线程RenderThread,游戏线程GameThread用于维护主要的游戏业务逻辑,渲染线程RenderThread用于非硬件级别的渲染指令处理逻辑。
在任一帧游戏画面的渲染过程中,终端101侧的游戏线程GameThread将虚拟场景的场景资源提交到渲染线程RenderThread中,由渲染线程RenderThread对虚拟场景中的每个虚拟对象执行OC(Occlusion Cull,遮挡裁剪)检测,将通过OC检测的虚拟对象提交到RHI(Render Hardware Interface,渲染硬件接口)线程即RHIThread,由RHIThread驱动GPU上的渲染管线来对通过OC检测的虚拟对象进行渲染,得到当前帧的游戏画面。
本申请实施例提供的虚拟对象的面部重建方法,适用于RHIThread对任一通过OC检测的虚拟对象的面部渲染过程,即,OC检测判断的是虚拟对象的可见性,对于每个可见的虚拟对象,在渲染该虚拟对象的面部时,都可以应用本申请实施例的方法,为该虚拟对象生成高质量的UV贴图,以及经过几何细化的面部细化网格,进而在面部细化网格的基础上,来保证在当前的相机视角下每个网格顶点的光照计算,还可以考虑自阴影的影响,使得实现任意视角下任意表情姿态的虚拟对象的面部重建,巧妙融入到游戏提供的虚拟场景中。换言之,虚拟对象具有灵动的面部表情和适配的五官姿态,体现出来面部动画细节,并,且能够适配到虚拟对象自身的面部外观资源(如面部特效、面饰、头饰、发型等),提升虚拟对象面部的逼真渲染效果。
需要说明的是,终端101的设备类型包括:智能手机、平板电脑、智能音箱、智能手表、智能掌机、便携式游戏设备、车载终端、膝上型便携计算机和台式计算机中的至少一种,但并不局限于此。例如,终端101是智能手机,或者其他手持便携式游戏设备。以下实施例,以终端101包括智能手机来举例说明。
本领域技术人员能够知晓,上述终端的数量为更多或更少。比如上述终端仅为一个,或者上述终端为几十个或几百个,或者更多数量。本申请实施例对终端的数量和设备类型不加以限定。
以下,对本申请实施例的面部重建基本流程进行介绍。
图2是本申请实施例提供的一种虚拟对象的面部重建方法的流程图。参见图2,该实施例由电子设备执行,以电子设备为终端为例进行说明,该实施例包括以下步骤。
201、终端对虚拟场景中虚拟对象的面部模型进行细化,得到该虚拟对象的面部细化网格,该面部细化网格的顶点数量大于该面部模型的顶点数量。
在本申请实施例中,虚拟对象是指虚拟场景中任一面部可见的可活动对象,如面部可见的虚拟人物、虚拟动物、动漫人物等。虚拟对象可以是用户通过终端控制的虚拟对象,也可以是位于虚拟场景中当前虚拟相机的相机视角(Field of View,FoV)下的其他虚拟对象,其他虚拟对象可以是其他用户通过其他终端控制的虚拟对象,也可以是不受用户控制的NPC、野怪、陪玩机器人等。
对于第一人称的游戏来说,当前虚拟相机就绑定在用户控制的虚拟对象身上,此时用户通常无法看到自身控制的虚拟对象的全身,只能看到自身控制的虚拟对象的一部分,或者看不到自身控制的虚拟对象;对于第三人称的游戏来说,当前虚拟相机位于虚拟场景中,但并不会绑定在用户控制的虚拟对象身上,此时用户通常能够看到自身控制的虚拟对象的全身,并且能够在一定范围内调整自身的FoV,达到类似于“上帝视角”的观察效果。
在一些实施例中,用户在终端上启动并登录游戏应用,该游戏应用创建有游戏线程GameThread和渲染线程RenderThread。在登录游戏应用以后,可以加载并显示虚拟场景,在虚拟场景中显示用户控制的虚拟对象,以及位于当前虚拟相机的相机视角内的其他虚拟对象。对于该相机视角下面部可见的任一虚拟对象,都可以执行本申请实施例的步骤201-204,来对该虚拟对象的面部模型的3D网格进行重建,得到面部细化网格(即面部细化Mesh),进而对面部细化网格中的顶点进行光照计算,得到每个顶点的光照系数,再重建虚拟对象的纹理贴图,基于纹理贴图和每个顶点的光照系数,来对该相机视角下的虚拟对象进行面部渲染,得到虚拟对象的面部图像,达到高品质的面部渲染效果。需要说明的是,如果某一虚拟对象位于当前虚拟相机的相机视角内,但是这一虚拟对象的面部不可见(比如虚拟对象背对当前虚拟相机),那么此时对该虚拟对象不存在面部渲染需求,并不需要进行面部渲染优化。
由于游戏应用会实时渲染游戏画面流,以游戏画面流中任一帧游戏画面的渲染过程为例进行说明,游戏线程GameThread将虚拟场景的场景资源提交到渲染线程RenderThread中,由渲染线程RenderThread确定虚拟场景中位于当前虚拟相机的FoV内的各个虚拟对象,再对位于FoV内的每个虚拟对象执行OC检测,将通过OC检测的虚拟对象提交到RHIThread,由RHIThread通过图形API中的绘制命令,驱动GPU上的渲染管线来对通过OC检测的虚拟对象进行渲染,得到当前帧的游戏画面。
在GPU渲染管线绘制任一通过OC检测的虚拟对象的面部时,在获取虚拟对象的面部模型(如3D面部模型数据)之后,通过步骤201重建面部细化Mesh,通过步骤202重建纹理贴图,通过步骤203在面部细化Mesh中逐个顶点进行光照计算,得到每个顶点的光照系数,通过步骤204来基于纹理贴图和每个顶点的光照系数,对虚拟对象的面部图像逐个像素点进行可微分渲染。其中,可微分渲染可以通过一个可微分渲染器来实现,如PyTorch3D或者其他可微分渲染器等,可微分渲染器要求面部图像中像素点的像素值(包括颜色值和深度值)可微分,而在光照计算阶段只要光照模型满足可微分的条件,就会使得像素点的颜色值和深度值都满足可微分的条件,关于光照计算过程参见下一实施例中的描述,在此不做赘述。
在一些实施例中,在可微分渲染过程中,先清空帧缓冲区的颜色和深度,再利用顶点着色器在z缓冲区中对面部细化Mesh中每个顶点进行深度写入,再通过光栅化器来进行光栅化,再利用像素着色器在颜色缓冲区中对每个离散化后的像素点进行颜色写入,最终能够在终端显示屏中输出虚拟对象的面部图像。其中,帧缓冲区用于存放当前画面帧中所有像素点的数据,帧缓冲区中包含一个z缓冲区和一个颜色缓冲区,z缓冲区是指帧缓冲区中的深度缓冲区,用于存储当前画面帧中每个像素点的深度值,而颜色缓冲区则用于存放当前画面帧中每个像素点的颜色值。另外,顶点着色器、光栅化器、像素着色器都是GPU中运行的渲染管线,顶点着色器是用于对网格顶点进行计算的渲染管线,光栅化器是用于将顶点着色器输出的结果装配成三角形网格、并按照配置光栅化成离散像素点的渲染管线,像素着色器是用于对光栅化后的每个离散像素点进行着色计算、完成像素点着色的渲染管线。
在一些实施例中,在当前帧中对于虚拟场景中任一面部可见的虚拟对象,获取该虚拟对象的面部模型,例如,获取虚拟对象的3D面部模型数据,例如,该3D面部模型数据包含虚拟对象的3D面部点云数据或者3D Mesh数据中至少一项,本申请实施例对此不进行具体限定。
在一些实施例中,基于虚拟对象的面部模型,对该面部模型所关联的面部网格进行细化,得到面部细化网格,以使得面部细化网格的顶点数量大于面部网格的顶点数量,由于顶点数量的增多,代表了可调控的网格细节程度提升,且细化过程作用在面部模型的几何层面上,因此,细化过程也称为几何细化过程,可视为提升虚拟对象其面部网格的分辨率的过程。换一种表述,虚拟对象的3D面部点云数据本身可以转换或者重建形成3D Mesh数据,基于该3D Mesh数据进行几何细化,能够得到3D面部细化Mesh数据,即面部细化网格。关于3D Mesh的几何细化方式将在下一实施例中详细说明,这里不再赘述。
202、终端基于该面部细化网格,重建该虚拟对象的纹理贴图。
在一些实施例中,终端基于步骤201中生成的面部细化网格,可以重建出来虚拟对象的纹理贴图,即,重建虚拟对象在UV空间的UV贴图。在一些实施例中,将UV贴图可以分解成一张反照率贴图和一张UV空间的法线贴图,这样,反照率贴图可以基于虚拟对象的对象ID(Identification,标识)直接从游戏引擎中导出,而与光照计算无关,而法线贴图则可以随着面部重建网络而进行学习,从而面部重建网络能够学习到虚拟对象在多个相机视角下的法线贴图,这样在训练完毕以后,根据当前虚拟相机的相机视角,可以直接查询缓存的该虚拟对象在该相机视角下的法线贴图。关于纹理贴图的重建方式将在下一实施例中详细说明,这里不再赘述。
203、终端对于该面部细化网格中的顶点,基于该虚拟场景中的光源信息和相机视角,获取该顶点的光照系数,该光照系数表征该虚拟场景中光源照射该面部模型的表面经过漫反射后形成的顶点高光。
在一些实施例中,终端基于步骤201中生成的面部细化网格,可以对于面部细化网格中的每个顶点,都基于虚拟场景中的光源信息,以及虚拟场景中当前虚拟相机的相机视角,来对每个顶点进行光照计算,得到每个顶点的光照系数,这样,可以通过光照系数来模拟出光源照射在每个顶点上形成的高光效果。
在一些实施例中,在上述光照计算过程中,可以同时考虑光源产生的光线在面部模型的表面所产生的镜面反射和漫反射,这样能够使得光照计算更加精准和逼真;可选地,也可以仅考虑光源产生的光线在面部模型的表面所产生的漫反射,这样能够使得光照计算的计算开销降低,且漫反射也能够模拟出来逼真程度较高的高光效果;可选地,也可以考虑面部模型造成的自阴影,对每个顶点都会计算一个自阴影因子即能见度系数,以此来修正光照计算所可能产生的显示错误,避免不应该被照亮的像素点获得光照。关于每个顶点的光照计算方式将在下一实施例中详细说明,这里不再赘述。
204、终端基于该纹理贴图以及该面部细化网格中顶点的光照系数,对该虚拟对象进行面部渲染,得到该虚拟对象在该相机视角下的面部图像。
在一些实施例中,终端基于步骤202中重建的纹理贴图,以及步骤203中对面部细化网格逐个顶点进行光照计算所得的每个顶点的光照系数,这样,能够对面部图像中光栅化后离散的每个像素点,都预测该像素点的颜色值。
可选地,在清空帧缓冲区的颜色和深度以后,利用顶点着色器逐个Mesh顶点在z缓存区中写入深度值,再通过光栅化器进行光栅化,得到离散像素点,再利用颜色着色器逐个像素点在颜色缓冲区中写入颜色值,从而在遍历全部像素点以后能够在终端的显示屏中渲染出来当前游戏画面帧中,虚拟对象在当前虚拟相机的相机视角下的面部图像。这里的Mesh顶点是指经过几何细化以后的面部细化网格即面部细化Mesh中的顶点。
在一些实施例中,在对每个像素点的颜色值进行预测时,确定显示在该像素点上多个重叠的Mesh顶点,根据每个Mesh顶点在UV贴图的反照率贴图中查找到的反照率(表征了面部区域的基色或者说面部肌肤的底色),以及该Mesh顶点经过光照计算后的光照系数,可以预测出来该Mesh顶点的顶点颜色。接着,由于在深度写入阶段会对这些Mesh顶点进行深度排序,将有序排列的Mesh顶点按照透明度和透射率进行顶点颜色的积分,即可得到这一像素点最终预测出来的颜色值,其中,每个顶点的透明度和透射率都是顶点着色器的渲染管线中内部代码可以计算得到的,根据顶点着色器的不同可以具有不同的计算方式,这里不再展开说明。
上述所有可选技术方案,能够采用任意结合形成本公开的可选实施例,在此不再一一赘述。
本申请实施例提供的方法,通过将虚拟对象的面部模型进行细化,得到面部细化网格,使得面部重建的3D网格其顶点数量更加密集,这样利用面部细化网格来重建纹理贴图时,能够得到高分辨率、高质量、高精度的纹理贴图,并且能够针对每个细化产生的顶点都进行光照计算,得到每个顶点的光照系数,这样光照计算能够覆盖到高分辨率的重建3D网格,提升了光照计算的精度,进而根据高质量的纹理贴图以及每个顶点的光照系数来进行面部渲染时,能够得到当前虚拟相机的相机视角下高质量的面部图像,能够提升虚拟对象的面部重建精准度,优化虚拟对象的面部渲染效果。
进一步的,由于光照计算中可以学习到多个相机视角下的法线贴图,这样能够方便地重建出来多视角下的面部图像,提升了面部重建的灵活性和可控性,进一步优化了面部图像的渲染效果。
在上述实施例中,简单介绍了面部重建基本流程,而在本申请实施例中,将对几何细化方式、UV贴图重建方式和光照计算方式等步骤进行详细说明。
图3是本申请实施例提供的另一种虚拟对象的面部重建方法的流程图。参见图3,该实施例由电子设备执行,以电子设备为终端为例进行说明,该实施例包括以下步骤。
301、终端将虚拟场景中虚拟对象的面部模型输入面部重建网络中,通过该面部重建网络,对该面部模型中待形变的顶点进行位置变换,得到形变顶点。
其中,该面部重建网络用于重建该虚拟对象的面部网格并增加该面部网格的顶点数量。
在一些实施例中,在当前帧中对于虚拟场景中任一面部可见的虚拟对象,获取该虚拟对象的面部模型,例如,获取虚拟对象的3D面部模型数据,例如,该3D面部模型数据包含虚拟对象的3D面部点云数据或者3D Mesh数据中至少一项,本申请实施例对此不进行具体限定。
在一些实施例中,终端中存储有训练完毕的面部重建网络,面部重建网络可以是终端本地训练的,也可以是服务器云端训练(或分布式训练)完毕后下发到终端的,面部重建网络的训练过程将在下一实施例中详细说明,这里不再赘述。将该虚拟对象的面部模型输入到面部重建网络中,通过该面部重建网络,可以确定出来面部模型中待形变的顶点,并对该顶点进行位置变换,得到位置变换以后产生的形变顶点,这样,原本的顶点在经过位置变换以后,能够产生新的形变顶点,从而能够增加3D Mesh中的顶点数量,这一顶点的位置变换过程能够达到顶点在几何层面上的细化效果,因此也称为顶点的几何细化过程。在对各个顶点都进行位置变换以后,将得到各个形变顶点,最终,将各个待形变的顶点和各个形变顶点组合形成新的面部细化网格,从而保证面部细化网格的顶点数量大于面部模型的顶点数量。换一种表述,由于虚拟对象的3D面部点云数据本身可以转换或者重建得到3D Mesh数据,基于该3D Mesh数据进行几何细化,能够得到3D面部细化Mesh数据,即面部细化网格。由于顶点数量的增多,代表了可调控的网格细节程度提升,因此,几何细化过程可视为提升虚拟对象其面部网格的分辨率的过程,这样利用高分辨率的面部细化网格来进行纹理贴图的重建时,有助于生成具有高分辨率的纹理贴图,从而提升面部重建精度和面部渲染性能。
下面,将结合步骤A1~A3,对一种可能的几何细化方式进行举例说明,在这种几何细化方式中,面部重建网络会随之训练出来一个面部姿势参数、一个面部形状参数、一个网格细化函数以及一个预设顶点偏移。
A1、将该虚拟对象的面部姿势参数和面部形状参数输入该面部重建网络,通过该面部重建网络重建该虚拟对象的面部网格。
其中,该面部姿势参数和面部形状参数随着该面部重建网络训练得到。
在一些实施例中,获取随着面部重建网络训练完毕的面部姿势参数和面部形状参数,面部姿势参数和面部形状参数可以是存储在终端缓存中,或者硬盘中,或者其他存储介质中,本申请实施例对参数存储方式不进行具体限定。
在一些实施例中,根据该面部姿势参数和面部形状参数,可以在虚拟对象的3D面部点云数据的基础上,对虚拟对象进行面部重建,得到重建以后形成的3D Mesh数据,即重建得到满足输入的面部姿势参数和面部形状参数的面部网格(也即是3D Mesh),换一种表述,在输入的面部姿势参数和面部形状参数的指定下,对虚拟对象进行3D面部重建,使得重建生成的3D Mesh(即面部网格)具有与面部姿势参数相适应的面部姿势,以及与面部形状参数相适应的面部形状。再换一种表述,面部重建网络提供了潜在空间(即点云空间)到3D面部参数空间的直接转换,将潜在代码映射到3D面部参数空间后,可以在3D面部参数空间中直接编辑面部姿势参数和面部形状参数,实现对3D Mesh中面部姿势和面部表情等面部属性的直接、精确、明确地控制。
在一个示例中,使用γ表征面部姿势参数,使用β表征面部形状参数,将面部姿势参数γ和面部形状参数β作为输入,输入到面部重建网络中,即可返回一个面部构成对应的姿势和形状的3D Mesh,这一3D Mesh就是重建完毕的虚拟对象的面部网格,这一面部网格经过面部姿势参数γ实现了面部姿势的精准控制,经过面部形状参数β实现了面部表情的精准控制,而且,在面部属性控制过程中,并不需要关注从点云空间到3D面部参数空间是如何转换的,只需要在3D面部参数空间中训练出来合适的面部姿势参数γ和面部形状参数β,即可保证重建出来的3D Mesh能够满足面部姿势参数γ和面部形状参数β。
A2、将该面部网格中待形变的顶点的网格位置输入该面部重建网络的网格细化函数,得到网格细化位置。
其中,该网格细化函数用于提升该面部网格的分辨率,该网格细化函数随着该面部重建网络训练得到。
在一些实施例中,获取随着面部重建网络训练完毕的网格细化函数,网格细化函数可以是存储在终端缓存中,或者硬盘中,或者其他存储介质中,本申请实施例对函数存储方式不进行具体限定。
在一些实施例中,可以从步骤A1重建出来的面部网格中采样待形变的顶点,将采样的顶点的网格位置输入到该网格细化函数中,进而输出一个对该网格位置进行细分以后的网格细化位置。可选地,待形变的顶点可以是步骤A1重建出来的面部网格中的任一顶点,即,在步骤A1重建出来的面部网格中逐个顶点进行采样,使得每个顶点都会参与到几何细化中,或者,待形变的顶点也可以是步骤A1重建出来的面部网格中的部分顶点,这样,在步骤A1重建出来的面部网格中按照预设采样规则来进行采样,使得部分顶点参与到几何细化中,另一部分顶点则不会参与到几何细化中,本申请实施例对是否采样面部网格的全部顶点不进行具体限定。其中,预设采样规则可以是仅采样面部特征点,或者仅采样面部边缘区域的轮廓点,或者仅采样面部五官区域的特征点等,本申请实施例对预设采样规则不进行具体限定。
在一个示例中,使用M(γ,β)表征以面部姿势参数γ和面部形状参数β作为输入所重建的面部网格M中采样的待形变的顶点的网格位置,使用S表征网格细化函数,那么可知输出的网格细化位置可以表征为S(M(γ,β))。例如,在网格细化函数S能够将顶点数量从778增加到3093的情况下,网格细化函数S还可以表示为S:R778×3→R3093×3。
需要说明的是,这里仅以对一个待形变的顶点产生一个网格细化位置为例进行说明,是为了简便起见,但在一种可能的实施方式中,网格细化函数对同一个顶点的网格位置,可以输出一系列经过位置变换以后的网格细化位置,即输出一个网格细化位置序列,对网格细化位置序列中每个网格细化位置,都可以经过步骤A3同理的方式计算出来一个新的形变顶点的网格位置,从而对一个待形变的顶点能够产生一系列新的形变顶点,本申请实施例对此不进行具体限定。
A3、在该网格细化位置上沿着法线方向施加预设顶点偏移,得到形变顶点的网格位置。
其中,该形变顶点为对该待形变的顶点进行位置变换后的顶点。
其中,该预设顶点偏移随着该面部重建网络训练得到。
在一些实施例中,在面部重建网络的训练过程中,可以学习到一个预设顶点偏移,该预设顶点偏移可以是一个偏移量,这样能够对每个顶点都施加相同的偏移量,也降低了训练成本,提升了训练速度。或者,该预设顶点偏移可以是一个偏移矩阵(或者偏移贴图),这样能够对不同顶点施加不同的偏移量,即,偏移矩阵中每个元素记录了这一元素所关联的顶点自身的偏移量,可以根据顶点索引来建立3D Mesh中顶点与偏移矩阵中元素的关联关系,本申请实施例对此不进行具体限定。
在一些实施例中,若该预设顶点偏移是一个固定的偏移量,可以直接读取该偏移量作为预设顶点偏移;若该预设顶点偏移是一个偏移矩阵,可以根据顶点索引与偏移矩阵中元素的关联关系,在偏移矩阵中查询到该顶点的顶点索引所关联的元素,进而取出该元素中记录的偏移量作为该预设顶点偏移。
在一些实施例中,针对不同的虚拟对象,或者针对同一虚拟对象的不同面部表情,可有针对性的训练出来不同的预设顶点偏移,即,同一虚拟对象在各个面部表情下共享相同的预设顶点偏移,不同虚拟对象则不共享预设顶点偏移,或者,同一虚拟对象仅在相同面部表情下任意相机视角都共享相同的预设顶点偏移,但同一虚拟对象在不同面部表情下则不共享预设顶点偏移,本申请实施例对预设顶点偏移是针对虚拟对象定制,还是针对虚拟对象的某种面部表情定制不进行具体限定。
在一些实施例中,在获取到该顶点的预设顶点偏移以后,在步骤A2获取到的该网格细化位置上,沿着该顶点的法线方向,施加该预设顶点偏移,得到形变顶点的网格位置,这样,能够在经过网格细分以后的网格细化位置上施加个性化的顶点偏移,达到对网格顶点的额外变形,且额外变形会沿着网格顶点的法线方向,这样能够在面部网格的基础上,根据各个顶点进行位置变换,产生各个新的形变顶点,并计算出来新的形变顶点的网格位置。
在一个示例中,使用S(M(γ,β))表征步骤A2获取到的网格细化位置,使用D表征预设顶点偏移,那么产生的新的形变顶点的网格位置V可以表征为:V = S(M(γ,β))+ D。这样,即使在面部姿势参数γ和面部形状参数β的控制下,重建出来的3D Mesh的分辨率不足,也可以通过步骤A2~A3,来针对缺失面部姿势和面部形状的形变顶点计算出来网格位置,这样能够增大3D Mesh的顶点数量,补足3D Mesh的分辨率。
在上述步骤A1~A3中,提供了一种先重建3D Mesh,再进行几何细化的可能实施方式,这样,在面部姿势参数γ和面部形状参数β的编辑下,能够精准控制重建出来的3D Mesh其面部姿势和五官表情,再通过网格细化函数来提升3D Mesh的分辨率,以获取到3D Mesh更加精细的几何细节,从而能够提升虚拟对象的3D面部重建精度。
在另一些实施例中,在步骤A1中通过面部重建网络重建得到3D Mesh以后,也可以通过其他方式来进行几何细化,比如直接将步骤A2计算的网格细化位置作为形变顶点的网格位置,这样不需要花费额外算力来计算施加顶点偏移以后的网格位置,能够提升几何细化效率,提升面部细化网格的计算效率。或者,还可以使用插值法来计算网格细化位置,这样不需要花费额外算力来训练网格细化函数,能够节约训练成本,提升训练速度。在利用插值法计算网格细化位置的情况下,可以施加顶点偏移来作为形变顶点的网格位置,以提升几何细化精度,也可以不施加顶点偏移直接将网格细化位置作为形变顶点的网格位置,以降低计算复杂度,本申请实施例对此不进行具体限定。
302、终端基于各个待形变的顶点和各个形变顶点,确定该虚拟对象的面部细化网格。
在一些实施例中,基于步骤A1中重建的3D Mesh中的全部顶点,以及步骤A3中产生的新的形变顶点,能够构成虚拟对象的面部细化网格,即构成一个3D面部细化Mesh,并且3D面部细化Mesh中每个顶点的网格位置都是已知的。例如,步骤A1中重建的3D Mesh中包含778个顶点,而在几何细化中新增了2315个顶点,这样最终的3D面部细化Mesh中将包含3093个顶点,极大丰富了3D Mesh中的顶点数量,而顶点数量越多,3D Mesh分辨率越高,3D Mesh所能够捕捉和呈现的几何细节越多,最终渲染出来的面部图像的质量越高(比如纹理愈加精细,光照愈加逼真)。
在上述步骤301-302中,提供了对虚拟场景中虚拟对象的面部模型进行细化,得到该虚拟对象的面部细化网格的一种可能实施方式,其中,该面部细化网格的顶点数量大于该面部模型的顶点数量。通过面部重建网络来重建虚拟对象的3D Mesh,使得3D Mesh的面部姿势和面部形状具有高度可控的特点,这样能够保证了对面部图像中面部姿势和五官表情(即面部形状)的可控性,使得不论是游戏角色的夸张表情还是模仿真实世界的拟人表情,都只需要在训练阶段学习到合适的面部姿势参数γ和面部形状参数β就能够进行控制了,这样通过控制训练阶段学习到夸张表情的面部姿势参数γ和面部形状参数β,能够使得重建出来的3D Mesh完美适配到游戏角色,且巧妙融入到游戏场景,具有很高的通用性和可控性。进一步的,由于通过网格细化函数,来对重建完毕的3D Mesh实现了几何细化,这样保证最终3D面部细化Mesh的分辨率(即顶点数量)大幅提升,而分辨率的提升意味着3D面部细化Mesh能够捕捉更多的几何细节,这极大提升了虚拟对象3D的面部重建精度。进一步的,在几何细化中并非单纯的将3D Mesh扩展到更高的网格分辨率,而且还允许从3D Mesh进行表面顶点的变形,这样使得几何细化过程具有更高的准确性,而通过控制用于变形的预设顶点偏移,也能够控制几何细化过程的形变程度,使得具有更高的可控性。
在另一些实施例中,也可以直接利用步骤A1中面部重建网络所重建完毕的3DMesh来作为面部细化网格,这样无需花费算力来训练网格细化函数和预设顶点偏移,一方面能够节约训练成本,提升训练速度,另一方面在实时优化中也可以提升面部细化网格的计算效率,提升几何细化效率,本申请实施例对采用哪种几何细化方式不进行具体限定。
303、终端基于该面部细化网格,重建该虚拟对象的纹理贴图。
在一些实施例中,基于步骤302中的面部细化网格,可以对虚拟对象进行UV重建,得到虚拟对象的纹理贴图即UV贴图,UV贴图是指虚拟对象在UV空间中表征纹理信息的贴图,不但体现出来顶点(包含原本的顶点和形变顶点)从3D面部细化Mesh如何展开到UV空间映射到UV坐标,而且体现出来顶点在UV空间中的基础颜色(也称为基色、底色)、法向量等。
可选地,为了降低重建难度,可以将UV贴图分解成两个部分:反照率贴图和法线贴图,反照率贴图是一个与照明无关的贴图,法线贴图是一个与照明有关的贴图。下面,将通过步骤B1~B2,对UV贴图的重建过程进行举例说明,这里以UV贴图包含该虚拟对象的反照率贴图和法线贴图为例。
B1、在纹理空间中,导出该虚拟对象预先定义的反照率贴图。
其中,该反照率贴图用于表征该虚拟对象的面部皮肤的底色。
在一些实施例中,反照率贴图是与虚拟对象自身相关的一个参数,表征虚拟对象的面部皮肤底色(或面部皮肤基色,即基础的肤色),承载了3D面部细化Mesh中每个顶点的基础颜色,因此每个顶点在反照率贴图中记录的反照率并不会随着光照、阴影的变化而改变,是一个与照明无关的参数,可以直接从游戏引擎中导出,不需要跟随面部重建网络训练。可选地,反照率贴图也可以随着面部重建网络进行优化,这样能够提升反照率贴图的精准程度,进一步优化虚拟对象的3D面部重建效果。
在一些实施例中,可以直接从游戏引擎中导出虚拟对象在UV空间中的反照率贴图,这样能够将虚拟对象的面部皮肤建模带有反照率贴图的表面A,而反照率贴图是在UV空间中对每个虚拟对象都预先定义的,因此其获取难度很低,且并不需要花费算力来进行反照率贴图的重建,只需要导出反照率贴图即可,也降低了UV贴图的重建难度。
B2、基于该面部细化网格,重建该虚拟对象的法线贴图。
其中,该法线贴图用于确定该面部细化网格中顶点的光照系数。
在一些实施例中,法线贴图则是可以随着面部重建网络而进行训练所得的参数,法线贴图中记录的是3D面部细化Mesh中每个顶点在UV空间中的法向量,而每个顶点在UV空间的法向量是与这一顶点在3D面部细化Mesh中的点法线向量相关的,因此训练UV空间中法线贴图,相当于间接控制了每个顶点在3D面部细化Mesh中的点法线向量,点法线向量是用于计算每个顶点的光照系数的,从而能够间接实现对光照系数的控制,从而能够调控出来面部高光的渲染效果。
在一些实施例中,由于UV空间的法线贴图是随着面部重建网络训练得到的,因此,法线贴图可以是与虚拟对象的对象ID预先进行关联存储的,这样根据虚拟对象的对象ID,即可以查询到关联存储的法线贴图,从而,通过使用与Mesh表面的点法线向量相结合的UV空间法线贴图,能够用于确定是否计算Mesh表面顶点的光照系数x,比如,由于UV空间法线贴图是随着面部重建网络训练得到的,这样,可以仅对UV空间法线贴图中记录了UV坐标和法向量的顶点计算其光照系数x,而剩余的顶点则不需要计算光照系数x,这样能够在不对Mesh进行上采样的情况下,直接通过UV空间法线贴图来添加面部图像中的高频细节,保证了面部纹理质地的品质,而且也并不需要在3D面部细化Mesh中逐个顶点进行光照计算,这样也降低了光照计算的计算量。
在上述步骤B1~B2中,通过将UV贴图分解成一个与照明相关的法线贴图,和一个与照明无关的反照率贴图,这样只需要学习不同光照条件下的法线贴图的重建方式即可,不需要关心反照率贴图,使得UV贴图的重建难度大大降低,UV贴图的重建效率大大提升。进一步的,在训练阶段中,通过控制训练的停止条件,能够易于训练出来高分辨率、高质量的法线贴图,这样能够提升UV贴图的分辨率和质量,从而保证虚拟对象渲染出来高质量的面部外观。
在另一些实施例中,也可以不对UV贴图进行以上反照率和法线的分解,而是直接学习到虚拟对象在不同相机视角下的UV贴图,进而根据当前虚拟相机的相机视角,读取到相机视角下的UV贴图,同样能够保证UV贴图的分辨率和质量,从而保证虚拟对象渲染出来高质量的面部外观。
304、终端基于该虚拟场景中的相机视角,确定该面部细化网格在该相机视角下的可见表面。
在一些实施例中,由于虚拟对象的Mesh表面并不是每个角度都在当前虚拟相机的相机视角下可见,比如,在虚拟相机正视虚拟对象时,能够看到正视视角下的Mesh正表面(即看到虚拟对象的正脸),在虚拟相机侧视虚拟对象时,能够看到侧视视角下的Mesh侧表面(即看到虚拟对象的侧脸),在虚拟相机背对/后视虚拟对象时,其实看不到虚拟对象的面部(即虚拟对象的面部不可见),只能看到虚拟对象的后脑勺和其发型。因此,在对Mesh表面的顶点进行光照计算之前,需要在本步骤304中基于虚拟场景中当前虚拟相机的相机视角,确定出来步骤302中重建的3D面部细化Mesh在该相机视角下的可见表面。关于可见性检测方式可采用游戏引擎中原生的可见性检测算法,这里不再赘述。
305、终端对于该可见表面的任一顶点,基于该虚拟场景中的光源信息,获取该顶点的光照系数。
其中,该光照系数表征该虚拟场景中光源照射该面部模型的表面经过漫反射后形成的顶点高光。
在一些实施例中,对于步骤304中处于3D面部细化Mesh的可见表面中的任一顶点(原本的顶点和形变顶点都统称为顶点),可以基于虚拟场景中的光源信息,来对这一顶点进行光照计算,得到这一顶点的光照系数。
其中,该光源信息表征虚拟场景中的光源数量、每个光源的位置以及每个光源的类型(如点光源、面光源等)。可选地,光源信息可以是预先设置的,也可以随着面部重建网络的训练过程而随之优化迭代,以便于找到计算开销最低的光源条件,比如在一个主光源的情况下计算开销较低,当然也可以优化找到最佳的引擎相机位置,或者找到最佳的全局反射常数k(包括环境反射常量ka和漫反射常量kd)等,这里对光源信息的来源方式不进行具体限定。
其中,光照计算可以采用游戏引擎原生的任一光照模型,比如Phong光照模型,Lambert光照模型,Blinn光照模型等,这里对光照计算模型的类型不进行具体限定。
下面,将以一种可能的光照计算方式为例进行说明,在这种光照计算方式下,使用可微光栅化器来确定相机视角下的可见表面以后,使用不带镜面反射分量的光照模型来计算可见表面上顶点的光照系数x。
C1、基于该光源信息,获取该虚拟场景的环境反射常量、漫反射常量、环境光源强度以及该虚拟场景中每个光源在漫射表面的光源强度。
在一些实施例中,基于虚拟场景的光源信息,获取出来虚拟场景的以下光照参数:环境反射常量ka、漫反射常量kd、环境光源强度ia(简称环境光强)以及该虚拟场景中每个光源m在漫射表面的光源强度im,d,其中,m∈lights,即光源m属于虚拟场景的光源集合lights。上述光照参数可以直接从游戏引擎中导出,并不需要进行训练和计算,光照参数是由虚拟场景中当前配置的光源信息所决定的,在光源信息不同的情况下,通常具有不同的光照参数。
C2、对于该可见表面的任一顶点,基于该漫反射常量、该顶点的点法线向量、该顶点到每个光源的光照向量以及每个光源在漫射表面的光源强度,获取该顶点的漫反射系数。
在一些实施例中,对于步骤304中处于3D面部细化Mesh的可见表面中的任一顶点(原本的顶点和形变顶点都统称为顶点),都可以基于本步骤C2来计算这一顶点的漫反射系数,进而通过步骤C3来计算这一顶点的光照系数。
在本步骤C2中,仅以单个顶点的漫反射系数计算过程为例进行说明。下面将通过步骤C21~C23介绍一种可能的漫反射系数计算方式,在漫反射计算过程中将考虑步骤C1中漫反射常量kd,每个光源m在漫射表面的光源强度im,d,此外,还将考虑当前顶点自身的点法线向量(指在Mesh表面的点法线向量,是一个与UV空间法线贴图中的UV空间法向量相关的向量),以及从当前顶点到每个光源m的光照向量(或称为光线向量)。
C21、对于该虚拟场景中的每个光源,获取该顶点的点法线向量和该顶点到该光源的光照向量之间的向量点积。
C22、将该漫反射常量、该光源在漫射表面的光源强度和该向量点积相乘,得到该光源在该顶点上的漫反射分量。
进一步的,遍历虚拟场景的光源集合lights,对光源集合lights中的每个光源m都执行步骤C21~C22,即可计算出来每个光源m在当前顶点上的漫反射分量。需要说明的是,在测试过程中发现,虚拟场景中只有一个主光源,即|M|=1(光源集合lights的模为1)时,能够是光照计算成本和面部渲染质量之间提升一个较好的平衡,因此在一个主光源的情况下,兼顾了光照计算成本和面部渲染质量,体现在高品质的面部渲染效果的情况下,花费的光照计算开销也较低,因此渲染速度快,不易卡顿,渲染性能高。
C23、将该虚拟场景中各个光源在该顶点上的漫反射分量融合,得到该顶点的漫反射系数。
在一些实施例中,遍历虚拟场景的光源集合lights,对光源集合lights中的每个光源m都执行步骤C21~C22,即可计算出来每个光源m在当前顶点上的漫反射分量,接着,在不考虑自阴影的情况下,将全部光源在当前顶点上的漫反射分量相加,即可得到当前顶点在整个虚拟场景中的漫反射系数,表示为如下表达式:
在上述步骤C21~C23中,提供了一种在不考虑自阴影的情况下,如何对3D面部细化Mesh的可见表面中单个顶点实现漫反射系数的计算,由于不考虑自阴影,因此节约一部分由于自阴影因子计算而带来的性能开销,而自阴影本身在面部渲染中带来的影响也比较小,可以忽略不计,因此具有降低的漫反射计算开销,实现较好的面部高光模拟效果。
在另一些实施例中,也可以考虑虚拟对象的面部Mesh造成的自阴影(或称为自我阴影),自阴影是指虚拟对象的面部Mesh表面未被光线直接照亮的部分。在光照计算中进行漫反射和镜面反射计算时可能会出现一些显示错误,比如当光照向量和视线向量方向相反时像素点也会被照亮(但不应被照亮),又例如,如果光源距离面部Mesh表面过近,也可能会出现显示错误。因此,使用自阴影可以解决以上举例的光照计算产生的显示错误,即避免不应该被照亮的像素点获得光照。
下面,将通过步骤C23a~C23c,介绍考虑自阴影情况下,如何对3D面部细化Mesh的可见表面中单个顶点实现漫反射系数的计算。通过对该顶点额外计算一个能见度系数(也称为自阴影因子),这样可以控制:当面部Mesh表面被遮挡或不应该获得光照时,能见度系数为零或接近于零,如果像素被照亮,则能见度系数大于零,从而充分避免不应该被照亮的像素点获得光照,能够进一步调节漫反射系数的精准程度,进一步提升光照计算的准确度,进一步优化面部渲染的高光效果,提升高光的逼真程度。
C23a、对于该虚拟场景中的每个光源,将该顶点的位置向量和该光源的位置向量之间的L2范数输入到激活函数中,得到该顶点在该光源下的能见度系数。
其中,该能见度系数表征该顶点在该光源照射下形成的自阴影。
在一些实施例中,对于虚拟场景的光源集合lights中的每个光源m,其中m∈lights,都可以将该光源的位置向量m和该顶点的位置向量x求一个L2范数,即||x-m||,其中x是顶点的位置向量,也是顶点的几何向量表示,m是光源的位置向量,也是光源的几何向量表示。进一步的,将该L2范数||x-m||输入到一个激活函数中,以获取到顶点x在光源m下的能见度系数V(x,m)。
在一个示例中,激活函数可以是Sigmoid函数,此时有:
V(x,m)=Sigmoid(||x-m||)
其中,能见度系数V(x,m)表征了顶点x关于光源m的漫反射部分的能见度,这种能见度是在执行Mesh网格的光栅化以后所能体现出来的,从而通过计算能见度系数V(x,m),能够将计算机图形学中的自阴影整合到可微分光栅化器的渲染管线中。
C23b、基于每个光源的能见度系数,对该光源在该顶点上的漫反射分量进行加权,得到该光源在该顶点上的加权漫反射分量。
在一些实施例中,对于虚拟场景的光源集合lights中的每个光源m,将光源m通过步骤C23a中获取到的能见度系数V(x,m)作为权重系数,对光源m在步骤C22中获取到的漫反射分量进行加权,即可得到光源m在顶点x上的加权漫反射分量,记作。换一种表述,将每个光源m的能见度系数V(x,m)与漫反射分量相乘,得到光源m在顶点x上的加权漫反射分量/>。
C23c、将该虚拟场景中各个光源在该顶点上的加权漫反射分量相加,得到该顶点的漫反射系数。
在一些实施例中,遍历虚拟场景的光源集合lights,对光源集合lights中的每个光源m都执行步骤C21~C22,即可计算出来每个光源m在当前顶点上的漫反射分量,并对光源集合lights中的每个光源m都执行步骤C23a~C23b,即可计算出来每个光源m在当前顶点上的加权漫反射分量。
进一步地,在考虑自阴影的情况下,将全部光源在当前顶点上的加权漫反射分量相加,即可得到当前顶点在整个虚拟场景中的漫反射系数,表示为如下表达式:
其中,lights表征虚拟场景的光源集合,m表征该光源集合lights中的光源,kd表征漫反射常量,表征顶点到光源m的光照向量,/>表征顶点的点法线向量,V(x,m)表征顶点x针对光源m的能见度系数,im,d表征光源m在漫射表面的光源强度。
在上述步骤C23a~C23c中,提供了一种在考虑自阴影的情况下,如何对3D面部细化Mesh的可见表面中单个顶点实现漫反射系数的计算,通过对该顶点额外计算一个能见度系数(也称为自阴影因子),这样可以控制:当面部Mesh表面被遮挡或不应该获得光照时,能见度系数为零或接近于零,如果像素被照亮,则能见度系数大于零,从而充分避免不应该被照亮的像素点获得光照,也修正了在不考虑自阴影的情况下在少数情形中可能会出现的显示错误,能够进一步调节漫反射系数的精准程度,进一步提升光照计算的准确度,进一步优化面部渲染的高光效果,提升高光的逼真程度,使得光照计算方案能够覆盖到尽可能全面的面部渲染场景中。
在另一些实施例中,除了基于步骤C21~C23来计算漫反射系数以外,还可以采用半兰伯特模型或者兰伯特模型等其他漫反射光照模型,来计算3D面部细化Mesh的可见表面中每个顶点的漫反射系数,本申请实施例对漫反射系数的建模方式不进行具体限定。
C3、基于该环境反射常量、该环境光源强度和该顶点的漫反射系数,获取该顶点的光照系数。
在一些实施例中,基于步骤C1中获取的环境反射常量ka和环境光源强度ia,以及步骤C2中获取的当前顶点的漫反射系数,可以获取当前顶点的光照系数,这样使得在光照系数中既体现了环境光影响,也体现了漫反射影响,使得光照系数的计算方式更加精确,也使得面部高光效果的愈加逼真。其中,这里对步骤C2中的漫反射系数是否考虑自阴影不进行具体限定。
下面,将通过步骤C31~C32,介绍单个顶点的光照系数的计算方式,3D面部细化Mesh的每个顶点都可以基于步骤C31~C32同理的操作来计算光照系数,不再赘述。
C31、将该环境反射常量和该环境光源强度相乘,得到该虚拟场景的环境光系数。
在一些实施例中,将步骤C1中获取的环境反射常量ka和环境光源强度ia相乘,得到环境光系数kaia。这一环境光系数kaia体现了虚拟场景中的环境光影响,是根据虚拟场景的光源信息中的两个常量所确定的,与当前顶点在可见表面的位置无关,也与漫反射影响无关。
C32、将该环境光系数和该顶点的漫反射系数相加,得到该顶点的光照系数。
在一些实施例中,将步骤C31中获取的环境光系数kaia与步骤C2中获取的该顶点的漫反射系数相加,得到该顶点的光照系数Ix。
在一个示例中,在不考虑自阴影的情况下,该顶点的光照系数表示为:
其中,Ix表征顶点x的光照系数,ka表征环境反射常量,ia表征环境光源强度,m表征光源集合lights中的光源,kd表征漫反射常量,im,d表征光源m在漫射表面的光源强度,表征顶点到光源m的光照向量,/>表征顶点的点法线向量。可以看出,在不考虑自阴影的情况下,该顶点的光照系数的表达式中不含有能见度系数V(x,m),在考虑自阴影的情况下,只需要漫反射系数部分添加能见度系数V(x,m)即可,由于光照系数的计算方式同理,不再赘述。
在步骤C31~C32中,提供了不考虑镜面反射的情况下,如何兼顾环境光影响和漫反射影响,来对单个顶点进行光照计算,得到单个顶点的光照系数,这样,由于不需要计算镜面反射部分,能够降低光照计算开销。在另一些实施例中,也可以采用其他的光照模型,比如考虑镜面反射部分,或者引入多层面部高光的高光计算(即考虑多层高光叠加效果)等,这里对光照计算方式不进行具体限定。
在上述步骤C1~C3中提供的光照计算方式,由于面部皮肤质地的原因,镜面反射在虚拟对象面部作用可忽略,只需要考虑光源在3D面部细化Mesh的可见表面上的漫反射效果,而不需要考虑镜面反射效果,这样能够在保证逼真高光效果的前提下,降低光照计算复杂度,提升光照计算效率。
在另一些实施例中,也可以采用其他的光照模型来进行可见表面中顶点的光照计算,比如Phong光照模型,Lambert光照模型,Blinn光照模型等,这里对光照计算模型的类型不进行具体限定。
在上述步骤304-305中,对于该面部细化网格中的顶点,提供了一种基于该虚拟场景中的光源信息和相机视角,获取该顶点的光照系数的可能实施方式,即,先计算出来3D面部细化Mesh的可见表面,再针对可见表面上的顶点进行光照计算,从而能够降低光照计算的计算量,不需要对3D面部细化Mesh逐个顶点进行光照计算,节约了3D面部细化Mesh不可见表面上顶点的光照计算开销,在另一些实施例中,也可以针对3D面部细化Mesh逐个顶点进行光照计算,再确定出来可见表面,这里对步骤的执行时序不进行具体限定。
306、终端基于该纹理贴图以及该面部细化网格中顶点的光照系数,对该虚拟对象进行面部渲染,得到该虚拟对象在该相机视角下的面部图像。
在一些实施例中,终端基于步骤303中重建的纹理贴图,以及步骤304~305中对3D面部细化Mesh的可见表面逐个顶点进行光照计算所得的每个顶点的光照系数,这样,能够对面部图像中光栅化后离散的每个像素点,都预测该像素点的颜色值。
可选地,在清空帧缓冲区的颜色和深度以后,利用顶点着色器对3D面部细化Mesh的可见表面逐个顶点(下文简称为Mesh顶点)在z缓存区中写入深度值,再通过光栅化器进行光栅化,得到离散像素点,再利用颜色着色器逐个像素点在颜色缓冲区中写入颜色值,从而在遍历全部像素点以后能够在终端的显示屏中渲染出来当前游戏画面帧中,虚拟对象在当前虚拟相机的相机视角下的面部图像。
在一些实施例中,在对每个像素点的颜色值进行预测时,确定显示在该像素点上多个重叠的Mesh顶点,这里的Mesh顶点指3D面部细化Mesh的可见表面中的顶点,根据每个Mesh顶点在UV贴图的反照率贴图中查找到的反照率(表征了面部区域的基色或者说面部肌肤的底色),以及该Mesh顶点经过光照计算后的光照系数,可以预测出来该Mesh顶点的顶点颜色。接着,由于在深度写入阶段会对这些Mesh顶点进行深度排序,将有序排列的Mesh顶点按照透明度和透射率进行顶点颜色的积分,即可得到这一像素点最终预测出来的颜色值,其中,每个顶点的透明度和透射率都是顶点着色器的渲染管线中内部代码可以计算得到的,根据顶点着色器的不同可以具有不同的计算方式,这里不再展开说明。
上述所有可选技术方案,能够采用任意结合形成本公开的可选实施例,在此不再一一赘述。
本申请实施例提供的方法,通过将虚拟对象的面部模型进行细化,得到面部细化网格,使得面部重建的3D网格其顶点数量更加密集,这样利用面部细化网格来重建纹理贴图时,能够得到高分辨率、高质量、高精度的纹理贴图,并且能够针对每个细化产生的顶点都进行光照计算,得到每个顶点的光照系数,这样光照计算能够覆盖到高分辨率的重建3D网格,提升了光照计算的精度,进而根据高质量的纹理贴图以及每个顶点的光照系数来进行面部渲染时,能够得到当前虚拟相机的相机视角下高质量的面部图像,能够提升虚拟对象的面部重建精准度,优化虚拟对象的面部渲染效果。
进一步的,由于光照计算中可以学习到多个相机视角下的法线贴图,这样能够方便地重建出来多视角下的面部图像,提升了面部重建的灵活性和可控性,进一步优化了面部图像的渲染效果。
在上一实施例中,详细介绍了本申请一种结合Mesh、阴影感知和3D面部参数个性化编辑进行渲染游戏面部增强表达的技术方案,在本申请实施例中,将结合图4,对这一技术方案的处理流程进行示例性说明。
图4是本申请实施例提供的一种虚拟对象的面部重建方法的原理图,如图4所示,这一技术方案依赖于面部重建网络,随着面部重建网络进行训练优化的还包含但不限于如下3D面部属性的编辑参数:
(1)面部形状参数β,例如,使用参数化模型MANO对虚拟对象的3D面部模型进行参数化的情况下,面部形状参数β表全局MANO形状参数;
(2)预设顶点偏移D,是全局3D Mesh逐个顶点施加的预设偏移量;
(3)面部姿势参数γ,表征虚拟对象的3D面部模型的全局位姿(指示面部表情以及五官姿态);
(4)UV空间反照率a,即反照率贴图,与照明参数无关;
(5)UV空间法线贴图,与照明参数相关,记录顶点在UV空间的法向量;
(6)引擎相机位置xlights,游戏引擎中当前虚拟相机的观察位置;
(7)全局反射常数k,包括环境反射常量ka和漫反射常量kd。
其中,参数(1)~(5)由于表征面部几何、与照明无关,这五个参数可以统称为面部几何参数,参数(6)~(7)由于表征照明情况、与几何无关,这两个参数可以统称为照明参数。
在虚拟对象的3D面部重建过程中,获取到虚拟对象的面部模型400,在面部模型400的基础上,粗略估计一个初始化的面部形状参数β和面部姿势参数γ,并进行二进制掩码提取,输出面部掩码,这里的面部掩码将在下一实施例中投入到训练过程中计算训练损失值,这里不再赘述。
进一步的,在重建阶段中,获取到随着训练而优化完毕的引擎相机位置xlights,面部形状参数β,面部姿势参数γ,预设顶点偏移D,在以上4个参数的指导下,利用训练完毕的面部重建网络,对虚拟对象进行3D面部重建和几何细化(参见步骤301~302的描述),得到光栅化以后的3D面部细化Mesh即面部细化网格410。接着,将面部细化网格410与通用模型叠加,这里的通用模型是为了在训练阶段对面部细化网格410按照虚拟对象进行个性化的形状修正,通用模型可以是虚拟对象的一张标准UV轮廓图,但在训练完毕以后的重建阶段中也可以不进行形状修正,因为重建出来的面部细化网格410本身就会已经适配到虚拟对象的个性化面部形状和五官姿态。接着,将以上叠加的结果图,结合反照率贴图420来添加面部肌肤底色,结合相机光线来添加光照、阴影,换一种表述,在光源信息的作用下进行光照计算,对每个Mesh顶点计算光照系数(可以考虑自阴影,也可以不考虑自阴影)。接着,将融合了反照率、光照、阴影的结果图进行绘制,得到最终渲染后的面部图像430。
在以上3D面部重建中,给定任意虚拟对象的面部模型,能够重建出来具有个性化形状和纹理的逼真的面部图像430。具体而言,先在面部模型400的基础上,重建一个个性化的三角形网格M(面部细化网格410),三角形网格M包含顶点V和面孔F,以及虚拟对象的面部纹理UV贴图,其中,UV贴图被分解为反照率贴图420和法线贴图(图4中未示出)。这样,能够保证高质量的面部外观渲染效果,实现对面部姿势和面部形状的高度可控,且能够重建出来多视角下的面部图像,并能够巧妙融合到游戏场景,具有很强的通用性。
在上述各个实施例中,详细介绍了如何对虚拟对象进行3D面部重建,由于3D面部重建依赖于面部重建网络,在本申请实施例中,将对面部重建网络的训练流程进行详细说明。
图5是本申请实施例提供的一种虚拟对象的面部重建网络的训练方法的流程图。参见图5,该实施例由电子设备执行,以电子设备为服务器为例进行说明,该实施例包括以下步骤。
501、服务器通过面部重建网络,对虚拟场景中样本对象的面部模型进行细化,得到该样本对象的面部细化网格。
其中,该面部重建网络用于重建该虚拟对象的面部网格并增加该面部网格的顶点数量。
其中,样本对象是指用于训练面部重建网络的虚拟对象。
上述步骤501与步骤301~302同理,即,将样本对象的面部模型输入面部重建网络中,通过该面部重建网络,对该面部模型中待形变的顶点进行位置变换,得到形变顶点;接着,基于各个待形变的顶点和各个形变顶点,确定该样本对象的面部细化网格。详细参见步骤301~302的描述,不再赘述。
502、服务器基于该样本对象的纹理贴图和该面部细化网格中顶点的光照系数,对该样本对象进行面部渲染,得到该样本对象在该虚拟场景的相机视角下的预测面部图像。
上述步骤502与步骤303~306同理,即,将基于该面部细化网格,重建该样本对象的纹理贴图;接着,基于该虚拟场景中的相机视角,确定该面部细化网格在该相机视角下的可见表面;接着,对于该可见表面的任一顶点,基于该虚拟场景中的光源信息,获取该顶点的光照系数;接着,基于该纹理贴图以及该面部细化网格中顶点的光照系数,对该样本对象进行面部渲染,得到该样本对象在该相机视角下的预测面部图像。详细参见步骤303~306的描述,不再赘述。
503、服务器基于该预测面部图像和该样本对象在该相机视角下的参考面部图像,获取该面部重建网络的训练损失值。
在一些实施例中,该面部重建网络的训练损失值包括以下至少一项:几何损失项,外观损失项。其中,该几何损失项用于衡量该参考面部图像和该预测面部图像之间的几何相似性,该外观损失项用于衡量该参考面部图像和该预测面部图像之间的图像相似性。
在本申请实施例中,以训练损失值包括几何损失项和外观损失项为例进行说明,可选地,也可以仅考虑几何损失项不考虑外观损失项,或者仅考虑外观损失项不考虑几何损失项,本申请实施例对此不进行具体限定。
下面,将通过步骤D1~D3,对如何根据几何损失项和外观损失项来构建面部重建网络在每次迭代中的训练损失值的方式进行说明。
D1、基于该参考面部图像和该预测面部图像的几何差异,获取该面部重建网络的几何损失项。
其中,该几何损失项用于衡量该参考面部图像和该预测面部图像之间的几何相似性。
在一些实施例中,几何损失项可以基于该参考面部图像和该预测面部图像的几何差异进行建模。例如,对于几何损失项来说,其几何优化目标是保证2D图像中渲染轮廓与面部掩码(即标准面部面具)相匹配,同时满足3D网格的约束,因此几何优化目标是独立于外观优化目标的,即几何优化目标考虑的是几何形状的优化进度,而外观优化目标则考虑的是外显颜色以及视觉感知上的优化进度。
下面,将通过步骤D11~D13,对一种几何损失项的建模方式来进行说明,在这种建模方式中,将几何损失项分解成一个轮廓损失项和一个网格正则化项,这样能够提升几何损失项的建模精度,保证训练出来几何重建效果更好的面部重建网络,保证面部重建网络不但在渲染轮廓上具有高相似性,而且网格正则化项还能够防止优化后的面部重建网络崩溃,因此达到提升训练速度,加快优化进度,加速网络收敛的效果。
D11、基于该参考面部图像的面部掩码和该预测面部图像的渲染轮廓,获取该面部重建网络的轮廓损失项。
其中,该轮廓损失项表征该参考面部图像和该预测面部图像之间的轮廓差异。
在一些实施例中,基于样本对象的面部模型,能够从游戏调试原始的分割工具中获取到一个二进制的面部掩码,这一面部掩码就是参考面部图像的面部掩码。例如,使用Sin表征参考面部图像的面部掩码。在面部掩码是二值图像的情况下,满足Sin∈{0,1}H×W,其中,H表征图像高度,W表征图像宽度,参考面部图像和预测面部图像的宽度均等于W,高度均等于H。
如图4所示,在训练阶段中,根据样本对象的面部模型400,能够导出输入二进制面部掩码,即面部掩码是一张二值图像,二值图像中的元素要么取值为0要么取值为1,表征哪些像素点位于面部区域,哪些像素点不位于面部区域,从而区分出来面部图像中的面部区域和非面部区域。
在一些实施例中,在预测面部图像的基础上进行轮廓提取,可以得到预测面部图像的渲染轮廓,或者,在预测面部图像的基础上进行面部区域分割或识别,可以得到预测面部图像的渲染轮廓。例如,使用Srender表征预测面部图像的渲染轮廓。
在一些实施例中,将参考面部图像的面部掩码Sin和预测面部图像的渲染轮廓Srender之间的绝对值差异,作为该面部重建网络的轮廓损失项。例如,使用Esil表征轮廓损失项,那么有:Esil = |Sin - Srender|。在每次迭代训练中,同一样本对象的面部掩码Sin不变,但由于预测面部图像会迭代调整,因此渲染轮廓Srender会随着迭代训练而进行优化,其优化目标是使得每次迭代根据面部掩码Sin和渲染轮廓Srender计算出来的轮廓损失项Esil越来越小,从而缩短参考面部图像和预测面部图像之间的轮廓差异,进而使得渲染轮廓逐渐逼近标准的面部掩码,达到几何形状上的相似和逼近。
D12、基于该面部细化网格的正则化信息,获取该面部重建网络的网格正则化项。
其中,该网格正则化项表征该面部细化网格的正则化的几何信息。
在一些实施例中,网格正则化项可以基于3D面部细化Mesh(即面部细化网格)正则化的几何信息进行建模,例如,采用3D面部细化Mesh正则化的组合来建模网格正则化项,这样能够防止优化后的网格崩溃,能够保证3D面部细化Mesh的优化效果。
下面,将通过步骤ⅰ~ⅳ,对一种网格正则化项的建模方式来进行说明,在这种建模方式中,将网格正则化项分解成3D面部细化Mesh其三个正则项的组合,能够充分引入3D面部细化Mesh的正则化的几何信息,提升网格正则化项的表达能力,防止优化后的3D面部细化Mesh崩溃。
ⅰ、对该面部细化网格中的顶点进行拉普拉斯网格正则化,得到第一正则项。
在一些实施例中,对于3D面部细化Mesh(即面部细化网格)中的顶点,即网格顶点V,进行拉普拉斯网格正则化,可以得到第一正则项。可选地,拉普拉斯网格正则化方式如下:将网格顶点V输入一个拉普拉斯正则化器,进行拉普拉斯预测,可以导出一个L1正则化项Elap,将这个导出的L1正则化项Elap与网格顶点V相乘,得到本步骤ⅰ中涉及的第一正则项VElap。
ⅱ、基于该面部细化网格中的顶点的点法线向量,确定第二正则项。
在一些实施例中,在重建的3D面部细化Mesh(即面部细化网格)上定义一个正则化器,这一正则化器用于承载顶点的点法线向量的正则化损失,因此,将3D面部细化Mesh中顶点的点法线向量输入到正则化器中,可以导出本步骤ⅱ中涉及的第二正则项Enorm。
ⅲ、基于该面部细化网格中的顶点和该样本对象的模板网格中的模板顶点,获取第三正则项。
在一些实施例中,还构建一个第三正则项Earap,第三正则项Earap用于表征重建的3D面部细化Mesh(即面部细化网格)是否更加刚性。
在一些实施例中,基于该3D面部细化Mesh即面部细化网格中的顶点v,确定该顶点在该模板网格中关联的模板顶点,例如,将顶点索引相同的顶点v和模板顶点/>确定为一对关联的顶点。其中,模板网格是指样本对象自身标准的模板Mesh,对每个样本对象都可以预先配置好其模板Mesh。这样,能够根据顶点v及其在3D面部细化Mesh中的邻居顶点,和模板顶点/>及其在模板网格中的邻居模板顶点,来建模第三正则项Earap。
在一个示例中,基于如下公式来获取第三正则项Earap:
其中,Earap表征第三正则项,v表征3D面部细化Mesh的网格顶点,V表征3D面部细化Mesh的顶点集合,u表征顶点v在3D面部细化Mesh中的邻居顶点N(v),那么有u∈N(v),表征顶点v关联的模板顶点,/>表征模板顶点/>在模板网格中的邻居模板顶点,t则表征的是角度(即当前相机视角),那么vt表征3D面部细化Mesh在角度t下的顶点v,ut表征3D面部细化Mesh在角度t下的邻居顶点u。/>
在以上第三正则项Earap的表达式中,可以看出,表征了3D面部细化Mesh在角度t下的顶点v和其邻居顶点u之间的边长,或者说顶点v和其邻居顶点之间的距离,表征了模板网格中模板顶点/>和其邻居模板顶点/>之间的边长,或者说模板顶点/>和其邻居模板顶点/>之间的距离,并将以上两个边长之间的边长差作为一个指标,先针对同一顶点v逐个邻居顶点u进行求和,再针对全部顶点v进行求和,得到最终的第三正则项Earap,这样,相当于在多个边之间分配长度变化,进而来根据这些边长差的和值来定义3D面部细化Mesh是否更加刚性。需要说明的是,在对3D面部细化Mesh没有刚性需求的情况下,也可以不考虑第三正则项,这样能够节约计算资源,加快网格正则化项的计算效率。
在上述过程中,由于在3D面部重建中,直接预测的是每个顶点的Mesh坐标(或者几何细化后的Mesh坐标),而不需要预测每个顶点在位姿空间和形状空间中的坐标(这会消耗很大的算力),因此,只需要通过最小化训练损失值,这样能够使得预测Mesh(即重建的3D面部细化Mesh)和模板Mesh中相应顶点之间的距离越近,就等效于优化到了最优的面部形状参数β和面部姿势参数γ。上面这一点就是通过本步骤ⅲ中获取的第三正则项Earap来实现的,但是第三正则项Earap并没有直接建模顶点之间的距离,而是建模边长差,这样不但能够保证预测Mesh的重建效果更准确,而且能够保证预测Mesh满足刚性需求。
ⅳ、基于该第一正则项、该第二正则项和该第三正则项,获取该网格正则化项。
在一些实施例中,将步骤ⅰ中获取的第一正则项VElap,步骤ⅱ中获取的第二正则项Enorm,步骤ⅲ中获取的第三正则项Earap,三者之间的和值作为最终的网格正则化项Ereg。换一种表述,网格正则化项Ereg的表达式如下:
Ereg = VElap + Enorm + Earap
其中,Ereg表征网格正则化项,VElap表征第一正则项,Enorm表征第二正则项,Earap表征第三正则项。
在另一些实施例中,也可以分别对第一正则项VElap、第二正则项Enorm和第三正则项Earap三者进行加权求和,得到网格正则化项Ereg,本申请实施例对此不进行具体限定。
在上述过程中,通过将网格正则化项分解成3D面部细化Mesh其三个正则项的组合,能够充分引入3D面部细化Mesh的正则化的几何信息,提升网格正则化项的表达能力,防止优化后的3D面部细化Mesh崩溃。
在另一些实施例中,也可以仅考虑以上三个正则项中的某一个正则项,以降低网格正则化项的计算量,或者仅考虑以上三个正则项中任意两个正则项的组合,也能够降低网格正则化项的计算量,或者还可以引入更多的正则项,以实现更强的表达能力和更精细的优化目标,本申请实施例对网格正则化项的建模方式不进行具体限定。
D13、基于该轮廓损失项和该网格正则化项进行加权求和,得到该面部重建网络的几何损失项。
在一些实施例中,将步骤D11中获取的轮廓损失项Esil,以及步骤D12中获取的网格正则化项Ereg进行加权求和,得到最终的几何损失项Egeo。
在一个示例中,几何损失项Egeo的表达式如下:
Egeo = wsil·Esil + Ereg
其中,Egeo表征几何损失项,wsil表征轮廓损失项的权重系数,Esil表征轮廓损失项,Ereg表征网格正则化项。
在上述公式中,仅以网格正则化项Ereg的权重系数为1为例进行说明,这样无需配置网格正则化项Ereg的权重系数,只需要配置轮廓损失项的权重系数wsil即可,能够降低参数配置成本,加快参数配置速度。
在另一些实施例中,也可以直接将轮廓损失项Esil和网格正则化项Ereg相加,得到几何损失项Egeo,这样相当于轮廓损失项Esil和网格正则化项Ereg两者的权重系数均为1,进一步降低参数配置成本,加快参数配置速度。
在上述过程中,通过将几何损失项分解成一个轮廓损失项和一个网格正则化项,这样能够提升几何损失项的建模精度,保证训练出来几何重建效果更好的面部重建网络,保证面部重建网络不但在渲染轮廓上具有高相似性,而且网格正则化项还能够防止优化后的面部重建网络崩溃,因此达到提升训练速度,加快优化进度,加速网络收敛的效果。
可选地,也可以仅考虑轮廓损失项不考虑网格正则化项,这样能够节约几何损失项的计算量,提升几何损失项的计算效率。
D2、基于该参考面部图像和该预测面部图像的外观差异,获取该面部重建网络的外观损失项。
其中,该外观损失项用于衡量该参考面部图像和该预测面部图像之间的图像相似性。
在一些实施例中,外观损失项可以基于该参考面部图像和该预测面部图像的外观差异进行建模。例如,对于外观损失项来说,其外观优化目标是使用上一实施例提出的可微分渲染管线,最小化参考面部图像和预测面部图像之间的外观差值,指通过优化希望该参考面部图像和该预测面部图像之间图像相似性越来越高,图像相似性是指图像在RGB像素差和视觉感知上的相似程度。
下面,将通过步骤D21~D24,对一种外观损失项的建模方式来进行说明,在这种建模方式中,将外观损失项分解成一个颜色损失项、一个特征损失项和一个外观正则化项,这样能够提升外观损失项的建模精度,保证训练出来外观重建效果更好的面部重建网络,保证渲染出来的预测面部图像不但在像素颜色上逼近参考面部图像,而且在视觉感知层面上的特征也逼近参考面部图像,并且还通过外观正则化项来近似表达反照率贴图和法线贴图的局部平滑,达到更优的训练效果。
D21、基于该参考面部图像和该预测面部图像之间的像素色差,获取该面部重建网络的颜色损失项。
在一些实施例中,针对该参考面部图像和该预测面部图像中位于同一位置的一对像素点,计算这一对像素点之间的像素色差,即,读取参考面部图像中坐标为(x,y)的像素点的参考像素值,读取预测面部图像中坐标同样是(x,y)的像素点的预测像素值,将参考像素值和预测像素值之间的差值作为这一对像素点之间的像素色差。基于每对像素点之间的像素色差,可以生成该颜色损失项Ephoto,例如,对各对像素点之间的像素色差求均方误差,得到该颜色损失项Ephoto,或者,对各对像素点之间的像素色差求平均色差,得到该颜色损失项Ephoto,本申请实施例对该颜色损失项Ephoto的获取方式不进行具体限定。
在上述过程中,通过每对像素点之间的像素色差,来建模颜色损失项Ephoto,使得颜色损失项Ephoto能够捕捉参考面部图像和预测面部图像之间的RGB色差,这样在优化颜色损失项Ephoto的过程中,能够使得预测面部图像在RGB空间中逼近参考面部图像,使得预测面部图像在RGB颜色层面上与参考面部图像越来越接近。
D22、基于该参考面部图像和该预测面部图像之间的特征差异,获取该面部重建网络的特征损失项。
在一些实施例中,使用一个VGG网络,来分别提取该预测面部图像的预测图像特征,以及该参考面部图像的参考图像特征,即,将该预测面部图像输入VGG网络,得到预测图像特征,将参考面部图像输入VGG网络,得到参考图像特征。接着,将预测图像特征和参考图像特征之间的差值,作为该特征损失项Evgg。在不同迭代过程中,参考图像特征保持不变,但需要根据每次生成的预测面部图像,计算出本次迭代的预测图像特征,进而计算出本次迭代的VGG特征损失项Evgg。
在上述过程中,通过游戏引擎中提供的VGG网络,来建模特征损失项Evgg,使得特征损失项Evgg能够捕捉预测图像特征和参考图像特征之间的感知差异,这样在优化特征损失项Evgg的过程中,能够使得预测面部图像在VGG空间中逼近参考面部图像,使得预测面部图像在视觉感知层面上与参考面部图像越来越相似。
D23、基于该参考面部图像和该预测面部图像之间的纹理贴图的正则化信息,获取该面部重建网络的外观正则化项。
其中,该外观正则化项表征该纹理贴图中反照率贴图和法线贴图的正则化的局部平滑信息。
在一些实施例中,可以基于反照率贴图和法线贴图的正则化的局部平滑信息,来建模外观正则化项Eapp_reg,比如,构建一个外观正则化器,将反照率贴图和法线贴图输入到外观正则化器中,提取到反照率贴图和法线贴图各自的局部平滑信息,并组合构成外观正则化项Eapp_reg。
在上述过程中,通过反照率贴图和法线贴图的局部平滑信息,来建模外观正则化项Eapp_reg,使得外观正则化项Eapp_reg能够反映出来反照率的局部平滑程度,以及法线贴图的局部平滑信息,从而引入外观优化层面的正则化项。
D24、基于该颜色损失项、该特征损失项和该外观正则化项进行加权求和,得到该面部重建网络的外观损失项。
在一些实施例中,将步骤D21中获取的颜色损失项Ephoto,步骤D22中获取的特征损失项Evgg,步骤D23中获取的外观正则化项Eapp_reg进行加权求和,得到最终的外观损失项Eapp。
在一个示例中,外观损失项Eapp的表达式如下:
Eapp = wphoto·Ephoto + wvgg·Evgg + Eapp_reg
其中,Eapp表征外观损失项,wphoto表征颜色损失项的权重系数,Ephoto表征颜色损失项,wvgg表征特征损失项的权重系数,Evgg表征特征损失项,Eapp_reg表征外观正则化项。
在上述公式中,仅以外观正则化项Eapp_reg的权重系数为1为例进行说明,这样无需配置外观正则化项Eapp_reg的权重系数,只需要配置颜色损失项的权重系数wphoto和特征损失项的权重系数wvgg即可,能够降低参数配置成本,加快参数配置速度。
在另一些实施例中,也可以直接将颜色损失项Ephoto,特征损失项Evgg和外观正则化项Eapp_reg相加,得到外观损失项Eapp,这样相当于颜色损失项Ephoto、特征损失项Evgg和外观正则化项Eapp_reg三者的权重系数均为1,进一步降低参数配置成本,加快参数配置速度。
在上述过程中,通过将外观损失项分解成一个颜色损失项、一个特征损失项和一个外观正则化项,这样能够提升外观损失项的建模精度,保证训练出来外观重建效果更好的面部重建网络,保证渲染出来的预测面部图像不但在像素颜色上逼近参考面部图像,而且在视觉感知层面上的特征也逼近参考面部图像,并且还通过外观正则化项来近似表达反照率贴图和法线贴图的局部平滑,达到更优的局部平滑效果,进而达到更优的训练效果。
需要说明的是,当将UV贴图中的纹理信息映射到三角形网格进行渲染时,外观损失项Eapp也会收到几何变化的影响,因此外观损失项Eapp和几何损失项Egeo之间是具有一定联系的。
可选地,也可以仅考虑颜色损失项、特征损失项和外观正则化项中的其中任意一项,或者其中任意两项的组合,这样能够节约外观损失项的计算量,提升外观损失项的计算效率。
D3、基于该几何损失项和该外观损失项,确定该面部重建网络的训练损失值。
在一些实施例中,将步骤D1中获取的几何损失项Egeo,以及步骤D2中获取的外观损失项Eapp直接相加,得到最终的训练损失值E,即:E = Egeo + Eapp。
在另一些实施例中,也可以将几何损失项Egeo和外观损失项Eapp进行加权求和,得到最终的训练损失值E,这样只需要分别对几何损失项Egeo和外观损失项Eapp配置各自的权重系数就可以实现,不再赘述。
在上述过程中,通过构建几何损失项Egeo,专注于优化重建网格的几何层面的差异损失,通过构建外观损失项Eapp,近似于表达预测面部图像与参考面部图像具有相同的外观,综合两项所得的训练损失项,充分对面部重建网络施加几何优化约束和外观优化约束,这样能够优化面部重建网络的训练效果。
进一步的,在面部重建网络的训练阶段,通过对几何损失项Egeo和外观损失项Eapp组成的训练损失值进行优化,能够在迭代调整面部重建网络的模型参数的同时,随之还迭代调整图4中介绍过的参数(1)~(7),即对图4中介绍过的参数(1)~(7)进行联合优化,使得参数(1)~(7)会随着面部重建网络的训练收敛,也逐渐找到每种参数的最优解,这样能够达到更优的优化效果。例如,在对参数(1)的联合优化中,能够找到描述虚拟对象的每种全局形状的最优的面部形状参数β,在对参数(3)的联合优化中,能够找到描述虚拟对象的每种全局位姿的最优的面部姿势参数γ,不再一一列举。
还需要说明的是,在面部形状参数β和面部姿势参数γ的初始化阶段,可以使用游戏开发者工具中的面部姿势估计器,来提取到一个初始化的面部形状参数β和面部姿势参数γ,这里只是一个粗略估计,如图4所示的在面部模型400的基础上,粗略估计一个初始化的面部形状参数β和面部姿势参数γ,并提取标准的面部掩码。其中,由于几何细化过程是可微分的,因此随着面部重建网络的迭代训练,可以梯度回传算法,随之迭代调整每次的面部形状参数β和面部姿势参数γ。
可选地,也可以仅考虑几何损失项Egeo不考虑外观损失项Eapp,或者仅考虑外观损失项Eapp不考虑几何损失项Egeo,或者还引入其他含义的损失项,本申请实施例对此不进行具体限定。
504、服务器基于该训练损失值,对该面部重建网络进行训练。
在一些实施例中,对步骤503中计算得到的训练损失值,判断该训练损失值是否满足停止训练条件,如果不满足停止训练条件,则迭代执行步骤501-503,直到满足停止训练条件;如果满足停止训练条件,对该面部重建网络停止训练,得到最终训练完毕的面部重建网络。
在一些实施例中,该停止训练条件包括但不限于:迭代次数超过次数阈值,次数阈值是预先设定的大于或等于1的整数;训练损失值小于损失阈值,损失阈值是预先设定的大于0的数值;连续两次迭代中训练损失值的差值的绝对值小于差值阈值,差值阈值是预先设定的大于0的数值等,本申请实施例对停止训练条件不进行具体限定。
在以上过程中,在训练完毕后,可以得到一个优质的面部重建网络,例如面部重建网络可以被实施为一个卷积编辑网络,卷积编辑网络是指具有面部参数编辑功能的卷积网络,这样可以随着迭代优化到一系列可编辑的面部参数,如图4介绍中涉及的参数(1)~(7),并满足可微分渲染框架的可微要求,能够在重建的3D面部细化Mesh上直接实现可微渲染。
在本申请实施例中,通过一旦经过训练,就可以在任意给定相机视角下,重建出来虚拟对象在该相机视角下的3D面部细化Mesh,并根据该3D面部细化Mesh来进行面部渲染,得到虚拟对象在该相机视角下的面部图像。并且,由于训练损失值考虑的损失项很充分,使得训练完毕的面部重建网络具有很高的面部重建精度,有助于重建出来高分辨率的3D面部细化Mesh,从而进一步重建出来高质量的UV贴图。
进一步的,以上训练方案侧重于效率、稳健性和可导出性,同时保持高质量的面部外观重建效果。根据训练完毕的面部重建网络,可以轻松导出适配到任何图形应用程序的显式表示(如3D面部细化Mesh、法线贴图和反照率贴图),并且训练阶段直接优化显式外观,不依赖学习的外观空间的隐式表达,因此不需要对面部重建网络进行预训练,而自监督学习方式也不需要大量的训练图像,此外,能够在重建的3D面部细化Mesh上显式高效的进行光栅化和着色(因为满足可微分要求),从而在图像质量和计算成本之间提供了良好的平衡。
进一步的,本申请实施例的训练方案还可以应用在各类移动端游戏应用的建模资源的快速建模上,辅助技术人员进行3D面部模型的快速资源Debug(调试)。例如,通过对一些建模困难的3D面部模型,使用引擎开发者工具进行提取,然后基于本申请的技术方案,对这部分建模困难的3D面部模型进行重新快速渲染建模,然后再次送入游戏应用中实现快速调试,这样可以快速进行一些不合格的3D面部模型的替换和调试。
如图6所示,该技术方案能够根据头像的3D网格使用建模技术实现3D表达,并且其相机视角可旋转(即改变角度t),且支持变换不同的表情姿态(即改变面部形状参数β和面部姿势参数γ),具有很高的灵活性,在保持虚拟对象的身份不变的情况下,左侧601示出了一种相机视角下的面部图像,右侧602示出了另一种相机视角下的面部图像。
在以上各个实施例中,可以看出,从虚拟对象的面部模型出发,重建虚拟对象逼真的面部图像,并没有必要依赖于神经隐式表示(如神经体积渲染)等方案,通过标准的显式几何和外观表示来构建的训练损失值,搭配精心实施的可微分渲染方案,就能够在质量、速度、简单性以及游戏应用与其他图形应用的兼容性之间提供巧妙的平衡,而且可适配到任意移动端游戏应用中实现面部贴图资源优化和快速调试,如开放世界游戏,ARPG游戏,MMORPG游戏,MOBA游戏、MMOG游戏、射击类游戏、虚拟现实应用程序、三维地图程序、多人器械类生存游戏等,换一种表述,能够自然适配并融合到任意通用的游戏场景中,具有广泛的适用性,通用性很高。进一步的,除了在适用于游戏场景以外,还能够扩展到任意存在面部渲染优化需求的场景,如动画场景、影视场景、虚拟人场景等,这里对此不进行具体限定。
图7是本申请实施例提供的一种虚拟对象的面部重建装置的结构示意图,如图7所示,该装置包括:
细化模块701,用于对虚拟场景中虚拟对象的面部模型进行细化,得到该虚拟对象的面部细化网格,该面部细化网格的顶点数量大于该面部模型的顶点数量;
重建模块702,用于基于该面部细化网格,重建该虚拟对象的纹理贴图;
获取模块703,用于对于该面部细化网格中的顶点,基于该虚拟场景中的光源信息和相机视角,获取该顶点的光照系数,该光照系数表征该虚拟场景中光源照射该面部模型的表面经过漫反射后形成的顶点高光;
渲染模块704,用于基于该纹理贴图以及该面部细化网格中顶点的光照系数,对该虚拟对象进行面部渲染,得到该虚拟对象在该相机视角下的面部图像。
本申请实施例提供的装置,通过将虚拟对象的面部模型进行细化,得到面部细化网格,使得面部重建的3D网格其顶点数量更加密集,这样利用面部细化网格来重建纹理贴图时,能够得到高分辨率、高质量、高精度的纹理贴图,并且能够针对每个细化产生的顶点都进行光照计算,得到每个顶点的光照系数,这样光照计算能够覆盖到高分辨率的重建3D网格,提升了光照计算的精度,进而根据高质量的纹理贴图以及每个顶点的光照系数来进行面部渲染时,能够得到当前虚拟相机的相机视角下高质量的面部图像,能够提升虚拟对象的面部重建精准度,优化虚拟对象的面部渲染效果。
在一些实施例中,基于图7的装置组成,该细化模块701包括:
位置变换子模块,用于将该虚拟对象的面部模型输入面部重建网络中,通过该面部重建网络,对该面部模型中待形变的顶点进行位置变换,得到形变顶点,该面部重建网络用于重建该虚拟对象的面部网格并增加该面部网格的顶点数量;
第一确定子模块,用于基于各个待形变的顶点和各个形变顶点,确定该面部细化网格。
在一些实施例中,该位置变换子模块用于:
将该虚拟对象的面部姿势参数和面部形状参数输入该面部重建网络,通过该面部重建网络重建该虚拟对象的面部网格,该面部姿势参数和面部形状参数随着该面部重建网络训练得到;
将该面部网格中待形变的顶点的网格位置输入该面部重建网络的网格细化函数,得到网格细化位置,该网格细化函数用于提升该面部网格的分辨率;
在该网格细化位置上沿着法线方向施加预设顶点偏移,得到形变顶点的网格位置,该形变顶点为对该顶点进行位置变换后的顶点。
在一些实施例中,该纹理贴图包含该虚拟对象的反照率贴图和法线贴图,该反照率贴图用于表征该虚拟对象的面部皮肤的底色,该法线贴图用于确定该面部细化网格中顶点的光照系数;
该重建模块702用于:
在纹理空间中,导出该虚拟对象预先定义的反照率贴图;
基于该面部细化网格,重建该虚拟对象的法线贴图。
在一些实施例中,基于图7的装置组成,该获取模块703包括:
第二确定子模块,用于基于该虚拟场景中的相机视角,确定该面部细化网格在该相机视角下的可见表面;
获取子模块,用于对于该可见表面的任一顶点,基于该虚拟场景中的光源信息,获取该顶点的光照系数。
在一些实施例中,基于图7的装置组成,该获取子模块包括:
第一获取单元,用于基于该光源信息,获取该虚拟场景的环境反射常量、漫反射常量、环境光源强度以及该虚拟场景中每个光源在漫射表面的光源强度;
第二获取单元,用于对于该可见表面的任一顶点,基于该漫反射常量、该顶点的点法线向量、该顶点到每个光源的光照向量以及每个光源在漫射表面的光源强度,获取该顶点的漫反射系数;
第三获取单元,用于基于该环境反射常量、该环境光源强度和该顶点的漫反射系数,获取该顶点的光照系数。
在一些实施例中,基于图7的装置组成,该第二获取单元包括:
获取子单元,用于对于该虚拟场景中的每个光源,获取该顶点的点法线向量和该顶点到该光源的光照向量之间的向量点积;
相乘子单元,用于将该漫反射常量、该光源在漫射表面的光源强度和该向量点积相乘,得到该光源在该顶点上的漫反射分量;
融合子单元,用于将该虚拟场景中各个光源在该顶点上的漫反射分量融合,得到该顶点的漫反射系数。
在一些实施例中,该融合子单元用于:
对于该虚拟场景中的每个光源,将该顶点的位置向量和该光源的位置向量之间的L2范数输入到激活函数中,得到该顶点在该光源下的能见度系数,该能见度系数表征该顶点在该光源照射下形成的自阴影;
基于每个光源的能见度系数,对该光源在该顶点上的漫反射分量进行加权,得到该光源在该顶点上的加权漫反射分量;
将该虚拟场景中各个光源在该顶点上的加权漫反射分量相加,得到该顶点的漫反射系数。
在一些实施例中,该第三获取单元用于:
将该环境反射常量和该环境光源强度相乘,得到该虚拟场景的环境光系数;
将该环境光系数和该顶点的漫反射系数相加,得到该顶点的光照系数。
上述所有可选技术方案,能够采用任意结合形成本公开的可选实施例,在此不再一一赘述。
需要说明的是:上述实施例提供的虚拟对象的面部重建装置在对虚拟对象进行面部重建时,仅以上述各功能模块的划分进行举例说明,实际应用中,能够根据需要而将上述功能分配由不同的功能模块完成,即将计算机设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的虚拟对象的面部重建装置与虚拟对象的面部重建方法实施例属于同一构思,其具体实现过程详见虚拟对象的面部重建方法实施例,这里不再赘述。
图8是本申请实施例提供的一种虚拟对象的面部重建网络的训练装置的流程图,如图8所示,该装置包括:
细化模块801,用于通过面部重建网络,对虚拟场景中样本对象的面部模型进行细化,得到该样本对象的面部细化网格,该面部重建网络用于重建该虚拟对象的面部网格并增加该面部网格的顶点数量;
渲染模块802,用于基于该样本对象的纹理贴图和该面部细化网格中顶点的光照系数,对该样本对象进行面部渲染,得到该样本对象在该虚拟场景的相机视角下的预测面部图像;
损失获取模块803,用于基于该预测面部图像和该样本对象在该相机视角下的参考面部图像,获取该面部重建网络的训练损失值;
训练模块804,用于基于该训练损失值,对该面部重建网络进行训练。
本申请实施例提供的装置,一旦经过训练,就可以在任意给定相机视角下,重建出来虚拟对象在该相机视角下的3D面部细化Mesh,并根据该3D面部细化Mesh来进行面部渲染,得到虚拟对象在该相机视角下的面部图像。并且,由于训练损失值考虑的损失项很充分,使得训练完毕的面部重建网络具有很高的面部重建精度,有助于重建出来高分辨率的3D面部细化Mesh,从而进一步重建出来高质量的UV贴图。
在一些实施例中,基于图8的装置组成,该损失获取模块803包括:
几何损失获取子模块,用于基于该参考面部图像和该预测面部图像的几何差异,获取该面部重建网络的几何损失项,该几何损失项用于衡量该参考面部图像和该预测面部图像之间的几何相似性;
外观损失获取子模块,用于基于该参考面部图像和该预测面部图像的外观差异,获取该面部重建网络的外观损失项,该外观损失项用于衡量该参考面部图像和该预测面部图像之间的图像相似性;
训练损失确定子模块,用于基于该几何损失项和该外观损失项,确定该面部重建网络的训练损失值。
在一些实施例中,基于图8的装置组成,该几何损失获取子模块包括:
轮廓损失获取单元,用于基于该参考面部图像的面部掩码和该预测面部图像的渲染轮廓,获取该面部重建网络的轮廓损失项,该轮廓损失项表征该参考面部图像和该预测面部图像之间的轮廓差异;
正则损失获取单元,用于基于该面部细化网格的正则化信息,获取该面部重建网络的网格正则化项,该网格正则化项表征该面部细化网格的正则化的几何信息;
加权求和单元,用于基于该轮廓损失项和该网格正则化项进行加权求和,得到该面部重建网络的几何损失项。
在一些实施例中,基于图8的装置组成,该正则损失获取单元包括:
正则化子单元,用于对该面部细化网格中的顶点进行拉普拉斯网格正则化,得到第一正则项;
确定子单元,用于基于该面部细化网格中的顶点的点法线向量,确定第二正则项;
第一获取子单元,用于基于该面部细化网格中的顶点和该样本对象的模板网格中的模板顶点,获取第三正则项;
第二获取子单元,用于基于该第一正则项、该第二正则项和该第三正则项,获取该网格正则化项。
在一些实施例中,该第一获取子单元用于:
基于该面部细化网格中的顶点,确定该顶点在该模板网格中关联的模板顶点;
基于该顶点、该顶点在该面部细化网格中的邻居顶点、该模板顶点以及该模板顶点在该模板网格中的邻居模板顶点,获取该第三正则项。
在一些实施例中,该外观损失获取子模块用于:
基于该参考面部图像和该预测面部图像之间的像素色差,获取该面部重建网络的颜色损失项;
基于该参考面部图像和该预测面部图像之间的特征差异,获取该面部重建网络的特征损失项;
基于该参考面部图像和该预测面部图像之间的纹理贴图的正则化信息,获取该面部重建网络的外观正则化项,该外观正则化项表征该纹理贴图中反照率贴图和法线贴图的正则化的局部平滑信息;
基于该颜色损失项、该特征损失项和该外观正则化项进行加权求和,得到该面部重建网络的外观损失项。
上述所有可选技术方案,能够采用任意结合形成本公开的可选实施例,在此不再一一赘述。
需要说明的是:上述实施例提供的虚拟对象的面部重建网络的训练装置在对虚拟对象的面部重建网络进行训练时,仅以上述各功能模块的划分进行举例说明,实际应用中,能够根据需要而将上述功能分配由不同的功能模块完成,即将计算机设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的虚拟对象的面部重建网络的训练装置与虚拟对象的面部重建网络的训练方法实施例属于同一构思,其具体实现过程详见虚拟对象的面部重建网络的训练方法实施例,这里不再赘述。
图9是本申请实施例提供的一种计算机设备的结构示意图,如图9所示,以计算机设备为终端900为例进行说明。可选地,该终端900的设备类型包括:智能手机、平板电脑、MP3播放器(Moving Picture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端900还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,终端900包括有:处理器901和存储器902。
可选地,处理器901包括一个或多个处理核心,比如4核心处理器、8核心处理器等。可选地,处理器901采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。在一些实施例中,处理器901包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(CentralProcessing Unit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器901集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器901还包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
在一些实施例中,存储器902包括一个或多个计算机可读存储介质,可选地,该计算机可读存储介质是非暂态的。可选地,存储器902还包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器902中的非暂态的计算机可读存储介质用于存储至少一个程序代码,该至少一个程序代码用于被处理器901所执行以实现本申请中各个实施例提供的虚拟对象的面部重建方法。
在一些实施例中,终端900还可选包括有:外围设备接口903和至少一个外围设备。处理器901、存储器902和外围设备接口903之间能够通过总线或信号线相连。各个外围设备能够通过总线、信号线或电路板与外围设备接口903相连。具体地,外围设备包括:射频电路904、显示屏905、摄像头组件906、音频电路907和电源908中的至少一种。
外围设备接口903可被用于将I/O(Input /Output,输入/输出)相关的至少一个外围设备连接到处理器901和存储器902。在一些实施例中,处理器901、存储器902和外围设备接口903被集成在同一芯片或电路板上;在一些其他实施例中,处理器901、存储器902和外围设备接口903中的任意一个或两个在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路904用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路904通过电磁信号与通信网络以及其他通信设备进行通信。射频电路904将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路904包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。可选地,射频电路904通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路904还包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏905用于显示UI(User Interface,用户界面)。可选地,该UI包括图形、文本、图标、视频及其它们的任意组合。当显示屏905是触摸显示屏时,显示屏905还具有采集在显示屏905的表面或表面上方的触摸信号的能力。该触摸信号能够作为控制信号输入至处理器901进行处理。可选地,显示屏905还用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏905为一个,设置终端900的前面板;在另一些实施例中,显示屏905为至少两个,分别设置在终端900的不同表面或呈折叠设计;在一些实施例中,显示屏905是柔性显示屏,设置在终端900的弯曲表面上或折叠面上。甚至,可选地,显示屏905设置成非矩形的不规则图形,也即异形屏。可选地,显示屏905采用LCD(LiquidCrystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件906用于采集图像或视频。可选地,摄像头组件906包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件906还包括闪光灯。可选地,闪光灯是单色温闪光灯,或者是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,用于不同色温下的光线补偿。
在一些实施例中,音频电路907包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器901进行处理,或者输入至射频电路904以实现语音通信。出于立体声采集或降噪的目的,麦克风为多个,分别设置在终端900的不同部位。可选地,麦克风是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器901或射频电路904的电信号转换为声波。可选地,扬声器是传统的薄膜扬声器,或者是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅能够将电信号转换为人类可听见的声波,也能够将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路907还包括耳机插孔。
电源908用于为终端900中的各个组件进行供电。可选地,电源908是交流电、直流电、一次性电池或可充电电池。当电源908包括可充电电池时,该可充电电池支持有线充电或无线充电。该可充电电池还用于支持快充技术。
在一些实施例中,终端900还包括有一个或多个传感器910。该一个或多个传感器910包括但不限于:加速度传感器911、陀螺仪传感器912、压力传感器913、光学传感器914以及接近传感器915。
在一些实施例中,加速度传感器911检测以终端900建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器911用于检测重力加速度在三个坐标轴上的分量。可选地,处理器901根据加速度传感器911采集的重力加速度信号,控制显示屏905以横向视图或纵向视图进行用户界面的显示。加速度传感器911还用于游戏或者用户的运动数据的采集。
在一些实施例中,陀螺仪传感器912检测终端900的机体方向及转动角度,陀螺仪传感器912与加速度传感器911协同采集用户对终端900的3D动作。处理器901根据陀螺仪传感器912采集的数据,实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
可选地,压力传感器913设置在终端900的侧边框和/或显示屏905的下层。当压力传感器913设置在终端900的侧边框时,能够检测用户对终端900的握持信号,由处理器901根据压力传感器913采集的握持信号进行左右手识别或快捷操作。当压力传感器913设置在显示屏905的下层时,由处理器901根据用户对显示屏905的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
光学传感器914用于采集环境光强度。在一个实施例中,处理器901根据光学传感器914采集的环境光强度,控制显示屏905的显示亮度。具体地,当环境光强度较高时,调高显示屏905的显示亮度;当环境光强度较低时,调低显示屏905的显示亮度。在另一个实施例中,处理器901还根据光学传感器914采集的环境光强度,动态调整摄像头组件906的拍摄参数。
接近传感器915,也称距离传感器,通常设置在终端900的前面板。接近传感器915用于采集用户与终端900的正面之间的距离。在一个实施例中,当接近传感器915检测到用户与终端900的正面之间的距离逐渐变小时,由处理器901控制显示屏905从亮屏状态切换为息屏状态;当接近传感器915检测到用户与终端900的正面之间的距离逐渐变大时,由处理器901控制显示屏905从息屏状态切换为亮屏状态。
本领域技术人员能够理解,图9中示出的结构并不构成对终端900的限定,能够包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
图10是本申请实施例提供的另一种计算机设备的结构示意图,如图10所示,该计算机设备1000可因配置或性能不同而产生比较大的差异,例如计算机设备1000可以是以上实施例中涉及的服务器。该计算机设备1000包括一个或一个以上处理器(CentralProcessing Units,CPU)1001和一个或一个以上的存储器1002,其中,该存储器1002中存储有至少一条计算机程序,该至少一条计算机程序由该一个或一个以上处理器1001加载并执行以实现上述各个实施例提供的虚拟对象的面部重建网络的训练方法。可选地,该计算机设备1000还具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该计算机设备1000还包括其他用于实现设备功能的部件,在此不做赘述。
在示例性实施例中,还提供了一种计算机可读存储介质,例如包括至少一条计算机程序的存储器,上述至少一条计算机程序可由计算机设备中的处理器执行以完成上述各个实施例中的虚拟对象的面部重建方法或虚拟对象的面部重建网络的训练方法。例如,该计算机可读存储介质包括ROM(Read-Only Memory,只读存储器)、RAM(Random-AccessMemory,随机存取存储器)、CD-ROM(Compact Disc Read-Only Memory,只读光盘)、磁带、软盘和光数据存储设备等。
在示例性实施例中,还提供了一种计算机程序产品,包括一条或多条计算机程序,该一条或多条计算机程序存储在计算机可读存储介质中。计算机设备的一个或多个处理器能够从计算机可读存储介质中读取该一条或多条计算机程序,该一个或多个处理器执行该一条或多条计算机程序,使得计算机设备能够执行以完成上述实施例中的虚拟对象的面部重建方法或虚拟对象的面部重建网络的训练方法。
本领域普通技术人员能够理解实现上述实施例的全部或部分步骤能够通过硬件来完成,也能够通过程序来指令相关的硬件完成,可选地,该程序存储于一种计算机可读存储介质中,可选地,上述提到的存储介质是只读存储器、磁盘或光盘等。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (30)
1.一种虚拟对象的面部重建方法,其特征在于,所述方法包括:
将虚拟场景中虚拟对象的面部模型输入面部重建网络中,通过所述面部重建网络,对所述面部模型中待形变的顶点进行位置变换,得到形变顶点,所述面部重建网络用于重建所述虚拟对象的面部网格并增加所述面部网格的顶点数量;基于各个待形变的顶点和各个形变顶点,确定所述虚拟对象的面部细化网格,所述面部细化网格的顶点数量大于所述面部模型的顶点数量;
基于所述面部细化网格,重建所述虚拟对象的纹理贴图;
对于所述面部细化网格中的顶点,基于所述虚拟场景中的光源信息和相机视角,获取所述顶点的光照系数,所述光照系数表征所述虚拟场景中光源照射所述面部模型的表面经过漫反射后形成的顶点高光;
基于所述纹理贴图以及所述面部细化网格中顶点的光照系数,对所述虚拟对象进行面部渲染,得到所述虚拟对象在所述相机视角下的面部图像。
2.根据权利要求1所述的方法,其特征在于,所述通过所述面部重建网络,对所述面部模型中待形变的顶点进行位置变换,得到形变顶点包括:
将所述虚拟对象的面部姿势参数和面部形状参数输入所述面部重建网络,通过所述面部重建网络重建所述虚拟对象的面部网格,所述面部姿势参数和面部形状参数随着所述面部重建网络训练得到;
将所述面部网格中待形变的顶点的网格位置输入所述面部重建网络的网格细化函数,得到网格细化位置,所述网格细化函数用于提升所述面部网格的分辨率;
在所述网格细化位置上沿着法线方向施加预设顶点偏移,得到形变顶点的网格位置,所述形变顶点为对所述顶点进行位置变换后的顶点。
3.根据权利要求1所述的方法,其特征在于,所述纹理贴图包含所述虚拟对象的反照率贴图和法线贴图,所述反照率贴图用于表征所述虚拟对象的面部皮肤的底色,所述法线贴图用于确定所述面部细化网格中顶点的光照系数;
所述基于所述面部细化网格,重建所述虚拟对象的纹理贴图包括:
在纹理空间中,导出所述虚拟对象预先定义的反照率贴图;
基于所述面部细化网格,重建所述虚拟对象的法线贴图。
4.根据权利要求1所述的方法,其特征在于,所述对于所述面部细化网格中的顶点,基于所述虚拟场景中的光源信息和相机视角,获取所述顶点的光照系数包括:
基于所述虚拟场景中的相机视角,确定所述面部细化网格在所述相机视角下的可见表面;
对于所述可见表面的任一顶点,基于所述虚拟场景中的光源信息,获取所述顶点的光照系数。
5.根据权利要求4所述的方法,其特征在于,所述对于所述可见表面的任一顶点,基于所述虚拟场景中的光源信息,获取所述顶点的光照系数包括:
基于所述光源信息,获取所述虚拟场景的环境反射常量、漫反射常量、环境光源强度以及所述虚拟场景中每个光源在漫射表面的光源强度;
对于所述可见表面的任一顶点,基于所述漫反射常量、所述顶点的点法线向量、所述顶点到每个光源的光照向量以及每个光源在漫射表面的光源强度,获取所述顶点的漫反射系数;
基于所述环境反射常量、所述环境光源强度和所述顶点的漫反射系数,获取所述顶点的光照系数。
6.根据权利要求5所述的方法,其特征在于,所述基于所述漫反射常量、所述顶点的点法线向量、所述顶点到每个光源的光照向量以及每个光源在漫射表面的光源强度,获取所述顶点的漫反射系数包括:
对于所述虚拟场景中的每个光源,获取所述顶点的点法线向量和所述顶点到所述光源的光照向量之间的向量点积;
将所述漫反射常量、所述光源在漫射表面的光源强度和所述向量点积相乘,得到所述光源在所述顶点上的漫反射分量;
将所述虚拟场景中各个光源在所述顶点上的漫反射分量融合,得到所述顶点的漫反射系数。
7.根据权利要求6所述的方法,其特征在于,所述将所述虚拟场景中各个光源在所述顶点上的漫反射分量融合,得到所述顶点的漫反射系数包括:
对于所述虚拟场景中的每个光源,将所述顶点的位置向量和所述光源的位置向量之间的L2范数输入到激活函数中,得到所述顶点在所述光源下的能见度系数,所述能见度系数表征所述顶点在所述光源照射下形成的自阴影;
基于每个光源的能见度系数,对所述光源在所述顶点上的漫反射分量进行加权,得到所述光源在所述顶点上的加权漫反射分量;
将所述虚拟场景中各个光源在所述顶点上的加权漫反射分量相加,得到所述顶点的漫反射系数。
8.根据权利要求5所述的方法,其特征在于,所述基于所述环境反射常量、所述环境光源强度和所述顶点的漫反射系数,获取所述顶点的光照系数包括:
将所述环境反射常量和所述环境光源强度相乘,得到所述虚拟场景的环境光系数;
将所述环境光系数和所述顶点的漫反射系数相加,得到所述顶点的光照系数。
9.一种虚拟对象的面部重建网络的训练方法,其特征在于,所述方法包括:
通过面部重建网络,对虚拟场景中样本对象的面部模型进行细化,得到所述样本对象的面部细化网格,所述面部重建网络用于重建所述虚拟对象的面部网格并增加所述面部网格的顶点数量;
基于所述样本对象的纹理贴图和所述面部细化网格中顶点的光照系数,对所述样本对象进行面部渲染,得到所述样本对象在所述虚拟场景的相机视角下的预测面部图像;
基于所述预测面部图像和所述样本对象在所述相机视角下的参考面部图像的几何差异,获取所述面部重建网络的几何损失项,所述几何损失项用于衡量所述参考面部图像和所述预测面部图像之间的几何相似性;
基于所述参考面部图像和所述预测面部图像的外观差异,获取所述面部重建网络的外观损失项,所述外观损失项用于衡量所述参考面部图像和所述预测面部图像之间的图像相似性;
基于所述几何损失项和所述外观损失项中的至少一项,确定所述面部重建网络的训练损失值;
基于所述训练损失值,对所述面部重建网络进行训练。
10.根据权利要求9所述的方法,其特征在于,所述基于所述几何损失项和所述外观损失项中的至少一项,确定所述面部重建网络的训练损失值包括:
基于所述几何损失项和所述外观损失项,确定所述面部重建网络的训练损失值。
11.根据权利要求9所述的方法,其特征在于,所述基于所述预测面部图像和所述样本对象在所述相机视角下的参考面部图像的几何差异,获取所述面部重建网络的几何损失项包括:
基于所述参考面部图像的面部掩码和所述预测面部图像的渲染轮廓,获取所述面部重建网络的轮廓损失项,所述轮廓损失项表征所述参考面部图像和所述预测面部图像之间的轮廓差异;
基于所述面部细化网格的正则化信息,获取所述面部重建网络的网格正则化项,所述网格正则化项表征所述面部细化网格的正则化的几何信息;
基于所述轮廓损失项和所述网格正则化项进行加权求和,得到所述面部重建网络的几何损失项。
12.根据权利要求11所述的方法,其特征在于,所述基于所述面部细化网格的正则化信息,获取所述面部重建网络的网格正则化项包括:
对所述面部细化网格中的顶点进行拉普拉斯网格正则化,得到第一正则项;
基于所述面部细化网格中的顶点的点法线向量,确定第二正则项;
基于所述面部细化网格中的顶点和所述样本对象的模板网格中的模板顶点,获取第三正则项;
基于所述第一正则项、所述第二正则项和所述第三正则项,获取所述网格正则化项。
13.根据权利要求12所述的方法,其特征在于,所述基于所述面部细化网格中的顶点和所述样本对象的模板网格中的模板顶点,获取第三正则项包括:
基于所述面部细化网格中的顶点,确定所述顶点在所述模板网格中关联的模板顶点;
基于所述顶点、所述顶点在所述面部细化网格中的邻居顶点、所述模板顶点以及所述模板顶点在所述模板网格中的邻居模板顶点,获取所述第三正则项。
14.根据权利要求9所述的方法,其特征在于,所述基于所述参考面部图像和所述预测面部图像的外观差异,获取所述面部重建网络的外观损失项包括:
基于所述参考面部图像和所述预测面部图像之间的像素色差,获取所述面部重建网络的颜色损失项;
基于所述参考面部图像和所述预测面部图像之间的特征差异,获取所述面部重建网络的特征损失项;
基于所述参考面部图像和所述预测面部图像之间的纹理贴图的正则化信息,获取所述面部重建网络的外观正则化项,所述外观正则化项表征所述纹理贴图中反照率贴图和法线贴图的正则化的局部平滑信息;
基于所述颜色损失项、所述特征损失项和所述外观正则化项进行加权求和,得到所述面部重建网络的外观损失项。
15.一种虚拟对象的面部重建装置,其特征在于,所述装置包括:
细化模块,包括位置变换子模块和第一确定子模块;所述位置变换子模块,用于将虚拟场景中虚拟对象的面部模型输入面部重建网络中,通过所述面部重建网络,对所述面部模型中待形变的顶点进行位置变换,得到形变顶点,所述面部重建网络用于重建所述虚拟对象的面部网格并增加所述面部网格的顶点数量;
所述第一确定子模块,用于基于各个待形变的顶点和各个形变顶点,确定所述虚拟对象的面部细化网格,所述面部细化网格的顶点数量大于所述面部模型的顶点数量;
重建模块,用于基于所述面部细化网格,重建所述虚拟对象的纹理贴图;
获取模块,用于对于所述面部细化网格中的顶点,基于所述虚拟场景中的光源信息和相机视角,获取所述顶点的光照系数,所述光照系数表征所述虚拟场景中光源照射所述面部模型的表面经过漫反射后形成的顶点高光;
渲染模块,用于基于所述纹理贴图以及所述面部细化网格中顶点的光照系数,对所述虚拟对象进行面部渲染,得到所述虚拟对象在所述相机视角下的面部图像。
16.根据权利要求15所述的装置,其特征在于,所述位置变换子模块用于:
将所述虚拟对象的面部姿势参数和面部形状参数输入所述面部重建网络,通过所述面部重建网络重建所述虚拟对象的面部网格,所述面部姿势参数和面部形状参数随着所述面部重建网络训练得到;
将所述面部网格中待形变的顶点的网格位置输入所述面部重建网络的网格细化函数,得到网格细化位置,所述网格细化函数用于提升所述面部网格的分辨率;
在所述网格细化位置上沿着法线方向施加预设顶点偏移,得到形变顶点的网格位置,所述形变顶点为对所述顶点进行位置变换后的顶点。
17.根据权利要求15所述的装置,其特征在于,所述纹理贴图包含所述虚拟对象的反照率贴图和法线贴图,所述反照率贴图用于表征所述虚拟对象的面部皮肤的底色,所述法线贴图用于确定所述面部细化网格中顶点的光照系数;
所述重建模块用于:
在纹理空间中,导出所述虚拟对象预先定义的反照率贴图;
基于所述面部细化网格,重建所述虚拟对象的法线贴图。
18.根据权利要求15所述的装置,其特征在于,所述获取模块包括:
第二确定子模块,用于基于所述虚拟场景中的相机视角,确定所述面部细化网格在所述相机视角下的可见表面;
获取子模块,用于对于所述可见表面的任一顶点,基于所述虚拟场景中的光源信息,获取所述顶点的光照系数。
19.根据权利要求18所述的装置,其特征在于,所述获取子模块包括:
第一获取单元,用于基于所述光源信息,获取所述虚拟场景的环境反射常量、漫反射常量、环境光源强度以及所述虚拟场景中每个光源在漫射表面的光源强度;
第二获取单元,用于对于所述可见表面的任一顶点,基于所述漫反射常量、所述顶点的点法线向量、所述顶点到每个光源的光照向量以及每个光源在漫射表面的光源强度,获取所述顶点的漫反射系数;
第三获取单元,用于基于所述环境反射常量、所述环境光源强度和所述顶点的漫反射系数,获取所述顶点的光照系数。
20.根据权利要求19所述的装置,其特征在于,所述第二获取单元包括:
获取子单元,用于对于所述虚拟场景中的每个光源,获取所述顶点的点法线向量和所述顶点到所述光源的光照向量之间的向量点积;
相乘子单元,用于将所述漫反射常量、所述光源在漫射表面的光源强度和所述向量点积相乘,得到所述光源在所述顶点上的漫反射分量;
融合子单元,用于将所述虚拟场景中各个光源在所述顶点上的漫反射分量融合,得到所述顶点的漫反射系数。
21.根据权利要求20所述的装置,其特征在于,所述融合子单元用于:
对于所述虚拟场景中的每个光源,将所述顶点的位置向量和所述光源的位置向量之间的L2范数输入到激活函数中,得到所述顶点在所述光源下的能见度系数,所述能见度系数表征所述顶点在所述光源照射下形成的自阴影;
基于每个光源的能见度系数,对所述光源在所述顶点上的漫反射分量进行加权,得到所述光源在所述顶点上的加权漫反射分量;
将所述虚拟场景中各个光源在所述顶点上的加权漫反射分量相加,得到所述顶点的漫反射系数。
22.根据权利要求19所述的装置,其特征在于,所述第三获取单元用于:
将所述环境反射常量和所述环境光源强度相乘,得到所述虚拟场景的环境光系数;
将所述环境光系数和所述顶点的漫反射系数相加,得到所述顶点的光照系数。
23.一种虚拟对象的面部重建网络的训练装置,其特征在于,所述装置包括:
细化模块,用于通过面部重建网络,对虚拟场景中样本对象的面部模型进行细化,得到所述样本对象的面部细化网格,所述面部重建网络用于重建所述虚拟对象的面部网格并增加所述面部网格的顶点数量;
渲染模块,用于基于所述样本对象的纹理贴图和所述面部细化网格中顶点的光照系数,对所述样本对象进行面部渲染,得到所述样本对象在所述虚拟场景的相机视角下的预测面部图像;
损失获取模块,包括几何损失获取子模块、外观损失获取子模块和训练损失确定子模块;所述几何损失获取子模块,用于基于所述预测面部图像和所述样本对象在所述相机视角下的参考面部图像的几何差异,获取所述面部重建网络的几何损失项,所述几何损失项用于衡量所述参考面部图像和所述预测面部图像之间的几何相似性;
所述外观损失获取子模块,用于基于所述参考面部图像和所述预测面部图像的外观差异,获取所述面部重建网络的外观损失项,所述外观损失项用于衡量所述参考面部图像和所述预测面部图像之间的图像相似性;
所述训练损失确定子模块,用于基于所述几何损失项和所述外观损失项中的至少一项,确定所述面部重建网络的训练损失值;
训练模块,用于基于所述训练损失值,对所述面部重建网络进行训练。
24.根据权利要求23所述的装置,其特征在于,所述训练损失确定子模块,用于:
基于所述几何损失项和所述外观损失项,确定所述面部重建网络的训练损失值。
25.根据权利要求23所述的装置,其特征在于,所述几何损失获取子模块包括:
轮廓损失获取单元,用于基于所述参考面部图像的面部掩码和所述预测面部图像的渲染轮廓,获取所述面部重建网络的轮廓损失项,所述轮廓损失项表征所述参考面部图像和所述预测面部图像之间的轮廓差异;
正则损失获取单元,用于基于所述面部细化网格的正则化信息,获取所述面部重建网络的网格正则化项,所述网格正则化项表征所述面部细化网格的正则化的几何信息;
加权求和单元,用于基于所述轮廓损失项和所述网格正则化项进行加权求和,得到所述面部重建网络的几何损失项。
26.根据权利要求25所述的装置,其特征在于,所述正则损失获取单元包括:
正则化子单元,用于对所述面部细化网格中的顶点进行拉普拉斯网格正则化,得到第一正则项;
确定子单元,用于基于所述面部细化网格中的顶点的点法线向量,确定第二正则项;
第一获取子单元,用于基于所述面部细化网格中的顶点和所述样本对象的模板网格中的模板顶点,获取第三正则项;
第二获取子单元,用于基于所述第一正则项、所述第二正则项和所述第三正则项,获取所述网格正则化项。
27.根据权利要求26所述的装置,其特征在于,所述第一获取子单元用于:
基于所述面部细化网格中的顶点,确定所述顶点在所述模板网格中关联的模板顶点;
基于所述顶点、所述顶点在所述面部细化网格中的邻居顶点、所述模板顶点以及所述模板顶点在所述模板网格中的邻居模板顶点,获取所述第三正则项。
28.根据权利要求23所述的装置,其特征在于,所述外观损失获取子模块用于:
基于所述参考面部图像和所述预测面部图像之间的像素色差,获取所述面部重建网络的颜色损失项;
基于所述参考面部图像和所述预测面部图像之间的特征差异,获取所述面部重建网络的特征损失项;
基于所述参考面部图像和所述预测面部图像之间的纹理贴图的正则化信息,获取所述面部重建网络的外观正则化项,所述外观正则化项表征所述纹理贴图中反照率贴图和法线贴图的正则化的局部平滑信息;
基于所述颜色损失项、所述特征损失项和所述外观正则化项进行加权求和,得到所述面部重建网络的外观损失项。
29.一种计算机设备,其特征在于,所述计算机设备包括一个或多个处理器和一个或多个存储器,所述一个或多个存储器中存储有至少一条计算机程序,所述至少一条计算机程序由所述一个或多个处理器加载并执行以实现如权利要求1至权利要求8任一项所述的虚拟对象的面部重建方法;或如权利要求9至权利要求14任一项所述的虚拟对象的面部重建网络的训练方法。
30.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条计算机程序,所述至少一条计算机程序由处理器加载并执行以实现如权利要求1至权利要求8任一项所述的虚拟对象的面部重建方法;或如权利要求9至权利要求14任一项所述的虚拟对象的面部重建网络的训练方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310518584.0A CN116228943B (zh) | 2023-05-10 | 2023-05-10 | 虚拟对象面部重建方法、面部重建网络训练方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310518584.0A CN116228943B (zh) | 2023-05-10 | 2023-05-10 | 虚拟对象面部重建方法、面部重建网络训练方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116228943A CN116228943A (zh) | 2023-06-06 |
CN116228943B true CN116228943B (zh) | 2023-07-14 |
Family
ID=86570056
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310518584.0A Active CN116228943B (zh) | 2023-05-10 | 2023-05-10 | 虚拟对象面部重建方法、面部重建网络训练方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116228943B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116843808A (zh) * | 2023-06-30 | 2023-10-03 | 北京百度网讯科技有限公司 | 基于点云的渲染、模型训练、虚拟形象生成方法及装置 |
CN116978102A (zh) * | 2023-08-04 | 2023-10-31 | 深圳市英锐存储科技有限公司 | 一种人脸特征建模识别方法、芯片及终端 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021223133A1 (zh) * | 2020-05-07 | 2021-11-11 | 浙江大学 | 一种基于神经网络的增强现实绘制方法 |
CN115908712A (zh) * | 2022-11-28 | 2023-04-04 | 阿里巴巴(中国)有限公司 | 基于图像的三维重建及模型训练方法、设备及存储介质 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3408836A1 (en) * | 2016-01-29 | 2018-12-05 | Max-Planck-Gesellschaft zur Förderung der Wissenschaften e.V. | Crowdshaping realistic 3d avatars with words |
CN108109194B (zh) * | 2017-12-29 | 2021-03-16 | 广东工业大学 | 虚拟现实场景中镭射纸效果的实现方法及系统 |
KR102577472B1 (ko) * | 2018-03-20 | 2023-09-12 | 한국전자통신연구원 | 동작 인식을 위한 가상 학습 데이터를 생성하는 방법 및 장치 |
CN108765550B (zh) * | 2018-05-09 | 2021-03-30 | 华南理工大学 | 一种基于单张图片的三维人脸重建方法 |
CN110634178A (zh) * | 2019-06-10 | 2019-12-31 | 李翔 | 面向数字博物馆的三维场景精细化重建方法 |
US10922884B2 (en) * | 2019-07-18 | 2021-02-16 | Sony Corporation | Shape-refinement of triangular three-dimensional mesh using a modified shape from shading (SFS) scheme |
US20230419552A1 (en) * | 2020-10-16 | 2023-12-28 | Lg Electronics Inc. | Point cloud data transmission method, point cloud data transmission device, point cloud data reception method, and point cloud data reception device |
CN113298936B (zh) * | 2021-06-01 | 2022-04-29 | 浙江大学 | 一种基于深度学习的多rgb-d全脸材质恢复方法 |
US11967024B2 (en) * | 2021-11-03 | 2024-04-23 | Nvidia Corporation | Extracting triangular 3-D models, materials, and lighting from images |
CN116091676B (zh) * | 2023-04-13 | 2023-06-30 | 腾讯科技(深圳)有限公司 | 虚拟对象的面部渲染方法及点云特征提取模型的训练方法 |
-
2023
- 2023-05-10 CN CN202310518584.0A patent/CN116228943B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021223133A1 (zh) * | 2020-05-07 | 2021-11-11 | 浙江大学 | 一种基于神经网络的增强现实绘制方法 |
CN115908712A (zh) * | 2022-11-28 | 2023-04-04 | 阿里巴巴(中国)有限公司 | 基于图像的三维重建及模型训练方法、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116228943A (zh) | 2023-06-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11676342B2 (en) | Providing 3D data for messages in a messaging system | |
US11748957B2 (en) | Generating 3D data in a messaging system | |
US11694392B2 (en) | Environment synthesis for lighting an object | |
US10540817B2 (en) | System and method for creating a full head 3D morphable model | |
CN116228943B (zh) | 虚拟对象面部重建方法、面部重建网络训练方法及装置 | |
CN111369655B (zh) | 渲染方法、装置和终端设备 | |
CN116091676B (zh) | 虚拟对象的面部渲染方法及点云特征提取模型的训练方法 | |
US6700586B1 (en) | Low cost graphics with stitching processing hardware support for skeletal animation | |
CN106575445B (zh) | 毛皮虚拟化身动画 | |
US20210065464A1 (en) | Beautification techniques for 3d data in a messaging system | |
KR20220051376A (ko) | 메시징 시스템에서의 3d 데이터 생성 | |
EP4136623A1 (en) | Augmented reality content generators including 3d data in a messaging system | |
CN110458924B (zh) | 一种三维脸部模型建立方法、装置和电子设备 | |
Marques et al. | Deep spherical harmonics light probe estimator for mixed reality games | |
CN115082607A (zh) | 虚拟角色头发渲染方法、装置、电子设备和存储介质 | |
CN116958344A (zh) | 虚拟形象的动画生成方法、装置、计算机设备及存储介质 | |
US10754498B2 (en) | Hybrid image rendering system | |
CN116934948A (zh) | 基于多视角视频的可重光照三维数字人构建方法及装置 | |
CN112950753A (zh) | 虚拟植物显示方法、装置、设备及存储介质 | |
CN116363288A (zh) | 目标物的渲染方法、装置、存储介质及计算机设备 | |
Lu Lu | Large Scale Immersive Holograms with Microsoft Hololens | |
An | Automatic 2.5 d cartoon modelling | |
Taif | Machine learning for 3D visualisation using generative models | |
CN117095126A (zh) | 一种虚拟模型的生成方法、装置、计算机设备及存储介质 | |
Beebe | A Bibliography of Publications in IEEE Computer Graphics and Applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40086951 Country of ref document: HK |