|
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",),
|
|
},
|
|
}
|
|
|