From cc37860438918dd9369048c209e0c7f1eedf4815 Mon Sep 17 00:00:00 2001 From: Artiprocher Date: Thu, 25 Apr 2024 16:22:37 +0800 Subject: [PATCH] support diffusers controlnets --- diffsynth/models/__init__.py | 3 ++- diffsynth/models/sd_controlnet.py | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/diffsynth/models/__init__.py b/diffsynth/models/__init__.py index 99b113f..8ed4c93 100644 --- a/diffsynth/models/__init__.py +++ b/diffsynth/models/__init__.py @@ -45,7 +45,8 @@ class ModelManager: def is_controlnet(self, state_dict): param_name = "control_model.time_embed.0.weight" - return param_name in state_dict + param_name_2 = "mid_block.resnets.1.time_emb_proj.weight" # For controlnets in diffusers format + return param_name in state_dict or param_name_2 in state_dict def is_animatediff(self, state_dict): param_name = "mid_block.motion_modules.0.temporal_transformer.proj_out.weight" diff --git a/diffsynth/models/sd_controlnet.py b/diffsynth/models/sd_controlnet.py index 2b6f57e..15a4838 100644 --- a/diffsynth/models/sd_controlnet.py +++ b/diffsynth/models/sd_controlnet.py @@ -232,6 +232,9 @@ class SDControlNetStateDictConverter: return state_dict_ def from_civitai(self, state_dict): + if "mid_block.resnets.1.time_emb_proj.weight" in state_dict: + # For controlnets in diffusers format + return self.from_diffusers(state_dict) rename_dict = { "control_model.time_embed.0.weight": "time_embedding.0.weight", "control_model.time_embed.0.bias": "time_embedding.0.bias",