人脸照片自动生成游戏角色_ICCV2019论文解析
Face-to-Parameter Translation for Game Character Auto-Creation
论文链接:
摘要
角色定制系统是角色扮演游戏(rpg)的重要组成部分,玩家可以根据自己的喜好而不是使用默认模板来编辑游戏中角色的面部表情。提出了一种根据输入的人脸照片自动生成游戏角色的方法。通过求解一组具有物理意义的人脸参数的优化问题,在人脸相似性度量和参数搜索范式下,建立了上述“艺术创造”过程。为了有效地最小化创建的面部和真实面部之间的距离,专门设计了两个丢失功能,即“区分丢失”和“面部内容丢失”。由于游戏引擎的渲染过程是不可微的,因此进一步引入生成网络作为“仿真器”来模拟游戏引擎的物理行为,使得所提出的方法可以在神经风格的传输框架下实现,并且可以通过梯度下降来优化参数。实验结果表明,该方法在全局外观和局部细节上都能实现人脸照片和游戏角色之间的高度相似性。我们的方法已经在去年的一个新游戏中部署,现在已经被玩家使用了超过100万次。
1. Introduction
针对上述问题,本文提出了一种根据玩家输入的人脸照片自动生成游戏中角色的方法,如图1所示。我们通过求解一组人脸参数的优化问题,在人脸相似性度量和参数搜索范式下,建立了上述“艺术创造”过程。与以往生成三维人脸网格的三维人脸重建方法[2,34,37]不同,我们的方法通过预测一组具有明确物理意义的面部参数来为骨骼驱动的模型创建三维profile。在我们的方法中,每个参数控制每个面部组件的单个属性,包括位置、方向和比例。更重要的是,我们的方法在创建结果的基础上支持额外的用户交互,玩家可以根据自己的需要对自己的产品进行进一步改进。
由于游戏引擎的渲染过程是不可微的,因此设计了一个生成网络G作为“仿真器”来模拟游戏引擎的物理行为,使得所提出的方法可以在神经风格的传输框架下实现,并且可以通过梯度下降来优化面部参数,因此,我们将我们的方法称为“面对参数(F2P)”转换方法。
由于本方法中的人脸参数搜索本质上是一个跨域的图像相似性度量问题,我们利用深度CNN和多任务学习的优势,具体设计了两种损失函数,即一个“辨别损失”和一个“面部内容损失”——前者对应于全局面部外观的相似性度量,后者则更关注局部细节。由于所有的CNN设计,我们的模型可以在统一的端到端框架中优化。这样,通过最小化被创建的人脸和真实人脸之间的距离,可以将输入的照片有效地转换为真实的游戏角色。我们的方法自2018年10月开始在一款新游戏中部署,现在已经提供了超过100万次的服务。
本文的主要贡献如下:
1)提出了一种端到端的人脸参数转换和游戏角色自动生成方法。据我们所知,在这个问题上,以前的工作很少。
2)由于游戏引擎的渲染过程是不可微的,我们通过构造一个深度生成网络来模拟游戏引擎的行为,从而引入一个仿真器。这样,梯度可以平滑地反向传播到输入端,从而通过梯度下降来更新面部参数。
3)两个损失函数专门为跨域面部相似性测量而设计。提出的目标可以在多任务学习框架下共同优化。
2. Related work
神经风格转换
从一幅图像到另一幅图像的样式转换一直是图像处理领域的一项具有挑战性的任务[10,11]。近年来,神经风格转换(NST)在风格转换任务方面取得了巨大的突破[10-12],其中,深度卷积特征的集成使得从输入图像中显式分离“内容”和“风格”成为可能。大多数最新的NST模型都是为最小化以下目标而设计的:
单目三维人脸重建
单目三维人脸重建的目的是从单个二维人脸图像中恢复人脸的三维结构。该组的传统方法是3D变形模型(3DMM)[2]及其变体[3,32],其中3D面部模型首先参数化[14],然后优化以匹配2D面部图像。近年来,基于深度学习的人脸重建方法已经能够实现从二维图像到三维网格的端到端重建[8,34,37–40]。然而,由于这些方法不易在三维网格上编辑,且生成的人脸参数缺乏明确的物理意义,因此不利于用户交互。与我们类似的工作是Genova的“可微渲染器”[13],他们通过使用可微光栅直接渲染参数化的3D人脸模型。在这篇文章中,我们介绍了一个更加统一的解决方案来区分和模拟一个游戏引擎,不管它的渲染器类型和三维模型结构如何,使用一个CNN模型。
生成性对抗网络(GAN)
除上述方法外,GAN[15]在图像生成方面取得了很大的进展[1,30,31,33],并且在图像样式传输任务方面显示了巨大的潜力[4,20,28,44,46]。与我们的方法类似的方法是捆绑输出合成(Tied Output Synthesis,TOS)[41],它利用对抗性训练创建基于人类照片的参数化化身。然而,这种方法是为了预测离散属性而不是连续的面部参数。
此外,在RPGs中,学习从2D照片直接预测大量3D面部参数会导致参数模糊的缺陷,因为从2D到3D的内在对应是一对多的映射。因此,我们不再直接学习预测连续的人脸参数,而是在NST框架下,通过优化输入的人脸参数来最大化所生成的人脸与真实人脸之间的相似度,从而实现人脸生成。
3. Method
我们的模型由一个模仿者G(x)和一个特征抽取者F(y)组成,前者的目的是通过接受用户定制的内容来模拟游戏引擎的行为面部参数x和生成“渲染”面部图像y,而后者确定可以在其中执行面部相似性测量以优化面部参数的特征空间。我们方法的处理流程如图2所示。
3.1. Imitator
我们训练一个卷积神经网络作为模仿者,以确定游戏引擎的输入输出关系,从而使角色定制系统具有可微性。我们在我们的模仿者G(x)中采用了DCGAN[33]的类似网络配置,它由八个转置卷积层组成。我们的模仿者的结构如图3所示。为了简单起见,我们的模仿者只对面部模型的正面视图使用相应的面部定制参数。我们将模仿者的学习和预测作为一个标准的基于深度学习的回归问题,目的是最小化游戏中渲染图像和生成图像在原始像素空间中的差异。训练模仿者的损失函数设计如下:
在训练过程中,我们随机生成20000张具有相应面部定制功能的人脸 参数使用游戏引擎“正义”。80%的人脸样本用于训练,其余样本用于验证。图4示出了我们的模仿者的“呈现”结果的三个示例。这些图像的面部参数是手动创建的。由于训练样本是从面部参数的单一分布中随机生成的,因此对于大多数字符来说可能会显得很奇怪(请参阅我们的补充材料)。尽管如此,从图4中我们仍然可以看到,生成的面部图像和渲染的地面真实度具有高度的相似性,甚至在一些具有复杂纹理的区域(例如头发)中也是如此。这说明我们的模仿者不仅在低维人脸流形中提取训练数据,而且还学习去耦合不同人脸参数之间的相关性。
3.2. Facial Similarity Measurement
一旦我们得到一个训练有素的模仿者G,面部参数的生成基本上成为 人脸相似性度量问题。由于输入的人脸照片和渲染的游戏角色属于不同的图像域,为了有效地度量人脸的相似度,我们设计了两种损失函数作为全局人脸外观和局部细节的度量。我们没有直接在原始像素空间计算它们的损失,而是利用神经风格的传输框架,在由深层神经网络学习的特征空间计算损失。参数的生成可以看作是仿真器流形上的一个搜索过程,在此过程中,我们的目标是找到一个最佳点y∗=G(x∗),使y与参考面照片yr之间的距离最小,如图5所示。
除了区分损失之外,我们还通过基于从面部语义分割模型中提取的面部特征计算像素级误差来进一步定义内容损失。人脸内容的丢失可以看作是对两幅图像中不同人脸成分(如眼睛、嘴和鼻子)的形状和位移的约束。由于我们更关心面部内容的建模,而不是日常图像,因此面部语义分割网络被专门训练来提取面部图像特征,而不是使用在ImageNet数据集上预先训练的现成模型[7]。我们建立了基于Resnet-50[17]的面部分割模型,在该模型中,我们移除了完全连接的层,并将其输出分辨率从1/32提高到1/8。我们在著名的Helen人脸语义分割数据集[23]上训练该模型。为了提高人脸语义特征的位置敏感度,我们进一步利用分割结果(类概率图)作为特征图的像素权重来构造位置敏感的内容丢失函数。我们的面部内容缺失定义如下:
3.3. Implementation Details
模仿者
在我们的仿真器中,卷积核大小被设置为4×4,每个转置卷积层的步长被设置为2,这样每次卷积后特征映射的大小将加倍。在每个卷积层之后,除了输出层之外,我们的模拟器中都嵌入了批处理规范化和ReLU激活。此外,我们使用SGD优化器进行训练,批大小为16,动量为0.9。学习率设为0.01,学习率衰减设为每50学时10%,500学时后停止训练。
人脸分割网络
我们使用Resnet-50[17]作为分割网络的主干,去掉其完全连接的层,并在其顶部添加额外的1×1卷积层。此外,为了提高输出分辨率,我们将Conv 3和Conv 4的步幅从2改为1。我们的模型在ImageNet[7]上进行了预训练,然后在Helen人脸语义分割数据集[23]上进行了调整,像素交叉熵损失。我们使用与模仿者相同的训练配置,只是学习率设置为0.001。
面部参数
面部参数的尺寸D对于“男性”设置为264,对于“女性”设置为310。在这些参数中,208个是连续的值(如眉毛的长度、宽度和厚度),其余的是离散的(如发型、眉毛风格、胡须风格和唇膏风格)。这些离散参数被编码为一个热向量,并与连续参数串联。
优化
至于第二阶段的优化,我们设α为0.01,最大迭代次数为50,学习率μ为10,每5次迭代衰减率为20%。
面对齐
在将输入照片输入特征提取程序之前,执行面部对齐(使用dlib库[22])以对齐输入照片,并且我们使用渲染的“平均面部”作为其参考。
4. Experimental Results and Analysis
我们用50张脸部特写照片构建了一个名人数据集来进行实验。图7示出了一些输入照片和生成的面部参数,从这些参数中,游戏引擎可以在多个视图中渲染游戏中的角色,并且该角色与输入照片具有高度的相似性。有关更多生成的示例,请参阅我们的补充材料。
4.1. Ablation Studies
在我们的数据集上进行了融合研究,以分析该框架的每个组成部分的重要性,包括1)辨别损失和2)面部内容损失。
1) 鉴别损失
我们在我们的数据集上运行我们的方法w/或w/o,帮助区分损失,并进一步采用Gatys的内容损失[12]作为基线。我们使用人脸识别模型[42]输出的余弦距离计算每张照片和相应生成结果之间的相似性,如图8所示。当我们将判别损失结合起来时,我们可以观察到显著的相似性改进。
2) 面部内容丢失
图9示出了具有/或不具有帮助面部内容丢失的生成的面部的比较。为了得到更清晰的图像,提取了人脸的语义图和人脸成分的边缘。在图9中,边缘地图的黄色像素对应于参考照片的边缘,而红色像素对应于生成的面。当我们应用面部内容丢失时,我们可以观察到输入照片和生成的面部之间像素位置的更好的对应关系。 3) 主观评价
为了定量分析这两种损失的重要性,我们采用了Wolf等人[41]的主观评价方法。具体来说,我们首先在我们的数据集上生成50组具有不同相似性度量损失函数配置(仅L1、仅L2和L1+L2)的字符自动创建结果。然后,我们让15名非专业志愿者在每组中选出最好的作品,其中三个字符是随机排列的。
最后,输出字符的选择率被定义为志愿者选择该字符作为其组中最佳字符的百分比,并使用总体选择率来评估结果的质量。统计数据显示在表1中,这表明这两项损失对我们的方法都是有利的。
4.2. Comparison with other methods
我们将我们的方法与一些流行的神经风格转换方法进行了比较:全局风格方法[12]和局部风格方法[16]。虽然这些方法并不是专门为生成3D字符而设计的,但是我们仍然比较因为它们在多个方面与我们的方法相似。
首先,这些方法都是基于深度学习特征来度量两幅图像的相似性。
其次,这些方法中的迭代优化算法都是在网络输入端进行的。如图10所示,我们可以看到,通过将图像样式与内容分离并重新组织它们,很难生成生动的游戏角色。这是因为生成的图像并不是完全从游戏角色流形中采样的,因此很难在RPG环境中应用这些方法。
我们还将我们的方法与流行的单目三维人脸重建方法:3DMM-CNN[39]进行了比较,如图10的右侧所示。我们自动创建的游戏角色与输入有很高的相似性,而3DMM方法只能生成具有相似面部轮廓的面具。
为了定量评估生成的人脸和游戏中风格参考之间的相似性,我们使用模式得分(MS)[43]和Frechet起始距离(FID)[18]作为度量标准。对于每个测试图像,我们从模拟训练集中随机选择一个图像作为参考,并计算整个测试集的平均MS和FID。上述操作重复5次,以计算表中所列最终平均值和标准偏差。表2还记录每个方法的运行时。与其他方法相比,该方法具有更高的风格相似度和良好的速度性能。
4.3. Robustness and limitation
我们在不同的模糊和光照条件下进一步评估了我们的方法,并且我们的方法对这些变化具有鲁棒性,如图11所示。最后一组给出了我们方法的一个失败案例。由于L2是基于局部特征的,所以我们的方法对姿态变化很敏感。
4.4. Generation with artistic portraits
不仅限于真实照片,我们的方法还可以为一些艺术肖像生成游戏人物,包括 素描图像和漫画。图12示出了生成结果的一些示例。虽然图像是从完全不同的分布中收集的,但是由于我们的方法是基于面部语义而不是原始像素来度量相似度,因此仍然可以获得高质量的结果。
5. Conclusion
本文提出了一种基于输入人脸照片的游戏角色自动生成方法。通过求解一组具有物理意义的人脸参数的优化问题,给出了在人脸相似性度量和参数搜索范式下的创建过程。实验结果表明,该方法在全局外观和局部细节两方面都达到了较高的生成相似度和鲁棒性。