本文经AI新媒体量子位(公众号ID:QbitAI)授权转载,转载请联系出处。
如果你想用AI把特朗普的脸变成猫,又或者是把自己的脸与漂亮的奥妹结合起来,你会怎么办?
也许你会想到两样AI工具。但是Deepfake生成人脸违和感太强,GAN生成假脸又很难深度定制。
现在来自韩国团队开发的风格迁移模型StarGANv2可以完美解决这个问题。
如果你是一个对GAN长期关注的同学,那么一定还记得StarGAN,它是韩国高丽大学和Clova AI研究院在2017年底推出的风格迁移模型。
只需输入一张大头照,StarGAN就能让你知道自己改变发型、性别、年龄后分别长啥样。
而StarGANv2正是同一研究团队推出的升级版本,已经被CVPR 2020收录。最近他们在GitHub上公布了官方实现代码,很快就被网友玩坏了。
StarGANv2有两个训练数据集,一个针对人脸,一个针对动物脸。
两者本来是“井水不犯河水”,但是有人偏偏要混用,拿特朗普的脸输入到动物脸预训练模型里。结果川普的脸转换成猫就成了这样:
与狗脸合成又成了这样,模型甚至给狗穿上了西服。
安装使用
这么有趣的模型,如何安装呢?好在StarGANv2的开发团队提供了完整的代码和预训练模型。
先将项目克隆到本地:
- git clone https://github.com/clovaai/stargan-v2.git
- cd stargan-v2/
安装依赖项:
- conda create -n stargan-v2 python=3.6.7
- conda activate stargan-v2
- conda install -y pytorch=1.4.0 torchvision=0.5.0 cudatoolkit=10.0 -c pytorch
- conda install x264==’1!152.20180717’ ffmpeg=4.0.2 -c conda-forge
- pip install opencv-python==4.1.2.30 ffmpeg-python==0.2.0 scikit-image==0.16.2
- pip install pillow==7.0.0 scipy==1.2.1 tqdm==4.43.0 munch==2.5.0
然后下载预训练数据集,其中前两项是人脸数据集和预训练模型,后一项是动物脸。
- bash download.sh pretrained-network-celeba-hq
- bash download.sh wing
- bash download.sh pretrained-network-afhq
最后将需要转换的照片裁切成和数据集图片一样的长宽比,输入以下命令转换图片。
- python main.py —mode sample —num_domains 2 —resume_iter 100000 —w_hpf 1 \
- —checkpoint_dir expr/checkpoints/celeba_hq \
- —result_dir expr/results/celeba_hq \
- —src_dir assets/representative/celeba_hq/src \
- —ref_dir assets/representative/celeba_hq/ref
效果远超其他GAN
StarGANv2由四个模块组成:
- 生成器将输入图像转换为反映特定域风格编码的输出图像;
- 映射网络将潜在代码转换为训练中随机选择的多个域的风格编码;
- 风格编码器提取图像的风格编码,允许生成器执行参照物引导的图像合成;
- 鉴别器从多个域中区分真实图像和虚假图像。
作者随机选取了10张图像进行风格迁移的实验,结果FID远远小于其他同类模型。
他们还把四种模型生成的图像上传到AMT平台,交给人工评选,绝大部分测试者都认为StarGANv2生成的图片更优质。
从人工评选的结果也可以看出,StarGANv2在生成动物脸上的效果更好,难怪网友要拿动物模型来改造特朗普头像了。
传送门
论文地址:https://arxiv.org/abs/1912.01865v2
官方实现代码:https://github.com/clovaai/stargan-v2