|
import threading |
|
|
|
|
|
buffer = [] |
|
outputs = [] |
|
is_working = False |
|
|
|
|
|
def worker(): |
|
global buffer, outputs, is_working |
|
|
|
import time |
|
import shared |
|
import random |
|
import modules.default_pipeline as pipeline |
|
import modules.path |
|
import modules.patch |
|
|
|
from modules.sdxl_styles import apply_style, aspect_ratios |
|
from modules.private_logger import log |
|
|
|
try: |
|
async_gradio_app = shared.gradio_root |
|
flag = f'''App started successful. Use the app with {str(async_gradio_app.local_url)} or {str(async_gradio_app.server_name)}:{str(async_gradio_app.server_port)}''' |
|
if async_gradio_app.share: |
|
flag += f''' or {async_gradio_app.share_url}''' |
|
print(flag) |
|
except Exception as e: |
|
print(e) |
|
|
|
def handler(task): |
|
prompt, style_selection = task |
|
steps = 30 |
|
switch = 20 |
|
aspect_ratios_selection = '1280×768' |
|
seed = random.randint(1, int(1024*1024*1024)) |
|
sharpness = 10.0 |
|
|
|
loras=[(modules.path.default_lora_name, modules.path.default_lora_weight), ('None', 0.5), ('None', 0.5), ('None', 0.5), ('None', 0.5)] |
|
modules.patch.sharpness = sharpness |
|
pipeline.refresh_base_model(modules.path.default_base_model_name) |
|
pipeline.refresh_refiner_model(modules.path.default_refiner_model_name) |
|
pipeline.refresh_loras(loras) |
|
pipeline.clean_prompt_cond_caches() |
|
|
|
p_txt, n_txt = apply_style(style_selection, prompt) |
|
width, height = aspect_ratios[aspect_ratios_selection] |
|
results = [] |
|
|
|
def callback(step, x0, x, total_steps, y): |
|
done_steps = step |
|
outputs.append(['preview', ( |
|
int(100.0 * float(done_steps) / float(steps)), |
|
f'{step}/{total_steps}', |
|
y)]) |
|
|
|
img = pipeline.process(p_txt, n_txt, steps, switch, width, height, seed, callback=callback)[0] |
|
|
|
d = [ |
|
('Prompt', prompt), |
|
('Style', style_selection), |
|
('Seed', seed) |
|
] |
|
for n, w in loras: |
|
if n != 'None': |
|
d.append((f'LoRA [{n}] weight', w)) |
|
img_path=log(img, d) |
|
|
|
outputs.append(['results', [img, img_path]]) |
|
return |
|
|
|
while True: |
|
time.sleep(0.01) |
|
if len(buffer) > 0: |
|
is_working=True |
|
task = buffer.pop(0) |
|
handler(task) |
|
is_working=False |
|
pass |
|
|
|
|
|
threading.Thread(target=worker, daemon=True).start() |
|
|