PaddleGAN圣诞特辑】雪天与你一起白头❄️

💛 本项目基于【艾梦】大佬项目改编 🧡

再次感谢艾梦的贡献(◍•ᴗ•◍)💛,也欢迎更多小伙伴们加入PaddleGAN的SIG小组与我们一起建设(•̀ᴗ•́)و ̑̑~

说到圣诞节,大家第一个想到的词是什么?圣诞老人?礼物?还是下雪天☃️?

贴心的PaddleGAN在圣诞前夕集合以上所有元素,为大家带来暖心之礼🎁

下雪天,带大家回到过去、穿越到未来,感受与另一半从年少到白头的浪漫

让你回到过去、穿越到未来的核心技术就是PaddleGAN中的人脸属性编辑能力,实现将任意人脸进行年龄变换

同时,结合PaddleGAN中的脸部动作迁移能力让不同年龄段的你做出逼真的表情,仿佛亲身对话一般!

所有的代码和详细教程均在PaddleGAN中,欢迎大家Star⭐收藏GET所有干货!

📖 原理揭秘

基础知识

📌 Latent Code:潜在因子,每张图像对应一个潜在因子(高维的向量),stylegan能够用这个向量生成图像。

📌 属性编辑:由于潜在因子包含维度比较多,无法确定维度对应的方向以及编辑所带来的变化,因此利用大量的潜在因子和对应的属性(比如年龄或性别)训练线性的分类器,即可将分类器的权重作为潜在因子和对应属性的方向

📌 StyleGAN:根据向量生成图片

原理步骤

实现人脸融合一共分为三个步骤:

  1. 获取图片的Latent Code,用于后续的属性编辑和人脸生成
  2. 将Latent Code根据特定方向进行编辑,即可编辑对应的人脸属性,如年龄、性别、头发、眼睛等
  3. StyleGAN V2根据第二步中编辑好的Latent Code向量生成目标人脸

⏳ 前置步骤:安装PaddleGAN及相关依赖

本项目中已经帮大家git clone好了最新版的PaddleGAN,无需重新clone,但需要安装ppgan,按照顺序安装即可~

# 从github上克隆PaddleGAN代码(如下载速度过慢,可用gitee源)本项目已clone,此步骤可省略
#!git clone https://github.com/PaddlePaddle/PaddleGAN
#!git clone https://gitee.com/PaddlePaddle/PaddleGAN

# 安装依赖
%cd /home/aistudio/PaddleGAN
!pip install -r requirements.txt
#本地安装PaddleGAN
!python setup.py develop
#安装所需包 首次此安装包大约需要5分钟
!pip install dlib 

STEP 1:得到原图对应的Latent Code

这里我们使用Pixel2Style2Pixel提取Latent Code,大家只需要更改两个参数:

  1. input_image:原图路径,即需要提取隐藏特征的照片路径
  2. output_path:原图的隐藏特征的存放路径,后续需要放在属性编辑和生成的模块中使用

将input_image部分放上想要变换性别的人脸照片即可,请注意最好是自拍和大头照,无眼镜效果更佳噢~

%cd applications/
!python -u tools/pixel2style2pixel.py \
       --input_image '/home/aistudio/人脸测试集/11.JPG' \
       --output_path   '/home/aistudio/psp_output/11' \
       --model_type ffhq-inversion \
       --seed 233 \
       --size 1024 \
       --style_dim 512 \
       --n_mlp 8 \
       --channel_multiplier 2 

STEP 2&3:对Latent Code进行特定方向编辑,使用StyleGAN V2将编辑后的向量生成新人脸

大家只需要更改三个参数:

  1. latent:STEP2中提取的原图的Latent Code(STEP2中的output_path路径)
  2. output_path:新人脸(年龄变换后)的保存路径
#老龄化
!python -u tools/styleganv2editing.py \
       --latent '/home/aistudio/psp_output/11/dst.npy' \
       --output_path '/home/aistudio/final_output/11_old' \
       --model_type ffhq-config-f \
       --size 1024 \
       --style_dim 512 \
       --n_mlp 8 \
       --channel_multiplier 2 \
       --direction_name age \
       --direction_offset 5
#年轻化
!python -u tools/styleganv2editing.py \
       --latent '/home/aistudio/psp_output/11/dst.npy' \
       --output_path '/home/aistudio/final_output/11_young' \
       --model_type ffhq-config-f \
       --size 1024 \
       --style_dim 512 \
       --n_mlp 8 \
       --channel_multiplier 2 \
       --direction_name age \
       --direction_offset -5

💟 BONUS体验:让年少or老年的TA“动”起来,实现真正意义的从青竹到白头 💟

最新版的PaddleGAN中的FOM模型支持生成512清晰度的视频,清晰度提升了1倍,并加上了人脸增强的功能,刻画了丰富的脸部细节,使得脸部动态表情更加生动~

其中,FOM的原理是将人物A的脸部动作搬移到人物B脸上,让人物B的脸完美演绎人物A的表情。

通过修改以下命令中的driving_videosource_image两个参数,换成自己的驱动视频(想年少or老年的TA做的脸部表情)和年少or老年的TA,即可看到TA生动的另一面~

最终的视频导出保存在 “年少的你/老去的你” 文件夹中~
快来动手试试吧😎
#%cd applications
!python -u tools/first-order-demo.py  \
     --driving_video '/home/aistudio/驱动视频.mov' \
     --source_image '/home/aistudio/final_output/11_young/dst.editing.png' \
     --relative \
     --adapt_scale \
     --output '/home/aistudio/年轻的你' \
     --image_size 512 \
     --face_enhancement

PaddleGAN中还有很多其他的能力,大家可以敬请体验~

  • 「人脸融合」
人物1人物2融合后效果
  • 「带着珍珠耳环的少女」播新闻
  • 百年影像上色、插帧、提高分辨率
  • 照片动漫化
  • 人脸动漫化

⭐ ⭐ ⭐ 欢迎Star支持!⭐ ⭐ ⭐

⭐最后,还有特别感谢,将此能力贡献到PaddleGAN中的【艾梦】大佬⭐,原项目链接:https://aistudio.baidu.com/aistudio/projectdetail/2377580?channelType=0&channel=0

Logo

学大模型,用大模型上飞桨星河社区!每天8点V100G算力免费领!免费领取ERNIE 4.0 100w Token >>>

更多推荐