基于PaddleGAN项目人脸表情动作迁移学习(三)人脸融合

学习目标:

体验基于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

  1. 进行人脸提取

进入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则为融合后的人脸结果
在这里插入图片描述
效果如下:
在这里插入图片描述
融合出来说实话有点丑,凑合看吧,到此融合结束。

猜你喜欢

转载自blog.csdn.net/h363924219/article/details/122231201