琼恩·雪诺和龙母的孩子会长啥样?让StyleGAN告诉你

九州城娱乐网登陆

Jon En Snow和Dragon Mother的总裁是什么?让StyleGAN告诉你

来自blog.nanonets

作者:Ajay Uppili Arasanipalai

机器的核心编译

参与:张倩,拍摄

全友马上迎来了压轴。根据目前的情节,龙木和雪诺打结,孩子的早期出生可能没见过。但是仍然可以使用GAN来测试孩子的长寿。让我们来看看机器学习的“面对面技术”。

你有没有想过你最喜欢的电影或电视剧中人物的性别是否持久?例如,以下一个?

800858520bd74f2f908fba1909c2f8b6.jpeg

改善旅游权中“君君”性别的影响

呃.这太长了,对于男性詹姆斯来说还是有好处的。不过,Tony Weida StyleGAN的祝福,可以用GAN来探索神奇的维斯特洛斯大陆。

StyleGAN还可以产生以下令人毛骨悚然的微笑:

99b11001515a4ec98b4cf10e6b451949.jpeg

从单个图像中产生的笑容

但别担心。在使用神经网络预测Danielis和Jon的孩子的寿命之前,我们必须稳定并确保我们不做以下愚蠢的事情。

20c3012c931142729eef38558f0df695.jpeg

本文的目的是使用StyleGAN来预测龙母和雪儿的长度,因此我将简要介绍一下GAN。

如果您想了解更多关于GAN的信息,那么我建议您阅读在NeurIPS会议上发表的Ian Goodfellow 2016年论文。这是了解GAN的最佳来源之一(参与:深度| NIPS 2016最全面的库存:主题细节,前沿论文和下载资源(有场地轶事))。

八卦少言,输入话题。

生成对抗网络

大多数人喜欢将GAN的发电机和鉴别器与造假者和警察进行比较。

但我不认为这是最好的方法,特别是如果你已经沉迷于训练神经网络的狂热。

我认为产生对抗性网络最重要的部分是生成图像的东西,即生成器。

发电机

发电机是神经网络,但不是普通网络。

它使用一个称为转置卷积层的特殊层(有时称为反卷积)。

转置的卷积有时被称为小幅度卷积(我不知道如何称呼这个名称),这可以提高图像质量。

要真正理解转置卷积以及为什么深度学习社区似乎很难命名,我建议你查看Naoki Shibuya的文章:

--------- 0

简而言之,下面的动画总结了如何使用转置卷积将2x2矩阵提升为5x5矩阵:

23df4f7c061a4892b9ff68fe477dc04b.gif

图像生成器的最终架构如下:

ede688bcb32d4d2d879519d04bf80841.png

当然,如果没有关于卷积滤波器权重的合理概念,我们的生成器模型只能发出随机噪声。那太可怕了。

现在,我们需要一个损失功能,而不是一个装满图像的硬盘。

我们需要有一些东西告诉发电机它是对还是错,就是老师。

对于图像分类,以下丢失功能很好。当我们配对图像和标签时,我们可以这样做:

d48f259fb4164b94ab677e4f969cd140.png

当然,这取决于您的任务,有时您可能想要使用交叉熵损失或类似的其他功能。

关键是注释数据允许我们构造可微分损失函数。

我们的发电机网络也需要类似的东西

理想情况下,损失函数应该告诉我们最终图像的真实程度。因为一旦我们具有这种损失函数,我们就可以根据已知方法(即反向传播和梯度下降)使其最大化。

但不幸的是,在对数函数和余弦函数中,Sansa Stark和高斯噪声几乎是一回事。

2a77bee3daa7426581f0e09f0d1d5edb.jpeg

在图像分类的例子中,我们有一个简单的损失函数数学方程,但是这里我们没有类似的方程,因为数学不能构造一个可微函数来告诉我们生成的图像是真还是假。

我再说一遍:只需输入一个图像并返回一个数字,以指示生成的图像是真还是假(返回1为真,返回0为假)。

输入:图像;输出:二进制值。

了解?这不是一个简单的损失函数问题,而是一个完全不同的神经网络。

鉴别

区分真实和假图像的模型称为鉴别器网络。

c936a1b78427445f81fb31a9d4fdf410.jpeg

鉴别器是卷积神经网络,其被训练以预测输出图像是真还是假。如果认为图像为真,则输出“1”,否则输出“0”。

因此,从发生器的角度来看,鉴别器的作用相当于损失函数。

生成器需要以这种方式更新参数:当生成的图像传输到鉴别器时,输出值将接近0,并且生成器将相应地更新其参数。

154bea7b02e5419f9d89606eae72a7f9.jpeg

Yatheesh Gowda,来自以下

最后,你的GAN看起来像这样:

7f26b2c371a140b48df3e08c32e4f43d.jpeg

总结

总之,逐步创建基于GAN的图像生成器的过程如下:

生成器(具有转置卷积层的神经网络)生成图像,其中大部分看起来像垃圾。

鉴别器接收一堆图像,其中一些是真实图像(来自大数据集),一些是假图像(来自发生器)。

鉴别器执行二进制分类以预测哪个图像为真(输出“1”)而哪个图像为假(输出“0”)。此时,鉴别器的准确性与Tyreen的准确性相似。

鉴别器更新其参数以更好地对图像进行分类。

生成器使用鉴别器作为损失函数并相应地更新其参数以更好地生成逼真的图像以欺骗鉴别器。也就是说,让鉴别器判断伪造图像为0以更新发生器。

该过程一直持续到发生器和鉴别器达到平衡点,此时鉴别器不能确定由发生器产生的图像是真还是假。

现在,你可以扔掉鉴别器并拥有一个很好的生成器,它可以产生大部分不像垃圾的图像。

StyleGAN

深度学习领域发展迅速,自2014年以来,GAN创造的不仅仅是游戏中死亡的角色。

即使使用上述GAN培训框架,您生成的图像充其量也只是灰色的鳄梨(?)。

为了让GAN真正派上用场,我们需要一套好的技术。

如果你想征服GANseteros的七个王国,你可以参考GitHub回购,列出过去几年的主要GAN创新。但除非你像Imon的单身汉一样自由,否则你甚至无法完成其中的一半。

7ef9fd2511d54870877c31a02b9bade3.jpeg

因此,本文将重点介绍StyleGAN。

StyleGAN于2018年底由NVIDIA的研究团队提出。在本文中,Nvidia表明他们没有创造出一种新技术来稳定GAN培训或引入新架构。他们的技术不同于目前关于GAN损失函数,正则化和超参数的讨论。

也就是说,当人们在2045年发明巨大的BigGAN时,我将展示的东西仍然没有过时。

映射网络

通常,GAN中的生成器网络采用随机向量作为输入,并使用转置卷积将该随机向量转换为实际图像,如前所述。

该随机向量称为潜在向量。

底层矢量有点像图像的样式描述。此向量描述了它希望生成器绘制的图像。

如果您正在向法医艺术家描述嫌疑人,您将告诉他/她嫌疑人的一些“特征”,例如头发的颜色,面部毛发的特征以及眼睛之间的距离。

17b6019d239f43aabd8af4618ef59a93.jpeg

Kelly Sikkema

唯一的问题是神经网络不理解“头发颜色,面部毛发特征和眼睛距离”。他们只了解CUDA张量和FP16。

潜在向量是使用神经网络语言的图像的高级描述。

如果要创建新图像,则必须选择新矢量,这意味着您可以更改输出以更改输出。

但是,如果要精确控制生成图像的样式,则不是那么容易。由于无法控制生成器如何选择对可能的可能向量进行分布建模,因此无法精确控制生成图像的样式。

由于GAN学会将潜在的矢量映射到图像. GAN学会了这个问题的产生。 GAN可能不乐意遵循人们的指导方针。

您可以通过稍微更改潜在矢量中的数字来尝试更改生成面部图像的头发颜色,但输出图像可能具有眼镜,肤色甚至种族。

这个问题叫做特征纠缠。 StyleGAN旨在减少特征纠缠。

理想情况下,我们想要的是干净整洁的潜在空间表现。它允许我们对输入电位矢量进行细微更改,同时确保输出图像/面不会发生显着变化。

StyleGAN尝试采用的方式是包括一个神经网络,将输入向量映射到GAN使用的第二个中间潜在向量。

b8e0746baa704ce6a460b81a385f1b33.jpeg

具体来说,NVIDIA选择使用8层网络,其中一个512维向量作为输入,另一个512维向量作为输出。这些选择是任意的,您可以选择自己的参数。

假设添加此神经网络以创建中间隐藏向量允许GAN知道如何使用向量中的数字。我们通过专用的密集层传递它,而不是试图找出如何直接从转置卷积使用潜在的矢量。

映射网络应该减少特征纠缠(参见StyleGAN论文进行讨论)。

如果这个想法对你来说不够直观,那也没关系。您需要知道的是,使用“使用微神经网络将输入向量映射到中间潜在向量”非常容易,因此我们宁愿选择这种方法。

现在有一个映射网络,可以让我们更有效地利用潜在的空间,但还有很多工作要做,以便更好地控制生成的图像的样式。

自适应实例规范化(ADAIN)

回到向法医艺术家描述嫌疑人的例子,并考虑实际的描述过程。

你不能简单地说,“他是一个留着红胡子的高个子男人。他抓住了一家银行等。对不起警察,我必须赶上一个电视节目,我会在有空的时候找到你.” 。

b0ce17e9b6d9415994ba67a2dd19f3a8.jpeg

Andy Beales

你必须描述嫌疑人的外表,然后等待法医艺术家勾勒出嫌犯。然后,您将提供更多详细信息。此过程将持续到您可以共同创建嫌疑人的确切肖像。

换句话说,您是不断向艺术家灌输信息的特征和信息(即潜在的向量)的来源,它将您的描述转换为可见的可见事物(即生成器)。

然而,在传统形式的GAN中,潜在的向量不会“保持足够长”。一旦将潜在变量作为输入馈送到生成器,它将不会再次使用,这相当于将其打包。

StyleGAN模型解决了这个问题。它允许潜在的矢量“保持”更长时间。通过将潜在的矢量注入到每层的生成器中,生成器可以不断地参考“样式指南”,就像艺术家可以不断地问你问题一样。

1c2d0e8f12b040918ff5b853743896c3.jpeg

Thiago Barletta

现在让我们来看看更困难的技术部分。

这个比喻非常简洁,但粗鲁的电视迷和高瘦的红胡子银行劫匪并没有把自己变成数学方程式。

那么StyleGAN如何将潜在的向量注入到每个级别的生成器中?

答案是自适应实例规范化(AdaIN)。

AdaIN最初用于样式迁移,但后来在StyleGAN中使用。

AdaIN使用线性层(在原始论文中称为“学习仿射变换”),其将潜在向量映射为两个标量y_s和y_b。 “s”代表大小,“b”代表偏差。

使用这些标量,您可以按如下方式执行AdaIN。

09f5e6f020904cb79ef131e4237c06f2.png

这里f(w)表示学习的仿射变换,x_i是我们的应用程序AdaIN的实例,y是一组控制所生成图像的“样式”的两个标量(y_s,y_b)。

如果您之前使用过批量标准化,那么您可能会对此非常熟悉。但一个很大的区别是,均值和方差是逐个通道逐个样本计算的,而不是整个小批量计算,如下所示:

4168f7793f6d4e58917cf9fc053587dd.jpeg

83ce0a538d3142c69a77e5ba00d0e76c.png

将样式合并到生成器的隐藏层中的这种方法乍一看似乎很奇怪,但是最近的研究表明,在隐藏层激活函数中控制屈服和偏置参数(即y_s和y_b)会极大地影响质量。风格转换的图像。

在完成所有这些标准化之后,与仅使用一个输入电位矢量相比,我们可以更好地将样式信息注入到生成器中。

生成器现在有一个“描述”,知道你要构建哪个图像(借用映射网络),它可以随时引用这个描述(借用AdaIN)。但我们仍然可以做更多的工作。

学习不断的输入

如果你曾试图“只用5个步骤画一个迪士尼角色”但最终以失败告终,你知道画这些东西通常都是从大纲开始的。

8b2aad9c5ad94838b07005b6cd63b7ac.jpeg

请注意,您可以使用相同的基线轮廓绘制一堆不同的面部,然后慢慢添加更多细节。

这个想法也适用于法医艺术家。 Ta对面部有很好的把握,甚至不需要提供任何细节。

在传统的GAN生成器网络中,我们将潜在变量作为输入,并使用转置卷积将潜在变量映射到图像中。

潜在变量的作用是为我们生成的图像添加更改。通过采样不同的矢量,我们可以得到不同的图像。

如果我们使用常量矢量并将其映射到图像,我们每次都会得到相同的图像。那会很无聊。

cfc6a466b4ff4308aa80bea5b0a570d1.jpeg

但是,在StyleGAN中,我们已经有另一种将样式信息注入生成器 AdaIN的方法。

现在我们可以学习向量,为什么我们需要一个随机向量作为输入?事实证明,我们不需要它。

在传统的GAN中,变化和样式数据的唯一来源是我们稍后不会触及的输入潜在向量。但正如我们在前面的章节中所看到的,这是非常奇怪的并且不够有效,因为发生器不能再“看到”这个潜在的向量。

StyleGAN通过使用自适应实例规范化将潜在变量“注入”到每个层来解决上述问题来解决许多这些问题。但这也带来了一些额外的影响。我们不需要从随机向量开始,我们可以学习向量,因为任何可以提供的信息都将由AdaIN提供。

更具体地说,StyleGAN选择学习常数作为输入(4x4x512张量),您可以将其视为具有512个通道的4x4图像。同样,这些尺寸完全是任意的,您可以在实践中使用您想要的任何尺寸。

fc5ceb10327e455599869768c63fd47d.png

这背后的原理与迪士尼公主圈相同:发电机可以学习适用于所有图像的一般“轮廓”。这样它就开始从大纲中学习,而不是从头开始学习。

这是StyleGAN。事实上,还有其他聪明的技术可以让您生成更逼真的图像。

现在,您可能了解所有GAN中最新GAN的核心。

风格组合

还记得我怎么说将潜在的载体分别注入每一层?

那么,如果我们没有注入一个,但注入两个潜在的载体?

想一想。我们的生成器中有很多转置卷积和AdaIN层(NVIDIA实现有18层,但这完全是任意的)。在每个AdaIN层,我们分别注入一个潜在的向量。

b68974bc1d3449f791f88156da6cfbc7.jpeg

因此,如果每层的注入是独立的,我们可以将不同的潜在向量注入不同的层。

这个想法并不坏,NVIDIA认为如此。他们的团队使用GPU并尝试使用不同的潜在向量来对应“面部”的不同面。

实验步骤设定如下:使用3种不同的电位矢量,当单独使用这些矢量时,将产生3个真实的脸部图像。

然后他们将这些载体注入3个不同的点:

在“粗糙”层中,隐藏表示占用的空间非常小,从4x4到8x8。

在“中”层中,隐藏层大小为中等,从16 x 16到32 x 32.

在“精细”层中,隐藏表示层的空间也很小,从64 x 64到1024 x 1024.

你可能会想,“上帝,这些精美的层真的占用了太多的层。从64到1024?太多。间距不应该更均匀吗?”

事实上,情况并非如此。如果您阅读了论文《Progressive Growing of GANs for Improved Quality, Stability, and Variation》,您就知道生成器将非常快速地获取信息,而较大的层主要是对前几层的输出进行细化和锐化。

然后,他们尝试从初始位置稍微移动三个潜在的矢量,然后看看图像如何定性地改变。

随机噪音

在看完NVIDIA使用StyleGAN做这么多的乐趣后,我很抱歉让你失望,但我绝对不会保留最好的。

如果你生成了很多伪造的脸部图像并以新的方式混合它们,如果你找到一个最喜欢的图像怎么办?

您可以使用该图像生成一百个副本,但它太无聊了。

因此,我们可以对同一图像进行一些小的更改。发型或雀斑可能略有变化。无论如何,这种微小的变化。

b039fa043dfb41edba8211b9004f7ac3.jpeg

当然,您也可以执行类似普通GAN的操作,在底层矢量中引入一些噪音:

31096c50d061443386b4e19b3f5aa700.png

G是发电机,是一个向量,其组件是随机抽样的小数字。

但我们有StyleGAN,顾名思义,我们可以控制图像风格。

就像我们逐层注入潜在的矢量一样,我们可以为噪声做到这一点。我们可以选择为粗糙层,中间层,精细层或三者的任意组合添加噪声。

StyleGAN噪声以像素为单位添加,这是有意义的,因为向图像添加噪声而不是干扰底层矢量更常见,更自然。

ae16dafe98c34fe28a09b4ddb9fbc2ee.jpeg

在权利巡演中制作角色时我没有使用噪音,因为我只想制作一些高质量的图像。

使用StyleGAN探索您最喜欢的权利角色

现在你已经知道了StyleGAN是如何工作的,现在是时候磨刀了,不,并尽力充分利用它:预测Jon和Danielis的孩子。

现在,我想向所有人介绍Djonerys(根据这两个名字的组合,机智?):

5d774e51a23a4efeb9688ec5fc2cff9d.jpeg

嘿,右下角的那个是Djonerys。

帅哥,你好吗?乍一看,龙母和乔恩出生了。眉毛之间的阴影是两个人的阴影,比如高高的尖鼻子,像一个不尴尬的眉毛,眼睛的眼睛是如此美丽.

打电话,一个美丽的少年,似乎有一点阳刚之气比他少。小编赌十,小妖是龙母和乔恩的孩子,鉴定完成了。

作为帝国的下一个守护者,Djonerys基于上面讨论过的风格混合技术。

最后,为了庆祝Westeros成立8周年,我们将使用动画来展示Jon多年来的成长。

869ed0a5656f49c9b95c88b0746278f9.gif

不同年龄的Jon由StyleGAN生成

只要你有角色的潜在表现,你就可以做点什么。例如,创造一个孩子的卓戈奥(龙的母亲)或创建一个女性版的詹姆斯。

事实上,小编想要尝试的是Bran Stark和Aria Stark。我还记得刚出现在权利游戏中的小布兰。白色,温柔而柔嫩的玉雪很可爱,就像一个女娃娃。但是在经历了后期的苦难后,布兰变得越来越粗糙。虽然仍然很漂亮,但它并不那么精致。我想知道使用上一张照片生成Bran的女版本是什么感觉,我猜它一定是一张非常可爱的女孩纸。

而Aria Stark,那个爬墙的野孩子的外表,显然是一位高贵的女士,但脾气就像一个狂野的男孩。后期发展成为女性刺客并不奇怪。而且越是中立,对男性总统的版本就越好奇吗?

你最喜欢游泳的人是谁?你最想尝试哪种反性别角色?现在放手尝试,七个帝国掌握在你手中。

原文链接:

看看更多