学习目标:
体验基于PaddleGAN的图像生成模型实现的人脸融合,模型名称:StyleGAN V2
StyleGAN V2 原理:
StyleGAN V2 的任务是image generation,给定特定长度的向量,生成该向量对应的图像,是StyleGAN的升级版,解决了StyleGAN生成的伪像等问题。
StyleGAN V2 可对多级风格向量进行混合。其内核是自适应的风格解耦。
相对于StyleGAN,其主要改进为:
生成的图像质量明显更好(FID分数更高、artifacts减少)
提出替代渐进式训练的新方法,牙齿、眼睛等细节更完美
改善了风格混合
更平滑的插值
训练速度更快
第一步,环境准备:
请参考另一篇文章,基于PaddleGAN项目人脸表情动作迁移学习(一)环境配置,下载PaddleGAN,并配置环境,特别提醒安装dilib包。
pip install dlib
如果有安装失败请参考另一篇文章记录安装dlib库失败解决过程,认识conda-forge,希望有所帮助。
第二步,人脸特征提取:
1.准备两张人脸照片,我准备用他俩的,给万历皇帝配个外国美女,上传至我的图片文件夹目录,分别是b1.png,wanli.jpg。
图片位置如下:
2.Fitting模块提取人脸向量,然后重新生成人脸。
只需要更改两个参数:
input_image:需要提取特征并重新生成人脸的照片路径;
output_path:新生成的人脸照片的存放路径,后续需要放在Mixing和生成的模块中使用;
将input_image部分放上想要融合的人脸照片即可,请注意最好是自拍和大头照,无眼镜效果更佳;
另外,因为是两张照片融合,大家需要替换input_image和output_path的路径,运行两次以下命令,生成两张StyleGAN世界中的人脸照片~
代码示例如下:
python -u tools/styleganv2fitting.py
–input_image ‘/home/work/图1名称’
–need_align
–start_lr 0.1
–final_lr 0.025
–latent_level 0 1 2 3 4 5 6 7 8 9 10 11
–step 100
–mse_weight 1
–output_path ‘/home/work/output/’
–model_type ffhq-config-f
–size 1024
–style_dim 512
–n_mlp 8
–channel_multiplier 2
- 进行人脸提取
进入application目录下
cd applications
分别对两张照片进行提取:
第一张
python -u tools/styleganv2fitting.py --input_image ../image_data/aobama001.jpg --need_align --start_lr 0.1 --final_lr 0.025 --latent_level 0 1 2 3 4 5 6 7 8 9 10 11 --step 100 --mse_weight 1 --output_path ../image_data/output/2/ --model_type ffhq-config-f --size 1024 --style_dim 512 --n_mlp 8 --channel_multiplier 2
第二张
python -u tools/styleganv2fitting.py --input_image ../image_data/wanli.jpg --need_align --start_lr 0.1 --final_lr 0.025 --latent_level 0 1 2 3 4 5 6 7 8 9 10 11 --step 100 --mse_weight 1 --output_path ../image_data/output/2/ --model_type ffhq-config-f --size 1024 --style_dim 512 --n_mlp 8 --channel_multiplier 2
第三步,人脸融合:
Mixing模块融合向量,StyleGAN V2生成新人脸,只需要更改三个参数:
latent1:STEP2中生成的一张人脸路径(STEP2中的output_path路径)
latent2:STEP2中生成的一张人脸路径(STEP2中的output_path路径)
output_path:两张脸融合的最终效果
python -u tools/styleganv2mixing.py
–latent1 ‘/home/work/output/dst.fitting.npy’
–latent2 ‘/home/work/output/1/dst.fitting.npy’
–weights
0.5 0.5 0.5 0.5 0.5 0.5
0.5 0.5 0.5 0.5 0.5 0.5
0.5 0.5 0.5 0.5 0.5 0.5
–output_path ‘/home/work/output/final’
–model_type ffhq-config-f
–size 1024
–style_dim 512
–n_mlp 8
–channel_multiplier 2
第二步提取后的人脸
分别存在…/image_data/output/1/,…/image_data/output/2/目录下,执行代码如下:
python -u tools/styleganv2mixing.py --latent1 ../image_data/output/1/dst.fitting.npy --latent2 ../image_data/output/2/dst.fitting.npy --weights 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 --output_path ../image_data/output/final --model_type ffhq-config-f --size 1024 --style_dim 512 --n_mlp 8
第四步,查看预测结果:
进入output/final文件夹内,dst.mixing.png则为融合后的人脸结果
效果如下:
融合出来说实话有点丑,凑合看吧,到此融合结束。