原标题: 基于生成对抗网络(GAN)的“换脸”工程
来源:AI研习社 链接:https://www.yanxishe.com/TextTranslation/2241
直到最近,我才开始探索“深度学习”的全部内容,并在“计算机视觉”中遇到了这些有趣的想法和项目。
即使我的知识和经验有限,我希望这可以帮助其他一些初学者对这个领域感兴趣,并尝试一些令人兴奋的新事物
我遇到了一个精巧的YoutTube频道,名为Arxiv Insights(简称AI,是巧合吗?我想不是),在这个频道上,我发现其中一个视频非常有趣,它学习如何通过生成对抗网络来变脸 ! 这个故事是对我从上述视频中学到的知识的一个总结,我希望到此结束时您对这个想法有一个很好的了解,并且可能想尝试一下。
上图中的人在现实生活中不存在,他们是计算机生成的,我的朋友,这是GAN的力量。 如果这引起了您的注意,请继续阅读以了解更多信息。
()
第1部分, GAN:是什么?
GAN要做的任务很简单,就是从头开始生成数据,而这种数据甚至可以欺骗人类。
该模型由Ian Goodfellow及其同事于2014年发明,由两个神经网络组成(生成器和鉴别器),它们相互竞争,从而产生了一些真实的内容。
两个网络的目的可以概括为尽可能多地学习输入数据库的基础结构,并使用该知识来创建相似的内容,该内容适合所有参数以适合同一类别。
如上所示,输入的是人脸,它准确地了解了使人脸是的人的本质。根据这种理解,它会生成随机的人脸,否则这些人脸也可能是真实的。
让我们详细了解一下:
GAN的基本架构
该图像是GAN的过于简化的体系结构,但它捕获了该概念的完整本质。
这是在GAN的一次迭代中发生的情况:
一,生成器:
生成器获取随机噪声矢量作为输入
通过生成器后,该生成器执行多次转置卷积以对噪声进行上采样以生成图像。
二。鉴别器:
它从实词样本(真实样本)或生成的图像(假样本)中获取随机输入。
顾名思义,无论输入是来自“真实样本”还是“假样本”,它只有一项工作。
作为用户,我们知道它是来自真实样本还是虚假样本,并且利用此知识,我们可以反向传播训练损失,以使鉴别器更好地完成其工作。
但是我们知道,生成器也是神经网络,因此我们可以一直反向传播到随机样本噪声,从而帮助生成更好的图像。这样,鉴别器和生成器都可以使用相同的损失函数。
诀窍在于在训练过程中平衡这两个网络。如果做得正确,鉴别器将学会区分甚至是很小的异常,同时生成器将学会产生最真实的输出。
对GAN工作的技术了解:
生成器和鉴别器处于极小化极大算法的游戏中。
生成器试图最小化真实图像与伪图像之间的差距,以欺骗鉴别器。
鉴别器试图最大化对真实图像的理解,以便区分假样本。
在上面的图像中,D(x)只是图像为“真实样本”图像的概率。
这里有另一个函数G(z),除了生成器的输出z是随机潜在输入之外,什么也没有。生成图像的概率来自“真实样本”,由鉴别器计算为D(G(z))
对于鉴别器,我们想要:
正确识别真实样本图像,因此D(x)必须接近1
同时,要正确识别假样本图像,因此D(G(z))必须接近1
对于生成器:
生成器与D(x)的精确度无关,只有D(G(z))的精度必须被标识为实数样本,因此必须尽可能接近1。
GAN的目标功能
只有在两个网络之间取得良好的平衡,这种损失函数才是GAN架构的基础,我们才能获得高性能的生成器和鉴别器。
对于那些有兴趣详细了解GAN的人:
这是Ian Goodfellow的原始论文链接。
这里是“ GAN-GAN系列(从开始到结束)”的链接,这是深入了解GAN及其应用的最佳资料之一和应用者Jonathan Hui。
第二部分,有趣的部分
该模型背后的原理:
训练Generatie模型后,其潜在空间已充分了解了数据集的底层结构
在我们的示例中,我们将使用的模型已经了解了人脸的结构。 该模型是由NVIDIA研究人员开发的StyleGAN。
我们的目标是利用这种结构并为操纵它找点乐趣。
你应该知道,在像素域中处理图像非常繁琐且困难,因此,我们将在潜在空间中处理图像。
然后,我们的第一个障碍来到了,是什么? 对于任何给定的图像,我们能否找到将始终在图像中的潜矢量? 那是:
流程:
<spanmicrosoft yahei',="" 微软雅黑,="" 宋体,="" 'malgun="" gothic',="" meiryo,="" sans-serif;="" font-size:="" 14px;="" font-style:="" normal;="" font-variant:="" font-weight:="" letter-spacing:="" line-height:="" 18px;="" orphans:="" auto;="" text-align:="" start;="" text-indent:="" 0px;="" text-transform:="" none;="" white-space:="" widows:="" word-spacing:="" -webkit-text-stroke-width:="" background-color:="" rgb(255,="" 255,="" 255);="" display:="" inline="" !important;="" float:="" none;"="">对于我们的第一个障碍,下面的解决方案效果最好:
通过生成器生成随机面孔
使用这些图像作为数据集,训练ResNet从源图像到其潜在的矢量(粗略的初始估计)
我们将使用经过预训练的ResNet,可以找到查询图像的隐形分类码(粗略估算)
然后,以该图像为起点,计算相对于“原始图像”的L2损失,并相应地更新潜矢量代码(同时固定发生器本身的权重)
这是第二部分的视频-更新 隐形分类码 估算:
在视频的后半部分,由于 隐形分类码 估算值已收敛到查询图像的码,因此更改几乎看不到。
第3部分。变身时间到了!
好吧,也许不是这个。
设定:
我们需要另一个数据集,然后再次生成随机面孔数据库
我们应用预训练的属性分类器来获取诸如“性别”,“年龄”,“微笑”等属性。
这样做是为了使我们可以将潜在代码映射到图像属性以找到模式。
我们需要了解,StyleGAN的潜在空间是一个高度复杂的512维空间。
GAN的潜在空间
在这里,每个点都代表一张图片,我们需要在该空间中找到一个图案。例如,在该空间中沿特定方向移动将如何更改生成的图像?
可以观察到,在此潜在空间中,这些属性可以很容易地通过“线性超平面”来分离。
沿该平面取法线将为我们提供改变该属性的方向。
最后,我想展示另一个示例,其中我更改了Emma Watson图像的“ 年龄”属性。
这是我尝试过的GitHub代码库的链接,视频是其实际输出。
再次非常感谢Arxiv Insight涵盖了如此有趣的话题。
继续,自己动手尝试一下。
发起:唐里 校对:唐里 审核:邓普斯•杰弗
参与翻译(2人):
lakeZhang、卡萝•亚当斯
英文原文:Face-Morphing using Generative Adversarial Network(GAN)
一THE END一
免责声明:本文来自互联网新闻客户端自媒体,不代表本网的观点和立场。
合作及投稿邮箱:E-mail:editor@tusaishared.com