File size: 4,802 Bytes
864964a
 
 
6a2a362
 
 
 
 
864964a
6a2a362
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
864964a
 
6a2a362
 
 
 
 
a5a317e
 
 
 
6a2a362
 
 
 
 
 
 
a5a317e
6a2a362
 
 
 
 
 
 
 
 
 
 
f84c75b
91f6016
 
fe8f919
91f6016
fe8f919
91f6016
6a2a362
 
 
 
 
 
 
 
f84c75b
6a2a362
 
 
 
 
 
 
 
 
f84c75b
91f6016
fe8f919
6a2a362
 
 
 
 
7cf1859
6a2a362
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
fe8f919
6a2a362
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
import gradio as gr
import requests
import json
import gradio as gr
import torch 
from PIL import Image

from gradio_client import Client

theme = gr.themes.Base(
    primary_hue=gr.themes.Color(
        c100="#dbeafe", c200="#bfdbfe", c300="#93c5fd", c400="#60a5fa", c50="#eff6ff", c500="#0054ae", c600="#00377c", c700="#00377c", c800="#1e40af", c900="#1e3a8a", c950="#0a0c2b"),
    secondary_hue=gr.themes.Color(
        c100="#dbeafe", c200="#bfdbfe", c300="#93c5fd", c400="#60a5fa", c50="#eff6ff", c500="#0054ae", c600="#0054ae", c700="#0054ae", c800="#1e40af", c900="#1e3a8a", c950="#1d3660"),
).set(
    body_background_fill_dark='*primary_950',
    body_text_color_dark='#FFFFFF',
    body_text_color='#000000',
    border_color_accent='*primary_700',
    border_color_accent_dark='*neutral_800',
    block_background_fill_dark='*primary_950',
    block_border_width='2px',
    block_border_width_dark='2px',
    button_primary_background_fill_dark='*primary_500',
    button_primary_border_color_dark='*primary_500'
)

css='''
    @font-face {
        font-family: IntelOne;
        src: url("file/assets/intelone-bodytext-font-family-regular.ttf");
    }

    table, td, tr {
        border: none !important;
    }
'''

html_title = '''
<table>
<tr style="height:150px">
    <td style="border-bottom:0; vertical-align:middle">
    <p style="font-size:xx-large;font-family:IntelOne, Georgia, sans-serif;color: var(--body-text-color);">
        LDM3D: Latent Diffusion Model for 3D
    </p>
    </td>
    <td style="border-bottom:0;"><img src="file/assets/gaudi.png" width="100" height="100"></td>
    <td style="border-bottom:0;"><img src="file/assets/xeon.png" width="100" height="100"></td>
</tr>
</table>

'''

client = Client("http://198.175.88.247:17810/")

def build_iframe(rgb_path: str, depth_path: str, viewer_mode: str = "6DOF"):

    if viewer_mode == "6DOF":
        return f"""<iframe src="file=static/three6dof.html" width="100%" height="500px" data-rgb="/file={rgb_path}" data-depth="/file={depth_path}"></iframe>"""
    else:
        return f"""<iframe src="file=static/depthmap.html" width="100%" height="500px" data-rgb="/file={rgb_path}" data-depth="/file={depth_path}"></iframe>"""
        
def generate(
    prompt: str,
    negative_prompt: str,
    guidance_scale: float = 5.0,
    seed: int = 0,
    randomize_seed: bool = True,
):

    rgb_url, depth_url, generated_seed, _ = client.predict(
		prompt,	# str  in 'Prompt' Textbox component
		negative_prompt,	# str  in 'Negative Prompt' Textbox component
		guidance_scale,	# int | float (numeric value between 0 and 10) in 'Guidance Scale' Slider component
		seed,	# int | float (numeric value between 0 and 18446744073709551615) in 'Seed' Slider component
		randomize_seed,	# bool  in 'Randomize Seed' Checkbox component
		False,	# bool  in 'Upscale' Checkbox component
		fn_index=1
    )

    iframe = build_iframe(rgb_url, depth_url)
    
    return rgb_url, depth_url, generated_seed, iframe

with gr.Blocks(theme=theme, css=css) as demo:
    gr.HTML(value=html_title)
    gr.Markdown(
        """
[Model card](https://huggingface.co/Intel/ldm3d-pano)
[Diffusers docs](https://huggingface.co/docs/diffusers/main/en/api/pipelines/stable_diffusion/ldm3d_diffusion)
For better results, specify "360 view of" or "panoramic view of" in the prompt

"""
    )
    with gr.Row():
        with gr.Column(scale=1):
            prompt = gr.Textbox(label="Prompt")
            negative_prompt = gr.Textbox(label="Negative Prompt")
            guidance_scale = gr.Slider(
                label="Guidance Scale", minimum=0, maximum=10, step=0.1, value=5.0
            )
            randomize_seed = gr.Checkbox(label="Randomize Seed", value=True)
            seed = gr.Slider(label="Seed", minimum=0,
                             maximum=2**64 - 1, step=1)
            generated_seed = gr.Number(label="Generated Seed")
            markdown = gr.Markdown(label="Output Box")
            with gr.Row():
                new_btn = gr.Button("New Image")
        with gr.Column(scale=2):
            html = gr.HTML()
            with gr.Row():
                rgb = gr.Image(label="RGB Image", type="filepath")
                depth = gr.Image(label="Depth Image", type="filepath")

    gr.Examples(
        examples=[
            ["360 view of a large bedroom", "", 7.0, 42, False]],
        inputs=[prompt, negative_prompt, guidance_scale, seed, randomize_seed],
        outputs=[rgb, depth, generated_seed, html],
        fn=generate,
        cache_examples=False)

    new_btn.click(
        fn=generate,
        inputs=[prompt, negative_prompt, guidance_scale, seed, randomize_seed],
        outputs=[rgb, depth, generated_seed, html],
    )
  
    demo.launch(
        allowed_paths=["assets/", "static/", "/tmp/gradio/"]
    )