Files
CavinHuang-comfyui-nodes-docs/docs/SAMDetectorCombined.md
2024-05-26 20:35:16 +08:00

4.1 KiB
Raw Permalink Blame History

Documentation

SAMDetectorCombined节点旨在使用SAM(Segment Anything Model)检测和分割图像中的物体。它使用指定的SAM模型、分割提示和其他参数处理输入图像,以生成勾勒出检测到的物体的掩码。该节点对于需要精确物体定位和分割的应用程序至关重要,例如在计算机视觉和图像分析任务中。

Input types

Required

  • sam_model
    • SAM模型参数对于节点的操作至关重要,因为它定义了将用于对象检测和分割的模型。模型的选择直接影响节点准确识别和分割图像中对象的能力。
    • Comfy dtype: SAM_MODEL
    • Python dtype: torch.nn.Module
  • segs
    • segs参数提供分割提示,指导SAM模型检测图像中的特定区域。这些提示对于提高分割过程的准确性至关重要,特别是在具有多个对象的复杂场景中。
    • Comfy dtype: SEGS
    • Python dtype: List[impact.core.SEG]
  • image
    • 图像参数是节点的输入,对于检测过程是必需的。图像的质量和分辨率直接影响节点在检测和分割对象方面的性能。
    • Comfy dtype: IMAGE
    • Python dtype: torch.Tensor

Optional

  • detection_hint
    • 检测提示参数允许指定要使用的检测策略类型。它影响SAM模型如何解释和处理分割提示,从而影响对象检测的结果。
    • Comfy dtype: COMBO['center-1', 'horizontal-2', 'vertical-2', 'rect-4', 'diamond-4', 'mask-area', 'mask-points', 'mask-point-bbox', 'none']
    • Python dtype: str
  • dilation
    • 膨胀参数用于控制检测到的对象周围的边界框的扩展。它在分割掩码的后处理中起着重要作用,可能改善掩码对对象的覆盖。
    • Comfy dtype: INT
    • Python dtype: int
  • threshold
    • 阈值参数对于确定将对象视为已检测的置信度水平至关重要。它直接影响节点在图像中识别对象的敏感性。
    • Comfy dtype: FLOAT
    • Python dtype: float
  • bbox_expansion
    • bbox_expansion参数定义了要应用于检测到的对象的边界框的扩展量。这有助于调整分割掩码围绕对象的紧密度。
    • Comfy dtype: INT
    • Python dtype: int
  • mask_hint_threshold
    • mask_hint_threshold参数用于设置分割过程中使用掩码提示的阈值。它影响节点在识别对象边界时对掩码提示的依赖。
    • Comfy dtype: FLOAT
    • Python dtype: float
  • mask_hint_use_negative
    • mask_hint_use_negative参数决定了分割过程中如何使用负提示。它可以增强节点区分对象和背景的能力。
    • Comfy dtype: COMBO['False', 'Small', 'Outter']
    • Python dtype: str

Output types

  • MASK
    • MASK输出提供了检测和分割过程后的最终分割掩码。它是进一步分析或用于需要对象分割的下游任务的关键输出。
    • Comfy dtype: MASK
    • Python dtype: torch.Tensor

Usage tips

  • Infra type: GPU

Source code

class SAMDetectorCombined:

    @classmethod
    def INPUT_TYPES(s):
        return {'required': {'sam_model': ('SAM_MODEL',), 'segs': ('SEGS',), 'image': ('IMAGE',), 'detection_hint': (['center-1', 'horizontal-2', 'vertical-2', 'rect-4', 'diamond-4', 'mask-area', 'mask-points', 'mask-point-bbox', 'none'],), 'dilation': ('INT', {'default': 0, 'min': -512, 'max': 512, 'step': 1}), 'threshold': ('FLOAT', {'default': 0.93, 'min': 0.0, 'max': 1.0, 'step': 0.01}), 'bbox_expansion': ('INT', {'default': 0, 'min': 0, 'max': 1000, 'step': 1}), 'mask_hint_threshold': ('FLOAT', {'default': 0.7, 'min': 0.0, 'max': 1.0, 'step': 0.01}), 'mask_hint_use_negative': (['False', 'Small', 'Outter'],)}}
    RETURN_TYPES = ('MASK',)
    FUNCTION = 'doit'
    CATEGORY = 'ImpactPack/Detector'

    def doit(self, sam_model, segs, image, detection_hint, dilation, threshold, bbox_expansion, mask_hint_threshold, mask_hint_use_negative):
        return (core.make_sam_mask(sam_model, segs, image, detection_hint, dilation, threshold, bbox_expansion, mask_hint_threshold, mask_hint_use_negative),)