File size: 1,743 Bytes
04ef268
4ba6213
04ef268
 
 
 
 
eaa4105
04ef268
c0f5f03
04ef268
 
3cfaddb
04ef268
 
 
 
 
 
c0f5f03
04ef268
 
c0f5f03
04ef268
 
 
 
 
 
 
 
 
 
 
 
0bea0af
04ef268
 
1681b7e
04ef268
 
 
 
 
 
c0f5f03
 
04ef268
 
 
 
 
 
 
 
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import torch
import spaces
import numpy as np
import gradio as gr
from src.util.base import *
from src.util.params import *

@spaces.GPU()
def display_circular_images(
    prompt, seed, num_inference_steps, num_images, start_degree, end_degree, progress=gr.Progress()
):
    np.random.seed(seed)
    num_images += 1
    text_embeddings = get_text_embeddings(prompt)

    latents_x = generate_latents(seed)
    latents_y = generate_latents(seed * np.random.randint(0, 100000))

    scale_x = torch.cos(
        torch.linspace(start_degree, end_degree, num_images) * torch.pi / 180
    ).to(torch_device)
    scale_y = torch.sin(
        torch.linspace(start_degree, end_degree, num_images) * torch.pi / 180
    ).to(torch_device)

    noise_x = torch.tensordot(scale_x, latents_x, dims=0)
    noise_y = torch.tensordot(scale_y, latents_y, dims=0)

    noise = noise_x + noise_y

    progress(0)
    images = []
    for i in range(num_images):
        progress(i / num_images)
        image = generate_images(noise[i], text_embeddings, num_inference_steps)
        images.append((image, str(start_degree + i*(end_degree-start_degree)/(num_images-1))))

    progress(1, desc="Exporting as gif")
    export_as_gif(images, filename="circular.gif")

    fname = "circular"
    tab_config = {
        "Tab": "Circular",
        "Prompt": prompt,
        "Number of Steps around the Circle": num_images,
        "Start Proportion of Circle": start_degree,
        "End Proportion of Circle": end_degree,
        "Number of Inference Steps per Image": num_inference_steps,
        "Seed": seed,
    }
    export_as_zip(images, fname, tab_config)
    return images, "outputs/circular.gif", f"outputs/{fname}.zip"


__all__ = ["display_circular_images"]