渐进式增长 GAN (PGAN)


import torch
use_gpu = True if torch.cuda.is_available() else False
# trained on high-quality celebrity faces "celebA" dataset
# this model outputs 512 x 512 pixel images
model = torch.hub.load('facebookresearch/pytorch_GAN_zoo:hub',
'PGAN', model_name='celebAHQ-512',
pretrained=True, useGPU=use_gpu)
# this model outputs 256 x 256 pixel images
# model = torch.hub.load('facebookresearch/pytorch_GAN_zoo:hub',
# 'PGAN', model_name='celebAHQ-256',
# pretrained=True, useGPU=use_gpu)
模型的输入是一个形状为 (N, 512)
的噪声向量,其中 N
是要生成的图像数量。可以使用 .buildNoiseData
函数来构建。模型有一个 .test
函数,它接受噪声向量并生成图像。
num_images = 4
noise, _ = model.buildNoiseData(num_images)
with torch.no_grad():
generated_images = model.test(noise)
# let's plot these images using torchvision and matplotlib
import matplotlib.pyplot as plt
import torchvision
grid = torchvision.utils.make_grid(generated_images.clamp(min=-1, max=1), scale_each=True, normalize=True)
plt.imshow(grid.permute(1, 2, 0).cpu().numpy())
# plt.show()
您应该会看到一张与左侧图像相似的图片。
如果您想从头开始训练自己的渐进式GAN和其他GAN,请查看 PyTorch GAN Zoo。
模型描述
在计算机视觉中,生成模型是经过训练以根据给定输入创建图像的网络。在我们的例子中,我们考虑一种特定类型的生成网络:GAN(生成对抗网络),它们学习将随机向量映射到逼真的图像生成。
渐进式增长的GAN是Karras等人 [1] 于2017年开发的一种方法,允许生成高分辨率图像。为此,生成网络是逐层训练的。首先,模型被训练来构建非常低分辨率的图像,一旦收敛,就会添加新的层,输出分辨率加倍。这个过程持续进行,直到达到所需的分辨率。
要求
- 目前仅支持Python 3
参考文献
[1] Tero Karras 等人,“用于改进质量、稳定性和变化的GAN渐进式增长” https://arxiv.org/abs/1710.10196