File size: 1,133 Bytes
c68160d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import torch
import numpy as np


def create_celeba256_inference():
    device = 'cuda' if torch.cuda.is_available() else 'cpu'
    use_gpu = True if torch.cuda.is_available() else False
    celeba256 = torch.hub.load(
        'facebookresearch/pytorch_GAN_zoo:hub', 
        'PGAN', 
        model_name='celebAHQ-256', 
        pretrained=True, 
        useGPU=use_gpu
    )
    celeba256_noise, _ = celeba256.buildNoiseData(1)
    @torch.inference_mode()
    def celeba256_generator(latents):
        latents = [torch.from_numpy(latent).float().to(device) for latent in latents]
        latents = torch.stack(latents)
        out = celeba256.test(latents)
        outs = []
        for out_i in out:
            out_i = ((out_i.permute(1,2,0) + 1) * 127.5).clamp(0,255).cpu().numpy()
            out_i = np.uint8(out_i)
            outs.append(out_i)
        return outs

    return {
        'name': 'Celeba256',
        'generator': celeba256_generator,
        'latent_dim': celeba256_noise.shape[1],
        'fps': 5,
        'batch_size': 1,
        'strength': 0.6,
        'max_duration': 20,
        'use_peak': True
    }