TL-GAN:可以定制人脸图像的高质量模型

来自:论智(微信号:jqr_AI),作者:Binng
来源:Medium,原文链接

人类可以轻松地描述一幅图像,在机器学习中,这种任务就被看成是判别分类/回归问题,即从输入的图像中预测特征标签。机器学习技术最近的进步中,尤其是深度学习模型都开始解决这类任务,有些能达到甚至超过人类水平.

但是,根据文字叙述生成逼真的图片难度较大,需要进行很多年的图形设计训练。在机器学习领域,这是一种生成任务,比判别式任务更有挑战性,因为生成模型需要根据更小的输入产出更丰富的信息。

虽然生成模型在创建时有很多困难,但是在以下几种情况下非常有用:

  • 内容创造:比如一家广告公司可以自动生成吸引人的产品图像、一位时尚设计师可以让算法生成他所希望的鞋子样式,再从中挑选符合要求的作品,或者一项游戏可以让玩家根据简单的描述创造逼真的人物形象。

  • 根据内容智能编辑:有了这种模型,摄像师只需要点击鼠标就可以改变图像的面部表情、皱纹和发型;电影制作者可以将阴天背景改为晴天。

  • 数据增强:自动驾驶公司可以生成合成特殊场景的逼真图像,增强训练数据集;信用卡公司可以合成特殊的欺诈数据,增强欺诈探测系统中的数据集。

在这篇文章中,我将介绍我们最近的研究成果,称为透明隐空间GAN(TL-GAN),它扩展了目前先进的模型,提出了一种新的交互方式。关于GAN的基础介绍,论智君就不在此详细展开了,我们曾经写过很多相关文章,感兴趣的读者可以阅读:从零学习:生成敌对网络(GAN)入门指南

控制GAN模型的输出


GAN的最初形式和其他的几种主流形式(例如DC-GAN和pg-GAN)都是无监督的学习模型。经过训练后,生成网络会将随机噪声看作输入,生成类似照片一样的逼真图像,基本上辨别不出到底是训练集中的样本,还是真实图像。然而,我们无法进一步控制产生的图像的特点,在很多应用中,用户想根据自己的偏好定制样本(例如年龄、头发颜色、面部表情等等),最好还能对这些特征不断调整。

为了实现这种控制生成的效果,很多GAN的变体都做出了尝试,它们大致可以分为两类:风格迁移网络条件生成器

风格迁移网络

以CycleGAN和pix2pix为代表的风格迁移网络是将图像从一个领域转移到另一个领域的模型(例如将马变成斑马,将素描画编程带有颜色的图像)。结果是,我们无法在两个独立的状态之间对一种特征进行调整(例如在面部添加一点点胡子)。同时,一个网络只能应用于一种类型的迁移,所以如果要调整10个特征,就要建立10个不同的网络。

条件生成器

以条件GAN、AC-GAN和Stack-GAN为代表的条件生成器是可以在训练期间,互相联合学习带有特征标签的图像的模型,从而生成带有定制特点的图像。所以当你想要在生成过程中添加新的可调整特征时,你就需要重新训练整个GAN模型,这就需要花费大量计算资源和时间。除此之外,整个过程只需要一个数据集,其中要包含所有自定义特征标签。

我们的TL-GAN模型,从新的角度控制生成任务,解决了现有的问题。它可以让用户用单一网络逐步调整一个或多个特征。另外,用户也可以在一个小时内添加新的可调整的特征。

TL-GAN:控制合成和编辑的高效方法

将隐藏空间透明化

英伟达的pg-GAN是可以生成高分辨率人脸图像的的模型,生成的1024×1024图像都是由隐藏空间中的一个512维度的噪声向量决定所有的特征。所以,如果我们能理解隐藏空间表示什么,即让它透明化,我们就能完全掌握生成过程。

在使用pg-GAN进行预训练之后,我发现隐藏空间有两个优点:

  • 空间中的大部分点都能生成可靠的图像;

  • 它非常连贯,说明隐藏空间中两点之间的插值会在引起对应图像之间平稳的过渡。

知道了这两个特点,我认为在隐藏空间中是可以找到可预测特征方向的。如果能实现的话,我们可以利用这些方向的单位向量作为特征轴,控制生成过程。

方法:特征轴的提出

为了找到隐藏空间中的特征轴,我们会在隐藏向量z和特征标签y之间建立连接,其中会用到在成对的数据(z,y)上训练的监督式学习方法。目前的问题就成了如何得到成对的数据。现存的数据集只含有图像x和它们对应的特征标签y。

连接隐藏向量z和特征标签y的方法

可用方法

其中一种方法是从现有的带有标签的数据集中计算图像xreal相对应的隐藏向量。但是GAN网络在计算zencode=G^(-1)(x_real)的时候比较困难,所以这一方法难以实现。

另外一种方法是从随机隐藏向量z中生成合成图像x_gen,这里的问题是,合成的图像是没有标签的,我们也不能轻易地使用可用标签数据集。

为了解决这一问题,关键就是训练一个独立的特征提取器——模型y=F(x),利用现有的带有标签的图像数据集(xreal,yreal),之后将特征提取网络F与GAN的生成器G结合。完成后,我们可以预测合成图像xgen的特征标签ypred,从而在z和y之间建立起连接。

现在我们有了成对的隐藏向量和特征,我们可以训练一个回归模型y=A(z),来得出控制图像生成过程的所有特征轴。

TL-GAN模型架构

如图,TL-GAN模型中包含五步:

  1. 学习分布:选择一个训练好的GAN模型和生成器网络,我选的是经过训练的pg-GAN,它能生成质量最高的人脸图像。

  2. 分类:选择一个预训练特征提取模型(可以使一个卷积神经网络或其他计算机视觉模型),或者用经过标记的数据集训练自己的特征提取网络。

  3. 生成:生成多个随机隐藏向量,将它们输入到训练过的GAN生成器中,生成合成图像,然后用一个训练过的特征提取器,为每张图像生成特征。

  4. 联系:用一个通用的线性模型(GLM)在隐藏向量和特征之间执行回归。回归斜率就是特征轴。

  5. 探索:从一个隐藏向量开始,移动到其他特征轴上,检查这是如何影响图像的生成的。

这一过程效率很高,一旦我们有了预训练GAN模型,确定特征轴只需要在一个GPU上花费一个小时的时间。

结果

让我们看看这一模型的效果如何。首先我测试了特征轴能否被用于控制相对应的生成图像特征之上。结果如下,这一过程非常不错!图像的性别、年龄都能得到“完美”改变:

但上面的案例显示出了一个缺点,当我想要减少胡子的数量时,不可避免地会让人脸更加“女性化”。这一问题是由于性别特征和胡须特征是相关联的,改变其中一个就会导致另一个发生改变。

为了解决这一问题,我用到了线性代数方法,将代表胡须的轴投射到与性别轴正交的其他方向,有效地消除了二者的相关性。

最后用动图了解下TL-GAN在控制图像生成过程时的速度:

推荐↓↓↓
人工智能与大数据
上一篇:神经网络的叛离:32年前从心理学与生理学分离的瞬间 下一篇:相关性≠因果:概率图模型和do-calculus