人脸生成:基于飞桨复现SAM模型

前言

本项目为百度论文复现第四期《Only a Matter of Style: Age Transformation Using a Style-Based Regression Model》论文复现第一名代码以及模型。

官方源码:https://github.com/yuval-alaluf/SAM

复现地址:https://github.com/771979972/paddle-SAM

应用领域:图像编辑

Age Transformationation是指将一个人的图片变化为不同年龄的样子,同时还要保持自己身份的过程。最近,随着越来越多的app允许用户进行面部编辑,年龄转换这项任务受到了越来越多的关注。

技术方向

生成对抗网络;Age Transformation;图像编辑

模型结构

作者提出将age transform视为I2I任务,将预训练、固定参数的StyleGAN生成器和psp encoder组合在一起。在训练过程中,encoder被输入一张图片,并将他们映射到要求的年龄所在的潜在空间得到一个潜在向量,这个潜在向量通过styleGAN生成最终的图片。这种方法利用了预训练模型,极大地降低了训练难度和时间成本。这个模型被称为SAM。

实现细节:训练中,向SAM模型输入人脸图片和目标年龄𝛼𝑡,年龄编码器提取三个不同大小的特征图,然后通过18个map2style块生成18个512维的向量。接着,预训练的psp编码器将图片编码成潜在向量,然后二者相加,传入StyleGAN生成目标图片。

比起依赖于预定义年龄组的multi-domain和anchor classes方法,他们将人类衰老看作是一个连续的回归过程,从而可以对转换进行细粒度的控制。SAM不依赖于标签好年龄的数据,而是使用了预训练模型来判断年龄。

结果

目前呈现的结果为运行24000步保存的模型的结果,据作者称论文的结果为运行了60000步.

图片从左到右分别是:输入图片,SAM模型依次生成0岁,10岁,20岁,30岁,40岁,50岁,60岁,70岁,80岁,90岁,100岁图片

Pytorch与Paddle效果对比

模型图片
Pytorch
Paddle
Pytorch
Paddle
Pytorch
Paddle

以下是使用Paddle复现的其他结果



Dataset

训练集解压:FFHQ-512(已挂载在AI studio项目中)。解压后保存在work\FFHQ\

测试集解压:CelebA-HQ(已挂载在AI studio项目中)。下载后将val中的female和male两个文件夹的图片数据保存work\CelebA_test\

预训练模型:

下载后将模型的参数保存在work\pretrained_models\

模型(文件名)Description
FFHQ StyleGAN(stylegan2-ffhq-config-f.pdparams)StyleGAN 在FFHQ上训练,来自 rosinality ,输出1024x1024大小的图片
IR-SE50 Model(model_ir_se50.pdparams)IR SE 模型,来自 TreB1eN 用于训练中计算ID loss。
CurricularFace Backbone(CurricularFace_Backbone.paparams)预训练的 CurricularFace model,来自 HuangYG123 用于Similarity的评估。
AlexNet(alexnet.pdparams和lin_alex.pdparams)用于lpips loss计算。
StyleGAN Inversion(psp_ffhq_inverse.pdparams)pSp trained with the FFHQ dataset for StyleGAN inversion.

链接:https://pan.baidu.com/s/1G-Ffs8-y93R0ZlD9mEU6Eg
提取码:m3nb

具体使用

# 配置编译环境
!pip install --upgrade matplotlib
!python work/scripts/compile_ranger.py
# 解压paddle-sam.zip到work文件夹下
!unzip paddle-sam.zip -d work
# inference (需要提前下载好模型并保存到指定路径)
!cd work && python scripts/inference_side_by_side.py --exp_dir=exp/test --checkpoint_path=pretrained_models/sam_ffhq_aging.pdparams --data_path=CelebA_test --test_batch_size=4 --test_workers=0 --target_age=0,10,20,30,40,50,60,70,80,90,100
# train(需提前下载好预训练模型并保存到指定路径)
定路径)
!cd work && rm -rf exp && python scripts/train.py --dataset_type=ffhq_encode --exp_dir=exp/test --workers=0 --batch_size=8 --test_batch_size=8 --test_workers=0 --val_interval=2500 --save_interval=5000 --start_from_latent_avg --lpips_lambda=0.8 --l2_lambda=1 --id_lambda=0.1 --optim_name=ranger
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值