Spaces:
Running
Running
File size: 5,957 Bytes
6bcacf9 b4203f8 6bcacf9 8c39361 6bcacf9 8c39361 6bcacf9 8c39361 6bcacf9 8c39361 6bcacf9 8c39361 6bcacf9 8c39361 6bcacf9 8c39361 6bcacf9 8c39361 6bcacf9 8c39361 6bcacf9 8c39361 6bcacf9 8c39361 b4203f8 7a66052 6bcacf9 8c39361 6bcacf9 8c39361 6bcacf9 8c39361 6bcacf9 8c39361 d5b85e9 6bcacf9 8c39361 6bcacf9 8c39361 6bcacf9 8c39361 6bcacf9 |
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 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 |
from typing import Any
import gradio as gr
from backend.models.lcmdiffusion_setting import LCMDiffusionSetting
from context import Context
from models.interface_types import InterfaceType
from app_settings import Settings
from constants import LCM_DEFAULT_MODEL, LCM_DEFAULT_MODEL_OPENVINO
from frontend.utils import is_reshape_required
from app_settings import AppSettings
from constants import DEVICE
from frontend.utils import enable_openvino_controls
random_enabled = True
context = Context(InterfaceType.WEBUI)
previous_width = 0
previous_height = 0
previous_model_id = ""
previous_num_of_images = 0
def generate_text_to_image(
prompt,
image_height,
image_width,
inference_steps,
guidance_scale,
num_images,
seed,
use_openvino,
use_safety_checker,
tiny_auto_encoder_checkbox,
) -> Any:
global previous_height, previous_width, previous_model_id, previous_num_of_images
model_id = LCM_DEFAULT_MODEL
if use_openvino:
model_id = LCM_DEFAULT_MODEL_OPENVINO
use_seed = True if seed != -1 else False
lcm_diffusion_settings = LCMDiffusionSetting(
lcm_model_id=model_id,
prompt=prompt,
image_height=image_height,
image_width=image_width,
inference_steps=inference_steps,
guidance_scale=guidance_scale,
number_of_images=num_images,
seed=seed,
use_openvino=use_openvino,
use_safety_checker=use_safety_checker,
use_seed=use_seed,
use_tiny_auto_encoder=tiny_auto_encoder_checkbox,
)
settings = Settings(
lcm_diffusion_setting=lcm_diffusion_settings,
)
reshape = False
if use_openvino:
reshape = is_reshape_required(
previous_width,
image_width,
previous_height,
image_height,
previous_model_id,
model_id,
previous_num_of_images,
num_images,
)
images = context.generate_text_to_image(
settings,
reshape,
DEVICE,
)
previous_width = image_width
previous_height = image_height
previous_model_id = model_id
previous_num_of_images = num_images
return images
def get_text_to_image_ui(app_settings: AppSettings) -> None:
with gr.Blocks():
with gr.Row():
with gr.Column():
def random_seed():
global random_enabled
random_enabled = not random_enabled
seed_val = -1
if not random_enabled:
seed_val = 42
return gr.Number.update(
interactive=not random_enabled, value=seed_val
)
with gr.Row():
prompt = gr.Textbox(
label="Describe the image you'd like to see",
lines=3,
placeholder="A fantasy landscape",
)
generate_btn = gr.Button(
"Generate",
elem_id="generate_button",
scale=0,
)
num_inference_steps = gr.Slider(
1, 25, value=4, step=1, label="Inference Steps"
)
image_height = gr.Slider(
256, 768, value=512, step=256, label="Image Height"
)
image_width = gr.Slider(
256, 768, value=512, step=256, label="Image Width"
)
num_images = gr.Slider(
1,
50,
value=1,
step=1,
label="Number of images to generate",
)
with gr.Accordion("Advanced options", open=False):
guidance_scale = gr.Slider(
1.0, 2.0, value=1.0, step=0.5, label="Guidance Scale"
)
seed = gr.Number(
label="Seed",
value=-1,
precision=0,
interactive=False,
)
seed_checkbox = gr.Checkbox(
label="Use random seed",
value=True,
interactive=True,
)
openvino_checkbox = gr.Checkbox(
label="Use OpenVINO",
value=False,
interactive=enable_openvino_controls(),
)
safety_checker_checkbox = gr.Checkbox(
label="Use Safety Checker",
value=True,
interactive=True,
)
tiny_auto_encoder_checkbox = gr.Checkbox(
label="Use tiny auto encoder for SD",
value=False,
interactive=True,
)
input_params = [
prompt,
image_height,
image_width,
num_inference_steps,
guidance_scale,
num_images,
seed,
openvino_checkbox,
safety_checker_checkbox,
tiny_auto_encoder_checkbox,
]
with gr.Column():
output = gr.Gallery(
label="Generated images",
show_label=True,
elem_id="gallery",
columns=2,
)
seed_checkbox.change(fn=random_seed, outputs=seed)
generate_btn.click(
fn=generate_text_to_image,
inputs=input_params,
outputs=output,
)
|