真实人脸的三维建模、合成与重光照是计算机图形学领域中具有较高应用价值的研究方向。受限于人脸的复杂皮肤组织结构,对于光照效果的准确计算往往依赖前置精细的几何材质建模,以及复杂的光路模拟,需要较高的硬件成本与计算时间开销。
现有方法在消费级硬件上已经成功地利用隐式生成网络快速合成超真实感三维人脸,从中隐式解耦出光照的想法由于只需要较低的硬件成本与可以实现高质量的真实效果成为了潜在的研究方向。但是,光影效果与材质之间存在很强的歧义性问题,在保证生成网络的多样性情况下,很难采集到大量真实数据去解决光影与材质之间的歧义性。
而发表在计算机图形学顶级期刊 ACM Transactions on Graphics (ToG) 上的 NeRFFaceLighting [1] 即在隐式解耦人脸光照方向,利用生成模型学习到的分布先验,实现了真实光影的解耦。
NeRFFaceLighting 构建了一个解耦了光影控制的三维人脸生成模型。在确定了人脸的几何和材质之后,用户只需要给定期望的光影效果和相机视角,即可以实时生成对应的人脸图像。
基于该方法的三维人脸重光照系统,即使用户不熟悉三维建模以及光照模型,也可以轻松的从二维真实人脸图像中恢复出三维人脸模型,并对光影效果进行适当的调整。先来看看使用 NeRFFaceLighting 的效果!
图 1 使用 NeRFFaceLighting 系统对输入的真实人脸图像重光照效果
图 2 NeRFFaceLighting 更多的重光照效果
Part I 背景
近些年,随着神经辐射场 [2] 与对抗式生成网络 [3] 的结合,各种高质量、快速渲染的三维人脸生成网络被提出,其中包括 EG3D [4]。
图 3 EG3D 的不同视角的生成效果与几何表示
该方法的三平面表示结合了传统的二维对抗式生成网络和最新的三维隐式表征,因此继承了 StyleGAN [5] 的强大生成能力和神经辐射场的表征能力。但是,这些生成模型本身是无条件生成,并不能对人脸的光影进行解耦控制。
已有工作有的通过对三维人脸生成网络隐空间中隐变量编辑的方式实现三维人脸光影控制,但是难以保证超出人脸区域的几何一致性。另一些工作通过显式光影模型与固定几何建模可以实现几何一致性较好的三维人脸重光照,但是真实感不够。
为了解决上述的问题,NeRFFaceLighting 分解了三平面表示为几何材质三平面和光影三平面来保证光影编辑时的几何材质一致性,并且通过条件判别器监督光影效果的真实性。在基于这种网络隐式生成的几何材质与光影分解表示的基础上,NeRFFaceLighting 充分利用了对抗式生成网络从稀疏的数据集中学到稠密空间的能力,约束单个生成样本表现出数据集整体分布特点,来消解这种隐式几何、材质与光影分解的歧义性。因而,在训练好了解耦光影控制的三维人脸生成网络之后,NeRFFaceLighting 额外训练了一个编码器将真实人脸编码到生成网络,从而实现真实的光影控制和新视角生成。
Part 2 NeRFFaceLighting 的算法原理
在原本的三平面生成器基础上,NeRFFaceLighting 附加了两层合成块,用于在合成了原本的三平面之后合成光影三平面,作为独立的光影表示。此外,描述光照条件的二阶球谐光照系数通过映射网络变为中间光影隐变量之后,作为条件指导光影三平面的生成。从而,在仅改变光影隐变量时,原本的三平面保持不变,而光影三平面发生变化;原本的三平面被认为是包含除光影之外的,也即几何与材质的信息。原本的隐空间也被认为是几何与材质的隐空间。
给定几何与材质三平面和光影三平面之后,原本的解码器从几何与材质的三平面中采样的特征解码出密度 σ 和反照率 a(对应于原本的颜色,但是赋予了不同的含义),而新构建的光影解码器从光影三平面中采样的特征解码出光影 s,最终的颜色由 c=s∙a 给出。通过体渲染,密度与反照率组合构成反照率图,而密度与颜色组合构成最终的人脸图像。
人脸图像被送入图像判别器和光影判别器中判别真伪,其中图像判别器是原本的判别器,而光影判别器是输入二阶球谐光照系数作为条件的。因此,NeRFFaceLighting 使用 DPR [6] 对真实人脸数据集 FFHQ 中每张人脸标注了光影条件。
整体网络结构如下图所示:
图 4 NeRFFaceLighting 的网络架构
除此之外,隐式分解几何、材质和光影本身是具有歧义性的,因为野外采集的大规模真实人脸图像是不包含同一个人,不同光影状况下的多张图片的,所以无法保证网络没有把材质建模为光影,或者是把光影建模为材质。
针对光影信息残留在材质表示中的问题,NeRFFaceLighting 观察到对抗式生成网络具有从稀疏数据集学习到稠密生成空间的能力,即对于一个生成样本,生成网络可以轻松生成具有相同几何与不同材质和光影效果的其他样本,并且这些几何相同的其他样本的光影效果往往与数据集的光影效果分布近似,即便材质并不相同。又观察到一个充分的大规模数据集中光影分布是呈中心对称,即光影分布的均值即为未知的无光影状态,NeRFFaceLighting 提出利用这些几何相同的样本来互相提供监督,约束每个样本的材质中残留的光影信息趋于均值,即无残留光影的状态,从而间接约束光影的效果准确。(具体的分析和解释可以见论文的补充材料。)
另外,NeRFFaceLighting 还强化了隐式光影模型对数据集中未知光影效果泛化能力以及减轻材质信息建模到光影表示中的可能。(具体的细节请见论文。)约束流程如下图所示:
图 5 几何、材质与光影分解有效性约束策略
最后,NeRFFaceLighting 使用 Encoder-For-Editing [7] 作为基线模型,使用了一些额外的约束来训练一个编码器,将真实图像编码到生成器的几何与材质隐空间中,再结合 Pivotal Tuning Inversion [8] 实现真实图像的准确三维重建。在此之后,即可通过给定二阶球谐系数与相机视角的方式,来实现新视角重光照了。
Part 3 效果展示与实验对比
使用 NeRFFaceLighting,可以对生成出来的三维人脸进行光影控制(请注意 (a) 中额头的高光;(b) 中眼镜打在脸上的阴影;(c) 中头发的光影;(d) 中脖子上的阴影):
图 6 三维人脸光影控制(反照率被放置在了人脸图像右下边作为参考)
这里展示对几何和材质隐空间,和光影隐空间分别进行插值:
图 7 三维人脸几何与材质隐变量插值效果,以及光影隐变量插值效果
除此之外,这里展示了引入的分解有效性训练策略引起的光影与材质歧义性消解:
图 8 反照率在训练前和训练后的结果对比(注意,因为是生成模型,所以人脸身份信息会不一样)
最后,结合编码器,可以实现真实二维人脸图像的三维重建以及重光照:
图 9 真实人脸图像重光照效果:从二维人脸图像中重建三维人脸模型,并进行重光照
NeRFFaceLighting 在生成质量和多样性上,通过 Frechet Inception Distance [9] 与其他方法进行了对比,如表 3-1 所示达到了最好的结果;在光照准确性和稳定性上,通过 DECA [10] 预测面部区域的光照系数(不考虑头发、脖子等区域)与其他方法进行了对比,如表 3-2 所示达到了较好的结果,DisCoFaceGAN [11] 和 3DFaceShop [12] 由于有对应的 3DMM 真值监督,指标更好,但很难在保持几何一致性的情况下,在非面部区域也取得逼真的光影效果。
表 3-1 生成模型质量和多样性对比。
表 3-2 重光照准确性和稳定性对比。加粗了第一的指标,用下划线标注了第二的指标,和双下划线标注了第三的指标。
Part 4 结语与致谢
数字内容生成在工业制作和数字媒体领域有着广泛的应用,尤其是虚拟数字人的生成与编辑,在近期受到了广泛的关注,而三维人脸光影的解耦真实编辑就是该领域的一个重要问题。解决该问题促进了下游二维真实人脸图像新视角合成和重光照的应用。
NeRFFaceLighting 系统通过对三维人脸生成网络进行光照解耦设计,可以对三维人脸(包括头发、脖子等)进行不依赖显式光影模型的实时重光照,NeRFFaceLighting 的论文已经被计算机图形学顶级刊物 ACM Transactions on Graphics 录用。
目前,NeRFFaceLighting 已经提供在线服务供大家使用。在线系统由中国科学院计算技术研究所信息高铁云函数平台提供底层计算服务支持,由中科南京信息高铁研究院提供底层算力及工程服务支持。
在线服务链接:http://geometrylearning.com/NeRFFaceLighting/interface