这是来自斯坦福和华盛顿大学研究员发表的论文,提出了基于GAN的新方法,仅需要一张照片即可生成一个人从小时候到老了的样子。
论文:https://arxiv.org/abs/2003.09764
项目地址:
https://github.com/royorel/Lifespan_Age_Transformation_Synthesis
关于这篇论文的介绍在之前的文章中,有所介绍,这里就不多赘述。文章的重点是如何将这个项目用起来!
这里我已经将坑帮大家填好了,也会附上代码和相关权重的下载链接,由于ti子,所以部分小伙伴在跑的时候可能会比较麻烦(当然我也是其中的一个),所以我现在我已经把文件都打包好了,大家可以放心使用!
demo 代码分享和使用
完整的项目使用(如果从附带的链接下载可以跳过下面的步骤):
# 克隆项目
git clone https://github.com/royorel/Lifespan_Age_Transformation_Synthesis.git
# 环境配置和预训练模型下载
pip install -r requirements.txtpython download_models.py
PS:因为模型很大而且是从谷歌网盘上面下载的导致很可能会失败
因此推荐从这里下载,然后直接运行我写好的demo.py代码即可
链接: https://pan.baidu.com/s/1Jwg-q9nYYAGb5o5fevT9zA
提取码: aicv
为了便于大家使用自己的照片进行测试,这里说明一些重点
# demo.py文件
import os
from collections import OrderedDict
from options.test_options import TestOptions
from data.data_loader import CreateDataLoader
from models.models import create_model
import util.util as util
from util.visualizer import Visualizer
opt = TestOptions().parse(save=False)
opt.display_id = 0 # do not launch visdom
opt.nThreads = 1 # test code only supports nThreads = 1
opt.batchSize = 1 # test code only supports batchSize = 1
opt.serial_batches = True # no shuffle
opt.no_flip = True # no flip
opt.in_the_wild = True # This triggers preprocessing of in the wild images in the dataloader
opt.traverse = True # This tells the model to traverse the latent space between anchor classes
opt.interp_step = 0.05 # this controls the number of images to interpolate between anchor classes
data_loader = CreateDataLoader(opt)
dataset = data_loader.load_data()
visualizer = Visualizer(opt)
opt.name = 'males_model' # change to 'females_model' if you're trying the code on a female image
model = create_model(opt)
model.eval()
img_path = "t.jpg" # 添加希望生成的图片
data = dataset.dataset.get_item_from_path(img_path)
visuals = model.inference(data)
os.makedirs('results', exist_ok=True)
out_path = os.path.join('results', os.path.splitext(img_path)[0].replace(' ', '_') + '.mp4')
visualizer.make_video(visuals, out_path)
注意:
1、img_path = "t.jpg" ,
添加自己希望生成的人脸照片,最好是正脸,否则效果会比较差
2、opt.name = 'males_model'
根据输入图片中人物的性别进行修改,男性:males_model, 女性:females_model
# 即修改成:
opt.name = 'females_model'
3、输出的结果为 MP4视频,保存的路径在result文件夹下,并以图片的名字进行命名