近日,国外Uber软件工程师开发并上线了一个网站thispersondoesnotexist.com,意为该人并不存在。网站浏览者每刷新一次网站就会生成一个逼真的人脸,而这些人并不是现实中真实存在的。
该网站背后的机器学习和预训练模型技术源于NVIDIA的研究项目StyleGAN(A Style-Based Generator Architecture for Generative Adversarial Networks),论文已于2018年12月在线发表。
StyleGAN是基于GAN的生成对抗网络,借用了风格迁移的思路重新设计的。英伟达官方还开源了StyleGAN的代码,参见https://github.com/NVlabs/stylegan。
StyleGAN 架构
StyleGAN不止能生成人脸,英伟达还提供了猫、汽车、卧室的预训练模型。
实际效果展示:
人物自然,背景自然,边缘又自然。足以骗过我这个普通人类的肉眼了。
输入两张图,图A决定生成人物的性别,年龄,头发长度,以及姿势;一张决定其他一切因素:比如肤色、发色、衣服颜色等等。
这样,就可以把图B的一部分人物特征,迁移到图A上了:
不过,人脸的朝向和表情,还是A的。
就算人种发生剧烈变化,也丝毫不会违和。你看,把非裔人类的脸部特征“移植”给四位白种人,嘴唇的厚度、鼻子的形态,以及额头,都有明显的变化。
这是粗糙尺度 (Coarse Styles) ,也是三种尺度中最大规模的调整,会涉及脸部朝向的变化,脸型和发型也是在这里调整的。
然后看看中间尺度 (Middle Styles) ,调整仅限于面部特征和发色发量了,姿势、发型、脸型都不会有明显变化。
再来就是精细尺度 (Fine Styles) ,只是调整图像的配色,几乎不会给人物变脸了。
StyleGAN就像风格迁移算法一样,把一张图像,看做许多风格 (Styles) 的集合。
每种风格都会在一个不同的尺度 (Scale) 上控制图像的效果:
· 粗糙 (Coarse Styles) :姿势、头发、脸型。
· 中度 (Middle Styles) :面部特征、眼睛。
· 精细 (Fine Styles) :配色。
三者组合在一起,才是最终的生成结果。
调节不同“风格”,就可以在不同尺度上调节人脸图片。
代码实现参见https://github.com/NVlabs/stylegan
论文:https://arxiv.org/abs/1812.04948