From e326535b5a84f0db88d5f1d5dbb543c47928ac2f Mon Sep 17 00:00:00 2001 From: lllyasviel Date: Mon, 29 Jan 2024 20:01:42 -0800 Subject: [PATCH] Update forge_ipadapter.py --- .../scripts/forge_ipadapter.py | 26 +++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/extensions-builtin/sd_forge_ipadapter/scripts/forge_ipadapter.py b/extensions-builtin/sd_forge_ipadapter/scripts/forge_ipadapter.py index 6425218b..ffac24c6 100644 --- a/extensions-builtin/sd_forge_ipadapter/scripts/forge_ipadapter.py +++ b/extensions-builtin/sd_forge_ipadapter/scripts/forge_ipadapter.py @@ -1,15 +1,37 @@ from modules_forge.shared import add_supported_control_model from modules_forge.supported_controlnet import ControlModelPatcher +from IPAdapterPlus import IPAdapterApply + +opIPAdapterApply = IPAdapterApply() class IPAdapterPatcher(ControlModelPatcher): @staticmethod def try_build_from_state_dict(state_dict, ckpt_path): - a = 0 - return None + model = state_dict + + if ckpt_path.lower().endswith(".safetensors"): + st_model = {"image_proj": {}, "ip_adapter": {}} + for key in model.keys(): + if key.startswith("image_proj."): + st_model["image_proj"][key.replace("image_proj.", "")] = model[key] + elif key.startswith("ip_adapter."): + st_model["ip_adapter"][key.replace("ip_adapter.", "")] = model[key] + model = st_model + + if "ip_adapter" not in model.keys() or not model["ip_adapter"]: + return None + + return IPAdapterPatcher(model) def __init__(self, model_patcher): super().__init__(model_patcher) + self.ipadapter = model_patcher + return + + def process_before_every_sampling(self, process, cond, *args, **kwargs): + a = 0 + return add_supported_control_model(IPAdapterPatcher)