高真实感且精确可控的三维人脸建模是数字人构建中的重要问题之一。目前,使用现有的基于网格的人脸建模方法需要专业的人员使用复杂的软件并投入大量的时间和精力,且实现逼真的人脸渲染结果较为困难。
虽然神经辐射场作为一种新的三维表示可以合成出逼真的结果,但如何对生成结果进行精确控制和修改,以实现高质量的三维人脸合成仍然是一个待解决的问题。
近期,研究人员提出了基于线稿的三维人脸神经辐射场生成和编辑方法 SketchFaceNeRF [1],相关技术论文发表在计算机图形学顶会 SIGGRAPH 2023,并被收录于图形学顶级期刊 ACM Transactions on Graphics。使用该系统,即使用户不会使用复杂的三维软件,也可以基于线稿自由创作三维人脸。先来看看使用 SketchFaceNeRF 创作的人脸效果:
进一步,在给定三维人脸后,用户在任意角度添加编辑操作:
图 2 使用线稿在任意视角编辑三维人脸。
Part 1 背景
最近,AI 绘画非常火爆,基于 Stable Diffusion [2] 和 ControlNet [3] 等方法,通过指定文本可以生成高真实感的二维图像。但是,上述工作无法生成高质量的三维模型。同时,仅使用文本难以控制生成细节,尽管 ControlNet 已经支持线稿的控制,但如何对生成的结果的局部区域进行精准的修改仍然十分困难。
随着神经辐射场 [4] 和对抗式生成网络 [5] 的发展,已有方法,例如 EG3D [6],已经实现了三维人脸模型的高质量的生成和快速的渲染。但是,这些生成模型只支持人脸随机采样,而无法对生成结果进行控制。IDE-3D [7] 和 NeRFFaceEditing [8] 使用语义标记图编辑三维人脸,但是,该类方法难以实现更细节的控制,例如头发的结构细节和皱纹等。同时,用户很难从头绘制复杂的语义图,无法凭空生成三维人脸模型。
线稿作为一种更加友好的交互方式,一直被用于二维人脸图像的生成 [9] 和编辑 [10]。然而,将线稿用于三维人脸的生成存在下述的问题:首先,线稿风格多样且过于稀疏,生成二维图像已经不易,生成三维模型则更加困难;其次,针对三维人脸,用户往往会在任意视角添加编辑,如何生成有效的编辑结果,同时保持三维一致性,是需要解决的问题。
针对上述挑战,SketchFaceNeRF 利用了三平面的表示方法,基于线稿直接预测人脸三平面特征,投影至生成模型的隐空间,得到高质量的人脸 NeRF。多视角的三维人脸编辑问题则被建模为优化问题,通过三平面的局部融合及投影方法预测初值,并基于线稿约束和图像约束反向优化隐码,得到高质量的人脸 NeRF 编辑效果。
Part 2 SketchFaceNeRF 算法原理
图 3 SketchFaceNeRF 的网络架构图,生成流程。
人脸 NeRF 可控生成
给定单视角的手绘线稿后,直接投影到生成模型隐空间,合成的人脸存在对应性差、生成质量低等问题。这是因为二维稀疏线稿与三维人脸的差异过大,并且手绘的线稿风格多样。为解决上述问题,提出一种逐级升维的映射方法:由于输入线稿仅包含稀疏几何信息,但三维人脸具有不同的外观,所以首先使用自适应实例归一化 (AdaIN [11]),将输入的线稿转换到彩色特征图以注入颜色、光照和纹理信息。
进一步,由于二维输入缺乏 3D 信息,算法在体渲染的立体空间中构建 3D 特征体素,空间中的三维点被投影到 2D 特征图,检索得到对应的特征。最后,在 x,y,z 三个轴对三维体素进行形状变换,再基于 2D 卷积网络得到三平面特征图。为了生成高质量的人脸 NeRF,三平面被反投影到生成模型的隐空间,得到隐码表示的人脸 NeRF 模型。
训练过程分为两步:首先,使用 EG3D 构建多视角的训练数据。输入线稿预测三平面后,基于原本 EG3D 的渲染网络生成其他视角的图像,并使用真值作监督,完成线稿三平面预测网络的训练。然后,固定线稿三平面预测网络的权重,训练投影网络,将三平面特征投影至 EG3D 的隐空间。
图 4 SketchFaceNeRF 的网络架构图,编辑流程。
人脸 NeRF 精确编辑
为了支持任意视角的线稿人脸编辑,该工作提出一种三维一致的人脸线稿渲染方法,为 EG3D 添加额外的线稿生成分支,与图像生成分支共享相同的 StyleGAN 主干网络,但具有不同的解码器和超分辨率模块。训练过程则使用线稿真值作监督,并添加正则化项约束线稿视角一致性。
在生成的三维线稿基础上,用户对局部区域进行修改,绘制出新的线稿。由于单视角的线稿输入存在遮挡等问题,无法表示完整原本的三维信息,因此直接推理难以保持编辑前后的非编辑区域一致性。
为此,将人脸的 NeRF 的精细化编辑问题建模为优化问题。该工作先提出一种初值预测方法:使用与生成过程共享的线稿三平面预测网络,先直接预测得到线稿对应的三平面特征。为了保持非编辑区域的不变,进一步将线稿生成的三平面与原始的三平面特征进行融合,并使用与生成过程共享的编码网络,将三平面反投影至生成模型的隐空间,得到人脸的编辑的初值。
进一步,提出反向优化方法实现三维人脸的精细化编辑。具体而言,算法通过线稿生成分支渲染出合成线稿,在编辑区域与手绘线稿计算相似度。同时,在非编辑区域,图像生成分支渲染出人脸图像,与原始图像计算相似度。为了保证编辑前后的空间一致性,进一步约束非编辑区域的光线采样点特征相同。基于上述约束,反向优化隐码,实现人脸的精细化编辑。
Part 3 效果展示
如图 5 所示,给定手绘线稿,基于该方法可以生成高质量的人脸神经辐射场。通过选择不同的外观参考图像,可以指定生成人脸的外观。用户可以自由变换视角,都能得到高质量的渲染结果。
图 5 基于线稿生成的三维人脸。
如图 6 所示,给定三维人脸,用户可以选择任意的视角,对渲染出的线稿进行修改,从而编辑人脸 NeRF。左侧展示了对随机生成的人脸进行编辑的效果。右侧则展示给定人脸图像后,使用人脸生成模型进行反投影,并进一步添加编辑的结果。
图 6 基于线稿的三维人脸编辑结果。
如图 7 所示,针对一个人脸 NeRF,用户可以在不同视角对人脸添加连续的编辑操作,使用该方法都能得到较好的编辑结果,同时,非编辑的立体区域的特征也被完美保持。
图 7 基于线稿对人脸进行连续的编辑操作。
如图 8 所示,得益于生成模型隐空间的良好性质,对特定人添加的编辑操作后,计算前后的隐码差异得到编辑向量,一些情况下可以直接作用于其他人,得到类似的编辑效果。
图 8 编辑传播结果,左侧的编辑操作的效果,可以传播至右侧人脸。
Part 4 结语
随着人工智能的迅速发展,AI 绘画也涌现出许多的新的方法。与生成二维图像不同,如何生成三维数字内容是更具挑战性的问题。SketchFaceNeRF 提供了一种可行的解决方案,基于手绘线稿,用户可以生成高质量的人脸模型,并支持任意视角的精细化的编辑。
基于该系统,我们无需安装繁杂的三维建模软件并学习复杂的技能,也不需要花费数个小时时间精力,仅仅通过勾勒简单的线条,普通用户也能轻松构建心中完美的人脸模型,并得到高质量的渲染结果。
SketchFaceNeRF 已经被 ACM SIGGRAPH 2023 接收,并将刊登在期刊 ACM Transactions on Graphics 上。
目前,SketchFaceNeRF 已经提供在线服务供大家使用。在线系统由中科院计算所信息高铁训练推理平台 MLOps 提供智算算力支持,由中科南京信息高铁研究院提供上线工程服务保障。
在线服务链接:http://geometrylearning.com/SketchFaceNeRF/interface
有关论文的更多细节,及论文、视频、代码的下载,请浏览项目主页:
http://www.geometrylearning.com/SketchFaceNeRF/
开源代码见:
https://github.com/IGLICT/SketchFaceNeRF