《MeInGame:Create a Game Character Face from a Single Portrait》

paper: 2102.02371.pdf (arxiv.org)

code: FuxiCV/MeInGame: MeInGame: Create a Game Character Face from a Single Portrait, AAAI 2021 (github.com)

任务

从单张真实2D肖像生成武侠风格的3D可形变模型。

出发点

近年来,人们提出了许多基于深度学习的三维人脸重建方法,但在游戏中应用较少。当前的游戏角色定制系统要么要求玩家手动调整相当多的面部属性以获得所需的面部,要么限制面部形状和纹理的自由度。

贡献

我们提出了一种低成本的三维人脸数据集创建方法。我们创建的数据集在种族和性别上是平衡的,面部形状和纹理都是从原始图像中创建的。我们将在论文被接受后将其公开。 提出了一种低成本的面部纹理获取方法

我们提出了一种将重建的3DMM人脸形状转换为游戏网格的方法,可以直接在游戏环境中使用。该方法与网格连通性无关,在实际应用中计算效率较高。

为了消除光照和遮挡的影响,我们在对抗性训练范式下训练神经网络,从野外人脸图像中的单个图像预测一个完整的漫反射贴图。

方法

image-20220629143637063

Shape Reconstructor pretrain好,获取3DMM系数和姿势系数,通过3DMM网络构成3DMM mesh(只有正面3D人脸),Shape Transfer将3DMM mesh转换成Game mesh(整个3D人头);

根据Game mesh将原图uv展开创建一个粗糙纹理贴图,通过encoder decoder进一步细化至细化纹理;

还引入了一个光照predictor,预测光照系数;

最后,将预测的形状、纹理和照明系数一起提供给可微分渲染器,并强制渲染输出与输入照片类似。为了进一步改进结果,引入了两个鉴别器。

3D人脸数据集构建方法

1)给定一张人脸图像,通过预训练好的人脸分割网络检测皮肤区域

2)计算输入面部皮肤的平均颜色,并将平均皮肤颜色传输到模板纹理贴图(由游戏开发人员提供,是标准3D模型模板对应的标准UV模板)

3)根据变形的game mesh,将输入人脸图像展开到UV空间

4)使用Poisson blending(图像融合操作)将展开的贴图与UV模板混合,移除头发和眼镜等非皮肤区域,并尽可能使用对称性修补遮挡区域

人脸形状重建 (Face Shape Reconstruction)

第一步从输入图像预测3DMM形状和姿势系数。采用了Accurate 3D Face Reconstruction With Weakly-Supervised Learning: From Single Image to Image Set (thecvf.com)的方法,其他3DMM的方法同样适用。

形状转换(Shape Transfer)

形状传递模块的目的是将重建的3DMM网格传递到游戏网格。我们设计了基于Radial Basis Function(RBF)插值的形状传递模块。

损失函数

我们设计了损失函数来最小化渲染人脸图像和输入人脸照片之间的距离,以及精细纹理贴图和地面真实纹理贴图之间的距离。在渲染循环中,我们设计了四种类型的损失函数,即像素损失、感知损失、皮肤正则化损失和对抗性损失,以从全局外观和局部细节来衡量面部相似性。

像素损失(Pixel Loss)

渲染后的图像R和输入图像I,做pixel loss:

image-20220629153338519

GT的UV贴图G和细化的纹理贴图F,做pixel loss:

image-20220629154446786

感知损失(Perceptual Loss)

在感知层面减小重建图像的差异,做法遵循[Structure Guided Img Inpaint using Edge Prediction - 知乎 (zhihu.com)](https://zhuanlan.zhihu.com/p/147654092#:~:text=《EdgeConnect%3A Structure Guided Image Inpainting using Edge Prediction》,结构信息 中的 边缘信息 来实现图像的修复(类似Free-form的素描信息) 适用于: rectangular masks、irregular masks。)

image-20220629160619803

image-20220629160626723

皮肤正则化损失 (Skin Regularization Loss)

为了在整个面部产生恒定的肤色并去除高光和阴影,我们进行了两次损失来调整面部皮肤,即“对称损失”和“标准偏差损失”。与之前将皮肤正则化直接应用于顶点颜色的工作不同,我们对高斯模糊纹理贴图施加惩罚。这是基于一个事实,即一些个性化的细节(例如痣)并不总是对称的,并且与肤色无关。我们将对称损耗定义如下:

image-20220629160919834

我们将表皮标准偏差损失定义如下:

image-20220629161001203

对抗损失(Adversarial Loss)

为了进一步提高重建的逼真度,我们还在训练期间使用对抗性损失。我们引入了两个鉴别器,一个用于渲染人脸,另一个用于生成的UV纹理贴图。我们训练鉴别器来判断生成的输出是真是假,同时,我们训练网络的其他部分来愚弄鉴别器。对抗训练的目标功能定义如下:

image-20220629161825452

总损失定义

**image-20220629161847549 **

image-20220629161920596