From b45c68fe3ed96df286300def66abf717fbafea87 Mon Sep 17 00:00:00 2001 From: lllyasviel Date: Sat, 27 Jan 2024 22:44:49 -0800 Subject: [PATCH] i --- .../scripts/sd_forge_controlnet_example.py | 2 +- modules_forge/controlnet.py | 4 ++-- modules_forge/forge_sampler.py | 5 +++++ 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/extensions-builtin/sd_forge_controlnet_example/scripts/sd_forge_controlnet_example.py b/extensions-builtin/sd_forge_controlnet_example/scripts/sd_forge_controlnet_example.py index 2277ae53..6c34a0ca 100644 --- a/extensions-builtin/sd_forge_controlnet_example/scripts/sd_forge_controlnet_example.py +++ b/extensions-builtin/sd_forge_controlnet_example/scripts/sd_forge_controlnet_example.py @@ -81,7 +81,7 @@ class ControlNetExampleForge(scripts.Script): unet = p.sd_model.forge_objects.unet - unet = apply_controlnet_advanced(unet=unet, controlnet=self.model, cond_hint=control_image, + unet = apply_controlnet_advanced(unet=unet, controlnet=self.model, image_bhwc=control_image, strength=1.0, start_percent=0.0, end_percent=1.0, positive_advanced_weighting=None, negative_advanced_weighting=None) diff --git a/modules_forge/controlnet.py b/modules_forge/controlnet.py index 64437a32..9754e901 100644 --- a/modules_forge/controlnet.py +++ b/modules_forge/controlnet.py @@ -1,14 +1,14 @@ def apply_controlnet_advanced( unet, controlnet, - cond_hint, + image_bhwc, strength, start_percent, end_percent, positive_advanced_weighting=None, negative_advanced_weighting=None): - cnet = controlnet.copy().set_cond_hint(cond_hint, strength, (start_percent, end_percent)) + cnet = controlnet.copy().set_cond_hint(image_bhwc.movedim(-1, 1), strength, (start_percent, end_percent)) cnet.positive_advanced_weighting = positive_advanced_weighting cnet.negative_advanced_weighting = negative_advanced_weighting diff --git a/modules_forge/forge_sampler.py b/modules_forge/forge_sampler.py index aa510478..4e44aaac 100644 --- a/modules_forge/forge_sampler.py +++ b/modules_forge/forge_sampler.py @@ -54,6 +54,7 @@ def cond_from_a1111_to_patched_ldm_weighted(cond, weights): def forge_sample(self, denoiser_params, cond_scale, cond_composition): model = self.inner_model.inner_model.forge_objects.unet.model + control = self.inner_model.inner_model.forge_objects.unet.controlnet_linked_list x = denoiser_params.x timestep = denoiser_params.sigma uncond = cond_from_a1111_to_patched_ldm(denoiser_params.text_uncond) @@ -69,6 +70,10 @@ def forge_sample(self, denoiser_params, cond_scale, cond_composition): uncond[0]['model_conds']['c_concat'] = CONDRegular(image_cond_in) cond[0]['model_conds']['c_concat'] = CONDRegular(image_cond_in) + if control is not None: + for h in cond + uncond: + h['control'] = control + denoised = sampling_function(model, x, timestep, uncond, cond, cond_scale, model_options, seed) return denoised