|
"""
|
|
@author: Dr.Lt.Data
|
|
@title: Impact Pack
|
|
@nickname: Impact Pack
|
|
@description: This extension offers various detector nodes and detailer nodes that allow you to configure a workflow that automatically enhances facial details. And provide iterative upscaler.
|
|
"""
|
|
|
|
import shutil
|
|
import folder_paths
|
|
import os
|
|
import sys
|
|
import traceback
|
|
|
|
comfy_path = os.path.dirname(folder_paths.__file__)
|
|
impact_path = os.path.join(os.path.dirname(__file__))
|
|
subpack_path = os.path.join(os.path.dirname(__file__), "impact_subpack")
|
|
modules_path = os.path.join(os.path.dirname(__file__), "modules")
|
|
|
|
sys.path.append(modules_path)
|
|
|
|
import impact.config
|
|
import impact.sample_error_enhancer
|
|
print(f"### Loading: ComfyUI-Impact-Pack ({impact.config.version})")
|
|
|
|
|
|
def do_install():
|
|
import importlib
|
|
spec = importlib.util.spec_from_file_location('impact_install', os.path.join(os.path.dirname(__file__), 'install.py'))
|
|
impact_install = importlib.util.module_from_spec(spec)
|
|
spec.loader.exec_module(impact_install)
|
|
|
|
|
|
|
|
if not os.path.exists(os.path.join(subpack_path, ".git")) and os.path.exists(subpack_path):
|
|
print(f"### CompfyUI-Impact-Pack: corrupted subpack detected.")
|
|
shutil.rmtree(subpack_path)
|
|
|
|
if impact.config.get_config()['dependency_version'] < impact.config.dependency_version or not os.path.exists(subpack_path):
|
|
print(f"### ComfyUI-Impact-Pack: Updating dependencies [{impact.config.get_config()['dependency_version']} -> {impact.config.dependency_version}]")
|
|
do_install()
|
|
|
|
sys.path.append(subpack_path)
|
|
|
|
|
|
|
|
try:
|
|
import impact.subpack_nodes
|
|
|
|
import folder_paths
|
|
import torch
|
|
import cv2
|
|
from cv2 import setNumThreads
|
|
import numpy as np
|
|
import comfy.samplers
|
|
import comfy.sd
|
|
import warnings
|
|
from PIL import Image, ImageFilter
|
|
from skimage.measure import label, regionprops
|
|
from collections import namedtuple
|
|
import piexif
|
|
|
|
if not impact.config.get_config()['mmdet_skip']:
|
|
import mmcv
|
|
from mmdet.apis import (inference_detector, init_detector)
|
|
from mmdet.evaluation import get_classes
|
|
except:
|
|
import importlib
|
|
print("### ComfyUI-Impact-Pack: Reinstall dependencies (several dependencies are missing.)")
|
|
do_install()
|
|
|
|
|
|
import impact.impact_server
|
|
|
|
from .modules.impact.impact_pack import *
|
|
from .modules.impact.detectors import *
|
|
from .modules.impact.pipe import *
|
|
from .modules.impact.logics import *
|
|
from .modules.impact.util_nodes import *
|
|
from .modules.impact.segs_nodes import *
|
|
from .modules.impact.special_samplers import *
|
|
from .modules.impact.hf_nodes import *
|
|
from .modules.impact.bridge_nodes import *
|
|
from .modules.impact.hook_nodes import *
|
|
from .modules.impact.animatediff_nodes import *
|
|
from .modules.impact.segs_upscaler import *
|
|
|
|
import threading
|
|
|
|
|
|
threading.Thread(target=impact.wildcards.wildcard_load).start()
|
|
|
|
|
|
NODE_CLASS_MAPPINGS = {
|
|
"SAMLoader": SAMLoader,
|
|
"CLIPSegDetectorProvider": CLIPSegDetectorProvider,
|
|
"ONNXDetectorProvider": ONNXDetectorProvider,
|
|
|
|
"BitwiseAndMaskForEach": BitwiseAndMaskForEach,
|
|
"SubtractMaskForEach": SubtractMaskForEach,
|
|
|
|
"DetailerForEach": DetailerForEach,
|
|
"DetailerForEachDebug": DetailerForEachTest,
|
|
"DetailerForEachPipe": DetailerForEachPipe,
|
|
"DetailerForEachDebugPipe": DetailerForEachTestPipe,
|
|
"DetailerForEachPipeForAnimateDiff": DetailerForEachPipeForAnimateDiff,
|
|
|
|
"SAMDetectorCombined": SAMDetectorCombined,
|
|
"SAMDetectorSegmented": SAMDetectorSegmented,
|
|
|
|
"FaceDetailer": FaceDetailer,
|
|
"FaceDetailerPipe": FaceDetailerPipe,
|
|
"MaskDetailerPipe": MaskDetailerPipe,
|
|
|
|
"ToDetailerPipe": ToDetailerPipe,
|
|
"ToDetailerPipeSDXL": ToDetailerPipeSDXL,
|
|
"FromDetailerPipe": FromDetailerPipe,
|
|
"FromDetailerPipe_v2": FromDetailerPipe_v2,
|
|
"FromDetailerPipeSDXL": FromDetailerPipe_SDXL,
|
|
"ToBasicPipe": ToBasicPipe,
|
|
"FromBasicPipe": FromBasicPipe,
|
|
"FromBasicPipe_v2": FromBasicPipe_v2,
|
|
"BasicPipeToDetailerPipe": BasicPipeToDetailerPipe,
|
|
"BasicPipeToDetailerPipeSDXL": BasicPipeToDetailerPipeSDXL,
|
|
"DetailerPipeToBasicPipe": DetailerPipeToBasicPipe,
|
|
"EditBasicPipe": EditBasicPipe,
|
|
"EditDetailerPipe": EditDetailerPipe,
|
|
"EditDetailerPipeSDXL": EditDetailerPipeSDXL,
|
|
|
|
"LatentPixelScale": LatentPixelScale,
|
|
"PixelKSampleUpscalerProvider": PixelKSampleUpscalerProvider,
|
|
"PixelKSampleUpscalerProviderPipe": PixelKSampleUpscalerProviderPipe,
|
|
"IterativeLatentUpscale": IterativeLatentUpscale,
|
|
"IterativeImageUpscale": IterativeImageUpscale,
|
|
"PixelTiledKSampleUpscalerProvider": PixelTiledKSampleUpscalerProvider,
|
|
"PixelTiledKSampleUpscalerProviderPipe": PixelTiledKSampleUpscalerProviderPipe,
|
|
"TwoSamplersForMaskUpscalerProvider": TwoSamplersForMaskUpscalerProvider,
|
|
"TwoSamplersForMaskUpscalerProviderPipe": TwoSamplersForMaskUpscalerProviderPipe,
|
|
|
|
"PixelKSampleHookCombine": PixelKSampleHookCombine,
|
|
"DenoiseScheduleHookProvider": DenoiseScheduleHookProvider,
|
|
"StepsScheduleHookProvider": StepsScheduleHookProvider,
|
|
"CfgScheduleHookProvider": CfgScheduleHookProvider,
|
|
"NoiseInjectionHookProvider": NoiseInjectionHookProvider,
|
|
"UnsamplerHookProvider": UnsamplerHookProvider,
|
|
"CoreMLDetailerHookProvider": CoreMLDetailerHookProvider,
|
|
"PreviewDetailerHookProvider": PreviewDetailerHookProvider,
|
|
|
|
"DetailerHookCombine": DetailerHookCombine,
|
|
"NoiseInjectionDetailerHookProvider": NoiseInjectionDetailerHookProvider,
|
|
"UnsamplerDetailerHookProvider": UnsamplerDetailerHookProvider,
|
|
"DenoiseSchedulerDetailerHookProvider": DenoiseSchedulerDetailerHookProvider,
|
|
"SEGSOrderedFilterDetailerHookProvider": SEGSOrderedFilterDetailerHookProvider,
|
|
"SEGSRangeFilterDetailerHookProvider": SEGSRangeFilterDetailerHookProvider,
|
|
"SEGSLabelFilterDetailerHookProvider": SEGSLabelFilterDetailerHookProvider,
|
|
"VariationNoiseDetailerHookProvider": VariationNoiseDetailerHookProvider,
|
|
|
|
|
|
"BitwiseAndMask": BitwiseAndMask,
|
|
"SubtractMask": SubtractMask,
|
|
"AddMask": AddMask,
|
|
"ImpactSegsAndMask": SegsBitwiseAndMask,
|
|
"ImpactSegsAndMaskForEach": SegsBitwiseAndMaskForEach,
|
|
"EmptySegs": EmptySEGS,
|
|
|
|
"MediaPipeFaceMeshToSEGS": MediaPipeFaceMeshToSEGS,
|
|
"MaskToSEGS": MaskToSEGS,
|
|
"MaskToSEGS_for_AnimateDiff": MaskToSEGS_for_AnimateDiff,
|
|
"ToBinaryMask": ToBinaryMask,
|
|
"MasksToMaskList": MasksToMaskList,
|
|
"MaskListToMaskBatch": MaskListToMaskBatch,
|
|
"ImageListToImageBatch": ImageListToImageBatch,
|
|
"SetDefaultImageForSEGS": DefaultImageForSEGS,
|
|
"RemoveImageFromSEGS": RemoveImageFromSEGS,
|
|
|
|
"BboxDetectorSEGS": BboxDetectorForEach,
|
|
"SegmDetectorSEGS": SegmDetectorForEach,
|
|
"ONNXDetectorSEGS": BboxDetectorForEach,
|
|
"ImpactSimpleDetectorSEGS_for_AD": SimpleDetectorForAnimateDiff,
|
|
"ImpactSimpleDetectorSEGS": SimpleDetectorForEach,
|
|
"ImpactSimpleDetectorSEGSPipe": SimpleDetectorForEachPipe,
|
|
"ImpactControlNetApplySEGS": ControlNetApplySEGS,
|
|
"ImpactControlNetApplyAdvancedSEGS": ControlNetApplyAdvancedSEGS,
|
|
"ImpactControlNetClearSEGS": ControlNetClearSEGS,
|
|
"ImpactIPAdapterApplySEGS": IPAdapterApplySEGS,
|
|
|
|
"ImpactDecomposeSEGS": DecomposeSEGS,
|
|
"ImpactAssembleSEGS": AssembleSEGS,
|
|
"ImpactFrom_SEG_ELT": From_SEG_ELT,
|
|
"ImpactEdit_SEG_ELT": Edit_SEG_ELT,
|
|
"ImpactDilate_Mask_SEG_ELT": Dilate_SEG_ELT,
|
|
"ImpactDilateMask": DilateMask,
|
|
"ImpactGaussianBlurMask": GaussianBlurMask,
|
|
"ImpactDilateMaskInSEGS": DilateMaskInSEGS,
|
|
"ImpactGaussianBlurMaskInSEGS": GaussianBlurMaskInSEGS,
|
|
"ImpactScaleBy_BBOX_SEG_ELT": SEG_ELT_BBOX_ScaleBy,
|
|
"ImpactFrom_SEG_ELT_bbox": From_SEG_ELT_bbox,
|
|
"ImpactFrom_SEG_ELT_crop_region": From_SEG_ELT_crop_region,
|
|
"ImpactCount_Elts_in_SEGS": Count_Elts_in_SEGS,
|
|
|
|
"BboxDetectorCombined_v2": BboxDetectorCombined,
|
|
"SegmDetectorCombined_v2": SegmDetectorCombined,
|
|
"SegsToCombinedMask": SegsToCombinedMask,
|
|
|
|
"KSamplerProvider": KSamplerProvider,
|
|
"TwoSamplersForMask": TwoSamplersForMask,
|
|
"TiledKSamplerProvider": TiledKSamplerProvider,
|
|
|
|
"KSamplerAdvancedProvider": KSamplerAdvancedProvider,
|
|
"TwoAdvancedSamplersForMask": TwoAdvancedSamplersForMask,
|
|
|
|
"ImpactNegativeConditioningPlaceholder": NegativeConditioningPlaceholder,
|
|
|
|
"PreviewBridge": PreviewBridge,
|
|
"PreviewBridgeLatent": PreviewBridgeLatent,
|
|
"ImageSender": ImageSender,
|
|
"ImageReceiver": ImageReceiver,
|
|
"LatentSender": LatentSender,
|
|
"LatentReceiver": LatentReceiver,
|
|
"ImageMaskSwitch": ImageMaskSwitch,
|
|
"LatentSwitch": GeneralSwitch,
|
|
"SEGSSwitch": GeneralSwitch,
|
|
"ImpactSwitch": GeneralSwitch,
|
|
"ImpactInversedSwitch": GeneralInversedSwitch,
|
|
|
|
"ImpactWildcardProcessor": ImpactWildcardProcessor,
|
|
"ImpactWildcardEncode": ImpactWildcardEncode,
|
|
|
|
"SEGSUpscaler": SEGSUpscaler,
|
|
"SEGSUpscalerPipe": SEGSUpscalerPipe,
|
|
"SEGSDetailer": SEGSDetailer,
|
|
"SEGSPaste": SEGSPaste,
|
|
"SEGSPreview": SEGSPreview,
|
|
"SEGSPreviewCNet": SEGSPreviewCNet,
|
|
"SEGSToImageList": SEGSToImageList,
|
|
"ImpactSEGSToMaskList": SEGSToMaskList,
|
|
"ImpactSEGSToMaskBatch": SEGSToMaskBatch,
|
|
"ImpactSEGSConcat": SEGSConcat,
|
|
"ImpactSEGSPicker": SEGSPicker,
|
|
"ImpactMakeTileSEGS": MakeTileSEGS,
|
|
|
|
"SEGSDetailerForAnimateDiff": SEGSDetailerForAnimateDiff,
|
|
|
|
"ImpactKSamplerBasicPipe": KSamplerBasicPipe,
|
|
"ImpactKSamplerAdvancedBasicPipe": KSamplerAdvancedBasicPipe,
|
|
|
|
"ReencodeLatent": ReencodeLatent,
|
|
"ReencodeLatentPipe": ReencodeLatentPipe,
|
|
|
|
"ImpactImageBatchToImageList": ImageBatchToImageList,
|
|
"ImpactMakeImageList": MakeImageList,
|
|
"ImpactMakeImageBatch": MakeImageBatch,
|
|
|
|
"RegionalSampler": RegionalSampler,
|
|
"RegionalSamplerAdvanced": RegionalSamplerAdvanced,
|
|
"CombineRegionalPrompts": CombineRegionalPrompts,
|
|
"RegionalPrompt": RegionalPrompt,
|
|
|
|
"ImpactCombineConditionings": CombineConditionings,
|
|
"ImpactConcatConditionings": ConcatConditionings,
|
|
|
|
"ImpactSEGSLabelAssign": SEGSLabelAssign,
|
|
"ImpactSEGSLabelFilter": SEGSLabelFilter,
|
|
"ImpactSEGSRangeFilter": SEGSRangeFilter,
|
|
"ImpactSEGSOrderedFilter": SEGSOrderedFilter,
|
|
|
|
"ImpactCompare": ImpactCompare,
|
|
"ImpactConditionalBranch": ImpactConditionalBranch,
|
|
"ImpactConditionalBranchSelMode": ImpactConditionalBranchSelMode,
|
|
"ImpactIfNone": ImpactIfNone,
|
|
"ImpactConvertDataType": ImpactConvertDataType,
|
|
"ImpactLogicalOperators": ImpactLogicalOperators,
|
|
"ImpactInt": ImpactInt,
|
|
"ImpactFloat": ImpactFloat,
|
|
"ImpactValueSender": ImpactValueSender,
|
|
"ImpactValueReceiver": ImpactValueReceiver,
|
|
"ImpactImageInfo": ImpactImageInfo,
|
|
"ImpactLatentInfo": ImpactLatentInfo,
|
|
"ImpactMinMax": ImpactMinMax,
|
|
"ImpactNeg": ImpactNeg,
|
|
"ImpactConditionalStopIteration": ImpactConditionalStopIteration,
|
|
"ImpactStringSelector": StringSelector,
|
|
"StringListToString": StringListToString,
|
|
"WildcardPromptFromString": WildcardPromptFromString,
|
|
|
|
"RemoveNoiseMask": RemoveNoiseMask,
|
|
|
|
"ImpactLogger": ImpactLogger,
|
|
"ImpactDummyInput": ImpactDummyInput,
|
|
|
|
"ImpactQueueTrigger": ImpactQueueTrigger,
|
|
"ImpactQueueTriggerCountdown": ImpactQueueTriggerCountdown,
|
|
"ImpactSetWidgetValue": ImpactSetWidgetValue,
|
|
"ImpactNodeSetMuteState": ImpactNodeSetMuteState,
|
|
"ImpactControlBridge": ImpactControlBridge,
|
|
"ImpactIsNotEmptySEGS": ImpactNotEmptySEGS,
|
|
"ImpactSleep": ImpactSleep,
|
|
"ImpactRemoteBoolean": ImpactRemoteBoolean,
|
|
"ImpactRemoteInt": ImpactRemoteInt,
|
|
|
|
"ImpactHFTransformersClassifierProvider": HF_TransformersClassifierProvider,
|
|
"ImpactSEGSClassify": SEGS_Classify,
|
|
|
|
"ImpactSchedulerAdapter": ImpactSchedulerAdapter,
|
|
"GITSSchedulerFuncProvider": GITSSchedulerFuncProvider
|
|
}
|
|
|
|
|
|
NODE_DISPLAY_NAME_MAPPINGS = {
|
|
"SAMLoader": "SAMLoader (Impact)",
|
|
|
|
"BboxDetectorSEGS": "BBOX Detector (SEGS)",
|
|
"SegmDetectorSEGS": "SEGM Detector (SEGS)",
|
|
"ONNXDetectorSEGS": "ONNX Detector (SEGS/legacy) - use BBOXDetector",
|
|
"ImpactSimpleDetectorSEGS_for_AD": "Simple Detector for AnimateDiff (SEGS)",
|
|
"ImpactSimpleDetectorSEGS": "Simple Detector (SEGS)",
|
|
"ImpactSimpleDetectorSEGSPipe": "Simple Detector (SEGS/pipe)",
|
|
"ImpactControlNetApplySEGS": "ControlNetApply (SEGS)",
|
|
"ImpactControlNetApplyAdvancedSEGS": "ControlNetApplyAdvanced (SEGS)",
|
|
"ImpactIPAdapterApplySEGS": "IPAdapterApply (SEGS)",
|
|
|
|
"BboxDetectorCombined_v2": "BBOX Detector (combined)",
|
|
"SegmDetectorCombined_v2": "SEGM Detector (combined)",
|
|
"SegsToCombinedMask": "SEGS to MASK (combined)",
|
|
"MediaPipeFaceMeshToSEGS": "MediaPipe FaceMesh to SEGS",
|
|
"MaskToSEGS": "MASK to SEGS",
|
|
"MaskToSEGS_for_AnimateDiff": "MASK to SEGS for AnimateDiff",
|
|
"BitwiseAndMaskForEach": "Pixelwise(SEGS & SEGS)",
|
|
"SubtractMaskForEach": "Pixelwise(SEGS - SEGS)",
|
|
"ImpactSegsAndMask": "Pixelwise(SEGS & MASK)",
|
|
"ImpactSegsAndMaskForEach": "Pixelwise(SEGS & MASKS ForEach)",
|
|
"BitwiseAndMask": "Pixelwise(MASK & MASK)",
|
|
"SubtractMask": "Pixelwise(MASK - MASK)",
|
|
"AddMask": "Pixelwise(MASK + MASK)",
|
|
"DetailerForEach": "Detailer (SEGS)",
|
|
"DetailerForEachPipe": "Detailer (SEGS/pipe)",
|
|
"DetailerForEachDebug": "DetailerDebug (SEGS)",
|
|
"DetailerForEachDebugPipe": "DetailerDebug (SEGS/pipe)",
|
|
"SEGSDetailerForAnimateDiff": "SEGSDetailer For AnimateDiff (SEGS/pipe)",
|
|
"DetailerForEachPipeForAnimateDiff": "Detailer For AnimateDiff (SEGS/pipe)",
|
|
"SEGSUpscaler": "Upscaler (SEGS)",
|
|
"SEGSUpscalerPipe": "Upscaler (SEGS/pipe)",
|
|
|
|
"SAMDetectorCombined": "SAMDetector (combined)",
|
|
"SAMDetectorSegmented": "SAMDetector (segmented)",
|
|
"FaceDetailerPipe": "FaceDetailer (pipe)",
|
|
"MaskDetailerPipe": "MaskDetailer (pipe)",
|
|
|
|
"FromDetailerPipeSDXL": "FromDetailer (SDXL/pipe)",
|
|
"BasicPipeToDetailerPipeSDXL": "BasicPipe -> DetailerPipe (SDXL)",
|
|
"EditDetailerPipeSDXL": "Edit DetailerPipe (SDXL)",
|
|
|
|
"BasicPipeToDetailerPipe": "BasicPipe -> DetailerPipe",
|
|
"DetailerPipeToBasicPipe": "DetailerPipe -> BasicPipe",
|
|
"EditBasicPipe": "Edit BasicPipe",
|
|
"EditDetailerPipe": "Edit DetailerPipe",
|
|
|
|
"LatentPixelScale": "Latent Scale (on Pixel Space)",
|
|
"IterativeLatentUpscale": "Iterative Upscale (Latent/on Pixel Space)",
|
|
"IterativeImageUpscale": "Iterative Upscale (Image)",
|
|
|
|
"TwoSamplersForMaskUpscalerProvider": "TwoSamplersForMask Upscaler Provider",
|
|
"TwoSamplersForMaskUpscalerProviderPipe": "TwoSamplersForMask Upscaler Provider (pipe)",
|
|
|
|
"ReencodeLatent": "Reencode Latent",
|
|
"ReencodeLatentPipe": "Reencode Latent (pipe)",
|
|
|
|
"ImpactKSamplerBasicPipe": "KSampler (pipe)",
|
|
"ImpactKSamplerAdvancedBasicPipe": "KSampler (Advanced/pipe)",
|
|
"ImpactSEGSLabelAssign": "SEGS Assign (label)",
|
|
"ImpactSEGSLabelFilter": "SEGS Filter (label)",
|
|
"ImpactSEGSRangeFilter": "SEGS Filter (range)",
|
|
"ImpactSEGSOrderedFilter": "SEGS Filter (ordered)",
|
|
"ImpactSEGSConcat": "SEGS Concat",
|
|
"ImpactSEGSToMaskList": "SEGS to Mask List",
|
|
"ImpactSEGSToMaskBatch": "SEGS to Mask Batch",
|
|
"ImpactSEGSPicker": "Picker (SEGS)",
|
|
"ImpactMakeTileSEGS": "Make Tile SEGS",
|
|
|
|
"ImpactDecomposeSEGS": "Decompose (SEGS)",
|
|
"ImpactAssembleSEGS": "Assemble (SEGS)",
|
|
"ImpactFrom_SEG_ELT": "From SEG_ELT",
|
|
"ImpactEdit_SEG_ELT": "Edit SEG_ELT",
|
|
"ImpactFrom_SEG_ELT_bbox": "From SEG_ELT bbox",
|
|
"ImpactFrom_SEG_ELT_crop_region": "From SEG_ELT crop_region",
|
|
"ImpactDilate_Mask_SEG_ELT": "Dilate Mask (SEG_ELT)",
|
|
"ImpactScaleBy_BBOX_SEG_ELT": "ScaleBy BBOX (SEG_ELT)",
|
|
"ImpactCount_Elts_in_SEGS": "Count Elts in SEGS",
|
|
"ImpactDilateMask": "Dilate Mask",
|
|
"ImpactGaussianBlurMask": "Gaussian Blur Mask",
|
|
"ImpactDilateMaskInSEGS": "Dilate Mask (SEGS)",
|
|
"ImpactGaussianBlurMaskInSEGS": "Gaussian Blur Mask (SEGS)",
|
|
|
|
"PreviewBridge": "Preview Bridge (Image)",
|
|
"PreviewBridgeLatent": "Preview Bridge (Latent)",
|
|
"ImageSender": "Image Sender",
|
|
"ImageReceiver": "Image Receiver",
|
|
"ImageMaskSwitch": "Switch (images, mask)",
|
|
"ImpactSwitch": "Switch (Any)",
|
|
"ImpactInversedSwitch": "Inversed Switch (Any)",
|
|
|
|
"MasksToMaskList": "Masks to Mask List",
|
|
"MaskListToMaskBatch": "Mask List to Masks",
|
|
"ImpactImageBatchToImageList": "Image batch to Image List",
|
|
"ImageListToImageBatch": "Image List to Image Batch",
|
|
"ImpactMakeImageList": "Make Image List",
|
|
"ImpactMakeImageBatch": "Make Image Batch",
|
|
"ImpactStringSelector": "String Selector",
|
|
"StringListToString": "String List to String",
|
|
"WildcardPromptFromString": "Wildcard Prompt from String",
|
|
"ImpactIsNotEmptySEGS": "SEGS isn't Empty",
|
|
"SetDefaultImageForSEGS": "Set Default Image for SEGS",
|
|
"RemoveImageFromSEGS": "Remove Image from SEGS",
|
|
|
|
"RemoveNoiseMask": "Remove Noise Mask",
|
|
|
|
"ImpactCombineConditionings": "Combine Conditionings",
|
|
"ImpactConcatConditionings": "Concat Conditionings",
|
|
|
|
"ImpactQueueTrigger": "Queue Trigger",
|
|
"ImpactQueueTriggerCountdown": "Queue Trigger (Countdown)",
|
|
"ImpactSetWidgetValue": "Set Widget Value",
|
|
"ImpactNodeSetMuteState": "Set Mute State",
|
|
"ImpactControlBridge": "Control Bridge",
|
|
"ImpactSleep": "Sleep",
|
|
"ImpactRemoteBoolean": "Remote Boolean (on prompt)",
|
|
"ImpactRemoteInt": "Remote Int (on prompt)",
|
|
|
|
"ImpactHFTransformersClassifierProvider": "HF Transformers Classifier Provider",
|
|
"ImpactSEGSClassify": "SEGS Classify",
|
|
|
|
"LatentSwitch": "Switch (latent/legacy)",
|
|
"SEGSSwitch": "Switch (SEGS/legacy)",
|
|
|
|
"SEGSPreviewCNet": "SEGSPreview (CNET Image)",
|
|
|
|
"ImpactSchedulerAdapter": "Impact Scheduler Adapter",
|
|
"GITSSchedulerFuncProvider": "GITSScheduler Func Provider",
|
|
"ImpactNegativeConditioningPlaceholder": "Negative Cond Placeholder"
|
|
}
|
|
|
|
if not impact.config.get_config()['mmdet_skip']:
|
|
from impact.mmdet_nodes import *
|
|
import impact.legacy_nodes
|
|
NODE_CLASS_MAPPINGS.update({
|
|
"MMDetDetectorProvider": MMDetDetectorProvider,
|
|
"MMDetLoader": impact.legacy_nodes.MMDetLoader,
|
|
"MaskPainter": impact.legacy_nodes.MaskPainter,
|
|
"SegsMaskCombine": impact.legacy_nodes.SegsMaskCombine,
|
|
"BboxDetectorForEach": impact.legacy_nodes.BboxDetectorForEach,
|
|
"SegmDetectorForEach": impact.legacy_nodes.SegmDetectorForEach,
|
|
"BboxDetectorCombined": impact.legacy_nodes.BboxDetectorCombined,
|
|
"SegmDetectorCombined": impact.legacy_nodes.SegmDetectorCombined,
|
|
})
|
|
|
|
NODE_DISPLAY_NAME_MAPPINGS.update({
|
|
"MaskPainter": "MaskPainter (Deprecated)",
|
|
"MMDetLoader": "MMDetLoader (Legacy)",
|
|
"SegsMaskCombine": "SegsMaskCombine (Legacy)",
|
|
"BboxDetectorForEach": "BboxDetectorForEach (Legacy)",
|
|
"SegmDetectorForEach": "SegmDetectorForEach (Legacy)",
|
|
"BboxDetectorCombined": "BboxDetectorCombined (Legacy)",
|
|
"SegmDetectorCombined": "SegmDetectorCombined (Legacy)",
|
|
})
|
|
|
|
try:
|
|
import impact.subpack_nodes
|
|
|
|
NODE_CLASS_MAPPINGS.update(impact.subpack_nodes.NODE_CLASS_MAPPINGS)
|
|
NODE_DISPLAY_NAME_MAPPINGS.update(impact.subpack_nodes.NODE_DISPLAY_NAME_MAPPINGS)
|
|
except Exception as e:
|
|
print("### ComfyUI-Impact-Pack: (IMPORT FAILED) Subpack\n")
|
|
print(" The module at the `custom_nodes/ComfyUI-Impact-Pack/impact_subpack` path appears to be incomplete.")
|
|
print(" Recommended to delete the path and restart ComfyUI.")
|
|
print(" If the issue persists, please report it to https://github.com/ltdrdata/ComfyUI-Impact-Pack/issues.")
|
|
print("\n---------------------------------")
|
|
traceback.print_exc()
|
|
print("---------------------------------\n")
|
|
|
|
|
|
|
|
|
|
|
|
nodes.EXTENSION_WEB_DIRS["ComfyUI-Impact-Pack"] = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'js')
|
|
|
|
|
|
__all__ = ['NODE_CLASS_MAPPINGS', 'NODE_DISPLAY_NAME_MAPPINGS']
|
|
|
|
|
|
try:
|
|
import cm_global
|
|
cm_global.register_extension('ComfyUI-Impact-Pack',
|
|
{'version': config.version_code,
|
|
'name': 'Impact Pack',
|
|
'nodes': set(NODE_CLASS_MAPPINGS.keys()),
|
|
'description': 'This extension provides inpainting functionality based on the detector and detailer, along with convenient workflow features like wildcards and logics.', })
|
|
except:
|
|
pass
|
|
|