File size: 2,497 Bytes
796cb1f
 
 
 
 
34a218b
796cb1f
 
 
34a218b
796cb1f
 
0276c07
796cb1f
 
 
f00f46e
796cb1f
 
7ccee96
796cb1f
0276c07
 
bb33d1a
 
 
 
0276c07
 
 
796cb1f
34a218b
 
 
 
 
 
 
 
f00f46e
34a218b
 
796cb1f
59406a8
796cb1f
34a218b
 
796cb1f
34a218b
796cb1f
34a218b
796cb1f
34a218b
 
796cb1f
 
347eac7
 
 
 
 
 
 
 
 
 
 
 
 
796cb1f
 
 
 
 
34a218b
796cb1f
 
34a218b
796cb1f
 
 
 
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
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()