Files
my-vault/自动语义分割系统/ComfyUI 搭建操作指南.md

12 KiB
Raw Blame History

title, date, tags
title date tags
ComfyUI 视频分割系统 - 界面搭建操作指南 2026-04-22
comfyUI
操作指南
SAM2
工作流搭建

ComfyUI 视频分割系统 - 界面搭建操作指南

前置假设:你已安装以下节点包。如未安装,请先通过 ComfyUI Manager 安装:

  • ComfyUI-Manager(管理器本身)
  • ComfyUI-VideoHelperSuite(视频加载/保存)
  • ComfyUl-segment-anything-2SAM2 分割,推荐 kijai 版)
  • ComfyUI-Impact-PackGrounding DINO / 检测器)
  • rgthree-comfyFast Muter / Bypass 节点)

第一步:打开节点添加菜单

在画布空白处 双击鼠标左键,或 右键单击空白处 → 选择 添加节点

你会看到一个分类菜单(如 image, video, SAM2, rgthree 等)。


第二步:搭建视频输入端

2.1 加载视频

  1. 右键/双击空白处打开节点菜单
  2. 在第二级菜单中找到 Video Helper Suite(带有紫色摄像机图标的那一项)
  3. 在右侧弹出的第三级菜单中,根据你的需求选择以下任意一个节点:
    • Load Video (Upload):如果你想从电脑本地上传一个视频文件
    • Load Video (Path):如果你想通过输入电脑上的文件夹路径来读取视频
  4. 点击创建节点
  5. 节点出现在画布上,把它拖到左上角区域

2.2 提取第一帧(关键帧选择器)

  1. 回到 Video Helper Suite(紫色摄像机图标)的第三级菜单
  2. 找到 图像 分类下的 Select Images
    • 在较新版本的 Video Helper Suite 中,它取代了旧版的 VHS_SelectFrames 名称功能完全一致都是通过索引Index从视频流中挑选特定帧
  3. (可选抽帧)如果你不想逐帧处理,也可以使用它上方的 Select Every Nth Image,每隔几帧取一张
  4. 连接:Load VideoIMAGE 输出 → Select Imagesimage 输入
  5. 设置参数:index = 0(表示取第一帧)

操作技巧ComfyUI 中,鼠标从一个节点的圆形输出端拖拽到另一个节点的圆形输入端即可完成连线。


第三步:放置 SAM2 模型加载器

这是整个系统的核心引擎。

  1. 右键/双击空白处
  2. 找到分类:SAM2 ,别选 segment_anything2
  3. 选择节点:(Down)Load SAM2Model(名称可能为 SAM2ModelLoaderSAM2::Model Loader
  4. 参数设置:
    • model_name: 选择 sam2.1 hiera_base_plus.safetensors(精度与速度平衡)
    • device: cuda(若显存不足可选 cpu,但极慢)
    • precision: fp16(推荐,省显存)

将这个节点放在画布中上部,作为公共模型源。


第四步:创建交互式提示(三选一或组合)

根据你的需求,添加以下至少一种提示节点。建议三种都创建,后期灵活切换。

4.1 点标注(正选/反选)

  1. 添加节点:SAM2 → SAM2 Point PromptPoint Prompt`
  2. 参数设置:
    • points: [[0.5, 0.5]](归一化坐标,格式为 JSON 列表)
    • labels: [1]1 = 正选前景,0 = 反选背景)
    • 示例points = [[0.45, 0.52], [0.55, 0.48]], labels = [1, 0] 表示第一个点是前景、第二个点是背景排除

注意SAM2 的坐标通常是归一化坐标0~1而非像素坐标。部分节点包也支持像素坐标请查看节点说明。

4.2 框标注

  1. 添加节点:SAM2SAM2 Box PromptBox Prompt
  2. 参数:
    • box: [0.3, 0.3, 0.7, 0.8]xyxy 格式,归一化坐标)

4.3 语义提示(文本 → 检测框 → Mask

这是自动化程度最高的路径,需要两步:

Step A文本转检测框

  1. 添加节点:ImpactGroundingDinoDetectorUltralyticsDetectorProvider
    • 选择 Grounding DINO 节点
  2. 参数:
    • prompt: "a person"(你的目标描述)
    • threshold: 0.3(置信度阈值)

Step B检测框转 SAM2 框提示

  1. Grounding DINOBOXES 输出 → 连接到 Box Prompt 节点的 box 输入
  2. 这样文本自动生成了空间位置信息

第五步单帧分割SAM2 Image Predictor

  1. 添加节点:SAM2SAM2 Image Predictor
  2. 连线如下:
    • SelectFrames 的图像输出 → SAM2 Image Predictorimage
    • SAM2 Model Loader 的模型输出 → SAM2 Image Predictorsam2_model
    • Point Prompt / Box Prompt 的提示输出 → SAM2 Image Predictorprompt
  3. 参数:
    • multimask_output: False(一般场景单 mask 即可,复杂场景可开 True 再筛选)

此时你可以先点击「运行」测试单帧分割效果。


第六步视频追踪核心SAM2 Video Predictor

这是将单帧结果传播到全视频的关键节点。

  1. 添加节点:SAM2SAM2 Video PredictorSAM2VideoPredictor
  2. 连线:
    • SAM2 Model Loadersam2_model
    • Load Video 的完整图像批次 → video_frames(或 images
    • SAM2 Image Predictor 输出的 maskinitial_mask
    • SelectFrames 的帧索引(或通过常量节点设置 frame_index=0)→ frame_index
  3. 内部逻辑:该节点会对视频所有帧预编码,并在第 0 帧注入你刚才分割的 mask

第七步双向追踪Track Range

部分 SAM2 节点包将追踪拆分为独立节点,部分内嵌在 Video Predictor 中。

情况 A有独立追踪节点

  1. 添加节点:SAM2SAM2 Track ForwardSAM2 Track Backward
  2. 或者查找:SAM2Track Range / Track Bidirectional
  3. 连线:SAM2 Video Predictorstate 输出 → Track Rangevideo_state
  4. 参数:
    • start_frame: 关键帧索引(如 0
    • direction: both 或分别创建前向/后向节点

情况 B追踪内嵌在 Video Predictor 中

  • 若你的节点包版本直接输出 mask_sequence,则跳过此步,直接连到预览/保存节点。

第八步:输出与可视化

8.1 预览 Mask

  1. 添加节点:imageMaskToImage(将 mask 转为可视图像)
  2. 再添加:imagePreview Image
  3. 连接追踪输出的 mask → MaskToImagePreview Image

8.2 合成视频(原图 + Mask 叠加)

  1. 添加节点:videoVHS_VideoCombineVideoHelperSuite
  2. 或:imageComposite Mask / ImageCompositeMasked
  3. 参数:
    • color: #FF0000Mask 颜色)
    • alpha: 0.6(透明度)

8.3 保存 Mask 序列

  1. 添加节点:imageSave Image(批量保存时每个 mask 会存为独立文件)
  2. 或使用 VHS_SaveImageSequence
  3. 建议设置 filename_prefix: mask_segment

第九步人工纠正分支RGThree Fast Muter

这是提升迭代效率的核心技巧。

9.1 创建 Fast Muter 节点

  1. 右键/双击空白处
  2. 找到:rgthreeFast Muter(或 Fast Bypasser
  3. 该节点有一个开关按钮,点击可在 启用(绿色)跳过/静音(红色) 之间切换

9.2 搭建纠正分支

思路在主线旁创建一条「修正输入」的旁路默认关闭Bypass。发现问题时打开覆盖原追踪结果。

具体步骤:

  1. 创建修正用的 Frame Picker

    • 再添加一个 SelectFrames 节点,命名为 "Fix_Frame"
    • 参数 frame_index:留空或设为 45(示例问题帧)
  2. 创建修正用的 Point Prompt

    • 再添加一个 Point Prompt,命名为 "Fix_Points"
    • 填入修正后的坐标
  3. 创建修正用的 SAM2 Image Predictor

    • 添加第二个 SAM2 Image Predictor,命名为 "SAM2_Fix"
    • 输入:Fix_Frame 的图像 + Fix_Points + 公共 SAM2 Model Loader
  4. 插入 Fast Muter 控制修正流

    • 在 "SAM2_Fix" 的 mask 输出后,连接到一个 Fast Muter 节点
    • Fast Muter 的输出 → SAM2 Video Predictorcorrection_maskadditional_hint 输入
    • 默认状态:点击 Fast Muter 使其变为红色Muted/跳过),此时修正分支不参与运算
    • 需要修正时:点击变绿(启用),修正 mask 被注入追踪器
  5. 创建重新追踪控制

    • 如果 SAM2 Video Predictor 支持 retrack_from_frame 输入,将 Fix_Frame 的帧索引连入
    • 或使用第二个 Track Range 节点,设置 start_frame 为修正帧

9.3 实际操作流程

第一次运行:
  1. Fast Muter = 红色(关闭)
  2. 运行完整工作流
  3. 检查 Preview Image / 输出视频

发现问题(如第 45 帧漂移):
  1. 修改 "Fix_Frame" 的 frame_index = 45
  2. 修改 "Fix_Points" 的坐标为正确位置
  3. 点击 Fast Muter → 绿色(启用)
  4. 重新点击「运行」
  5. 系统从第 45 帧重新追踪,覆盖错误区间

确认修复后:
  1. Fast Muter → 红色(关闭,避免影响后续运行)
  2. 保存最终工作流

第十步:工作流连线总览

按以下逻辑检查你的连线是否完整:

[Load Video] ──→ [SelectFrames(0)] ──→ [SAM2 Image Predictor] ←── [SAM2 Model Loader]
      │                                      ↑
      │                           [Point Prompt / Box Prompt / Text→Grounding→Box]
      │                                      │
      │                               [Fast Muter] ←── [SelectFrames(N)] ──→ [SAM2 Image Predictor(修正)]
      │                               (默认关闭)                                    ↑
      │                                                                      [Fix Points]
      ↓
[SAM2 Video Predictor] ←── initial_mask ───┘
      │
      ├──→ [Track Forward] ──┐
      └──→ [Track Backward] ─┼──→ [合并 Mask Sequence] ──→ [MaskToImage] ──→ [Preview Image]
                             └────────────────────────────────────────────────→ [Save Image]

运行前检查清单

  • SAM2 模型文件已下载到 ComfyUI/models/sam2/ 目录
  • Grounding DINO 模型已下载(如使用语义提示)
  • Load Video 已选择有效视频路径
  • SelectFrames(0) 正确提取了第一帧
  • Prompt 节点的坐标格式与节点要求一致(归一化 0~1 或像素坐标)
  • SAM2 Video Predictor 接收的是完整视频批次,而非单帧
  • Fast Muter 当前状态符合预期(首次运行应为关闭/红色)
  • 输出节点的保存路径可写

常见问题速查

问题 排查方向
节点呈红色/无法创建 节点包未安装或加载失败,检查 ComfyUI 启动日志
SAM2 节点报错显存不足 sam2_hiera_tiny.pt,或降低视频分辨率,或启用 fp16
追踪结果全黑/全白 检查 initial_mask 是否正确传入检查坐标格式0~1 vs 像素)
Grounding DINO 无检测结果 降低 threshold,或简化 prompt如只写 "person"
修正后重新追踪无变化 确认 Fast Muter 已启用(绿色),且修正 mask 正确连入 Video Predictor
视频输出帧率不对 Load VideoVideoCombine 中统一设置 fps 参数

下一步建议

  1. 先跑通单帧分割:不连 Video Predictor只用 Image Predictor + Preview Image 确认第一帧分割正确
  2. 再接入视频追踪:确认单帧无误后,再连 SAM2 Video Predictor
  3. 最后添加纠正分支:等标准流程跑通后再加入 RGThree Fast Muter 机制
  4. 保存工作流模板WorkflowSave(或 Ctrl+S命名为 VideoSeg_Template.json