由吴韦恩、张云轩和李韧创作。
我们提出了一种新颖的基于学习的面部重演框架。所提出的方法称为 ReenactGAN,能够将任意人的单眼视频输入中的面部动作和表情转移到目标人的视频中。我们首先将源面映射到边界潜在空间上,而不是在像素空间中执行直接传输,这可能会导致结构伪影。随后使用变换器使源面的边界适应目标的边界。最后,使用特定于目标的解码器来生成重新制定的目标脸部。由于有效且可靠的基于边界的传输,我们的方法可以执行照片般逼真的面部重演。此外,ReenactGAN 的吸引力在于整个重演过程是纯粹前馈的,因此重演过程可以实时运行。
克隆这个仓库:
git clone ...
cd ReenactGAN
边界编码器在 WFLW 和 Helen 数据集上进行训练,边界变换器和解码器都在 CelebV 数据集上进行训练。编码器的训练需要大量的时间,因此您可以在./pretrained_models/v8_net_boundary_detection.pth获取预训练的编码器。
要训练边界变压器,请运行
sh script/train_Transformer.sh
您需要处理参数--root_dir和--which_target 。 --root_dir指数据集的目录, --which_target指目标是哪个人
0: Emmanuel_Macron
1: Kathleen
2: Jack_Ma
3: Theresa_May
4: Donald_Trump
要训练解码器,请运行
sh script/train_Decoder.sh
另外,您需要注意--root_dir的值,它指的是目标人员的目录。
要测试模型,请运行
sh script/move_models.sh ./checkpoints/Transformer_2019-xx-xx_xx-xx-xx/G_BA_xx.pth ./checkpoints/Decoder_2019-xx-xx_xx-xx-xx/xx_net_G.pth trump
sh script/test.sh
用于测试的图像位于 ./test_imgs/samples/image,文本文件 ./test_imgs/samples/images_list.txt 包含这些图像的列表。测试完成后,您将得到一个名为results的Floder,其中包含真实人脸和重演人脸的图像、真实人脸的边界和变换后的边界。以下是一些结果。
您可以从 Decoder 和 Transformer 获取我们经过训练的模型。
如果您发现 ReenactGAN 对您的研究有帮助,请引用:
inproceedings{wayne2018reenactgan,
author = {Wu, Wayne and Zhang, Yunxuan and Li, Cheng and Qian, Chen and Loy, Chen Change},
title = {ReenactGAN: Learning to Reenact Faces via Boundary Transfer},
booktitle = {ECCV},
month = September,
year = {2018}
}