HairFastGAN
52 строки · 1.8 Кб
1import argparse
2import os
3import numpy as np
4import torch
5import torch.nn as nn
6import torch.nn.functional as F
7import torch.utils.data as data
8import yaml
9
10from PIL import Image
11from torchvision import transforms, utils
12from tensorboard_logger import Logger
13from tqdm import tqdm
14from utils.functions import *
15
16import sys
17sys.path.append('pixel2style2pixel/')
18from pixel2style2pixel.models.stylegan2.model import Generator, get_keys
19
20torch.backends.cudnn.enabled = True
21torch.backends.cudnn.deterministic = True
22torch.backends.cudnn.benchmark = True
23torch.autograd.set_detect_anomaly(True)
24Image.MAX_IMAGE_PIXELS = None
25device = torch.device('cuda')
26
27parser = argparse.ArgumentParser()
28parser.add_argument('--config', type=str, default='002', help='Path to the config file.')
29parser.add_argument('--dataset_path', type=str, default='./data/stylegan2-generate-images/', help='dataset path')
30parser.add_argument('--stylegan_model_path', type=str, default='./pixel2style2pixel/pretrained_models/psp_ffhq_encode.pt', help='pretrained stylegan model')
31opts = parser.parse_args()
32
33
34StyleGAN = Generator(1024, 512, 8)
35state_dict = torch.load(opts.stylegan_model_path, map_location='cpu')
36StyleGAN.load_state_dict(get_keys(state_dict, 'decoder'), strict=True)
37StyleGAN.to(device)
38
39#seeds = np.array([torch.random.seed() for i in range(100000)])
40seeds = np.load(opts.dataset_path + 'seeds_pytorch_1.8.1.npy')
41
42with torch.no_grad():
43os.makedirs(opts.dataset_path + 'ims/', exist_ok=True)
44
45for i, seed in enumerate(tqdm(seeds)):
46
47torch.manual_seed(seed)
48z = torch.randn(1, 512).to(device)
49n = StyleGAN.make_noise()
50w = StyleGAN.get_latent(z)
51x, _ = StyleGAN([w], input_is_latent=True, noise=n)
52utils.save_image(clip_img(x), opts.dataset_path + 'ims/%06d.jpg'%i)
53