From 3aff8a5c648c24b23121586c8aa7a5912893169c Mon Sep 17 00:00:00 2001 From: lllyasviel Date: Tue, 30 Jan 2024 18:05:11 -0800 Subject: [PATCH] ini reference --- .../preprocessor_compiled.py | 132 +++++++++--------- .../scripts/forge_reference.py | 75 ++++++++++ 2 files changed, 141 insertions(+), 66 deletions(-) create mode 100644 extensions-builtin/forge_preprocessor_reference/scripts/forge_reference.py diff --git a/extensions-builtin/forge_legacy_preprocessors/legacy_preprocessors/preprocessor_compiled.py b/extensions-builtin/forge_legacy_preprocessors/legacy_preprocessors/preprocessor_compiled.py index dc082343..65e8718d 100644 --- a/extensions-builtin/forge_legacy_preprocessors/legacy_preprocessors/preprocessor_compiled.py +++ b/extensions-builtin/forge_legacy_preprocessors/legacy_preprocessors/preprocessor_compiled.py @@ -794,72 +794,72 @@ legacy_preprocessors = { "Recolor" ] }, - "reference_adain": { - "label": "reference_adain", - "call_function": identity, - "unload_function": None, - "managed_model": None, - "model_free": True, - "no_control_mode": False, - "resolution": None, - "slider_1": { - "label": "Style Fidelity (only for Balanced mode)", - "value": 0.5, - "minimum": 0.0, - "maximum": 1.0, - "step": 0.01 - }, - "slider_2": None, - "slider_3": None, - "priority": 0, - "tags": [ - "Reference" - ] - }, - "reference_adain+attn": { - "label": "reference_adain+attn", - "call_function": identity, - "unload_function": None, - "managed_model": None, - "model_free": True, - "no_control_mode": False, - "resolution": None, - "slider_1": { - "label": "Style Fidelity (only for Balanced mode)", - "value": 0.5, - "minimum": 0.0, - "maximum": 1.0, - "step": 0.01 - }, - "slider_2": None, - "slider_3": None, - "priority": 0, - "tags": [ - "Reference" - ] - }, - "reference_only": { - "label": "reference_only", - "call_function": identity, - "unload_function": None, - "managed_model": None, - "model_free": True, - "no_control_mode": False, - "resolution": None, - "slider_1": { - "label": "Style Fidelity (only for Balanced mode)", - "value": 0.5, - "minimum": 0.0, - "maximum": 1.0, - "step": 0.01 - }, - "slider_2": None, - "slider_3": None, - "priority": 100, - "tags": [ - "Reference" - ] - }, + # "reference_adain": { + # "label": "reference_adain", + # "call_function": identity, + # "unload_function": None, + # "managed_model": None, + # "model_free": True, + # "no_control_mode": False, + # "resolution": None, + # "slider_1": { + # "label": "Style Fidelity (only for Balanced mode)", + # "value": 0.5, + # "minimum": 0.0, + # "maximum": 1.0, + # "step": 0.01 + # }, + # "slider_2": None, + # "slider_3": None, + # "priority": 0, + # "tags": [ + # "Reference" + # ] + # }, + # "reference_adain+attn": { + # "label": "reference_adain+attn", + # "call_function": identity, + # "unload_function": None, + # "managed_model": None, + # "model_free": True, + # "no_control_mode": False, + # "resolution": None, + # "slider_1": { + # "label": "Style Fidelity (only for Balanced mode)", + # "value": 0.5, + # "minimum": 0.0, + # "maximum": 1.0, + # "step": 0.01 + # }, + # "slider_2": None, + # "slider_3": None, + # "priority": 0, + # "tags": [ + # "Reference" + # ] + # }, + # "reference_only": { + # "label": "reference_only", + # "call_function": identity, + # "unload_function": None, + # "managed_model": None, + # "model_free": True, + # "no_control_mode": False, + # "resolution": None, + # "slider_1": { + # "label": "Style Fidelity (only for Balanced mode)", + # "value": 0.5, + # "minimum": 0.0, + # "maximum": 1.0, + # "step": 0.01 + # }, + # "slider_2": None, + # "slider_3": None, + # "priority": 100, + # "tags": [ + # "Reference" + # ] + # }, # "revision_clipvision": { # "label": "revision_clipvision", # "call_function": functools.partial(clip, config='clip_g'), diff --git a/extensions-builtin/forge_preprocessor_reference/scripts/forge_reference.py b/extensions-builtin/forge_preprocessor_reference/scripts/forge_reference.py new file mode 100644 index 00000000..f2a78661 --- /dev/null +++ b/extensions-builtin/forge_preprocessor_reference/scripts/forge_reference.py @@ -0,0 +1,75 @@ +import torch + +from modules_forge.supported_preprocessor import Preprocessor, PreprocessorParameter +from modules_forge.shared import add_supported_preprocessor + + +class PreprocessorReference(Preprocessor): + def __init__(self, name, use_attn=True, use_adain=True, priority=0): + super().__init__() + self.name = name + self.use_attn = use_attn + self.use_adain = use_adain + self.sorting_priority = priority + self.tags = ['Reference'] + self.slider_resolution = PreprocessorParameter(visible=False) + self.slider_1 = PreprocessorParameter(label='Style Fidelity', value=0.5, minimum=0.0, maximum=1.0, step=0.01) + self.show_control_mode = False + self.corp_image_with_a1111_mask_when_in_img2img_inpaint_tab = False + self.do_not_need_model = True + + def process_before_every_sampling(self, process, cond, *args, **kwargs): + unit = kwargs['unit'] + weight = float(unit.weight) + style_fidelity = float(unit.threshold_a) + start_percent = float(unit.guidance_start) + end_percent = float(unit.guidance_end) + + unet = process.sd_model.forge_objects.unet.clone() + sigma_max = unet.model_sampling.percent_to_sigma(start_percent) + sigma_min = unet.model_sampling.percent_to_sigma(end_percent) + + def conditioning_modifier(model, x, timestep, uncond, cond, cond_scale, model_options, seed): + sigma = timestep[0].item() + if not (sigma_min < sigma < sigma_max): + return model, x, timestep, uncond, cond, cond_scale, model_options, seed + + a = 0 + + return model, x, timestep, uncond, cond, cond_scale, model_options, seed + + def block_proc(h, flag, transformer_options): + sigma = transformer_options["sigmas"][0].item() + if not (sigma_min < sigma < sigma_max): + return h + + a = 0 + + return h + + unet.add_block_modifier(block_proc) + unet.add_conditioning_modifier(conditioning_modifier) + + process.sd_model.forge_objects.unet = unet + + return + + +add_supported_preprocessor(PreprocessorReference( + name='reference_only', + use_attn=True, + use_adain=False, + priority=100 +)) + +add_supported_preprocessor(PreprocessorReference( + name='reference_adain', + use_attn=False, + use_adain=True +)) + +add_supported_preprocessor(PreprocessorReference( + name='reference_adain+attn', + use_attn=True, + use_adain=True +))