vault backup: 2026-04-24 10:37:55

This commit is contained in:
2026-04-24 10:37:55 +08:00
parent a25c1985b7
commit 9b4f89fe45
3 changed files with 268 additions and 165 deletions

View File

@@ -17,7 +17,7 @@ tags:
| 节点包 | 作用 |
|-------|------|
| `ComfyUI-VideoHelperSuite` | 视频加载、帧提取、视频合成 |
| `ComfyUI-SAM2`(推荐 kijai 版) | SAM2 模型加载、图像/视频预测 |
| `ComfyUI-segment-anything-2` | SAM2 模型加载、图像/视频分割与追踪 |
| `ComfyUI-Impact-Pack` | Grounding DINO 语义检测 |
| `rgthree-comfy` | Fast Muter / Bypass 节点 |
@@ -52,47 +52,49 @@ tags:
### 第 3 步SAM2 模型加载器
- 搜索:`SAM2``SAM2 Model Loader`
- 搜索:`SAM2``(Down)Load SAM2Model`
- 拖到画布**中上方**,作为公共模型源
- 参数设置:
- `model_name`: `sam2_hiera_base_plus.pt`
- `model`: `sam2.1_hiera_base_plus.safetensors`
- `segmentor`: 根据用途选择(单图或视频)
- `device`: `cuda`
- `precision`: `fp16`(省显存)
### 第 4 步:创建提示节点(建议三种都建
### 第 4 步:单帧分割测试Sam2Segmentation
| 节点路径 | 参数示例 | 用途 |
|---------|---------|------|
| `SAM2``SAM2 Point Prompt` | `points=[[0.5,0.5]]`, `labels=[1]` | 点选目标1=正选0=反选) |
| `SAM2``SAM2 Box Prompt` | `box=[0.3,0.3,0.7,0.8]` | 框选目标 |
| `Impact``Grounding DINO` → 连到 Box Prompt | `prompt="a person"` | 语义提示转检测框 |
> 连线方式:从节点的**圆形输出端**拖拽到另一个节点的**圆形输入端**。
### 第 5 步:单帧分割测试
- 搜索:`SAM2``SAM2 Image Predictor`
- 搜索:`SAM2``Sam2Segmentation`
- 连接:
- `Get Image From Batch(0)` `image`
- `SAM2 Model Loader``sam2_model`
- `Point Prompt` / `Box Prompt``prompt`
- 再加一个 `image``Preview Image`,连到 Image Predictor 的输出
- `Select Images`(第一帧)`image`
- `(Down)Load SAM2Model``sam2_model`
- `coordinates_positive`: 填入正选点坐标(如 `[[0.45, 0.52]]`
- `coordinates_negative`: 填入反选点坐标(可选)
- `bboxes`: 如使用检测框则填入,否则留空
- 再加一个 `image``Preview Image`,连到 `Sam2Segmentation``mask` 输出
- **点击右上角「运行」**,先确认第一帧分割正确
### 第 6 步:视频追踪
### 第 5 步:视频追踪核心链路
- 搜索:`SAM2``SAM2 Video Predictor`
**5.1 Sam2VideoSegmentationAddPoints注入提示**
- 搜索:`SAM2``Sam2VideoSegmentationAddPoints`
- 连接:
- `SAM2 Model Loader``sam2_model`
- `Load Video` 的完整 `IMAGE`(批次,不是单帧)→ `images``video_frames`
- `SAM2 Image Predictor``mask``initial_mask`
- 设置 `frame_index = 0`
- `(Down)Load SAM2Model``sam2_model`
- `Load Video` 的完整图像批次 → `image`
- `coordinates_positive`: 第一帧的正选点坐标
- `coordinates_negative`: 反选点坐标(可选)
- 参数:
- `frame_index`: `0`(在第 0 帧添加标注)
- `object_index`: `0`(单目标默认)
- `prev_inference_state`: 首次追踪时留空
### 第 7 步:追踪输出
**5.2 Sam2VideoSegmentation执行追踪**
- 搜索:`SAM2``Sam2VideoSegmentation`
- 连接:
- `(Down)Load SAM2Model``sam2_model`
- `Sam2VideoSegmentationAddPoints``inference_state``inference_state`
- 参数:`keep_model_loaded` 推荐开启
- 输出:`mask`(完整视频的分割结果)
- 若 SAM2 包有 `SAM2 Track Forward/Backward`,将 Video Predictor 的 `state` 连入
- 若 Video Predictor 直接输出 `mask_sequence`,跳过此步
### 第 8 步:可视化与保存
### 第 6 步:可视化与保存
| 节点 | 路径 | 用途 |
|------|------|------|
@@ -101,23 +103,28 @@ tags:
| `Save Image` | `image``Save Image` | 保存 mask 序列 |
| `VHS_VideoCombine` | `video``VHS_VideoCombine` | 合成带遮罩的视频 |
### 第 9人工纠正分支RGThree Fast Muter
### 第 7人工纠正分支RGThree Fast Muter
- 搜索:`rgthree``Fast Muter`
- 在主线旁创建第二条「修正流」:
1. 再建一个 `Get Image From Batch``index` 填问题帧号(如 45
2. 再建一`SAM2 Point Prompt`,填修正坐标
3. 再建一个 `SAM2 Image Predictor`(修正版)
4. 修正 Image Predictor 的 `mask`**`Fast Muter`** → `SAM2 Video Predictor``correction_mask`(或额外提示输入)
- **默认点击 Fast Muter 使其变红**(关闭,不参与运算
- 需要修正时,**点击变绿**(启用),修改帧号和坐标,重新运行
- **核心思路**:利用 `Sam2VideoSegmentationAddPoints``prev_inference_state` 链式追加修正,默认通过 Fast Muter / Bypass 跳过修正节点
- 具体搭建:
1. 新建第二`Sam2VideoSegmentationAddPoints`,命名为 "Fix_AddPoints"
2. `prev_inference_state` 接入主链路第一个 AddPoints 的 `inference_state`
3. `image`: 接入 `Load Video` 的完整批次
4. `frame_index`: 问题帧号(如 `45`
5. `coordinates_positive`: 修正后的点坐标
6. 该节点的 `inference_state``Sam2VideoSegmentation`
7. 对该修正节点使用 **Bypass** 或在其坐标输入前加 **`Fast Muter`**,默认关闭
- **默认状态**:修正节点被跳过(红色/关闭),不参与运算
- **需要修正时**:取消 Bypass / Fast Muter 变绿(启用),修改帧号和坐标,重新运行
### 第 10 步:总连线检查
### 第 8 步:总连线检查
确保以下点:
- Video Predictor 吃的是**完整视频**,不是单帧
- Image Predictor第一帧只吃了 `index=0` 的单
- Fast Muter 当前状态符合预期
确保以下点:
- `Sam2VideoSegmentationAddPoints``image` 接入的是**完整视频批次**,不是单帧
- `Sam2VideoSegmentationAddPoints``frame_index` 指向了正确的标注
- `Sam2Segmentation`(单帧预览)只吃了 `index=0` 的单帧
- Fast Muter / 修正节点 Bypass 状态符合预期
---
@@ -125,9 +132,9 @@ tags:
不要一次性连完所有节点再运行!按以下顺序验证:
1. **只连第 1~5**(到 Preview Image→ 运行 → 确认第一帧分割正确
2. **接入第 6~8**Video Predictor + 输出)→ 运行 → 确认整段视频能跑通
3. **最后加第 9**Fast Muter 修正分支)→ 测试一次纠正流程
1. **只连第 1~4**(到 Preview Image→ 运行 → 确认第一帧分割正确
2. **接入第 5~6**VideoSegmentationAddPoints + VideoSegmentation + 输出)→ 运行 → 确认整段视频能跑通
3. **最后加第 7**Fast Muter 修正分支)→ 测试一次纠正流程
---
@@ -135,18 +142,18 @@ tags:
```
首次运行:
Fast Muter = 红色(关闭
Fix_AddPoints 被 Bypass / Fast Muter 关闭
→ 点击「运行」→ 检查 Preview Image
发现第 N 帧错了:
1. 修改修正 Frame Picker 的 index = N
2. 修改修正 Point Prompt 的坐标
3. Fast Muter = 绿色(打开)
1. 修改 "Fix_AddPoints" 的 frame_index = N
2. 修改 "Fix_AddPoints" 的 coordinates_positive 为正确坐标
3. 取消 Bypass / Fast Muter = 绿色(打开)
4. 再次点击「运行」
5. 系统从第 N 帧重新追踪
5. 系统以第 0 帧 + 第 N 帧为锚点,综合追踪整个视频
修好了:
Fast Muter = 红色(关闭)
恢复 Bypass / Fast Muter = 红色(关闭)
→ 保存最终工作流模板
```
@@ -157,8 +164,8 @@ tags:
| 问题 | 排查方向 |
|------|---------|
| 节点呈红色/无法创建 | 节点包未安装或加载失败,检查 ComfyUI 启动日志 |
| SAM2 节点报错显存不足 | 换 `sam2_hiera_tiny.pt`,或降低视频分辨率,或启用 fp16 |
| 追踪结果全黑/全白 | 检查 `initial_mask` 是否正确传入检查坐标格式0~1 vs 像素) |
| Grounding DINO 无检测结果 | 降低 `threshold`,或简化 prompt如只写 `"person"` |
| 修正后重新追踪无变化 | 确认 `Fast Muter` 已启用(绿色),且修正 mask 正确连入 Video Predictor |
| 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 参数 |