File size: 3,098 Bytes
feb3220
 
 
d0fbcd0
feb3220
 
 
 
 
 
 
 
3f8fe83
 
 
 
 
 
 
 
 
feb3220
 
d0fbcd0
feb3220
6a6f2a6
feb3220
d0fbcd0
 
 
 
feb3220
 
3f8fe83
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
feb3220
3f8fe83
2d40e1e
feb3220
 
3f8fe83
 
feb3220
3f8fe83
 
 
 
 
 
 
feb3220
 
 
 
 
 
 
 
 
 
 
 
3f8fe83
feb3220
d0fbcd0
feb3220
 
3f8fe83
feb3220
 
 
 
 
 
3f8fe83
feb3220
d0fbcd0
feb3220
 
3f8fe83
feb3220
 
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#!/usr/bin/env python

import gradio as gr
import spaces

from model import Model
from settings import CACHE_EXAMPLES, MAX_SEED
from utils import randomize_seed_fn


def create_demo(model: Model) -> gr.Blocks:
    examples = [
        "A chair that looks like an avocado",
        "An airplane that looks like a banana",
        "A spaceship",
        "A birthday cupcake",
        "A chair that looks like a tree",
        "A green boot",
        "A penguin",
        "Ube ice cream cone",
        "A bowl of vegetables",
    ]

    @spaces.GPU
    def process_example_fn(prompt: str) -> str:
        return model.run_text(prompt)

    @spaces.GPU
    def run(prompt: str, seed: int, guidance_scale: float, num_inference_steps: int) -> str:
        return model.run_text(prompt, seed, guidance_scale, num_inference_steps)

    with gr.Blocks() as demo:
        with gr.Box():
            with gr.Row(elem_id="prompt-container"):
                prompt = gr.Text(
                    label="Prompt",
                    show_label=False,
                    max_lines=1,
                    placeholder="Enter your prompt",
                    container=False,
                )
                run_button = gr.Button("Run", scale=0)
            result = gr.Model3D(label="Result", show_label=False)
            with gr.Accordion("Advanced options", open=False):
                seed = gr.Slider(
                    label="Seed",
                    minimum=0,
                    maximum=MAX_SEED,
                    step=1,
                    value=0,
                )
                randomize_seed = gr.Checkbox(label="Randomize seed", value=True)
                guidance_scale = gr.Slider(
                    label="Guidance scale",
                    minimum=1,
                    maximum=20,
                    step=0.1,
                    value=15.0,
                )
                num_inference_steps = gr.Slider(
                    label="Number of inference steps",
                    minimum=2,
                    maximum=100,
                    step=1,
                    value=64,
                )

        gr.Examples(
            examples=examples,
            inputs=prompt,
            outputs=result,
            fn=process_example_fn,
            cache_examples=CACHE_EXAMPLES,
        )

        inputs = [
            prompt,
            seed,
            guidance_scale,
            num_inference_steps,
        ]
        prompt.submit(
            fn=randomize_seed_fn,
            inputs=[seed, randomize_seed],
            outputs=seed,
            queue=False,
            api_name=False,
        ).then(
            fn=run,
            inputs=inputs,
            outputs=result,
            api_name=False,
        )
        run_button.click(
            fn=randomize_seed_fn,
            inputs=[seed, randomize_seed],
            outputs=seed,
            queue=False,
            api_name=False,
        ).then(
            fn=run,
            inputs=inputs,
            outputs=result,
            api_name="text-to-3d",
        )
    return demo