File size: 2,031 Bytes
6e8417e
 
 
 
 
 
 
afe6a1b
e47e2e6
59b7443
6e8417e
 
afe6a1b
59b7443
 
6e8417e
 
afe6a1b
 
59b7443
afe6a1b
 
 
59b7443
6e8417e
 
09a9f19
 
59b7443
09a9f19
 
 
59b7443
09a9f19
 
59b7443
 
 
 
09a9f19
59b7443
09a9f19
59b7443
09a9f19
59b7443
09a9f19
 
 
 
59b7443
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
09a9f19
59b7443
 
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
#!/usr/bin/env python

from __future__ import annotations

import gradio as gr
import numpy as np

from model import Model

DESCRIPTION = "# [Projected GAN](https://github.com/autonomousvision/projected_gan)"


def get_sample_image_url(name: str) -> str:
    sample_image_dir = "https://huggingface.co/spaces/hysts/projected_gan/resolve/main/samples"
    return f"{sample_image_dir}/{name}.jpg"


def get_sample_image_markdown(name: str) -> str:
    url = get_sample_image_url(name)
    return f"""
    - size: 256x256
    - seed: 0-99
    - truncation: 0.7
    ![sample images]({url})"""


model = Model()

with gr.Blocks(css="style.css") as demo:
    gr.Markdown(DESCRIPTION)

    with gr.Tabs():
        with gr.TabItem("App"):
            with gr.Row():
                with gr.Column():
                    model_name = gr.Dropdown(label="Model", choices=model.MODEL_NAMES, value=model.MODEL_NAMES[8])
                    seed = gr.Slider(label="Seed", minimum=0, maximum=np.iinfo(np.uint32).max, step=1, value=0)
                    psi = gr.Slider(label="Truncation psi", minimum=0, maximum=2, step=0.05, value=0.7)
                    run_button = gr.Button()
                with gr.Column():
                    result = gr.Image(label="Result")

        with gr.TabItem("Sample Images"):
            with gr.Row():
                model_name2 = gr.Dropdown(label="Model", choices=model.MODEL_NAMES, value=model.MODEL_NAMES[0])
            with gr.Row():
                text = get_sample_image_markdown(model_name2.value)
                sample_images = gr.Markdown(text)

    run_button.click(
        fn=model.set_model_and_generate_image,
        inputs=[
            model_name,
            seed,
            psi,
        ],
        outputs=result,
        api_name="run",
    )
    model_name2.change(
        fn=get_sample_image_markdown,
        inputs=model_name2,
        outputs=sample_images,
        queue=False,
        api_name=False,
    )

if __name__ == "__main__":
    demo.queue(max_size=10).launch()