206 lines
7.4 KiB
Python
206 lines
7.4 KiB
Python
import shutil
|
|
import folder_paths
|
|
import os
|
|
import sys
|
|
import importlib
|
|
|
|
comfy_path = os.path.dirname(folder_paths.__file__)
|
|
impact_path = os.path.join(os.path.dirname(__file__))
|
|
modules_path = os.path.join(os.path.dirname(__file__), "modules")
|
|
wildcards_path = os.path.join(os.path.dirname(__file__), "wildcards")
|
|
|
|
sys.path.append(modules_path)
|
|
|
|
import impact.config
|
|
print(f"### Loading: ComfyUI-Impact-Pack ({impact.config.version})")
|
|
|
|
def do_install():
|
|
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)
|
|
|
|
# ensure dependency
|
|
if impact.config.read_config()[1] < impact.config.dependency_version:
|
|
do_install()
|
|
|
|
# Core
|
|
# recheck dependencies for colab
|
|
try:
|
|
import folder_paths
|
|
import torch
|
|
import cv2
|
|
import mmcv
|
|
import numpy as np
|
|
from mmdet.apis import (inference_detector, init_detector)
|
|
import comfy.samplers
|
|
import comfy.sd
|
|
import warnings
|
|
from PIL import Image, ImageFilter
|
|
from mmdet.evaluation import get_classes
|
|
from skimage.measure import label, regionprops
|
|
from collections import namedtuple
|
|
except:
|
|
import importlib
|
|
print("### ComfyUI-Impact-Pack: Reinstall dependencies (several dependencies are missing.)")
|
|
do_install()
|
|
|
|
import impact.impact_server # to load server api
|
|
|
|
def setup_js():
|
|
# remove garbage
|
|
old_js_path = os.path.join(comfy_path, "web", "extensions", "core", "impact-pack.js")
|
|
if os.path.exists(old_js_path):
|
|
os.remove(old_js_path)
|
|
|
|
# setup js
|
|
js_dest_path = os.path.join(comfy_path, "web", "extensions", "impact-pack")
|
|
if not os.path.exists(js_dest_path):
|
|
os.makedirs(js_dest_path)
|
|
|
|
js_src_path = os.path.join(impact_path, "js", "impact-pack.js")
|
|
shutil.copy(js_src_path, js_dest_path)
|
|
|
|
js_src_path = os.path.join(impact_path, "js", "impact-sam-editor.js")
|
|
shutil.copy(js_src_path, js_dest_path)
|
|
|
|
setup_js()
|
|
|
|
import impact.legacy_nodes
|
|
from impact.impact_pack import *
|
|
from impact.detectors import *
|
|
from impact.pipe import *
|
|
|
|
impact.wildcards.read_wildcard_dict(wildcards_path)
|
|
|
|
NODE_CLASS_MAPPINGS = {
|
|
"SAMLoader": SAMLoader,
|
|
"MMDetDetectorProvider": MMDetDetectorProvider,
|
|
"CLIPSegDetectorProvider": CLIPSegDetectorProvider,
|
|
"ONNXDetectorProvider": ONNXDetectorProvider,
|
|
|
|
"BitwiseAndMaskForEach": BitwiseAndMaskForEach,
|
|
"SubtractMaskForEach": SubtractMaskForEach,
|
|
|
|
"DetailerForEach": DetailerForEach,
|
|
"DetailerForEachDebug": DetailerForEachTest,
|
|
"DetailerForEachPipe": DetailerForEachPipe,
|
|
"DetailerForEachDebugPipe": DetailerForEachTestPipe,
|
|
|
|
"SAMDetectorCombined": SAMDetectorCombined,
|
|
|
|
"FaceDetailer": FaceDetailer,
|
|
"FaceDetailerPipe": FaceDetailerPipe,
|
|
|
|
"ToDetailerPipe": ToDetailerPipe ,
|
|
"FromDetailerPipe": FromDetailerPipe,
|
|
"ToBasicPipe": ToBasicPipe,
|
|
"FromBasicPipe": FromBasicPipe,
|
|
"BasicPipeToDetailerPipe": BasicPipeToDetailerPipe,
|
|
"DetailerPipeToBasicPipe": DetailerPipeToBasicPipe,
|
|
"EditBasicPipe": EditBasicPipe,
|
|
"EditDetailerPipe": EditDetailerPipe,
|
|
|
|
"LatentPixelScale": LatentPixelScale,
|
|
"PixelKSampleUpscalerProvider": PixelKSampleUpscalerProvider,
|
|
"PixelKSampleUpscalerProviderPipe": PixelKSampleUpscalerProviderPipe,
|
|
"IterativeLatentUpscale": IterativeLatentUpscale,
|
|
"IterativeImageUpscale": IterativeImageUpscale,
|
|
"PixelTiledKSampleUpscalerProvider": PixelTiledKSampleUpscalerProvider,
|
|
"PixelTiledKSampleUpscalerProviderPipe": PixelTiledKSampleUpscalerProviderPipe,
|
|
"TwoSamplersForMaskUpscalerProvider": TwoSamplersForMaskUpscalerProvider,
|
|
"TwoSamplersForMaskUpscalerProviderPipe": TwoSamplersForMaskUpscalerProviderPipe,
|
|
|
|
"PixelKSampleHookCombine": PixelKSampleHookCombine,
|
|
"DenoiseScheduleHookProvider": DenoiseScheduleHookProvider,
|
|
"CfgScheduleHookProvider": CfgScheduleHookProvider,
|
|
|
|
"BitwiseAndMask": BitwiseAndMask,
|
|
"SubtractMask": SubtractMask,
|
|
"Segs & Mask": SegsBitwiseAndMask,
|
|
"EmptySegs": EmptySEGS,
|
|
|
|
"MaskToSEGS": MaskToSEGS,
|
|
"ToBinaryMask": ToBinaryMask,
|
|
|
|
"BboxDetectorSEGS": BboxDetectorForEach,
|
|
"SegmDetectorSEGS": SegmDetectorForEach,
|
|
"ONNXDetectorSEGS": ONNXDetectorForEach,
|
|
|
|
"BboxDetectorCombined_v2": BboxDetectorCombined,
|
|
"SegmDetectorCombined_v2": SegmDetectorCombined,
|
|
"SegsToCombinedMask": SegsToCombinedMask,
|
|
|
|
"KSamplerProvider": KSamplerProvider,
|
|
"TwoSamplersForMask": TwoSamplersForMask,
|
|
"TiledKSamplerProvider": TiledKSamplerProvider,
|
|
|
|
"PreviewBridge": PreviewBridge,
|
|
"ImageSender": ImageSender,
|
|
"ImageReceiver": ImageReceiver,
|
|
"ImageMaskSwitch": ImageMaskSwitch,
|
|
"LatentSwitch": LatentSwitch,
|
|
|
|
# "SaveConditioning": SaveConditioning,
|
|
# "LoadConditioning": LoadConditioning,
|
|
|
|
"ImpactWildcardProcessor": ImpactWildcardProcessor,
|
|
"ImpactLogger": ImpactLogger,
|
|
|
|
"MaskPainter": impact.legacy_nodes.MaskPainter,
|
|
"MMDetLoader": impact.legacy_nodes.MMDetLoader,
|
|
"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 = {
|
|
"BboxDetectorSEGS": "BBOX Detector (SEGS)",
|
|
"SegmDetectorSEGS": "SEGM Detector (SEGS)",
|
|
"ONNXDetectorSEGS": "ONNX Detector (SEGS)",
|
|
"BboxDetectorCombined_v2": "BBOX Detector (combined)",
|
|
"SegmDetectorCombined_v2": "SEGM Detector (combined)",
|
|
"SegsToCombinedMask": "SEGS to MASK (combined)",
|
|
"MaskToSEGS": "MASK to SEGS",
|
|
"BitwiseAndMaskForEach": "Bitwise(SEGS & SEGS)",
|
|
"SubtractMaskForEach": "Bitwise(SEGS - SEGS)",
|
|
"Segs & Mask": "Bitwise(SEGS & MASK)",
|
|
"BitwiseAndMask": "Bitwise(MASK & MASK)",
|
|
"SubtractMask": "Bitwise(MASK - MASK)",
|
|
"DetailerForEach": "Detailer (SEGS)",
|
|
"DetailerForEachPipe": "Detailer (SEGS/pipe)",
|
|
"DetailerForEachDebug": "DetailerDebug (SEGS)",
|
|
"DetailerForEachDebugPipe": "DetailerDebug (SEGS/pipe)",
|
|
"SAMDetectorCombined": "SAMDetector (combined)",
|
|
"FaceDetailerPipe": "FaceDetailer (pipe)",
|
|
|
|
"BasicPipeToDetailerPipe": "BasicPipe -> DetailerPipe",
|
|
"DetailerPipeToBasicPipe": "DetailerPipe -> BasicPipe",
|
|
"EditBasicPipe": "Edit BasicPipe",
|
|
"EditDetailerPipe": "Edit DetailerPipe",
|
|
|
|
"LatentPixelScale": "Latent Scale (on Pixel Space)",
|
|
"IterativeLatentUpscale": "Iterative Upscale (Latent)",
|
|
"IterativeImageUpscale": "Iterative Upscale (Image)",
|
|
|
|
"TwoSamplersForMaskUpscalerProvider": "TwoSamplersForMask Upscaler Provider",
|
|
"TwoSamplersForMaskUpscalerProviderPipe": "TwoSamplersForMask Upscaler Provider (pipe)",
|
|
|
|
"PreviewBridge": "Preview Bridge",
|
|
"ImageSender": "Image Sender",
|
|
"ImageReceiver": "Image Receiver",
|
|
"ImageMaskSwitch": "Switch (images, mask)",
|
|
"LatentSwitch": "Switch (latent)",
|
|
|
|
"MaskPainter": "MaskPainter (Deprecated)",
|
|
"MMDetLoader": "MMDetLoader (Legacy)",
|
|
"SegsMaskCombine": "SegsMaskCombine (Legacy)",
|
|
"BboxDetectorForEach": "BboxDetectorForEach (Legacy)",
|
|
"SegmDetectorForEach": "SegmDetectorForEach (Legacy)",
|
|
"BboxDetectorCombined": "BboxDetectorCombined (Legacy)",
|
|
"SegmDetectorCombined": "SegmDetectorCombined (Legacy)",
|
|
}
|
|
|
|
__all__ = ['NODE_CLASS_MAPPINGS', 'NODE_DISPLAY_NAME_MAPPINGS']
|