StarGAN——官方 PyTorch 实现
StarGAN——官方 PyTorch 实现
***** 新功能:StarGAN v2 可在获得*****
该存储库提供了以下论文的官方 PyTorch 实现:
StarGAN:用于多领域图像到图像翻译的统一生成对抗网络
1,2、1,2、2,3、2、2,4、1,2
1韩国大学,2 Clova AI Research,NAVER Corp.
3新泽西学院,4香港科技大学
摘要: 最近的研究表明,两个领域的图像到图像转换取得了显著的成功。然而,现有方法在处理两个以上领域时可扩展性和鲁棒性有限,因为每对图像域都必须独立构建不同的模型。为了解决这一限制,我们提出了 StarGAN,这是一种新颖且可扩展的方法,仅使用一个模型即可对多个域执行图像到图像的转换。StarGAN 的这种统一模型架构允许在单个网络中同时训练具有不同域的多个数据集。这使得 StarGAN 的转换图像质量优于现有模型,并且具有将输入图像灵活地转换到任何所需目标域的新功能。我们通过实证证明了我们的方法在面部属性转移和面部表情合成任务中的有效性。
依赖项
- (Tensorboard 可选)
下载数据集
要下载 CelebA 数据集: git clone https://github.com/yunjey/StarGAN.git cd StarGAN/ bash download.sh celeba
要下载 RaFD 数据集,您必须从请求访问该数据集。然后,您需要按照所述创建文件夹结构。
训练网络
要在 CelebA 上训练 StarGAN,请运行下面的训练脚本。请参阅查看 CelebA 数据集中可选属性的列表。如果您更改参数selected_attrs
,也应c_dim
相应地更改参数。 # Train StarGAN using the CelebA dataset python main.py --mode train --dataset CelebA --image_size 128 --c_dim 5 \ --sample_dir stargan_celeba/samples --log_dir stargan_celeba/logs \ --model_save_dir stargan_celeba/models --result_dir stargan_celeba/results \ --selected_attrs Black_Hair Blond_Hair Brown_Hair Male Young # Test StarGAN using the CelebA dataset python main.py --mode test --dataset CelebA --image_size 128 --c_dim 5 \ --sample_dir stargan_celeba/samples --log_dir stargan_celeba/logs \ --model_save_dir stargan_celeba/models --result_dir stargan_celeba/results \ --selected_attrs Black_Hair Blond_Hair Brown_Hair Male Young
要在 RaFD 上训练 StarGAN: # Train StarGAN using the RaFD dataset python main.py --mode train --dataset RaFD --image_size 128 \ --c_dim 8 --rafd_image_dir data/RaFD/train \ --sample_dir stargan_rafd/samples --log_dir stargan_rafd/logs \ --model_save_dir stargan_rafd/models --result_dir stargan_rafd/results # Test StarGAN using the RaFD dataset python main.py --mode test --dataset RaFD --image_size 128 \ --c_dim 8 --rafd_image_dir data/RaFD/test \ --sample_dir stargan_rafd/samples --log_dir stargan_rafd/logs \ --model_save_dir stargan_rafd/models --result_dir stargan_rafd/results
要在 CelebA 和 RafD 上训练 StarGAN: # Train StarGAN using both CelebA and RaFD datasets python main.py --mode=train --dataset Both --image_size 256 --c_dim 5 --c2_dim 8 \ --sample_dir stargan_both/samples --log_dir stargan_both/logs \ --model_save_dir stargan_both/models --result_dir stargan_both/results # Test StarGAN using both CelebA and RaFD datasets python main.py --mode test --dataset Both --image_size 256 --c_dim 5 --c2_dim 8 \ --sample_dir stargan_both/samples --log_dir stargan_both/logs \ --model_save_dir stargan_both/models --result_dir stargan_both/results
相同格式的文件夹结构并运行以下命令: # Train StarGAN on custom datasets python main.py --mode train --dataset RaFD --rafd_crop_size CROP_SIZE --image_size IMG_SIZE \ --c_dim LABEL_DIM --rafd_image_dir TRAIN_IMG_DIR \ --sample_dir stargan_custom/samples --log_dir stargan_custom/logs \ --model_save_dir stargan_custom/models --result_dir stargan_custom/results # Test StarGAN on custom datasets python main.py --mode test --dataset RaFD --rafd_crop_size CROP_SIZE --image_size IMG_SIZE \ --c_dim LABEL_DIM --rafd_image_dir TEST_IMG_DIR \ --sample_dir stargan_custom/samples --log_dir stargan_custom/logs \ --model_save_dir stargan_custom/models --result_dir stargan_custom/results
使用预先训练的网络
要下载预训练模型检查点,请运行以下脚本。预训练模型检查点将被下载并保存到./stargan_celeba_128/models
目录中。 $ bash download.sh pretrained-celeba-128x128
要使用预训练模型翻译图像,请运行下面的评估脚本。翻译后的图像将保存到./stargan_celeba_128/results
目录中。 $ python main.py --mode test --dataset CelebA --image_size 128 --c_dim 5 \ --selected_attrs Black_Hair Blond_Hair Brown_Hair Male Young \ --model_save_dir='stargan_celeba_128/models' \ --result_dir='stargan_celeba_128/results'
StarGAN v2 - 官方 PyTorch 实现
StarGAN v2:面向多个领域的多样化图像合成
*、 *、 *、
在 CVPR 2020 中。(* 表示贡献相同)
论文:
视频:
摘要: 良好的图像到图像转换模型应学习不同视觉域之间的映射,同时满足以下属性:1)生成图像的多样性和 2)跨多个域的可扩展性。现有方法要么解决多样性有限,要么为所有域提供多个模型。我们提出了 StarGAN v2,这是一个解决这两个问题的单一框架,并且比基线显示出显着改进的结果。在 CelebA-HQ 和新的动物面孔数据集 (AFHQ) 上进行的实验验证了我们在视觉质量、多样性和可扩展性方面的优势。为了更好地评估图像到图像转换模型,我们发布了 AFHQ,这是具有大量域间和域内变化的高质量动物面孔。代码、预训练模型和数据集可在 clovaai/stargan-v2 上找到。
预告视频
单击图片即可观看预告视频。
TensorFlow 实现
找到。
软件安装
克隆此存储库: git clone https://github.com/clovaai/stargan-v2.git cd stargan-v2/
安装依赖项: conda create -n stargan-v2 python=3.6.7 conda activate stargan-v2 conda install -y pytorch=1.4.0 torchvision=0.5.0 cudatoolkit=10.0 -c pytorch conda install x264=='1!152.20180717' ffmpeg=4.0.2 -c conda-forge pip install opencv-python==4.1.2.30 ffmpeg-python==0.2.0 scikit-image==0.16.2 pip install pillow==7.0.0 scipy==1.2.1 tqdm==4.43.0 munch==2.5.0
数据集和预训练网络
我们提供了一个脚本来下载 StarGAN v2 中使用的数据集和相应的预训练网络。数据集和网络检查点将分别下载并存储在data
和expr/checkpoints
目录中。
CelebA-HQ。要下载数据集和预先训练的网络,请运行以下命令: bash download.sh celeba-hq-dataset bash download.sh pretrained-network-celeba-hq bash download.sh wing
AFHQ。要下载数据集和预训练网络,请运行以下命令: bash download.sh afhq-dataset bash download.sh pretrained-network-afhq
生成插值视频
下载预训练网络后,您可以合成反映参考图像的多种风格(例如发型)的输出图像。以下命令将生成的图像和插值视频保存到目录中expr/results
。
CelebA-HQ。要生成图像和插值视频,请运行以下命令: python main.py --mode sample --num_domains 2 --resume_iter 100000 --w_hpf 1 \ --checkpoint_dir expr/checkpoints/celeba_hq \ --result_dir expr/results/celeba_hq \ --src_dir assets/representative/celeba_hq/src \ --ref_dir assets/representative/celeba_hq/ref
要对自定义图片进行变换,首先需要手动裁剪图片,使脸部在整体中所占的比例与 CelebA-HQ 相似。然后运行以下命令进行额外的精细旋转和裁剪。目录中的所有自定义图片都inp_dir
将对齐并存储在out_dir
目录中。 python main.py --mode align \ --inp_dir assets/representative/custom/female \ --out_dir assets/representative/celeba_hq/src/female
AFHQ。要生成图像和插值视频,请运行以下命令: python main.py --mode sample --num_domains 3 --resume_iter 100000 --w_hpf 0 \ --checkpoint_dir expr/checkpoints/afhq \ --result_dir expr/results/afhq \ --src_dir assets/representative/afhq/src \ --ref_dir assets/representative/afhq/ref
评估指标
要使用和评估 StarGAN v2 ,请运行以下命令: # celeba-hq python main.py --mode eval --num_domains 2 --w_hpf 1 \ --resume_iter 100000 \ --train_img_dir data/celeba_hq/train \ --val_img_dir data/celeba_hq/val \ --checkpoint_dir expr/checkpoints/celeba_hq \ --eval_dir expr/eval/celeba_hq # afhq python main.py --mode eval --num_domains 3 --w_hpf 0 \ --resume_iter 100000 \ --train_img_dir data/afhq/train \ --val_img_dir data/afhq/val \ --checkpoint_dir expr/checkpoints/afhq \ --eval_dir expr/eval/afhq
请注意,评估指标是使用随机潜在向量或参考图像计算的,两者都由选择。在论文中,我们报告了使用不同种子数进行的 10 次测量的平均值。下表显示了潜在引导和参考引导合成的计算值。
数据集 | FID(潜在) | LPIPS(潜在) | FID(参考) | LPIPS(参考) | 已用时间 |
---|---|---|---|---|---|
celeba-hq | 13.73±0.06 | 0.4515±0.0006 | 23.84±0.03 | 0.3880±0.0001 | 49分51秒 |
afhq | 16.18±0.15 | 0.4501±0.0007 | 19.78±0.01 | 0.4315±0.0002 | 64分49秒 |
训练网络
要从头开始训练 StarGAN v2,请运行以下命令。生成的图像和网络检查点将分别存储在和expr/samples
目录中expr/checkpoints
。在单个 Tesla V100 GPU 上,训练大约需要三天时间。请参阅了解训练参数及其说明。 # celeba-hq python main.py --mode train --num_domains 2 --w_hpf 1 \ --lambda_reg 1 --lambda_sty 1 --lambda_ds 1 --lambda_cyc 1 \ --train_img_dir data/celeba_hq/train \ --val_img_dir data/celeba_hq/val # afhq python main.py --mode train --num_domains 3 --w_hpf 0 \ --lambda_reg 1 --lambda_sty 1 --lambda_ds 2 --lambda_cyc 1 \ --train_img_dir data/afhq/train \ --val_img_dir data/afhq/val
动物面部-HQ 数据集 (AFHQ)
我们发布了一个新的动物脸部数据集,Animal Faces-HQ (AFHQ),包含 15,000 张 512×512 分辨率的高质量图像。上图显示了 AFHQ 数据集的示例图像。该数据集包括猫、狗和野生动物三个领域,每个领域提供约 5000 张图像。通过拥有多个(三个)领域和每个领域中不同品种的不同图像,AFHQ 设置了一个具有挑战性的图像到图像转换问题。对于每个领域,我们选择 500 张图像作为测试集,并将所有剩余图像作为训练集。要下载数据集,请运行以下命令: bash download.sh afhq-dataset
[更新:2021.07.01]我们使用高质量调整大小过滤(即 Lanczos 重采样)重建了原始 AFHQ 数据集。请参阅,该论文引起了人们对下采样的不良软件库情况的关注。我们感谢作者对更新后的 AFHQ 数据集的建议和贡献。如果您使用更新后的数据集,我们建议不仅引用我们的论文,还引用他们的论文。
与原始数据集的区别如下:
- 我们使用 Lanczos 重采样而不是最近邻下采样来调整图像大小。
- 大约 2% 的原始图像已被删除。因此,该集合现在有 15803 幅图像,而原始图像有 16130 幅。
- 图像保存为 PNG 格式以避免压缩失真。这会使文件比原始文件大,但这是值得的。
要下载更新的数据集,请运行以下命令: bash download.sh afhq-v2-dataset