From 9403eeb73f8661a8657ff9faadcefc5f7fc08e18 Mon Sep 17 00:00:00 2001 From: 11dogzi <695660735@qq.com> Date: Tue, 9 Jul 2024 21:15:16 +0800 Subject: [PATCH] V4V5 --- Adapter_Mad_Assistant.py | 179 +++++++++++++++++- .../Adapter_Mad_Assistant.cpython-310.pyc | Bin 5448 -> 9044 bytes __pycache__/__init__.cpython-310.pyc | Bin 288 -> 288 bytes 3 files changed, 169 insertions(+), 10 deletions(-) diff --git a/Adapter_Mad_Assistant.py b/Adapter_Mad_Assistant.py index 3870c38..8e8ca09 100644 --- a/Adapter_Mad_Assistant.py +++ b/Adapter_Mad_Assistant.py @@ -1,8 +1,8 @@ import random class EGIPAdapter_Mad_Assistant: - CATEGORY_KEYS = ['0layer', '1layer', '2layer', '3layer', '4layer', '5layer', '6layer', '7layer', '8layer', '9layer', '10layer'] - OPTIONS = {str(i): str(i) for i in range(0, 11)} + CATEGORY_KEYS = ['0layer', '1layer', '2layer', '3layer', '4layer', '5layer', '6layer', '7layer', '8layer', '9layer', '10layer', '11layer'] + OPTIONS = {str(i): str(i) for i in range(0, 12)} def __init__(self): pass @@ -31,7 +31,7 @@ class EGIPAdapter_Mad_Assistant: CATEGORY = "ipadapter" def generate_prompt(self, **kwargs): - prompt_parts = {str(i): 0.0 for i in range(0, 11)} + prompt_parts = {str(i): 0.0 for i in range(0, 12)} for i, key in enumerate(self.CATEGORY_KEYS): # Since the super key is hidden, we use the index to find the corresponding weight weight_key = f"{key} Weight" @@ -53,9 +53,9 @@ class EGIPAdapter_Mad_Assistant: import random -class EGIPAdapter_Mad_AssistantV2: - CATEGORY_KEYS = ['0layer', '1layer', '2layer', '3layer', '4layer', '5layer', '6layer', '7layer', '8layer', '9layer', '10layer'] - OPTIONS = {str(i): str(i) for i in range(0, 11)} +class EGIPAdapter_Mad_AssistantV1: + CATEGORY_KEYS = ['0layer', '1layer', '2layer', '3layer', '4layer', '5layer', '6layer', '7layer', '8layer', '9layer', '10layer', '11layer'] + OPTIONS = {str(i): str(i) for i in range(0, 12)} def __init__(self): pass @@ -84,7 +84,7 @@ class EGIPAdapter_Mad_AssistantV2: CATEGORY = "ipadapter" def generate_prompt(self, **kwargs): - prompt_parts = {str(i): 0.0 for i in range(0, 11)} + prompt_parts = {str(i): 0.0 for i in range(0, 12)} for i, key in enumerate(self.CATEGORY_KEYS): # Since the super key is hidden, we use the index to find the corresponding weight weight_key = f"{key} Weight" @@ -104,7 +104,7 @@ class EGIPAdapter_Mad_AssistantV2: layer_weights = ','.join(f"{k}:{int(v)}" if v in {-1.0, 0.0, 1.0} else f"{k}:{v:.1f}" for k, v in prompt_parts.items()) return (layer_weights,) -class EGIPAdapter_Mad_AssistantV3: +class EGIPAdapter_Mad_AssistantV2: CATEGORY_KEYS = ['0layer', '1layer', '2layer', '3layer', '4layer', '5layer', '6layer', '7layer', '8layer', '9layer', '10layer', '11layer'] OPTIONS = {str(i): str(i) for i in range(0, 12)} @@ -155,13 +155,172 @@ class EGIPAdapter_Mad_AssistantV3: layer_weights = ','.join(f"{k}:{int(v)}" if v in {-2.0, -1.0, 0.0, 1.0, 2.0} else f"{k}:{v:.1f}" for k, v in prompt_parts.items()) return (layer_weights,) +class EGIPAdapter_Mad_AssistantV3: + CATEGORY_KEYS = ['0layer', '1layer', '2layer', '3layer', '4layer', '5layer', '6layer', '7layer', '8layer', '9layer', '10layer', '11layer'] + OPTIONS = {str(i): str(i) for i in range(0, 12)} + + def __init__(self): + pass + + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + **cls.get_input_types_from_keys(cls.CATEGORY_KEYS), + "Random": (["Yes", "No"], {"default": "No"}), + "seed": ("INT", {"default": 0, "min": -1125899906842624, "max": 1125899906842624}), + } + } + + @staticmethod + def get_input_types_from_keys(keys): + input_types = {} + for i, key in enumerate(keys): + # Hide the super key by not including it in the input_types dictionary + input_types[f"{key} Weight"] = ("FLOAT", {"default": 0.0, "min": -3.0, "max": 3.0, "step": 0.1, "display": "slider"}) + return input_types + + RETURN_TYPES = ("STRING",) + RETURN_NAMES = ("layer_weights",) + FUNCTION = "generate_prompt" + CATEGORY = "ipadapter" + + def generate_prompt(self, **kwargs): + prompt_parts = {str(i): 0.0 for i in range(0, 12)} + for i, key in enumerate(self.CATEGORY_KEYS): + # Since the super key is hidden, we use the index to find the corresponding weight + weight_key = f"{key} Weight" + if weight_key in kwargs and kwargs[weight_key] is not None: + weight = kwargs[weight_key] + prompt_parts[str(i)] = weight + + if kwargs.get("Random") == "Yes": + for key in self.CATEGORY_KEYS: + options = list(self.OPTIONS.keys()) + random_choice = random.choice(options) + weight_key = f"{key} Weight" + if prompt_parts[str(int(random_choice))] == 0.0: + weight = random.uniform(-3.0, 3.0) + prompt_parts[random_choice] = weight + + layer_weights = ','.join(f"{k}:{int(v)}" if v in {-3.0, -2.0, -1.0, 0.0, 1.0, 2.0, 3.0} else f"{k}:{v:.1f}" for k, v in prompt_parts.items()) + return (layer_weights,) + +class EGIPAdapter_Mad_AssistantV4: + CATEGORY_KEYS = ['0layer', '1layer', '2layer', '3layer', '4layer', '5layer', '6layer', '7layer', '8layer', '9layer', '10layer', '11layer'] + OPTIONS = {str(i): str(i) for i in range(0, 12)} + + def __init__(self): + pass + + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + **cls.get_input_types_from_keys(cls.CATEGORY_KEYS), + "Random": (["Yes", "No"], {"default": "No"}), + "seed": ("INT", {"default": 0, "min": -1125899906842624, "max": 1125899906842624}), + } + } + + @staticmethod + def get_input_types_from_keys(keys): + input_types = {} + for i, key in enumerate(keys): + # Hide the super key by not including it in the input_types dictionary + input_types[f"{key} Weight"] = ("FLOAT", {"default": 0.0, "min": -4.0, "max": 4.0, "step": 0.1, "display": "slider"}) + return input_types + + RETURN_TYPES = ("STRING",) + RETURN_NAMES = ("layer_weights",) + FUNCTION = "generate_prompt" + CATEGORY = "ipadapter" + + def generate_prompt(self, **kwargs): + prompt_parts = {str(i): 0.0 for i in range(0, 12)} + for i, key in enumerate(self.CATEGORY_KEYS): + # Since the super key is hidden, we use the index to find the corresponding weight + weight_key = f"{key} Weight" + if weight_key in kwargs and kwargs[weight_key] is not None: + weight = kwargs[weight_key] + prompt_parts[str(i)] = weight + + if kwargs.get("Random") == "Yes": + for key in self.CATEGORY_KEYS: + options = list(self.OPTIONS.keys()) + random_choice = random.choice(options) + weight_key = f"{key} Weight" + if prompt_parts[str(int(random_choice))] == 0.0: + weight = random.uniform(-4.0, 4.0) + prompt_parts[random_choice] = weight + + layer_weights = ','.join(f"{k}:{int(v)}" if v in {-4.0,-3.0, -2.0, -1.0, 0.0, 1.0, 2.0, 3.0, 4.0} else f"{k}:{v:.1f}" for k, v in prompt_parts.items()) + return (layer_weights,) + +class EGIPAdapter_Mad_AssistantV5: + CATEGORY_KEYS = ['0layer', '1layer', '2layer', '3layer', '4layer', '5layer', '6layer', '7layer', '8layer', '9layer', '10layer', '11layer'] + OPTIONS = {str(i): str(i) for i in range(0, 12)} + + def __init__(self): + pass + + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + **cls.get_input_types_from_keys(cls.CATEGORY_KEYS), + "Random": (["Yes", "No"], {"default": "No"}), + "seed": ("INT", {"default": 0, "min": -1125899906842624, "max": 1125899906842624}), + } + } + + @staticmethod + def get_input_types_from_keys(keys): + input_types = {} + for i, key in enumerate(keys): + # Hide the super key by not including it in the input_types dictionary + input_types[f"{key} Weight"] = ("FLOAT", {"default": 0.0, "min": -5.0, "max": 5.0, "step": 0.1, "display": "slider"}) + return input_types + + RETURN_TYPES = ("STRING",) + RETURN_NAMES = ("layer_weights",) + FUNCTION = "generate_prompt" + CATEGORY = "ipadapter" + + def generate_prompt(self, **kwargs): + prompt_parts = {str(i): 0.0 for i in range(0, 12)} + for i, key in enumerate(self.CATEGORY_KEYS): + # Since the super key is hidden, we use the index to find the corresponding weight + weight_key = f"{key} Weight" + if weight_key in kwargs and kwargs[weight_key] is not None: + weight = kwargs[weight_key] + prompt_parts[str(i)] = weight + + if kwargs.get("Random") == "Yes": + for key in self.CATEGORY_KEYS: + options = list(self.OPTIONS.keys()) + random_choice = random.choice(options) + weight_key = f"{key} Weight" + if prompt_parts[str(int(random_choice))] == 0.0: + weight = random.uniform(-5.0, 5.0) + prompt_parts[random_choice] = weight + + layer_weights = ','.join(f"{k}:{int(v)}" if v in {-5.0, -4.0, -3.0, -2.0, -1.0, 0.0, 1.0, 2.0, 3.0, 4.0, 5.0} else f"{k}:{v:.1f}" for k, v in prompt_parts.items()) + return (layer_weights,) + NODE_CLASS_MAPPINGS = { "EGIPAdapter_Mad_Assistant": EGIPAdapter_Mad_Assistant, + "EGIPAdapter_Mad_AssistantV1": EGIPAdapter_Mad_AssistantV1, "EGIPAdapter_Mad_AssistantV2": EGIPAdapter_Mad_AssistantV2, - "EGIPAdapter_Mad_AssistantV3": EGIPAdapter_Mad_AssistantV3 + "EGIPAdapter_Mad_AssistantV3": EGIPAdapter_Mad_AssistantV3, + "EGIPAdapter_Mad_AssistantV4": EGIPAdapter_Mad_AssistantV4, + "EGIPAdapter_Mad_AssistantV5": EGIPAdapter_Mad_AssistantV5 } NODE_DISPLAY_NAME_MAPPINGS = { "EGIPAdapter_Mad_Assistant": "IPAdapter Mad Assistant", + "EGIPAdapter_Mad_AssistantV1": "IPAdapter Mad Assistant V1", "EGIPAdapter_Mad_AssistantV2": "IPAdapter Mad Assistant V2", - "EGIPAdapter_Mad_AssistantV3": "IPAdapter Mad Assistant V3" + "EGIPAdapter_Mad_AssistantV3": "IPAdapter Mad Assistant V3", + "EGIPAdapter_Mad_AssistantV4": "IPAdapter Mad Assistant V4", + "EGIPAdapter_Mad_AssistantV5": "IPAdapter Mad Assistant V5" } diff --git a/__pycache__/Adapter_Mad_Assistant.cpython-310.pyc b/__pycache__/Adapter_Mad_Assistant.cpython-310.pyc index 406caceab03de3f5ed9b070da685f7351124464b..81a3ba61b464c618bb39d1a3c82faa6b07339b87 100644 GIT binary patch literal 9044 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 Q@|-NmlDZ?Su>PI@0Ky<>Bme*a diff --git a/__pycache__/__init__.cpython-310.pyc b/__pycache__/__init__.cpython-310.pyc index be8e11fba18da24fc08c3b52bb96945e7dfb9dbf..25c0899e9e5710a61b352f59071f6f45738f2a2b 100644 GIT binary patch delta 19 ZcmZ3$w19~#pO=@50SIJ_H*$$F0stfE0|Nj6 delta 19 ZcmZ3$w19~#pO=@50SGD#H*$$F0stlk16=?B