FamilyGan:预测我们未来孩子的模样

重磅干货,第一时间送达

你是否想知道自己未来的子女是长什么样子的?

这篇文章中,我们将介绍FamilyGan,用于查看未来子女得样子。这是在DataHack 2019期间所做的一个竞赛项目,并赢得了Lightricks奖项。

一开始只是抱着开玩笑的心态提出这个想法,但在阅读了一些相关文献之后,感觉这确实可以尝试动手去实现一下。

数据集

在众多数据集中,大部分是的父子或母女的图片,只有少部分是一家三口的。所以最终我们选择使用一个名称叫TSKinFace的数据集,该数据集含有1500张图片,且其中都包含有完整的家庭成员:父亲,母亲,儿女。

TSKinFace数据集其中一样本

我们之所以认为该数据集不错,不仅因其属性齐全,而且所有图片都经过预处理:裁剪,缩放和归一化。

接下来,我们所要做的就是考虑一个适合该任务的神经网络结构。

架构

对于生成图片,我们绝对不能忽视大名鼎鼎的GAN。

GAN被广泛用于生成图片。它由2个神经网络,生成器网络和判别网络组成。前者学习从latent space(输入噪声的一个特征空间,也可以理解为一种有效的信息表示)映射到数据分布,而后者则将生成器产生的候选对象与真实数据分布区分开。

生成网络的目的是"欺骗"鉴别器,因此它会不断改进,直到能够创建出与真实分布最相似接近的数据为止。

这种架构非常普遍,以至于许多人甚至对它进行了特定的预训练。在我们的案例中,StyleGan是英伟达提出的一种基于传统GAN来改进的人脸转换架构。

图片中的人都不是真实的,均由StyleGan生成

GAN Latent Space

但是生成一张随机的脸并不是我们要去做的,我们需要做的是生成特定孩子的脸!

让我们继续深入研究一下StyleGan,该结构是学习如何将随机向量参数映射到生成的面部信息。但是,如果我们可以反过来呢?如果我们可以将给定的人脸信息映射到其代表向量参数中又会有什么样的结果呢?

ICCV19顶会中就有一篇名为Image2StyleGAN的论文比较详细地讨论了这个问题。

Image2StyleGAN展示图

训练从映射到随机人脸的随机向量开始。然后,用反向传播方法计算生成的人脸和原始人脸之间的差异。最终,经过足够的迭代,我们会得到代表即将生成面部的向量信息。这样,我们可以拍摄一张特定的人脸并将其映射到其StyleGan向量当中。

最后,该向量数据成功地转变成一张全新的人脸面孔!

假设所有图像都有性别标签,而且我们训练一个线性分类器将男性和女性线性分开。 所以决策边界是对这些图像进行分类的最佳线性曲面。

这就跟正交向量有关了。 如下图所示,如果我们将一个点向其所归属类别的正方向移动,则结果很可能更加偏向于第一类(男性较多),同理相反的话,则偏向第二类(女性较多)。所以此正交向量可以被视为“性别方向”。

人脸性别向量散点图

(红色箭头正方向移动会使您更像男性,而向负方向移动会使您更像女性)

当然!这只是对人脸面部信息进行调节的其中一个属性而已,Image2StyleGAN中对属性类别的使用则更加广泛丰富。您可以使生成对象的年龄更大或更小,更快乐或更悲伤,甚至可以戴或不戴墨镜。总共有28个已知的语义方向。

笑容转换

年龄转换

性别转换

最近已经有大量研究人员对GAN latent vector进行衍生开发,例如GANSpace、StarGAN。 此外,还有许多专门针对面部领域的研究,例如StyleRig、Editing in Style和ALAE。

FamilyGan

现在继续深入研究我们所需要做的!

将所有图像映射到StyleGan属性类别中,然后训练模型来依据父母的属性信息预测孩子的属性信息。

我们首先将所有图像(父母和孩子)的信息都映射到StyleGan潜在向量中。 映射后,剩下要做的就是训练一个模型,该模型可以根据父母的latent vector预测孩子的latent vector。

在36小时的“炼丹”过程中,我们测试了许多不同的模型。有的模型表现效果不错,但有的简直可以称得上是“灾难”。

模型

1.平均提取:简单地提取父母两者潜在向量的平均值,降低“年龄”属性比重,增强“性别”属性的随机性。结果的表现效果出奇的好,难以被超越。

2.线性回归:我们在latent space使用了512×18的向量,创建一个层网络就需要2×(512×18)×(512×18)个参数,接近1.7亿个!这是一个不推荐的方法。

3.转换+平均提取:首先分别学习父母双方的属性特征并且转换出两个不同特征的结果,再平均提取这两个不同结果,综合出一个结果。这也是相当不错的结果。

4.特征模型:给出全部的28个属性方向,然后学习出每个属性特征的权重。结果是相当糟糕!

5.面部信息的损失距离:原始与预测的孩子人脸间有明显的损失距离。当我们知道通过28个属性无法改变人脸的特征,但孩子原始人脸可以表示成28维。然后 可以计算出到孩子原始人脸的损失距离。可效果不尽人意。

我们依旧鼓励读者继续去寻找其他更好的模型!

结果展现

这是我们测试集中的一个家庭,这是用他们的数据集生成的女儿!可爱吗?

左边是测试集中的一个家庭,右边是生成的人脸。

我们也亲自动手尝试了一下!

Lior和他的妻子与他们的新生儿

Noam和他的妻子与他们的新生儿

Lior和Noam的孙女

交流群

(0)

相关推荐