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