[NIPs19]Face-to-Parameter Translation for Game Character Auto-Creation

摘要

角色定制系统是角色扮演类游戏(RPG)的重要组成部分,玩家可以根据自身喜好对他们游戏中角色的面部外观进行编辑,而不使用默认模板。本文提出的方法能够根据输入的人脸照片自动创建玩家的游戏角色。基于面部相似性度量和参数搜索范式,并通过解决大量具有物理意义的人脸参数的优化问题,研究者制定了上述「艺术创造」过程。

[NIPs19]Face-to-Parameter Translation for Game Character Auto-Creation_第1张图片

方法概览。该方法可基于输入人脸图像自动生成游戏角色,它基于人脸相似性度量和参数搜索机制(对大量具备物理意义的面部参数执行搜索)实现。之后用户可以根据需要自行微调生成游戏角色的面部参数。

[NIPs19]Face-to-Parameter Translation for Game Character Auto-Creation_第2张图片

该方法的处理流程。模型包括模拟器 G(x) 和特征提取器 F (y)。前者模拟游戏引擎的行为,以用户定制的面部参数 x 为输入,生成「渲染后」的人脸图像 y。后者则决定了人脸相似性度量可以执行的特征空间,以搜索最优的面部参数集。

推荐:本文是网易伏羲实验室的一篇论文,是 GAN 在游戏领域一个非常有创意的应用。利用人脸图像生成游戏中的角色人脸参数。据论文介绍,这个方法已在网易的游戏中使用了百万次。

消息来源:机器之心7 Papers | 周志华等NeuralPS2019接收论文;网易用GAN建立游戏角色


介绍

角色定制系统是角色扮演游戏(rpg)中的一个重要组件,玩家可以根据自己的喜好(例如流行歌星甚至自己)编辑游戏中角色的配置文件,而不是使用默认模板。在最近的rpg中,为了提高玩家的沉浸感,角色定制系统变得越来越复杂。因此,角色定制过程对大多数玩家来说是费时费力的。例如,在《侠盗猎车手》(Grand Theft Auto)在线、《黑暗灵魂3》(Dark Souls III)和《正义3》(Justice3)中,为了根据真实的人脸照片创建一个具有理想面部外观的游戏角色,玩家必须花费数小时手动调整数百个参数,即使是经过大量的练习。一个标准的工作流程,为创建字符的脸在rpg开始配置大量的面部参数。然后游戏引擎将这些用户指定的参数作为输入并生成3D人脸。可以说,游戏角色定制可以看作是单眼3D人脸重建的一个特例[2, 34, 37]或风格迁移[10 12]问题。图像的语义内容和三维结构的生成一直是计算机视觉领域的难题。近年来,随着深度学习技术的发展,计算机利用深度卷积神经网络(CNN),可以自动生成具有新样式的图像[12,16,25],甚至可以从单个人脸图像中生成三维结构[34,37,39]。

但遗憾的是,上述方法不能直接应用于游戏环境中。原因有三。首先,这些方法并不是为了生成参数化的字符而设计的,这对于大多数游戏引擎来说都是非常重要的,因为它们通常接受游戏角色的自定义参数,而不是图像或3D网格。其次,这些方法对用户交互不友好,因为大多数用户很难直接编辑三维网格或栅格化图像。最后,给定一组用户指定参数的游戏引擎呈现过程是不可微的,这进一步限制了深度学习方法在游戏环境中的适用性。

针对上述问题,本文提出了一种基于玩家输入人脸照片自动创建游戏内角色的方法,如图1所示。我们通过求解一组较大的人脸参数优化问题,在人脸相似性度量和参数搜索范式下制定了上述艺术创作过程。与以往产生三维人脸网格的三维人脸重建方法[2,34,37]不同,我们的方法通过预测一组具有明确物理意义的人脸参数,为骨驱动模型创建三维轮廓。在我们的方法中,每个参数控制每个面部组件的单独属性,包括位置、方向和比例。更重要的是,我们的方法在创建结果的基础上支持额外的用户交互,允许玩家根据他们的需求对他们的配置文件进行进一步的改进。作为一个游戏引擎的渲染过程不是可微,生成网络G设计作为一个模仿者模仿游戏引擎的物理行为,因此该方法可以实现神经风格传输框架下和面部参数可以优化利用梯度下降,因此我们将我们的方法称为Face-to-Parameter(免费)的翻译方法。

作为面部参数搜索的方法本质上是一种跨域图像相似性度量问题,我们利用深CNN和多任务学习专门设计两种损失函数,即有识别力的损失和面部内容损失前的图像相似度度量方法对应的全球面部外观和后者更多关注当地的细节。由于所有CNN的设计,我们的模型可以在统一的端到端框架下进行优化。通过这种方式,输入的照片可以通过最小化创建的人脸和真实人脸之间的距离,有效地转换为游戏中真实的角色。自2018年10月以来,我们的方法已经被部署在一款新游戏中,现在已经提供了超过100万次的服务。

我们的贡献总结如下

1)提出了一种基于端到端的人脸-字符转换和游戏角色自动生成方法。据我们所知,关于这一主题以前很少有人做过工作。

2)由于游戏引擎的渲染过程是不可微的,我们引入了一个模仿者,通过构建一个深度生成网络来模仿游戏引擎的行为。通过这种方法,梯度可以平滑地反向传播到输入端,从而通过梯度下降来更新面部参数。

3)针对跨域cross-domain人脸相似度测量,专门设计了两个损失函数。提出的目标可以在多任务学习框架下联合优化。


相关工作

Neural style transfer:从一幅图像到另一幅图像的样式转换一直是图像处理中一个具有挑战性的任务[10,11]。近年来,神经风格转换(Neural Style Transfer, NST)在风格转换任务上取得了巨大的突破[10 12],其中深度卷积特征的集成使得将内容和风格与输入图像显式分离成为可能。最近的大多数NST模型都是为了最小化以下目标而设计的。

目前的望远镜方法可分为两组:全局方法[5, 9, 12, 19, 21, 26, 29, 35, 36]和本地方法[6, 25, 27],前者措施风格相似的基于全球特征统计,而后者执行缀块匹配,以更好地保护当地的细节。为了综合全局方法和局部方法的优点,最近提出了混合方法[16]。然而,这些方法是专门为图像到图像的转换而设计的,而不是骨骼驱动的三维人脸模型,因此不能应用于ingame环境。

Monocular 3D face reconstruction:单眼三维人脸重建的目的是在单个二维人脸图像中恢复人脸的三维结构。这个群体的传统方法是3D morphable model (3DMM)[2]及其变体[3,32],其中3D face model首先参数化[14],然后优化匹配二维人脸图像。近年来,基于深度学习的人脸重建方法已经能够实现从二维图像到三维网格的端到端重建[8,34,3740]。然而,这些方法对用户交互并不友好,因为在三维网格上编辑并不容易,而且生成的人脸参数缺乏明确的物理意义。与我们的工作类似的是Genova的可微渲染器[13],他们直接渲染参数化的三维人脸模型通过使用可微光栅。在本文中,我们引入了一个更加统一的解决方案,即使用CNN模型来区分和模拟一个游戏引擎,无论它的渲染器类型和3D模型结构如何。

Generative Adversarial Network (GAN):除了上述方法外,GAN[15]在图像生成方面也取得了很大的进展[1,30,31,33],并在图像风格传递任务方面显示出了很大的潜力[4,20,28,44,46]。与我们的方法类似的方法是绑定输出合成(bind Output Synthesis, TOS)[41],它利用对位训练创建基于人类照片的参数化化身。然而,该方法是用来预测离散属性而不是连续的面部参数。此外,在rpg中,学习直接从一张2D照片中预测一组较大的3D人脸参数会导致参数模糊的缺陷,因为2D到3D的内在对应关系是一对多的映射。因此,我们没有直接学习预测连续的人脸参数,而是通过优化输入的人脸参数,将生成的人脸与真实人脸的相似性最大化,从而在NST框架下构建人脸生成框架。


方法

我们的模型由一个模仿者G(x)和一个特征组成器F (y),前者旨在模仿行为的游戏引擎通过user-customized面部参数x和生产“呈现”的面部形象,而后者决定了面部的特征空间相似性度量可以执行优化面部参数。我们方法的处理流程如图2所示。

1. Imitator

我们训练一个卷积神经网络作为我们的模仿者来适应游戏引擎的输入-输出关系,使角色定制系统可微。我们在我们的模仿者G(x)中采用了与DCGAN[33]类似的网络结构,它由8个转置卷积层组成。我们的模仿者的结构如图3所示。为了简单起见,我们的模仿者G只适合具有相应面部定制参数的人脸模型的前视图。

[NIPs19]Face-to-Parameter Translation for Game Character Auto-Creation_第3张图片

我们将模仿者的学习和预测框架为一个标准的基于深度学习的回归问题,我们的目标是最小化游戏中渲染的图像和原始像素空间中生成的图像之间的差异。模拟训练的损失函数设计如下

x代表输入面部参数G (x)代表了模仿者的输出,yˆ=引擎(x)代表了游戏引擎的渲染输出。我们使用l1损失函数而不是l2,因为l1可以减少模糊。输入参数x从多维均匀分布u(x)中采样。最后,我们的目标是:

在训练过程中,我们随机生成20000张人脸,并进行相应的人脸定制参数使用引擎的游戏公正。80%的人脸样本用于训练,其余的用于验证。图4显示了我们的模仿者渲染结果的三个例子。这些图像的面部参数是手动创建的。由于训练样本是从人脸参数的统一分布中随机产生的,所以对于大多数的角色来说可能看起来很奇怪(请参阅我们的补充资料)。尽管如此,从图4中我们仍然可以看出,生成的人脸图像和渲染的地面真实度具有很高的相似性,即使在一些纹理复杂的区域,例如头发,也是如此。这表明,我们的仿形器不仅能拟合低维人脸流形的训练数据,还能学习解耦不同人脸参数之间的相关关系。

[NIPs19]Face-to-Parameter Translation for Game Character Auto-Creation_第4张图片

2. Facial Similarity Measurement

一旦我们得到一个训练有素的模仿者G,人脸参数的生成本质上就成为一个人脸相似性度量问题。由于输入的人脸照片和渲染的游戏角色属于不同的图像域,为了有效地度量人脸相似性,我们设计了两种损失函数作为全局人脸外观和局部细节的度量。我们没有直接计算它们在原始像素空间中的损失,而是利用神经风格的传输框架,在深度神经网络学习的特征空间上计算损失。参数的生成可以看作是对仿真器流形的搜索过程,我们的目标是找到一个最优点y = G(x),使y与参考人脸照片yr的距离最小,如图5所示。

[NIPs19]Face-to-Parameter Translation for Game Character Auto-Creation_第5张图片

Discriminative Loss

我们引入了一个人脸识别模型F1来测量两张脸的整体外观,例如脸型和整体印象。我们遵循的感知距离的概念,已广泛应用于各种任务,如图像风格转移[12],超分辨率(21日24),和特性可视化[45],并假设不同的同一个人的肖像,他们的功能应该有类似的表现。为此,我们利用目前最先进的人脸识别模型Light cn -29 v2[42]提取两幅人脸图像256-d的人脸嵌入,然后计算它们之间的余弦距离作为相似性。损失函数是一种判别损失函数,它可以预测真实照片中的人脸和模仿者是否属于同一个人。上述过程的判别损失函数定义如下

其中,两个向量a和b之间的余弦距离定义为:

Facial Content Loss

在识别损失的基础上,通过对人脸语义分割模型中提取的人脸特征进行像素级误差计算,进一步定义了内容损失。在两幅图像中,人脸内容的丢失可以看作是对不同人脸成分的形状和位移的约束,例如眼睛、嘴巴和鼻子。由于我们更关心人脸内容的建模而不是日常图像的建模,因此人脸语义分割网络是专门训练来提取人脸图像特征的,而不是使用现成的模型,这些模型是在ImageNet数据集[7]上预先训练的。我们建立了面部分割模型基于Resnet-50[17],我们删除了它的全连接层,并将其输出分辨率从1/32提高到1/8。我们在著名的Helen face语义分割数据集[23]上训练了该模型。为了提高人脸语义特征的位置敏感性,我们进一步利用分割结果(类智能概率图)作为特征图的像素权值来构造位置敏感的内容丢失函数。面部内容丢失定义如下:

在F2代表了从输入图像映射到面部语义特征,ω代表pixel-wise重量的特性,例如,ω1 eye-nose-mouth地图。我们模型的最终损失函数可以写成L1和L2两个目标的线性组合

参数α是用来平衡两个任务的重要性。

[NIPs19]Face-to-Parameter Translation for Game Character Auto-Creation_第6张图片

我们的特征提取器如图6所示。我们使用梯度下降法求解如下优化问题:

其中x = [x1, x2,…, xD]表示待优化的人脸参数,yr表示输入参考人脸照片。我们方法的完整优化过程总结如下

第一阶段训练模仿者G、人脸识别网络F1和人脸分割网络F2。

第二阶段固定G, F1, F2,初始化和更新面部参数x,直到达到迭代次数的最大值:

实验细节:

Imitator:在我们的仿真器中,将卷积核大小设置为4 4,将每个转置卷积层的步长设置为2,这样在每次卷积后,feature map的大小将会增加一倍。除输出层外,在每个卷积层之后,我们的仿真器都嵌入了批处理归一化和ReLU激活。此外,我们使用SGD优化器进行批大小= 16和动量= 0.9的培训。学习速率设置为0.01,每50个周期学习速率衰减10%,500个周期后停止训练。

Facial segmentation network:我们使用Resnet-50[17]作为我们的分割网络的骨干,删除其完全连接的层,并在其顶部添加额外的11个卷积层。此外,为了提高输出分辨率,我们在Conv 3和Conv 4处将步长由2改为1。我们的模型在ImageNet[7]上进行预训练,然后在Helen face语义分割数据集[23]上进行微调,得到像素方向的交叉熵损失。我们使用与我们的模仿者相同的训练配置,只是学习率设置为0.001。

Facial parameters:男性面部参数的维数D设置为264,女性设置为310。在这些参数中,208个为连续值(如眉长、眉宽、眉厚),其余是离散型(如发型、眉型、胡须型、口红型)。这些离散参数被编码为一个热向量,并与连续向量连接。由于单热编码难以优化,我们使用softmax函数对这些离散变量进行平滑处理,方法如下:

其中D0表示离散参数的一次热编码维数。β> 0控制的平滑程度。我们设置相对较大的β,β= 100,加快优化。我们使用“平均人脸”初始化人脸参数x,即将连续部分的所有元素设为0.5,离散部分的所有元素设为0。关于面部参数的详细描述,请参考我们的补充资料.

Optimization:至于优化在第二阶段中,我们设置α为0.01,最大数量的迭代50,学习速率µ10及其衰变率为20% 5迭代。

Face alignment:人脸对齐(通过使用dlib库[22])在将输入的照片输入到特征提取器之前对其进行对齐,我们使用呈现以“平均脸”为参照。


实验结果分析

我们构建了一个包含50张面部特写照片的名人数据集来进行实验。图7显示了一些输入照片和生成的面部参数,游戏引擎可以在多个视图下呈现游戏内的角色,并且与输入照片高度相似。更多生成的示例,请参阅我们的补充资料。

[NIPs19]Face-to-Parameter Translation for Game Character Auto-Creation_第7张图片

1. Ablation Studies

在我们的数据集上进行消融研究,分析所提出框架的每个组件的重要性,包括1)鉴别损失和2)面部内容损失。

1)有识别力的损失Discriminative loss。在判别损失的帮助下,对数据集w/或w/o运行我们的方法,并进一步采用Gatys的内容损失[12]作为基线。利用人脸识别模型[42]输出的余弦距离计算每张照片与生成的结果之间的相似性,如图8所示。当我们对判别损失进行积分时,可以看到明显的相似性改进。

[NIPs19]Face-to-Parameter Translation for Game Character Auto-Creation_第8张图片

2)面部内容丢失。图9显示了生成的人脸在w/或w/o帮助下人脸内容丢失的对比。为了获得更清晰的图像,提取了人脸语义图和人脸成分的边缘。图9中,边缘图的黄色像素对应参考图片的边缘,红色像素对应生成的人脸。当我们应用面部内容丢失时,我们可以观察到输入的照片和生成的人脸之间的像素位置有更好的对应关系。

[NIPs19]Face-to-Parameter Translation for Game Character Auto-Creation_第9张图片

3)主观评价。为了定量分析这两种损失的重要性,我们采用了Wolf等人的主观评价方法。具体地说,我们首先在数据集中生成50组具有不同配置的相似性度量损失函数(仅L1、L2和L1+L2)的字符自动创建结果。然后,我们让15名非专业志愿者在每组中选出最好的作品,其中三个角色是随机排列的。最后,将输出字符的选择比例定义为志愿者在其组中选择的最佳字符所占的百分比,并使用总体选Discriminative loss

[NIPs19]Face-to-Parameter Translation for Game Character Auto-Creation_第10张图片

2. Comparison with other methods

我们将该方法与一些流行的神经风格传递方法:全局风格方法[12]和局部风格方法[16]进行了比较。虽然这些方法不是专门为生成3D字符而设计的,但我们仍然进行了比较因为它们在许多方面与我们的方法相似。首先,这些方法都是基于深度学习特征来测量两幅图像的相似性。其次,这些方法中的迭代优化算法都是在网络的输入端进行的。如图10所示,我们可以看到,通过将图像样式与内容分离并重新组织,很难生成生动的游戏角色。这是因为生成的图像并不是完全从游戏角色流形中采样的,因此很难在RPG环境中应用这些方法。我们还将我们的方法与常用的单眼三维人脸重建方法3DMM-CNN[39]进行了比较,如图10右侧所示。我们自动创建的游戏角色与输入具有很高的相似性,而3DMM方法只能生成具有相似面部轮廓的面具。

[NIPs19]Face-to-Parameter Translation for Game Character Auto-Creation_第11张图片

为了定量评估生成的人脸与游戏内风格参考之间的相似性,我们使用了Mode Score (MS)[43]和Frechet Inception Distance (FID)[18]作为度量标准。对于每一幅测试图像,我们从模拟训练集中随机选取一幅图像作为其参考,计算平均MS和FID整个测试集。上述操作重复5次,计算最终均值和标准差,如表2所示。每个方法的运行时也被记录下来。与其他方法相比,该方法具有较高的风格相似性和较好的速度性能。

[NIPs19]Face-to-Parameter Translation for Game Character Auto-Creation_第12张图片

3. Robustness and limitation.

我们进一步评估了我们的方法在不同的模糊和光照条件下,我们的方法证明了对这些变化的鲁棒性,如图11所示。最后一组给出了我们方法的一个失败案例。由于L2是在局部特征上定义的,所以我们的方法对姿态变化很敏感。

[NIPs19]Face-to-Parameter Translation for Game Character Auto-Creation_第13张图片

4. Generation with artistic portraits

我们的方法不仅可以生成真实的照片,还可以生成一些艺术肖像的游戏人物,包括素描图像和漫画。图12给出了一些生成结果的例子。虽然这些图像的分布完全不同,但是由于我们的方法是基于人脸语义而不是原始像素来度量相似性,所以我们仍然获得了高质量的结果。

[NIPs19]Face-to-Parameter Translation for Game Character Auto-Creation_第14张图片


结论

本文提出了一种基于输入人脸照片的游戏角色自动生成方法。通过求解一组具有物理意义的人脸参数的优化问题,建立了人脸相似度度量和参数搜索范式下的模型。实验结果表明,该方法无论在全局外观还是局部细节上,都能较好地实现输入人脸照片与游戏中呈现的角色之间的生成相似性和鲁棒性。

附件网络参数

[NIPs19]Face-to-Parameter Translation for Game Character Auto-Creation_第15张图片

[NIPs19]Face-to-Parameter Translation for Game Character Auto-Creation_第16张图片

 

引用

[NIPs19]Face-to-Parameter Translation for Game Character Auto-Creation_第17张图片

[NIPs19]Face-to-Parameter Translation for Game Character Auto-Creation_第18张图片

你可能感兴趣的:(最新前沿论文)