写点什么

B 站 Up 主自制秃头生成器,一键 get 张东升同款发型,网友:秃的太过真实

发布于: 2020 年 07 月 08 日
B站Up主自制秃头生成器,一键get张东升同款发型,网友:秃的太过真实

最近《隐秘的角落》可谓火爆全网,剧中秦昊扮演的张东升一角更是深入人心。如果盘点张东升的名场面,肯定少不了这一幕:“想看看二十年后的自己吗?



两边蜘蛛网,中间溜冰场,作为一名数学老师,张东升年级轻轻已经秃成这样。虽然剧中是化妆特效,不过脱发已经成为年轻人的普遍焦虑,尤其是从事科研、程序员等高压行业的年轻人,好像秃顶已成为注定的宿命,有多少人曾想象过自己二十年后会秃成什么样?


在看完《隐秘的角落》后,B 站 Up 主 MarsLUL 决定用代码来实现自己的“梦想”。MarsLUL 是谷歌的一名在职程序员,曾在加利福尼亚大学(UC Irvine)学习计算机相关专业。



在最近上传的一则视频中,他利用 StyleGAN 自制了一款秃顶生成器,可以从发量浓密的现在分分钟看到二十年后发量稀疏的自己。先来看一下效果如何?



再来看 MarsLUL 的,这画面简直无法接受。



网友们的评论更是扎心:仿佛看到了我的未来。

UP 主暂时没有分享出全部代码,但如果你也有脱发焦虑,想看看二十年后的自己,不妨来如法炮制一下,预知一下自己未来秃头后的颜值(误)。

(可能有些筒子,不用模拟,已经秃了)


详细教程


MarsLUL 提到,该生成器的思路和代码大部分来源于一篇 Medium 教程《Hairstyle Transfer — Semantic Editing GAN Latent Code》。


教程地址:https://medium.com/swlh/hairstyle-transfer-semantic-editing-gan-latent-code-b3a6ccf91e82



这里借用了汤晓鸥、周博磊等人在论文《Interpreting the Latent Space of GANs for Semantic Face Editing》提出的「InterfaceGAN」。


潜码估计

首先,我们将输入图像发送到预训练的残差网络中,以便在 StyleGAN 中进行初始潜码估计。然后把这个估计值发送给生成器,这让我们对原始输入图像有一个初步的猜测。对此图像我们可以将预训练的图像分类器应用于特征提取。同时,我们将对输入图像也进行同样的特征提取。


然后在特征空间中,我们执行梯度下降,将特征向量的 L2 损失最小化并更新潜码估计(红色箭头部分)。



现在,我们就可以在 StyleGAN 潜在空间内查找任何图像。


带边界语义编辑


在进行编辑之前,我们需要寻找可以在潜在空间中分离二元属性的特定边界。

每个边界对应一个头发属性。比如:

发型:波浪 / 直发、刘海;

颜色:黑色 / 棕色 / 金色 / 灰色;

发际线:后退发际线;

面部毛发:胡子、鬓角。

但是如何找到边界?首先要做潜在空间分离


最终使用 10 个分别于属性匹配的分类器来生成 2 万个潜码和 score pairs。我们在头发属性上训练独立线性 SVM,然后在验证集上进行评估,最终准确性可以达到 80%。



把它们放在一起,对于每个输入图像,我们先在 StyleGAN 潜在空间中找到其特定位置,然后将其按照特定方向移动,以进行语义编辑。



我们对每个属性使用线性超平面,将其法线向量作为输出面相对于目标属性连续变化的方向。例如在上图中,我们在 StyleGAN 空间中找到了年轻的莱昂纳多 · 迪卡普里奥的图像隐代码,绘制了与刘海超平面正交的方向,将隐代码的位置沿该方向移动。这样我们就可以创建不同刘海状态的,迪卡普里奥的图片了。



最后,说到条件边界(Conditional Boundary),它也在 InterfaceGAN 中被引入。通常,许多属性会相互耦合,比如发际线与人的年龄相关,长发更多出现在女性照片中,胡须仅出现在男性面部。但是把不同属性区分开非常重要。


小编奉上完整视频链接,看 UP 主亲自示范,希望大家都能成为发量浓密的程序猿。

https://www.bilibili.com/video/BV1ot4y197MG?from=search&seid=2383888781525915306


整理了一波之前发布的资源,无套路领取!




发布于: 2020 年 07 月 08 日阅读数: 860
用户头像

公众号:程序员生活志 2020.06.15 加入

专属程序员圈子!

评论 (1 条评论)

发布
用户头像
厉害了
2020 年 07 月 08 日 12:02
回复
没有更多了
B站Up主自制秃头生成器,一键get张东升同款发型,网友:秃的太过真实