Spaces:
Running
Running
| import gradio as gr | |
| from typing import Any | |
| from backend.models.lcmdiffusion_setting import DiffusionTask | |
| from models.interface_types import InterfaceType | |
| from constants import DEVICE | |
| from state import get_settings, get_context | |
| from frontend.utils import is_reshape_required | |
| from concurrent.futures import ThreadPoolExecutor | |
| from pprint import pprint | |
| app_settings = get_settings() | |
| context = get_context(InterfaceType.WEBUI) | |
| previous_width = 0 | |
| previous_height = 0 | |
| previous_model_id = "" | |
| previous_num_of_images = 0 | |
| def generate_text_to_image( | |
| prompt, | |
| neg_prompt, | |
| ) -> Any: | |
| global previous_height, previous_width, previous_model_id, previous_num_of_images, app_settings | |
| app_settings.settings.lcm_diffusion_setting.prompt = prompt | |
| app_settings.settings.lcm_diffusion_setting.negative_prompt = neg_prompt | |
| app_settings.settings.lcm_diffusion_setting.diffusion_task = ( | |
| DiffusionTask.text_to_image.value | |
| ) | |
| model_id = app_settings.settings.lcm_diffusion_setting.openvino_lcm_model_id | |
| reshape = False | |
| image_width = app_settings.settings.lcm_diffusion_setting.image_width | |
| image_height = app_settings.settings.lcm_diffusion_setting.image_height | |
| num_images = app_settings.settings.lcm_diffusion_setting.number_of_images | |
| if app_settings.settings.lcm_diffusion_setting.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, | |
| ) | |
| with ThreadPoolExecutor(max_workers=1) as executor: | |
| future = executor.submit( | |
| context.generate_text_to_image, | |
| app_settings.settings, | |
| reshape, | |
| DEVICE, | |
| ) | |
| images = future.result() | |
| # images = context.generate_text_to_image( | |
| # app_settings.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() -> None: | |
| with gr.Blocks(): | |
| with gr.Row(): | |
| with gr.Column(): | |
| with gr.Row(): | |
| prompt = gr.Textbox( | |
| show_label=False, | |
| lines=3, | |
| placeholder="A fantasy landscape", | |
| container=False, | |
| ) | |
| generate_btn = gr.Button( | |
| "Generate", | |
| elem_id="generate_button", | |
| scale=0, | |
| ) | |
| negative_prompt = gr.Textbox( | |
| label="Negative prompt (Works in LCM-LoRA mode, set guidance > 1.0) :", | |
| lines=1, | |
| placeholder="", | |
| ) | |
| input_params = [prompt, negative_prompt] | |
| with gr.Column(): | |
| output = gr.Gallery( | |
| label="Generated images", | |
| show_label=True, | |
| elem_id="gallery", | |
| columns=2, | |
| height=512, | |
| ) | |
| generate_btn.click( | |
| fn=generate_text_to_image, | |
| inputs=input_params, | |
| outputs=output, | |
| ) | |