动漫、艺术作品里的人物,他们极具张力的形象往往给人们留下深刻的印象。
但如果说现在,你也可拥有他们的同款造型呢?
没错,依旧来自是“无所不能”的对抗生成网络(Generative Adversarial Network,以下简称为 GAN)。
只要把你 pick 好的形象“投喂”进去,接下来妆发的工作交给它就行了:
红的、黄的、蓝的、白的…… 发色随意改变,风格也随之变换。
这就是来自快手的 BlendGAN,而且这项工作还被顶会 NeurIPS 2021 接收。
而与以往“变妆”GAN 不同的是,BlendGAN 号称能驾驭的风格是 —— 任意!
是有种“百变大咖秀”的那味了。
于是乎,这个项目成功在网上引起了众多网友的围观。
如何丝滑变妆?
那么,怎样拥有动漫人物同款造型呢?
很简单,只需要准备 2 张照片:
-
一张生活照
-
一张动漫人物造型
现在在 Hugging Face 里已经有了在线可玩的 demo。
最简单的办法就是把这两张照片上传进去,等待一会儿就可以出结果了。
当然,稍微“技术”点的方法就是自己跑一遍程序了。
就在这两天,BlendGAN 在 GitHub 上也已开源。
首先需要下载一些预训练模型,包括 BlendGAN 模型、PSP 编码器模型和 Style 编码器模型。
然后仅需几句 Python 代码,便可出效果。
例如用随机人脸代码生成图像对,就输入:
python generate_image_pairs.py --size 1024 --pics N_PICS --ckpt ./pretrained_models/blendgan.pt --style_img ./test_imgs/style_imgs/100036.png --outdir results/generated_pairs/reference_guided/
若是要给照片换风格,则输入:
python style_transfer_folder.py --size 1024 --ckpt ./pretrained_models/blendgan.pt --psp_encoder_ckpt ./pretrained_models/psp_encoder.pt --style_img_path ./test_imgs/style_imgs/ --input_img_path ./test_imgs/face_imgs/ --outdir results/style_transfer/
要生成插值视频,则:
python gen_video.py --size 1024 --ckpt ./pretrained_models/blendgan.pt --psp_encoder_ckpt ./pretrained_models/psp_encoder.pt --style_img_path ./test_imgs/style_imgs/ --input_img_path ./test_imgs/face_imgs/ --outdir results/inter_videos/
为什么可以 hold 住任意风格?
那么快手的这个 BlendGAN,为什么可以同时驾驭这么多的风格?
据研究介绍,团队首先是利用灵活的混合策略和通用的艺术数据集,来生成任意样式化的脸。
具体来说,就是在通用艺术数据集上,训练一个自监督 Style 编码器来提取任意样式的表示。
在生成器部分,则提出了一种叫做加权混合模块 (WBM) 的方法,来隐式混合人脸和样式表示,并控制任意的程式化效果。
以往诸如 StyleGAN2 在这个步骤中,不同分辨率层(resolution layer)负责生成图像中的不同特征,而团队认为它们在不同层的混合权值不应当是一致的。
因此,研究人员将人脸和风格 latent 代码转换到它们的 W 空间,然后再由 WBM 进行一个组合的工作。
由此得到的结果显示,与以往方法比较,BlendGAN 能够得到更加逼真的效果。
作者介绍
本文的通讯作者是 Li Qiang,现任快手 Y-tech 的算法工程师。
本科和硕士就读于华中科技大学;博士毕业于悉尼科技大学,师从陶大程教授。
其主要研究方向为深度学习、机器学习和概率图形模型,对卷积神经网络、深度生成模型、表示学习和结构化预测感兴趣。
最后,想试试变妆的小伙伴,可以戳下方链接体验一下。