5.0 KiB
5.0 KiB
Documentation
- Class name: ImageSegmentationCustom
- Category: image/segmentation
- Output node: False
ImageSegmentationCustom节点专门用于自定义图像分割任务,利用先进的配置和模型精确地描绘和分离图像中的不同元素。它设计用于需要定制分割方法的场景,提供灵活的处理能力,增强图像分析能力。
Input types
Required
- images
- 要进行分割的输入图像。这个参数至关重要,因为它直接影响分割结果,决定了要分析和分离的视觉元素。
- Comfy dtype: IMAGE
- Python dtype: List[Image]
- model
- 指定要使用的分割模型。这个选择对分割的准确性和质量有重大影响,允许根据特定需求进行定制。
- Comfy dtype: COMBO[STRING]
- Python dtype: str
- alpha_matting
- 一个布尔标志,表示是否应用alpha matting来改善分割的边缘质量,特别有助于实现更精确和细致的边缘。
- Comfy dtype: COMBO[STRING]
- Python dtype: bool
- alpha_matting_foreground_threshold
- 在alpha matting上下文中确定前景元素的阈值,有助于提高对象边界周围的分割准确性。
- Comfy dtype: INT
- Python dtype: float
- alpha_matting_background_threshold
- 在alpha matting过程中识别背景元素的阈值,有助于提高分割图像背景区域的清晰度和精确度。
- Comfy dtype: INT
- Python dtype: float
- alpha_matting_erode_size
- 定义alpha matting中应用的腐蚀大小,可以帮助减少边缘周围的噪声并提高整体分割质量。
- Comfy dtype: INT
- Python dtype: int
- post_process_mask
- 表示是否应对分割掩码应用后处理以提高其质量,如平滑边缘或去除噪声。
- Comfy dtype: COMBO[STRING]
- Python dtype: bool
- mean
- 用于归一化输入图像的均值,通过调整图像的颜色属性在准备图像进行分割时起关键作用。
- Comfy dtype: FLOAT
- Python dtype: Tuple[float, float, float]
- std
- 图像归一化的标准差值,对于调整像素值的比例以匹配模型的预期输入分布至关重要。
- Comfy dtype: FLOAT
- Python dtype: Tuple[float, float, float]
- size
- 指定在分割之前将图像调整到的目标大小,影响分割输出的分辨率和细节水平。
- Comfy dtype: INT
- Python dtype: Tuple[int, int]
Output types
- image
- 分割后的图像,其中每个图像内的不同元素都被精确地描绘和分离,可用于进一步分析或处理。
- Comfy dtype: IMAGE
- Python dtype: List[Image]
Usage tips
- Infra type:
GPU - Common nodes: unknown
Source code
class ImageSegmentationCustom:
def __init__(self):
pass
@classmethod
def INPUT_TYPES(cls):
return {
"required": {
"images": ("IMAGE",),
"model": (folder_paths.get_filename_list("onnx"),),
"alpha_matting": (["true", "false"],),
"alpha_matting_foreground_threshold": ("INT", {
"default": 240,
"max": 250,
"step": 5
}),
"alpha_matting_background_threshold": ("INT", {
"default": 20,
"max": 250,
"step": 5
}),
"alpha_matting_erode_size": ("INT", {
"default": 10,
"step": 1
}),
"post_process_mask": (["false", "true"],),
"mean": ("FLOAT", {
"default": 0.485,
"max": 1.0,
"step": 0.01
}),
"std": ("FLOAT", {
"default": 1.0,
"max": 1.0,
"step": 0.01
}),
"size": ("INT", {
"default": 1024,
"step": 8
}),
},
}
RETURN_TYPES = ("IMAGE",)
FUNCTION = "node"
CATEGORY = "image/segmentation"
def node(
self,
images,
model,
alpha_matting,
alpha_matting_foreground_threshold,
alpha_matting_background_threshold,
alpha_matting_erode_size,
post_process_mask,
mean,
std,
size
):
container = CustomSessionContainer(mean, mean, mean, std, std, std, size, size)
class CustomSession(CustomAbstractSession):
def __init__(self):
super().__init__(model)
@classmethod
def name(cls, *args, **kwargs):
return model
session = CustomSession().from_container(container)
return ImageSegmentation().node(
images,
model,
alpha_matting,
alpha_matting_foreground_threshold,
alpha_matting_background_threshold,
alpha_matting_erode_size,
post_process_mask,
session
)