|
import folder_paths |
|
import impact.wildcards |
|
|
|
class ToDetailerPipe: |
|
@classmethod |
|
def INPUT_TYPES(s): |
|
return {"required": { |
|
"model": ("MODEL",), |
|
"clip": ("CLIP",), |
|
"vae": ("VAE",), |
|
"positive": ("CONDITIONING",), |
|
"negative": ("CONDITIONING",), |
|
"bbox_detector": ("BBOX_DETECTOR", ), |
|
"wildcard": ("STRING", {"multiline": True, "dynamicPrompts": False}), |
|
"Select to add LoRA": (["Select the LoRA to add to the text"] + folder_paths.get_filename_list("loras"),), |
|
"Select to add Wildcard": (["Select the Wildcard to add to the text"], ), |
|
}, |
|
"optional": { |
|
"sam_model_opt": ("SAM_MODEL",), |
|
"segm_detector_opt": ("SEGM_DETECTOR",), |
|
"detailer_hook": ("DETAILER_HOOK",), |
|
}} |
|
|
|
RETURN_TYPES = ("DETAILER_PIPE", ) |
|
RETURN_NAMES = ("detailer_pipe", ) |
|
FUNCTION = "doit" |
|
|
|
CATEGORY = "ImpactPack/Pipe" |
|
|
|
def doit(self, *args, **kwargs): |
|
pipe = (kwargs['model'], kwargs['clip'], kwargs['vae'], kwargs['positive'], kwargs['negative'], kwargs['wildcard'], kwargs['bbox_detector'], |
|
kwargs.get('segm_detector_opt', None), kwargs.get('sam_model_opt', None), kwargs.get('detailer_hook', None), |
|
kwargs.get('refiner_model', None), kwargs.get('refiner_clip', None), |
|
kwargs.get('refiner_positive', None), kwargs.get('refiner_negative', None)) |
|
return (pipe, ) |
|
|
|
|
|
class ToDetailerPipeSDXL(ToDetailerPipe): |
|
@classmethod |
|
def INPUT_TYPES(s): |
|
return {"required": { |
|
"model": ("MODEL",), |
|
"clip": ("CLIP",), |
|
"vae": ("VAE",), |
|
"positive": ("CONDITIONING",), |
|
"negative": ("CONDITIONING",), |
|
"refiner_model": ("MODEL",), |
|
"refiner_clip": ("CLIP",), |
|
"refiner_positive": ("CONDITIONING",), |
|
"refiner_negative": ("CONDITIONING",), |
|
"bbox_detector": ("BBOX_DETECTOR", ), |
|
"wildcard": ("STRING", {"multiline": True, "dynamicPrompts": False}), |
|
"Select to add LoRA": (["Select the LoRA to add to the text"] + folder_paths.get_filename_list("loras"),), |
|
"Select to add Wildcard": (["Select the Wildcard to add to the text"],), |
|
}, |
|
"optional": { |
|
"sam_model_opt": ("SAM_MODEL",), |
|
"segm_detector_opt": ("SEGM_DETECTOR",), |
|
"detailer_hook": ("DETAILER_HOOK",), |
|
}} |
|
|
|
|
|
class FromDetailerPipe: |
|
@classmethod |
|
def INPUT_TYPES(s): |
|
return {"required": {"detailer_pipe": ("DETAILER_PIPE",), }, } |
|
|
|
RETURN_TYPES = ("MODEL", "CLIP", "VAE", "CONDITIONING", "CONDITIONING", "BBOX_DETECTOR", "SAM_MODEL", "SEGM_DETECTOR", "DETAILER_HOOK") |
|
RETURN_NAMES = ("model", "clip", "vae", "positive", "negative", "bbox_detector", "sam_model_opt", "segm_detector_opt", "detailer_hook") |
|
FUNCTION = "doit" |
|
|
|
CATEGORY = "ImpactPack/Pipe" |
|
|
|
def doit(self, detailer_pipe): |
|
model, clip, vae, positive, negative, wildcard, bbox_detector, segm_detector_opt, sam_model_opt, detailer_hook, _, _, _, _ = detailer_pipe |
|
return model, clip, vae, positive, negative, bbox_detector, sam_model_opt, segm_detector_opt, detailer_hook |
|
|
|
|
|
class FromDetailerPipe_v2: |
|
@classmethod |
|
def INPUT_TYPES(s): |
|
return {"required": {"detailer_pipe": ("DETAILER_PIPE",), }, } |
|
|
|
RETURN_TYPES = ("DETAILER_PIPE", "MODEL", "CLIP", "VAE", "CONDITIONING", "CONDITIONING", "BBOX_DETECTOR", "SAM_MODEL", "SEGM_DETECTOR", "DETAILER_HOOK") |
|
RETURN_NAMES = ("detailer_pipe", "model", "clip", "vae", "positive", "negative", "bbox_detector", "sam_model_opt", "segm_detector_opt", "detailer_hook") |
|
FUNCTION = "doit" |
|
|
|
CATEGORY = "ImpactPack/Pipe" |
|
|
|
def doit(self, detailer_pipe): |
|
model, clip, vae, positive, negative, wildcard, bbox_detector, segm_detector_opt, sam_model_opt, detailer_hook, _, _, _, _ = detailer_pipe |
|
return detailer_pipe, model, clip, vae, positive, negative, bbox_detector, sam_model_opt, segm_detector_opt, detailer_hook |
|
|
|
|
|
class FromDetailerPipe_SDXL: |
|
@classmethod |
|
def INPUT_TYPES(s): |
|
return {"required": {"detailer_pipe": ("DETAILER_PIPE",), }, } |
|
|
|
RETURN_TYPES = ("DETAILER_PIPE", "MODEL", "CLIP", "VAE", "CONDITIONING", "CONDITIONING", "BBOX_DETECTOR", "SAM_MODEL", "SEGM_DETECTOR", "DETAILER_HOOK", "MODEL", "CLIP", "CONDITIONING", "CONDITIONING") |
|
RETURN_NAMES = ("detailer_pipe", "model", "clip", "vae", "positive", "negative", "bbox_detector", "sam_model_opt", "segm_detector_opt", "detailer_hook", "refiner_model", "refiner_clip", "refiner_positive", "refiner_negative") |
|
FUNCTION = "doit" |
|
|
|
CATEGORY = "ImpactPack/Pipe" |
|
|
|
def doit(self, detailer_pipe): |
|
model, clip, vae, positive, negative, wildcard, bbox_detector, segm_detector_opt, sam_model_opt, detailer_hook, refiner_model, refiner_clip, refiner_positive, refiner_negative = detailer_pipe |
|
return detailer_pipe, model, clip, vae, positive, negative, bbox_detector, sam_model_opt, segm_detector_opt, detailer_hook, refiner_model, refiner_clip, refiner_positive, refiner_negative |
|
|
|
|
|
class ToBasicPipe: |
|
@classmethod |
|
def INPUT_TYPES(s): |
|
return {"required": { |
|
"model": ("MODEL",), |
|
"clip": ("CLIP",), |
|
"vae": ("VAE",), |
|
"positive": ("CONDITIONING",), |
|
"negative": ("CONDITIONING",), |
|
}, |
|
} |
|
|
|
RETURN_TYPES = ("BASIC_PIPE", ) |
|
RETURN_NAMES = ("basic_pipe", ) |
|
FUNCTION = "doit" |
|
|
|
CATEGORY = "ImpactPack/Pipe" |
|
|
|
def doit(self, model, clip, vae, positive, negative): |
|
pipe = (model, clip, vae, positive, negative) |
|
return (pipe, ) |
|
|
|
|
|
class FromBasicPipe: |
|
@classmethod |
|
def INPUT_TYPES(s): |
|
return {"required": {"basic_pipe": ("BASIC_PIPE",), }, } |
|
|
|
RETURN_TYPES = ("MODEL", "CLIP", "VAE", "CONDITIONING", "CONDITIONING") |
|
RETURN_NAMES = ("model", "clip", "vae", "positive", "negative") |
|
FUNCTION = "doit" |
|
|
|
CATEGORY = "ImpactPack/Pipe" |
|
|
|
def doit(self, basic_pipe): |
|
model, clip, vae, positive, negative = basic_pipe |
|
return model, clip, vae, positive, negative |
|
|
|
|
|
class FromBasicPipe_v2: |
|
@classmethod |
|
def INPUT_TYPES(s): |
|
return {"required": {"basic_pipe": ("BASIC_PIPE",), }, } |
|
|
|
RETURN_TYPES = ("BASIC_PIPE", "MODEL", "CLIP", "VAE", "CONDITIONING", "CONDITIONING") |
|
RETURN_NAMES = ("basic_pipe", "model", "clip", "vae", "positive", "negative") |
|
FUNCTION = "doit" |
|
|
|
CATEGORY = "ImpactPack/Pipe" |
|
|
|
def doit(self, basic_pipe): |
|
model, clip, vae, positive, negative = basic_pipe |
|
return basic_pipe, model, clip, vae, positive, negative |
|
|
|
|
|
class BasicPipeToDetailerPipe: |
|
@classmethod |
|
def INPUT_TYPES(s): |
|
return {"required": {"basic_pipe": ("BASIC_PIPE",), |
|
"bbox_detector": ("BBOX_DETECTOR", ), |
|
"wildcard": ("STRING", {"multiline": True, "dynamicPrompts": False}), |
|
"Select to add LoRA": (["Select the LoRA to add to the text"] + folder_paths.get_filename_list("loras"),), |
|
"Select to add Wildcard": (["Select the Wildcard to add to the text"],), |
|
}, |
|
"optional": { |
|
"sam_model_opt": ("SAM_MODEL", ), |
|
"segm_detector_opt": ("SEGM_DETECTOR",), |
|
"detailer_hook": ("DETAILER_HOOK",), |
|
}, |
|
} |
|
|
|
RETURN_TYPES = ("DETAILER_PIPE", ) |
|
RETURN_NAMES = ("detailer_pipe", ) |
|
FUNCTION = "doit" |
|
|
|
CATEGORY = "ImpactPack/Pipe" |
|
|
|
def doit(self, *args, **kwargs): |
|
basic_pipe = kwargs['basic_pipe'] |
|
bbox_detector = kwargs['bbox_detector'] |
|
wildcard = kwargs['wildcard'] |
|
sam_model_opt = kwargs.get('sam_model_opt', None) |
|
segm_detector_opt = kwargs.get('segm_detector_opt', None) |
|
detailer_hook = kwargs.get('detailer_hook', None) |
|
|
|
model, clip, vae, positive, negative = basic_pipe |
|
pipe = model, clip, vae, positive, negative, wildcard, bbox_detector, segm_detector_opt, sam_model_opt, detailer_hook, None, None, None, None |
|
return (pipe, ) |
|
|
|
|
|
class BasicPipeToDetailerPipeSDXL: |
|
@classmethod |
|
def INPUT_TYPES(s): |
|
return {"required": {"base_basic_pipe": ("BASIC_PIPE",), |
|
"refiner_basic_pipe": ("BASIC_PIPE",), |
|
"bbox_detector": ("BBOX_DETECTOR", ), |
|
"wildcard": ("STRING", {"multiline": True, "dynamicPrompts": False}), |
|
"Select to add LoRA": (["Select the LoRA to add to the text"] + folder_paths.get_filename_list("loras"),), |
|
"Select to add Wildcard": (["Select the Wildcard to add to the text"],), |
|
}, |
|
"optional": { |
|
"sam_model_opt": ("SAM_MODEL", ), |
|
"segm_detector_opt": ("SEGM_DETECTOR",), |
|
"detailer_hook": ("DETAILER_HOOK",), |
|
}, |
|
} |
|
|
|
RETURN_TYPES = ("DETAILER_PIPE", ) |
|
RETURN_NAMES = ("detailer_pipe", ) |
|
FUNCTION = "doit" |
|
|
|
CATEGORY = "ImpactPack/Pipe" |
|
|
|
def doit(self, *args, **kwargs): |
|
base_basic_pipe = kwargs['base_basic_pipe'] |
|
refiner_basic_pipe = kwargs['refiner_basic_pipe'] |
|
bbox_detector = kwargs['bbox_detector'] |
|
wildcard = kwargs['wildcard'] |
|
sam_model_opt = kwargs.get('sam_model_opt', None) |
|
segm_detector_opt = kwargs.get('segm_detector_opt', None) |
|
detailer_hook = kwargs.get('detailer_hook', None) |
|
|
|
model, clip, vae, positive, negative = base_basic_pipe |
|
refiner_model, refiner_clip, refiner_vae, refiner_positive, refiner_negative = refiner_basic_pipe |
|
pipe = model, clip, vae, positive, negative, wildcard, bbox_detector, segm_detector_opt, sam_model_opt, detailer_hook, refiner_model, refiner_clip, refiner_positive, refiner_negative |
|
return (pipe, ) |
|
|
|
|
|
class DetailerPipeToBasicPipe: |
|
@classmethod |
|
def INPUT_TYPES(s): |
|
return {"required": {"detailer_pipe": ("DETAILER_PIPE",), }} |
|
|
|
RETURN_TYPES = ("BASIC_PIPE", "BASIC_PIPE") |
|
RETURN_NAMES = ("base_basic_pipe", "refiner_basic_pipe") |
|
FUNCTION = "doit" |
|
|
|
CATEGORY = "ImpactPack/Pipe" |
|
|
|
def doit(self, detailer_pipe): |
|
model, clip, vae, positive, negative, _, _, _, _, _, refiner_model, refiner_clip, refiner_positive, refiner_negative = detailer_pipe |
|
pipe = model, clip, vae, positive, negative |
|
refiner_pipe = refiner_model, refiner_clip, vae, refiner_positive, refiner_negative |
|
return (pipe, refiner_pipe) |
|
|
|
|
|
class EditBasicPipe: |
|
@classmethod |
|
def INPUT_TYPES(s): |
|
return { |
|
"required": {"basic_pipe": ("BASIC_PIPE",), }, |
|
"optional": { |
|
"model": ("MODEL",), |
|
"clip": ("CLIP",), |
|
"vae": ("VAE",), |
|
"positive": ("CONDITIONING",), |
|
"negative": ("CONDITIONING",), |
|
}, |
|
} |
|
|
|
RETURN_TYPES = ("BASIC_PIPE", ) |
|
RETURN_NAMES = ("basic_pipe", ) |
|
FUNCTION = "doit" |
|
|
|
CATEGORY = "ImpactPack/Pipe" |
|
|
|
def doit(self, basic_pipe, model=None, clip=None, vae=None, positive=None, negative=None): |
|
res_model, res_clip, res_vae, res_positive, res_negative = basic_pipe |
|
|
|
if model is not None: |
|
res_model = model |
|
|
|
if clip is not None: |
|
res_clip = clip |
|
|
|
if vae is not None: |
|
res_vae = vae |
|
|
|
if positive is not None: |
|
res_positive = positive |
|
|
|
if negative is not None: |
|
res_negative = negative |
|
|
|
pipe = res_model, res_clip, res_vae, res_positive, res_negative |
|
|
|
return (pipe, ) |
|
|
|
|
|
class EditDetailerPipe: |
|
@classmethod |
|
def INPUT_TYPES(s): |
|
return { |
|
"required": { |
|
"detailer_pipe": ("DETAILER_PIPE",), |
|
"wildcard": ("STRING", {"multiline": True, "dynamicPrompts": False}), |
|
"Select to add LoRA": (["Select the LoRA to add to the text"] + folder_paths.get_filename_list("loras"),), |
|
"Select to add Wildcard": (["Select the Wildcard to add to the text"],), |
|
}, |
|
"optional": { |
|
"model": ("MODEL",), |
|
"clip": ("CLIP",), |
|
"vae": ("VAE",), |
|
"positive": ("CONDITIONING",), |
|
"negative": ("CONDITIONING",), |
|
"bbox_detector": ("BBOX_DETECTOR",), |
|
"sam_model": ("SAM_MODEL",), |
|
"segm_detector": ("SEGM_DETECTOR",), |
|
"detailer_hook": ("DETAILER_HOOK",), |
|
}, |
|
} |
|
|
|
RETURN_TYPES = ("DETAILER_PIPE",) |
|
RETURN_NAMES = ("detailer_pipe",) |
|
FUNCTION = "doit" |
|
|
|
CATEGORY = "ImpactPack/Pipe" |
|
|
|
def doit(self, *args, **kwargs): |
|
detailer_pipe = kwargs['detailer_pipe'] |
|
wildcard = kwargs['wildcard'] |
|
model = kwargs.get('model', None) |
|
clip = kwargs.get('clip', None) |
|
vae = kwargs.get('vae', None) |
|
positive = kwargs.get('positive', None) |
|
negative = kwargs.get('negative', None) |
|
bbox_detector = kwargs.get('bbox_detector', None) |
|
sam_model = kwargs.get('sam_model', None) |
|
segm_detector = kwargs.get('segm_detector', None) |
|
detailer_hook = kwargs.get('detailer_hook', None) |
|
refiner_model = kwargs.get('refiner_model', None) |
|
refiner_clip = kwargs.get('refiner_clip', None) |
|
refiner_positive = kwargs.get('refiner_positive', None) |
|
refiner_negative = kwargs.get('refiner_negative', None) |
|
|
|
res_model, res_clip, res_vae, res_positive, res_negative, res_wildcard, res_bbox_detector, res_segm_detector, res_sam_model, res_detailer_hook, res_refiner_model, res_refiner_clip, res_refiner_positive, res_refiner_negative = detailer_pipe |
|
|
|
if model is not None: |
|
res_model = model |
|
|
|
if clip is not None: |
|
res_clip = clip |
|
|
|
if vae is not None: |
|
res_vae = vae |
|
|
|
if positive is not None: |
|
res_positive = positive |
|
|
|
if negative is not None: |
|
res_negative = negative |
|
|
|
if bbox_detector is not None: |
|
res_bbox_detector = bbox_detector |
|
|
|
if segm_detector is not None: |
|
res_segm_detector = segm_detector |
|
|
|
if wildcard != "": |
|
res_wildcard = wildcard |
|
|
|
if sam_model is not None: |
|
res_sam_model = sam_model |
|
|
|
if detailer_hook is not None: |
|
res_detailer_hook = detailer_hook |
|
|
|
if refiner_model is not None: |
|
res_refiner_model = refiner_model |
|
|
|
if refiner_clip is not None: |
|
res_refiner_clip = refiner_clip |
|
|
|
if refiner_positive is not None: |
|
res_refiner_positive = refiner_positive |
|
|
|
if refiner_negative is not None: |
|
res_refiner_negative = refiner_negative |
|
|
|
pipe = (res_model, res_clip, res_vae, res_positive, res_negative, res_wildcard, |
|
res_bbox_detector, res_segm_detector, res_sam_model, res_detailer_hook, |
|
res_refiner_model, res_refiner_clip, res_refiner_positive, res_refiner_negative) |
|
|
|
return (pipe, ) |
|
|
|
|
|
class EditDetailerPipeSDXL(EditDetailerPipe): |
|
@classmethod |
|
def INPUT_TYPES(s): |
|
return { |
|
"required": { |
|
"detailer_pipe": ("DETAILER_PIPE",), |
|
"wildcard": ("STRING", {"multiline": True, "dynamicPrompts": False}), |
|
"Select to add LoRA": (["Select the LoRA to add to the text"] + folder_paths.get_filename_list("loras"),), |
|
"Select to add Wildcard": (["Select the Wildcard to add to the text"],), |
|
}, |
|
"optional": { |
|
"model": ("MODEL",), |
|
"clip": ("CLIP",), |
|
"vae": ("VAE",), |
|
"positive": ("CONDITIONING",), |
|
"negative": ("CONDITIONING",), |
|
"refiner_model": ("MODEL",), |
|
"refiner_clip": ("CLIP",), |
|
"refiner_positive": ("CONDITIONING",), |
|
"refiner_negative": ("CONDITIONING",), |
|
"bbox_detector": ("BBOX_DETECTOR",), |
|
"sam_model": ("SAM_MODEL",), |
|
"segm_detector": ("SEGM_DETECTOR",), |
|
"detailer_hook": ("DETAILER_HOOK",), |
|
}, |
|
} |
|
|