vault backup: 2026-04-24 15:58:02

This commit is contained in:
2026-04-24 15:58:02 +08:00
parent 9a590e7fa2
commit 2bd45d611d
6 changed files with 152 additions and 344 deletions

View File

@@ -4,8 +4,8 @@
"title": "Design ComfyUI video segmentation and tracking",
"titleGenerationStatus": "success",
"createdAt": 1776871296744,
"updatedAt": 1777012794152,
"lastResponseAt": 1777012794152,
"updatedAt": 1777017083342,
"lastResponseAt": 1777017083342,
"sessionId": "50e1c568-9493-4c86-8ca1-1f50b0f2e724",
"providerState": {
"providerSessionId": "50e1c568-9493-4c86-8ca1-1f50b0f2e724"
@@ -15,12 +15,12 @@
],
"usage": {
"model": "kimi-for-coding",
"inputTokens": 139251,
"inputTokens": 32038,
"cacheCreationInputTokens": 0,
"cacheReadInputTokens": 0,
"contextWindow": 200000,
"contextTokens": 139251,
"percentage": 70,
"contextTokens": 32038,
"percentage": 16,
"contextWindowIsAuthoritative": true
}
}

View File

@@ -192,6 +192,11 @@
},
"active": "98c4d568edb73698",
"lastOpenFiles": [
"自动语义分割系统/参考内容/视频笔记-ComfyUI SAM2 Easy Tutorial.md",
"自动语义分割系统/参考内容/插件功能大全.md",
"自动语义分割系统/参考内容/安装步骤.md",
"自动语义分割系统/参考内容",
"自动语义分割系统/New Folder",
"未命名.canvas",
"自动语义分割系统/2026_4_24_视频分割工作流构建 1.json",
"自动语义分割系统/2026_4_24_视频分割工作流构建.json",

View File

@@ -1,6 +1,6 @@
---
title: ComfyUI 视频分割系统 - 界面搭建操作指南
date: 2026-04-22
date: 2026-04-24
tags:
- comfyUI
- 操作指南
@@ -10,411 +10,214 @@ tags:
# ComfyUI 视频分割系统 - 界面搭建操作指南
> 前置假设:你已安装以下节点包。如未安装,请先通过 ComfyUI Manager 安装:
> - `ComfyUI-Manager`(管理器本身)
> - `ComfyUI-VideoHelperSuite`(视频加载/保存)
> - `ComfyUl-segment-anything-2`SAM2 分割,推荐 kijai 版)
> - `ComfyUI-Impact-Pack`Grounding DINO / 检测器)
> - `rgthree-comfy`Fast Muter / Bypass 节点)
> - `cg-use-everywhere`CG Use Everywhere无线广播连线
> 本指南基于 `2026_4_24_视频分割工作流构建.json` 初稿编写,描述当前已实现的工作流,并标注后续扩展方向。
> 扩展参考资料见 [[参考内容/安装步骤.md]]、[[参考内容/插件功能大全.md]]。
---
## 第一步:打开节点添加菜单
## 前置要求
在画布空白处 **双击鼠标左键**,或 **右键单击空白处** → 选择 `添加节点`
请确保已通过 **ComfyUI Manager** 安装以下节点包:
你会看到一个分类菜单(如 `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 Video``IMAGE` 输出 → `Select Images``image` 输入
5. 设置参数:`index = 0`(表示取第一帧)
> **操作技巧**ComfyUI 中,鼠标从一个节点的**圆形输出端**拖拽到另一个节点的**圆形输入端**即可完成连线。
---
## 第三步:放置 SAM2 模型加载器
这是整个系统的核心引擎。
1. 右键/双击空白处
2. 找到分类:`SAM2` ,别选 `segment_anything2 `
3. 选择节点:`(Down)Load SAM2Model`(名称可能为 `SAM2ModelLoader``SAM2::Model Loader`
4. 参数设置:
- `model_name`: 选择 `sam2.1 hiera_base_plus.safetensors`(精度与速度平衡)
- `device`: `cuda`(若显存不足可选 `cpu`,但极慢)
- `precision`: `fp16`(推荐,省显存)
将这个节点放在画布**中上部**,作为公共模型源。
---
## 第四步SAM2 节点功能总览与选型
`comfyui-segment-anything-2` 提供了 6 个核心节点。以下是它们的功能定位:
### 4.1 核心加载类
**`(Down)Load SAM2Model`**
- **功能**:从本地加载或从服务器下载指定的 SAM2 模型文件
- **关键参数**
- `model`: 如 `sam2.1_hiera_base_plus.safetensors`
- `segmentor`: 可选择单图或视频模式
- `device`: `cuda``cpu`
- `precision`: `fp16`(推荐)、`bf16``fp32`
### 4.2 静态图像分割类
**`Sam2Segmentation`**
- **功能**:标准单帧分割器。根据输入的正向/负向点坐标、检测框或初始遮罩生成分割结果
- **关键输入**`coordinates_positive`(正选点)、`coordinates_negative`(反选点)、`bboxes`
**`Sam2AutoSegmentation`**
- **功能**"分割一切"模式。无需手动点击,通过全图布设点阵(`points_per_side`)自动识别所有可能的物体
- **适用**:全自动抠出图中所有物体
### 4.3 视频追踪与交互类
**`Sam2VideoSegmentationAddPoints`**
- **功能**:视频工作流的"交互站"。允许你在特定帧(`frame_index`)添加点标注,并将标注注入到视频推理状态(`inference_state`)中
- **关键作用**
- 初始化视频追踪状态
- 通过 `prev_inference_state` 链式追加多帧标注(实现人工纠正)
- **关键输入**`image`(视频批次或关键帧)、`coordinates_positive``coordinates_negative``frame_index`
**`Sam2VideoSegmentation`**
- **功能**:视频推理的核心引擎。接收模型和带有标注信息的 `inference_state`,执行跨帧自动追踪
- **输出**`mask`(完整视频的分割结果批次)
### 4.4 辅助与坐标转换类
**`Florence2 Coordinates`**
- **功能**:桥接节点。将 Florence-2 视觉模型输出的检测数据转换为 SAM2 可识别的坐标格式(中心点 `center_coordinates` 或检测框 `boxes`
- **用途**:实现"文字搜图并抠图"的全自动流程
### 4.5 快速选型建议
| 任务场景 | 核心节点组合 |
|:---|:---|
| **全自动抠出图中所有物体** | `(Down)Load SAM2Model` + `Sam2AutoSegmentation` |
| **手动点击抠出视频第一帧** | `(Down)Load SAM2Model` + `Sam2Segmentation` |
| **将第一帧的效果推广到全视频** | `Sam2VideoSegmentationAddPoints` + `Sam2VideoSegmentation` |
| **全自动语义分割(如:抠出手柄)** | `Florence-2` 相关节点 + `Florence2 Coordinates` + `Sam2Segmentation` |
---
## 第五步:单帧分割测试(确认第一帧标注)
在接入视频追踪前,建议先用单帧节点快速验证标注位置是否准确。
### 5.1 手动点/框标注Sam2Segmentation
1. 添加节点:`SAM2``Sam2Segmentation`
2. 连线:
- `Select Images`(第一帧)的图像输出 → `Sam2Segmentation``image`
- `(Down)Load SAM2Model` 的模型输出 → `Sam2Segmentation``sam2_model`
3. 选择以下**任意一种**提示方式填入:
**方式 A手绘 Mask最直观强烈推荐**
-`Select Images` 的图像先连到一个 `Preview Image` 节点
- 在预览图上**右键** → `Open in Mask Editor`
- 用画笔在目标区域涂抹(不需要很精确,覆盖目标大致轮廓即可),点击 **Save to node**
- 将得到的 `mask` 连到 `Sam2Segmentation``mask` 输入
- 这样无需计算精确坐标,手绘的粗略区域即可引导 SAM2 生成分割
**方式 B点坐标适合精确控制**
- `coordinates_positive`: 填入正选点坐标(如 `[[0.45, 0.52]]`
- `coordinates_negative`: 填入反选点坐标(如 `[[0.55, 0.48]]`),如无则留空
- > **坐标获取技巧**`Sam2Segmentation` 节点本身不带图像点击界面。你可以:
> - 先用 `Sam2AutoSegmentation`(见 5.2)跑一次,从它输出的 `bbox` 列表中估算目标中心坐标
> - 或将第一帧保存到本地在图像编辑软件如画图、Photoshop中查看鼠标位置的像素坐标再归一化除以图像宽高后填入
**方式 C检测框适合规则形状物体**
- `bboxes`: 填入边界框坐标 `[x1, y1, x2, y2]`
- 可通过 `Florence2 Coordinates``Grounding DINO` 节点自动生成(见第六、七章)
4. 参数:
- `keep_model_loaded`: 可开启(若后续继续用同一模型)
- `individual_objects`: 根据需求选择(多目标时开启)
5. 输出连到 `image``Preview Image` 查看效果
> **多次迭代的技巧**SAM2 的分割结果对提示位置敏感。如果第一次效果不佳,**不需要重新连线**
> - 若用 **方式 AMask**:重新打开 Mask Editor调整手绘区域再次 Save然后直接点击「运行」
> - 若用 **方式 B坐标**:直接修改 `coordinates_positive` 的数值,再次点击「运行」
>
> 建议先用 **方式 A 手绘 mask** 快速确认目标能被正确分割,然后再根据效果决定视频追踪时使用的精确坐标。
### 5.2 自动分割一切Sam2AutoSegmentation
如果你不想手动标注,可以使用全自动模式:
1. 添加节点:`SAM2``Sam2AutoSegmentation`
2. 连线:`Select Images``image``(Down)Load SAM2Model``sam2_model`
3. 参数调整(可选):
- `points_per_side`: 网格密度(默认 32越大越精细但越慢
- `pred_iou_thresh`: IOU 阈值过滤低质量 mask
- `stability_score_thresh`: 稳定性阈值(默认 0.95
**医疗/低对比度场景调优建议**
在处理医疗手术图像等低对比度、边界模糊场景时Auto Segmentation 容易因过滤过严而产生"角落碎块"(只保留高对比度杂色,漏掉目标器官)。遇到此现象时请重点调整以下两个参数:
| 参数 | 当前问题 | 建议修改 |
| 节点包 | 用途 | JSON 中使用的节点 |
|:---|:---|:---|
| `stability_score_thresh` | 默认 0.95 要求过高。手术灯光反光、组织颜色接近AI 很难在全图点阵下获得 95% 稳定性的遮罩,导致宁缺毋滥、滤掉模糊器官 | **降至 0.85 ~ 0.90** |
| `points_per_side` | 默认 16 意味着全图只撒了 256 个探测点。对于 2560×1440 等高分辨率医疗画面,点阵空隙太大,容易漏掉细小器械或解剖结构 | **提高至 32 或 64** |
4. 输出:`mask``segmented_image``bbox`
**此时你可以先点击「运行」测试单帧分割效果。**
| `ComfyUI-VideoHelperSuite` | 视频加载、帧提取、视频合成 | `VHS_LoadVideo`, `VHS_SelectImages`, `VHS_VideoCombine`, `PreviewAnimation` |
| `ComfyUI-segment-anything-2` | SAM2 模型加载与分割 | `DownloadAndLoadSAM2Model`, `Sam2Segmentation` |
| `ComfyUI-KJNodes` | 交互式坐标编辑器 | `PointsEditor` |
---
## 第六步:视频追踪核心链路
`comfyui-segment-anything-2` 的视频追踪由两个节点配合完成:`Sam2VideoSegmentationAddPoints`(注入提示)+ `Sam2VideoSegmentation`(执行追踪)。
### 6.1 Sam2VideoSegmentationAddPoints视频交互注入
1. 添加节点:`SAM2``Sam2VideoSegmentationAddPoints`
2. 连线:
- `(Down)Load SAM2Model``sam2_model`
- `Load Video` 的完整图像批次 → `image`(视频源)
- `coordinates_positive`: 填入第一帧的正选点坐标
- `coordinates_negative`: 填入反选点坐标(可选)
3. 参数:
- `frame_index`: `0`(表示在第 0 帧添加这些点标注)
- `object_index`: `0`(单目标保持默认,多目标时递增)
- `prev_inference_state`: **首次追踪时留空**;链式追加关键帧时接入上一步的 `inference_state`
4. 输出:`inference_state`(携带了视频帧信息和标注状态)
### 6.2 Sam2VideoSegmentation视频推理引擎
1. 添加节点:`SAM2``Sam2VideoSegmentation`
2. 连线:
- `(Down)Load SAM2Model``sam2_model`
- `Sam2VideoSegmentationAddPoints``inference_state``inference_state`
3. 参数:
- `keep_model_loaded`: 推荐开启(避免重复加载模型)
4. 输出:`mask`(完整视频的分割结果,批次形式)
### 6.3 标准视频工作流连线示意
## 当前工作流拓扑
```
[Load Video] ───────────────────────┐
[Sam2VideoSegmentationAddPoints] ──→ [Sam2VideoSegmentation] ──→ [Preview / Save]
[VHS_LoadVideo] ─────→ [VHS_SelectImages] ──→ [PointsEditor] ──→ [Sam2Segmentation]
(index=0) (positive_coords) ↑
│ │ (negative_coords) │
│ │ │
│ └───────────────────────────────────────────────────┘
│ ↑
│ [DownloadAndLoadSAM2Model]
└──→ [PreviewAnimation] ←── [Sam2Segmentation(mask)]
[MaskToImage] ──→ [VHS_VideoCombine]
```
**当前状态**:对视频每一帧使用 **相同的交互式坐标** 进行独立分割(`Sam2Segmentation` 接收完整视频批次)。
**扩展目标**:接入 `Sam2VideoSegmentationAddPoints` + `Sam2VideoSegmentation`,实现真正的**跨帧追踪**。
---
## 第一步:加载视频
1. 右键/双击空白处打开节点菜单
2. 找到 **Video Helper Suite**(紫色摄像机图标)
3. 选择 `Load Video``Load Video (Path)`
4. 参数说明:
- `video`: 选择你的视频文件
- `force_rate`: `0`(保持原帧率)
- `frame_load_cap`: `0`(加载全部帧)
- `select_every_nth`: `10`(每 10 帧取 1 帧,降低处理量)
- `format`: `AnimateDiff`
---
## 第二步:提取第一帧作为交互背景
1. 回到 **Video Helper Suite**,选择 `图像`**`Select Images`**
2. 连接:`VHS_LoadVideo``IMAGE``Select Images``image`
3. 参数:`indexes` = `0`(取第 0 帧)
4. 该帧将作为 `PointsEditor` 的背景图,方便你在原图上点击标注
---
## 第三步交互式坐标生成PointsEditor
1. 搜索:`KJNodes``PointsEditor`
2. 连接:`Select Images``IMAGE``PointsEditor``bg_image`
3. 节点功能:
- 在画布上显示第一帧图像
- **点击图像**生成正选点positive输出到 `positive_coords`
- **按住 Shift 点击**生成反选点negative输出到 `negative_coords`
- 支持框选bbox和裁剪预览
4. 参数说明:
- `width` / `height`: 与视频分辨率一致(如 `2560`, `1440`
- `xyxy`: 坐标格式
5. 输出:`positive_coords`(正选坐标 JSON 字符串)、`negative_coords`(反选坐标 JSON 字符串)
> **这是解决"手动填坐标不直观"问题的关键节点。** 你可以反复点击、调整,每次修改后直接运行,无需重新连线。
---
## 第四步:加载 SAM2 模型
1. 搜索:`SAM2``DownloadAndLoadSAM2Model`
2. 参数:
- `model`: `sam2.1_hiera_base_plus.safetensors`
- `segmentor`: `video`(选择视频模式,为后续扩展做准备)
- `device`: `cuda`
- `precision`: `bf16`
3. 输出:`sam2_model`
---
## 第五步单帧分割广播到全视频Sam2Segmentation
1. 搜索:`SAM2``Sam2Segmentation`
2. 连接:
- `DownloadAndLoadSAM2Model``sam2_model``Sam2Segmentation``sam2_model`
- `VHS_LoadVideo``IMAGE`(完整视频批次)→ `Sam2Segmentation``image`
- `PointsEditor``positive_coords``Sam2Segmentation``coordinates_positive`
- `PointsEditor``negative_coords``Sam2Segmentation``coordinates_negative`
3. 参数:
- `keep_model_loaded`: `true`
- `individual_objects`: `true`
4. 输出:`mask`
> **当前行为**`Sam2Segmentation` 对视频批次中的**每一帧**都使用 `PointsEditor` 生成的同一组坐标进行独立分割。如果目标在视频中有大幅位移,后续帧可能分割不准。
>
> **这正是下一步需要扩展视频追踪的原因。**
---
## 第六步:输出与预览
### 6.1 Mask 转图像
1. 搜索:`mask``MaskToImage`
2. 连接:`Sam2Segmentation``mask``MaskToImage``mask`
3. 输出:`IMAGE`(可视化的 mask 图像批次)
### 6.2 合成视频
1. 搜索:`video``VHS_VideoCombine`
2. 连接:`MaskToImage``IMAGE``VHS_VideoCombine``images`
3. 参数:
- `frame_rate`: `10`(与抽帧间隔匹配)
- `format`: `video/nvenc_h264-mp4`
- `filename_prefix`: `AnimateDiff`
- `save_output`: `true`
### 6.3 实时预览
1. 搜索:`VHS``PreviewAnimation`
2. 连接:
- `VHS_LoadVideo``IMAGE``PreviewAnimation``images`(原视频)
- `Sam2Segmentation``mask``PreviewAnimation``masks`(分割 mask
3. 功能:同时播放原视频和 mask便于逐帧检查分割效果
---
## 第七步:后续扩展方向
当前 JSON 只实现了**逐帧独立分割**。下一步扩展为**真正的视频追踪**
### 扩展 1接入 SAM2 视频追踪核心
在现有链路基础上,将 `Sam2Segmentation` 替换或并行为:
```
[Sam2VideoSegmentationAddPoints] ──→ [Sam2VideoSegmentation] ──→ [MaskToImage]
↑ ↑
[(Down)Load SAM2Model] [(Down)Load SAM2Model]
[coordinates_positive / coordinates_negative]
[PointsEditor(positive_coords)]
```
---
| 步骤 | 操作 |
|:---|:---|
| 1 | 添加 `Sam2VideoSegmentationAddPoints``image` 接入完整视频批次,`coordinates_positive` 接入 `PointsEditor` |
| 2 | 添加 `Sam2VideoSegmentation``inference_state` 接入上一步输出 |
| 3 | `Sam2VideoSegmentation``mask``MaskToImage` |
| 4 | 此时 `PointsEditor` 的坐标只在第 0 帧生效SAM2 会自动追踪目标运动到后续帧 |
## 第七步:人工纠正与多关键帧Fast Muter 应用
### 扩展 2人工纠正分支Fast Muter
`Sam2VideoSegmentationAddPoints``prev_inference_state` 输入天然支持**链式追加**多帧标注。这是实现"第一帧标注 + 中途修正"的核心机制。
### 7.1 多关键帧链式结构(无修正时的标准链路)
如果你只想用第一帧推广到全视频,链路如下:
```
[Sam2VideoSegmentationAddPoints(第0帧标注)]
↓ inference_state
[Sam2VideoSegmentation]
↓ mask
[Preview / Save]
```
### 7.2 中途人工纠正链路
当视频较长、目标发生遮挡/形变导致追踪漂移时,可在中间帧追加标注:
当追踪漂移时,在 `prev_inference_state` 路径上链式追加修正节点:
```
[Sam2VideoSegmentationAddPoints(第0帧)]
↓ inference_state
[Sam2VideoSegmentationAddPoints(第45帧修正, prev_inference_state接入)]
[Sam2VideoSegmentationAddPoints(第N帧修正, prev_inference_state接入)]
↓ inference_state
[Sam2VideoSegmentation]
↓ mask
[Preview / Save]
```
**操作方式**
1. 第一个 `AddPoints` 节点保持第一帧的标注不变
2. 建第二个 `AddPoints` 节点
- `image`: 接入 `Load Video` 的完整批次(与第一个相同)
- `prev_inference_state`: 接入第一个 `AddPoints``inference_state`
- `frame_index`: 修正帧号(如 `45`
- `coordinates_positive`: 修正后的点坐标
3. 第二个 `AddPoints``inference_state``Sam2VideoSegmentation`
4. 重新运行,系统会以第 0 帧和第 45 帧为锚点,综合追踪整个视频
实现方式
1. 安装 `rgthree-comfy`
2. 建第二个 `Sam2VideoSegmentationAddPoints`(修正节点
3. 默认对该修正节点执行 **Bypass**(右键 → Bypass使其不参与运算
4. 需要修正时,取消 Bypass修改 `frame_index` 和坐标,重新运行
---
### 扩展 3语义提示自动化
## 第八步:输出与可视化
### 8.1 预览 Mask
1. 添加节点:`image``MaskToImage`(将 mask 转为可视图像)
2. 再添加:`image``Preview Image`
3. 连接追踪输出的 mask → `MaskToImage``Preview Image`
### 8.2 合成视频(原图 + Mask 叠加)
1. 添加节点:`video``VHS_VideoCombine`VideoHelperSuite
2. 或:`image``Composite Mask` / `ImageCompositeMasked`
3. 参数:
- `color`: `#FF0000`Mask 颜色)
- `alpha`: `0.6`(透明度)
### 8.3 保存 Mask 序列
1. 添加节点:`image``Save Image`(批量保存时每个 mask 会存为独立文件)
2. 或使用 `VHS_SaveImageSequence`
3. 建议设置 `filename_prefix`: `mask_segment`
---
## 第九步:用 Fast Muter 优化纠正 Workflow
`comfyui-segment-anything-2` 中,纠正本质上是通过 `prev_inference_state` 链式追加 `Sam2VideoSegmentationAddPoints``Fast Muter` 的作用是让你**提前建好纠正节点但默认不执行**,避免每次运行都走一遍修正链路。
### 9.1 创建 Fast Muter 节点
1. 右键/双击空白处
2. 找到:`rgthree``Fast Muter`(或 `Fast Muter/Bypasser`
3. 该节点有一个开关按钮,点击可在 **启用(绿色)****跳过/静音(红色)** 之间切换
### 9.2 搭建纠正分支(推荐方案)
**核心思路**:将修正用的 `Sam2VideoSegmentationAddPoints` 节点插入到主链路的 `prev_inference_state` 路径上,默认通过 **Fast Muter / Bypass** 跳过它。
#### 具体步骤:
1. **主链路保持不变**
- `Sam2VideoSegmentationAddPoints(第0帧)``Sam2VideoSegmentation`
2. **插入修正节点**
- 新建第二个 `Sam2VideoSegmentationAddPoints`,命名为 "Fix_AddPoints"
- `prev_inference_state`:接入主链路第一个 AddPoints 的 `inference_state`
- `image`: 接入 `Load Video` 的完整批次(与主链路相同)
- `frame_index`: `45`(示例问题帧)
- `coordinates_positive`: 填入修正后的点坐标
- 该节点的 `inference_state``Sam2VideoSegmentation`
3. **使用 Fast Muter 控制**
- **方案 AMute 节点输入)**:在 "Fix_AddPoints" 的 `coordinates_positive` 输入前放置 `Fast Muter`,默认红色(阻断)。需要纠正时变绿,坐标流入,修正生效。
- **方案 B原生 Bypass**:直接对 "Fix_AddPoints" 节点右键 → `Bypass`。被 Bypass 时ComfyUI 会跳过该节点,数据直接从上游流到下游(相当于无修正)。需要纠正时取消 Bypass。
### 9.3 实际操作流程
当交互式点击不方便时,接入全自动链路:
```
第一次运行:
1. Fix_AddPoints 被 Bypass / Fast Muter 关闭
2. 运行完整工作流(仅第 0 帧标注)
3. 检查 Preview Image / 输出视频
发现问题(如第 45 帧漂移):
1. 修改 "Fix_AddPoints" 的 frame_index = 45
2. 修改 "Fix_AddPoints" 的 coordinates_positive 为正确坐标
3. 取消 Bypass / Fast Muter 变绿(启用)
4. 重新点击「运行」
5. 系统以第 0 帧 + 第 45 帧为锚点,综合追踪整个视频
确认修复后:
1. 恢复 Bypass / Fast Muter 关闭
2. 保存最终工作流
```
---
## 第十步:工作流连线总览
按以下逻辑检查你的连线是否完整:
```
[Load Video] ───────────────────────┬───────────────────────────────────────────┐
│ │ │
↓ ↓ │
[Select Images] [Sam2VideoSegmentationAddPoints] │
│ (index=0) ↑ │
│ [(Down)Load SAM2Model] │
│ ↑ │
│ [coordinates_positive] │
↓ │ │
[Sam2Segmentation] ←───────────────┘ (可选:单帧预览测试) │
│ │
↓ ↓
[Preview Image] [Sam2VideoSegmentation]
┌─────────────────────────────────────────────────────────────────────────┘
├──→ [MaskToImage] ──→ [Preview Image]
└──→ [Save Image] / [VHS_VideoCombine]
纠正分支(可选,默认关闭):
[Sam2VideoSegmentationAddPoints(第0帧)] ──→ [Fix_AddPoints(第N帧)] ──→ [Sam2VideoSegmentation]
[coordinates_positive(修正坐标)]
[Fast Muter / Bypass (控制开关)]
[Text Prompt] ──→ [Florence2 / Grounding DINO] ──→ [Florence2 Coordinates]
──→ [Sam2Segmentation / Sam2VideoSegmentationAddPoints]
```
---
## 运行前检查清单
- [ ] SAM2 模型文件已下载到 `ComfyUI/models/sam2/` 目录
- [ ] Florence-2 / Grounding DINO 模型已下载(如使用语义提示)
- [ ] `Load Video` 已选择有效视频路径
- [ ] `Select Images``index=0` 正确提取了第一帧
- [ ] `coordinates_positive` 的坐标格式与节点要求一致(归一化 0~1 或像素坐标
- [ ] `Sam2VideoSegmentationAddPoints``image` 接入的是**完整视频批次**,而非单帧
- [ ] `Sam2VideoSegmentationAddPoints``frame_index` 指向了正确的标注帧
- [ ] `Fast Muter` / 修正节点 Bypass 状态符合预期(首次运行应为关闭)
- [ ] 输出节点的保存路径可写
- [ ] SAM2 模型已下载到 `ComfyUI/models/sam2/``sam2.1_hiera_base_plus.safetensors`
- [ ] `VHS_LoadVideo` 的视频路径有效
- [ ] `Select Images``indexes` = `0`
- [ ] `PointsEditor` 已生成至少一个 `positive_coords`(点击图像)
- [ ] `Sam2Segmentation``image` 接入的是**视频批次**(来自 `VHS_LoadVideo`
- [ ] `VHS_VideoCombine``frame_rate` 与抽帧间隔匹配
---
## 常见问题速查
## 常见问题
| 问题 | 排查方向 |
|------|---------|
| 节点呈红色/无法创建 | 节点包未安装或加载失败,检查 ComfyUI 启动日志 |
| SAM2 节点报错显存不足 | `sam2.1_hiera_tiny.safetensors`,或降低视频分辨率,或启用 fp16 |
| 追踪结果全黑/全白 | 检查 `coordinates_positive` 是否正确传入检查坐标格式0~1 vs 像素);确认 `frame_index` 与标注帧一致 |
| Florence-2 / Grounding DINO 无检测结果 | 降低 `threshold`,或简化 prompt如只写 `"person"` |
| 修正后重新追踪无变化 | 确认修正节点已取消 Bypass / Fast Muter 已启用;确认修正节点的 `prev_inference_state` 正确接入上游 |
| 视频输出帧率不对 | 在 `Load Video``VideoCombine` 中统一设置 fps 参数 |
---
## 下一步建议
1. **先跑通单帧分割**:不连视频追踪链路,只用 `Sam2Segmentation` + `Preview Image` 确认第一帧分割正确
2. **再接入视频追踪**:确认单帧无误后,再连 `Sam2VideoSegmentationAddPoints` + `Sam2VideoSegmentation`
3. **最后添加纠正分支**:等标准流程跑通后再加入 RGThree Fast Muter 机制
4. **保存工作流模板**`Workflow``Save`(或 Ctrl+S命名为 `VideoSeg_Template.json`
|:---|:---|
| `PointsEditor` 点击无反应 | 确保 `bg_image` 已连接且有图像输出;检查节点是否支持当前浏览器 |
| 分割结果全黑/全白 | 检查 `coordinates_positive` 是否传入;确认坐标在图像范围内 |
| 后续帧分割漂移 | **正常现象**(当前是逐帧独立分割,非追踪)。解决:扩展接入 `Sam2VideoSegmentation` |
| 显存不足 | `DownloadAndLoadSAM2Model``precision` 改为 `fp16`,或降低视频分辨率 |
| 视频合成帧率不对 | 确保 `select_every_nth``VideoCombine``frame_rate` 匹配 |