漸進式增長 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(生成對抗網路),它學習將隨機向量對映到逼真的影像生成。

漸進式生成對抗網路是 Karras 等人於 2017 年開發的一種方法 [1],它允許生成高解析度影像。為此,生成網路是逐層訓練的。首先,模型被訓練以構建非常低解析度的影像,一旦收斂,就會新增新的層,輸出解析度會翻倍。這個過程持續進行,直到達到所需的解析度。

要求

  • 目前僅支援 Python 3

參考文獻

[1] Tero Karras 等人,“漸進式生成對抗網路,用於改進質量、穩定性和多樣性” https://arxiv.org/abs/1710.10196

時尚、名人面孔的高質量影像生成

模型型別: 生成式 | 視覺
提交者: FAIR HDGAN