Spaces:
Runtime error
Runtime error
Changed interface to blocks
Browse files- .gitignore +1 -0
- app.py +56 -31
.gitignore
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
gradio_cached_examples
|
app.py
CHANGED
@@ -8,7 +8,7 @@ from mixdiff import StableDiffusionCanvasPipeline, Text2ImageRegion
|
|
8 |
scheduler = LMSDiscreteScheduler(beta_start=0.00085, beta_end=0.012, beta_schedule="scaled_linear", num_train_timesteps=1000)
|
9 |
pipeline = StableDiffusionCanvasPipeline.from_pretrained("CompVis/stable-diffusion-v1-4", scheduler=scheduler).to("cuda" if torch.cuda.is_available() else "cpu")
|
10 |
|
11 |
-
def generate(prompt1, prompt2, prompt3,
|
12 |
"""Mixture of Diffusers generation"""
|
13 |
tile_width = 640
|
14 |
tile_height = 640
|
@@ -16,42 +16,67 @@ def generate(prompt1, prompt2, prompt3, overlap, guidance_scale, steps, seed):
|
|
16 |
canvas_height=tile_height,
|
17 |
canvas_width=tile_width + (tile_width - overlap) * 2,
|
18 |
regions=[
|
19 |
-
Text2ImageRegion(0, tile_height, 0, tile_width, guidance_scale=
|
20 |
prompt=prompt1),
|
21 |
-
Text2ImageRegion(0, tile_height, tile_width - overlap, tile_width - overlap + tile_width, guidance_scale=
|
22 |
prompt=prompt2),
|
23 |
-
Text2ImageRegion(0, tile_height, (tile_width - overlap) * 2, (tile_width - overlap) * 2 + tile_width, guidance_scale=
|
24 |
prompt=prompt3),
|
25 |
],
|
26 |
num_inference_steps=steps,
|
27 |
seed=seed,
|
28 |
)["sample"][0]
|
29 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
30 |
|
31 |
-
demo
|
32 |
-
fn=generate,
|
33 |
-
inputs=[
|
34 |
-
gr.Textbox(lines=2, label="Left region prompt"),
|
35 |
-
gr.Textbox(lines=2, label="Center region prompt"),
|
36 |
-
gr.Textbox(lines=2, label="Right region prompt"),
|
37 |
-
gr.Slider(minimum=128, maximum=320, value=256, step=8, label="Overlap between diffusion regions"),
|
38 |
-
gr.Slider(minimum=0, maximum=15, value=8, step=1, label="Global guidance scale"),
|
39 |
-
gr.Slider(minimum=1, maximum=50, value=15, step=1, label="Number of diffusion steps"),
|
40 |
-
gr.Number(value=12345, precision=0),
|
41 |
-
],
|
42 |
-
outputs="image",
|
43 |
-
examples=[
|
44 |
-
[
|
45 |
-
"A charming house in the countryside, by jakub rozalski, sunset lighting, elegant, highly detailed, smooth, sharp focus, artstation, stunning masterpiece",
|
46 |
-
"A dirt road in the countryside crossing pastures, by jakub rozalski, sunset lighting, elegant, highly detailed, smooth, sharp focus, artstation, stunning masterpiece",
|
47 |
-
"An old and rusty giant robot lying on a dirt road, by jakub rozalski, dark sunset lighting, elegant, highly detailed, smooth, sharp focus, artstation, stunning masterpiece",
|
48 |
-
256,
|
49 |
-
8,
|
50 |
-
50,
|
51 |
-
7178915308
|
52 |
-
],
|
53 |
-
],
|
54 |
-
title="Mixture of Diffusers",
|
55 |
-
article="",
|
56 |
-
)
|
57 |
-
demo.launch(server_name="0.0.0.0")
|
|
|
8 |
scheduler = LMSDiscreteScheduler(beta_start=0.00085, beta_end=0.012, beta_schedule="scaled_linear", num_train_timesteps=1000)
|
9 |
pipeline = StableDiffusionCanvasPipeline.from_pretrained("CompVis/stable-diffusion-v1-4", scheduler=scheduler).to("cuda" if torch.cuda.is_available() else "cpu")
|
10 |
|
11 |
+
def generate(prompt1, prompt2, prompt3, gc1, gc2, gc3, overlap, steps, seed):
|
12 |
"""Mixture of Diffusers generation"""
|
13 |
tile_width = 640
|
14 |
tile_height = 640
|
|
|
16 |
canvas_height=tile_height,
|
17 |
canvas_width=tile_width + (tile_width - overlap) * 2,
|
18 |
regions=[
|
19 |
+
Text2ImageRegion(0, tile_height, 0, tile_width, guidance_scale=gc1,
|
20 |
prompt=prompt1),
|
21 |
+
Text2ImageRegion(0, tile_height, tile_width - overlap, tile_width - overlap + tile_width, guidance_scale=gc2,
|
22 |
prompt=prompt2),
|
23 |
+
Text2ImageRegion(0, tile_height, (tile_width - overlap) * 2, (tile_width - overlap) * 2 + tile_width, guidance_scale=gc3,
|
24 |
prompt=prompt3),
|
25 |
],
|
26 |
num_inference_steps=steps,
|
27 |
seed=seed,
|
28 |
)["sample"][0]
|
29 |
|
30 |
+
with gr.Blocks(title="Mixture of Diffusers") as demo:
|
31 |
+
gr.Markdown("# Mixture of Diffusers")
|
32 |
+
with gr.Row():
|
33 |
+
with gr.Column(scale=1):
|
34 |
+
gr.Markdown("### Left region")
|
35 |
+
left_prompt = gr.Textbox(lines=2, label="Prompt")
|
36 |
+
left_gs = gr.Slider(minimum=0, maximum=15, value=8, step=1, label="Guidance scale")
|
37 |
+
with gr.Column(scale=1):
|
38 |
+
gr.Markdown("### Center region")
|
39 |
+
center_prompt = gr.Textbox(lines=2, label="Prompt")
|
40 |
+
center_gs = gr.Slider(minimum=0, maximum=15, value=8, step=1, label="Guidance scale")
|
41 |
+
with gr.Column(scale=1):
|
42 |
+
gr.Markdown("### Right region")
|
43 |
+
right_prompt = gr.Textbox(lines=2, label="Prompt")
|
44 |
+
right_gs = gr.Slider(minimum=0, maximum=15, value=8, step=1, label="Guidance scale")
|
45 |
+
gr.Markdown("### General parameters")
|
46 |
+
with gr.Row():
|
47 |
+
with gr.Column(scale=1):
|
48 |
+
overlap = gr.Slider(minimum=128, maximum=320, value=256, step=8, label="Overlap between diffusion regions")
|
49 |
+
with gr.Column(scale=1):
|
50 |
+
steps = gr.Slider(minimum=1, maximum=50, value=15, step=1, label="Number of diffusion steps")
|
51 |
+
with gr.Column(scale=1):
|
52 |
+
seed = gr.Number(value=12345, precision=0, label="Random seed")
|
53 |
+
with gr.Row():
|
54 |
+
button = gr.Button(value="Generate")
|
55 |
+
with gr.Row():
|
56 |
+
output = gr.Image(label="Generated image")
|
57 |
+
with gr.Row():
|
58 |
+
gr.Examples(
|
59 |
+
examples=[
|
60 |
+
[
|
61 |
+
"A charming house in the countryside, by jakub rozalski, sunset lighting, elegant, highly detailed, smooth, sharp focus, artstation, stunning masterpiece",
|
62 |
+
"A dirt road in the countryside crossing pastures, by jakub rozalski, sunset lighting, elegant, highly detailed, smooth, sharp focus, artstation, stunning masterpiece",
|
63 |
+
"An old and rusty giant robot lying on a dirt road, by jakub rozalski, dark sunset lighting, elegant, highly detailed, smooth, sharp focus, artstation, stunning masterpiece",
|
64 |
+
8, 8, 8,
|
65 |
+
256,
|
66 |
+
50,
|
67 |
+
7178915308
|
68 |
+
],
|
69 |
+
],
|
70 |
+
inputs=[left_prompt, center_prompt, right_prompt, left_gs, center_gs, right_gs, overlap, steps, seed],
|
71 |
+
# outputs=output,
|
72 |
+
# fn=generate,
|
73 |
+
# cache_examples=True
|
74 |
+
)
|
75 |
+
|
76 |
+
button.click(
|
77 |
+
generate,
|
78 |
+
inputs=[left_prompt, center_prompt, right_prompt, left_gs, center_gs, right_gs, overlap, steps, seed],
|
79 |
+
outputs=output
|
80 |
+
)
|
81 |
|
82 |
+
demo.launch(server_name="0.0.0.0")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|