要说最近哪部剧最红,我说是《隐秘的角落》没人有意见吧?看了这部片子,全国观众除了被男主张东升提醒爬山有风险之外,片中的另一个场景也颇让人印象深刻,容易让人产生共鸣,那就是张东升看到自己二十年后的样子。这华丽丽的地中海造型,感觉秦昊老师帅气的脸吼起来也有点吃力了......作为一名脑力劳动者,张东升年纪轻轻就秃了头。生活中,普通人在残酷的现实中,由于压力、焦虑问题,秃头也绝对可以在困扰现当代中青年人的难题中名列前茅,尤其是对于熬夜是家常便饭的程序员小哥哥、小姐姐们。这个难题是如此容易引发共鸣,以至于 B 站 著名 Up 主 MarsLUL 也注意到了这点,并自制了一个秃头生成器,想要一睹二十年后,或许用不了二十年后自己的发型稍有变化的样子,大可以动手试试。首先,来看一下 MarsLUL 制作的秃头生成器效果:效果还是挺神奇的。话不多说,还是那句话,我们更关心效果实现背后的技术原理。MarsLUL 提到,该生成器的思路和代码大部分来源于一篇 Medium 教程《Hairstyle Transfer — Semantic Editing GAN Latent Code》(https://medium.com/swlh/hairstyle-transfer-semantic-editing-gan-latent-code-b3a6ccf91e82)。那我们就先来看看,这篇文里提到的 Hairstyle Transfer 是怎么实现的。简单来说,这篇文章里,作者探索了使用隐式空间(latent space),改变输入图像发型的方法。当然,这个项目也是基于 GAN。大家都知道,GAN 的基本原理是通过对抗训练学习从潜在分布到真实数据的非线性映射。但问题是,通常隐式空间和语义属性之间的关系是未知的。例如,隐式代码如何确定生成的发型,比如说刘海、颜色等。另外,很难判断这些属性之间彼此是否有关联。在这篇文章中,作者提出的关键方法是探索如何在经过训练的 GAN 模型(例如 PG GAN 和StyleGAN)的隐式空间中编码单个或多个发型的语义。他们借用了 InterFaceGAN 论文中提出的概念:对于任何二进制语义,在潜在空间中都存在一个超平面作为分隔边界。基于这个想法,他们设法通过线性变换来解码属性表示。文中,作者对每个属性使用线性超平面,将其法线向量作为输出面相对于目标属性连续变化的方向。在 StyleGAN 空间中,他们找到了莱昂纳多 · 迪卡普里奥年轻时的图像隐代码,绘制了与刘海超平面正交的方向,将隐代码的位置沿该方向移动,创建男神不同刘海状态图片。停!Stop!我不看!只要我暂停按得快,男神就永远是我心中的男神......类似地,MarsLUL 在视频里中也简单介绍了秃头生成器的制作方法。他说到,市面上大部分生成器都是由GAN 的神经网络来实现的,简单来说,拿图片生成来做例子,你可以理解成它有两个互相对抗的部分,一部分生成图片,一部分分辨图片的真假,不断训练,一直训练到辨别不出生成的图片是真是假,目标也就实现了。StyleGAN 就是一个用来生成图片的 GAN 的实现,输入一个隐式向量,它可以凭空生成一张人物照片。第一步,就是想办法找到可以生成输入照片的隐式向量,这可以通过训练一个残差网络来实现。直接使用 StyleGAN-Encoder 将照片转化成一个隐式向量,从而生成一个 StyleGAN 版本。这样生成的图像与源图像会有细微的差别,但是八九不离十。第二步,招待控制秃顶这个变量的方法,这里用到的是训练一个 SVM 二分器,以喂给 StyleGAN 的隐式向量为输入,以这个隐式向量生成的图片是否秃顶为输出,训练模型。找到这个二分器之后,只需要根据对应方向现行微调隐式向量,就可以控制生成图片的秃顶程度了。使用名人图片数据集 CelebA 作为训练数据,它已经很友好地将秃顶名人做好分类。经过 5 小时左右的训练,模型终于训练好了!最后一步,拍一张帅帅的照片,生成对应的隐式向量,按对应方向移动就可以生成图像了。话说生发后的秦昊老师,貌似真有那么一丢丢像张杰?!向脱发的方向移动,生成视频中头发开始逐渐稀疏......其实这也提醒了大家熬夜的危害,为了自己的头发,没事别熬夜玩手机......https://www.bilibili.com/video/BV1ot4y197MG?from=search&seid=2383888781525915306
关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/