File size: 1,918 Bytes
2494346
bbedeb2
 
 
9905ad3
3979c37
bbedeb2
 
 
 
9905ad3
bbedeb2
 
d062d3a
cd49d85
9905ad3
ca685d6
bbedeb2
 
 
01497eb
bbedeb2
 
 
ca685d6
 
 
01497eb
bbedeb2
827a7ed
7d697f7
 
 
16e8fe9
827a7ed
 
01497eb
7d697f7
01497eb
 
bbedeb2
 
ca685d6
bbedeb2
 
2d98a52
3979c37
7095c8c
01497eb
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
import modules.core as core
import os
import torch

from modules.path import modelfile_path, lorafile_path
from modules.cv2win32 import close_all_preview


xl_base_filename = os.path.join(modelfile_path, 'sd_xl_base_1.0.safetensors')
xl_refiner_filename = os.path.join(modelfile_path, 'sd_xl_refiner_1.0.safetensors')
xl_base_offset_lora_filename = os.path.join(lorafile_path, 'sd_xl_offset_example-lora_1.0.safetensors')

xl_base = core.load_model(xl_base_filename)
xl_base = core.load_lora(xl_base, xl_base_offset_lora_filename, strength_model=0.5, strength_clip=0.0)
del xl_base.vae

xl_refiner = core.load_model(xl_refiner_filename)


@torch.no_grad()
def process(positive_prompt, negative_prompt, steps, switch, width, height, image_seed):
    positive_conditions = core.encode_prompt_condition(clip=xl_base.clip, prompt=positive_prompt)
    negative_conditions = core.encode_prompt_condition(clip=xl_base.clip, prompt=negative_prompt)

    positive_conditions_refiner = core.encode_prompt_condition(clip=xl_refiner.clip, prompt=positive_prompt)
    negative_conditions_refiner = core.encode_prompt_condition(clip=xl_refiner.clip, prompt=negative_prompt)

    empty_latent = core.generate_empty_latent(width=width, height=height, batch_size=1)

    sampled_latent = core.ksampler_with_refiner(
        model=xl_base.unet,
        positive=positive_conditions,
        negative=negative_conditions,
        refiner=xl_refiner.unet,
        refiner_positive=positive_conditions_refiner,
        refiner_negative=negative_conditions_refiner,
        refiner_switch_step=switch,
        latent=empty_latent,
        steps=steps, start_step=0, last_step=steps, disable_noise=False, force_full_denoise=True,
        seed=image_seed
    )

    decoded_latent = core.decode_vae(vae=xl_refiner.vae, latent_image=sampled_latent)

    images = core.image_to_numpy(decoded_latent)

    close_all_preview()

    return images