From 0b4430e840775c20abdb19f7a7401a35c824ce37 Mon Sep 17 00:00:00 2001 From: George He Date: Thu, 3 Aug 2023 11:37:07 -0400 Subject: [PATCH] Fix typerror in pipeline handling for MultiControlNets which only contain a single ControlNet (#4454) * Handle single controlnet in multicontrolnet * Fix formatting --- src/diffusers/pipelines/controlnet/pipeline_controlnet.py | 5 ++++- .../pipelines/controlnet/pipeline_controlnet_img2img.py | 5 ++++- .../pipelines/controlnet/pipeline_controlnet_inpaint.py | 5 ++++- .../pipelines/controlnet/pipeline_controlnet_sd_xl.py | 5 ++++- 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/diffusers/pipelines/controlnet/pipeline_controlnet.py b/src/diffusers/pipelines/controlnet/pipeline_controlnet.py index 6c15d99582..b5d8ea8cb7 100644 --- a/src/diffusers/pipelines/controlnet/pipeline_controlnet.py +++ b/src/diffusers/pipelines/controlnet/pipeline_controlnet.py @@ -947,7 +947,10 @@ class StableDiffusionControlNetPipeline( if isinstance(controlnet_keep[i], list): cond_scale = [c * s for c, s in zip(controlnet_conditioning_scale, controlnet_keep[i])] else: - cond_scale = controlnet_conditioning_scale * controlnet_keep[i] + controlnet_cond_scale = controlnet_conditioning_scale + if isinstance(controlnet_cond_scale, list): + controlnet_cond_scale = controlnet_cond_scale[0] + cond_scale = controlnet_cond_scale * controlnet_keep[i] down_block_res_samples, mid_block_res_sample = self.controlnet( control_model_input, diff --git a/src/diffusers/pipelines/controlnet/pipeline_controlnet_img2img.py b/src/diffusers/pipelines/controlnet/pipeline_controlnet_img2img.py index de1bd2f97f..655d9db01c 100644 --- a/src/diffusers/pipelines/controlnet/pipeline_controlnet_img2img.py +++ b/src/diffusers/pipelines/controlnet/pipeline_controlnet_img2img.py @@ -1034,7 +1034,10 @@ class StableDiffusionControlNetImg2ImgPipeline( if isinstance(controlnet_keep[i], list): cond_scale = [c * s for c, s in zip(controlnet_conditioning_scale, controlnet_keep[i])] else: - cond_scale = controlnet_conditioning_scale * controlnet_keep[i] + controlnet_cond_scale = controlnet_conditioning_scale + if isinstance(controlnet_cond_scale, list): + controlnet_cond_scale = controlnet_cond_scale[0] + cond_scale = controlnet_cond_scale * controlnet_keep[i] down_block_res_samples, mid_block_res_sample = self.controlnet( control_model_input, diff --git a/src/diffusers/pipelines/controlnet/pipeline_controlnet_inpaint.py b/src/diffusers/pipelines/controlnet/pipeline_controlnet_inpaint.py index e37db36737..83bec1e190 100644 --- a/src/diffusers/pipelines/controlnet/pipeline_controlnet_inpaint.py +++ b/src/diffusers/pipelines/controlnet/pipeline_controlnet_inpaint.py @@ -1269,7 +1269,10 @@ class StableDiffusionControlNetInpaintPipeline( if isinstance(controlnet_keep[i], list): cond_scale = [c * s for c, s in zip(controlnet_conditioning_scale, controlnet_keep[i])] else: - cond_scale = controlnet_conditioning_scale * controlnet_keep[i] + controlnet_cond_scale = controlnet_conditioning_scale + if isinstance(controlnet_cond_scale, list): + controlnet_cond_scale = controlnet_cond_scale[0] + cond_scale = controlnet_cond_scale * controlnet_keep[i] down_block_res_samples, mid_block_res_sample = self.controlnet( control_model_input, diff --git a/src/diffusers/pipelines/controlnet/pipeline_controlnet_sd_xl.py b/src/diffusers/pipelines/controlnet/pipeline_controlnet_sd_xl.py index 2fa4d3b047..bb95682215 100644 --- a/src/diffusers/pipelines/controlnet/pipeline_controlnet_sd_xl.py +++ b/src/diffusers/pipelines/controlnet/pipeline_controlnet_sd_xl.py @@ -967,7 +967,10 @@ class StableDiffusionXLControlNetPipeline(DiffusionPipeline, TextualInversionLoa if isinstance(controlnet_keep[i], list): cond_scale = [c * s for c, s in zip(controlnet_conditioning_scale, controlnet_keep[i])] else: - cond_scale = controlnet_conditioning_scale * controlnet_keep[i] + controlnet_cond_scale = controlnet_conditioning_scale + if isinstance(controlnet_cond_scale, list): + controlnet_cond_scale = controlnet_cond_scale[0] + cond_scale = controlnet_cond_scale * controlnet_keep[i] added_cond_kwargs = {"text_embeds": add_text_embeds, "time_ids": add_time_ids} down_block_res_samples, mid_block_res_sample = self.controlnet(