File size: 2,682 Bytes
e682b4a
0aae4be
e682b4a
 
 
 
 
 
0aae4be
e682b4a
0aae4be
e682b4a
0aae4be
 
e682b4a
0aae4be
 
e682b4a
0aae4be
e682b4a
0aae4be
e682b4a
0aae4be
e682b4a
 
0aae4be
e682b4a
 
 
 
 
 
 
6320655
 
 
0aae4be
 
 
6320655
 
 
 
 
 
 
 
0aae4be
 
 
6320655
 
 
0aae4be
 
e682b4a
6320655
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
import gradio as gr
import torch

from diffusers import LMSDiscreteScheduler
from mixdiff import StableDiffusionCanvasPipeline, Text2ImageRegion

# Creater scheduler and model (similar to StableDiffusionPipeline)
scheduler = LMSDiscreteScheduler(beta_start=0.00085, beta_end=0.012, beta_schedule="scaled_linear", num_train_timesteps=1000)
pipeline = StableDiffusionCanvasPipeline.from_pretrained("CompVis/stable-diffusion-v1-4", scheduler=scheduler).to("cuda" if torch.cuda.is_available() else "cpu")

def generate(prompt1, prompt2, prompt3, overlap, guidance_scale, steps, seed):
    """Mixture of Diffusers generation"""
    tile_width = 640
    tile_height = 640
    return pipeline(
        canvas_height=tile_height,
        canvas_width=tile_width + (tile_width - overlap) * 2,
        regions=[
            Text2ImageRegion(0, tile_height, 0, tile_width, guidance_scale=guidance_scale,
                prompt=prompt1),
            Text2ImageRegion(0, tile_height, tile_width - overlap, tile_width - overlap + tile_width, guidance_scale=guidance_scale,
                prompt=prompt2),
            Text2ImageRegion(0, tile_height, (tile_width - overlap) * 2, (tile_width - overlap) * 2 + tile_width, guidance_scale=guidance_scale,
                prompt=prompt3),
        ],
        num_inference_steps=steps,
        seed=seed,
    )["sample"][0]


demo = gr.Interface(
    fn=generate,
    inputs=[
        gr.Textbox(lines=2, label="Left region prompt"),
        gr.Textbox(lines=2, label="Center region prompt"),
        gr.Textbox(lines=2, label="Right region prompt"),
        gr.Slider(minimum=128, maximum=320, value=256, step=8, label="Overlap between diffusion regions"),
        gr.Slider(minimum=0, maximum=15, value=8, step=1, label="Global guidance scale"),
        gr.Slider(minimum=1, maximum=50, value=15, step=1, label="Number of diffusion steps"),
        gr.Number(value=12345, precision=0),
    ],
    outputs="image",
    examples=[
        [
            "A charming house in the countryside, by jakub rozalski, sunset lighting, elegant, highly detailed, smooth, sharp focus, artstation, stunning masterpiece",
            "A dirt road in the countryside crossing pastures, by jakub rozalski, sunset lighting, elegant, highly detailed, smooth, sharp focus, artstation, stunning masterpiece",
            "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",
            256,
            8,
            50,
            7178915308
        ],
    ],
    title="Mixture of Diffusers",
    article="",
)
demo.launch(server_name="0.0.0.0")