简介
在上一篇文章中,我们了解到自动遮罩是图像编辑工作流程中的一项关键技术,尤其是在为修复或合成等任务将前景主体与背景分离时。在本文中,我们将探讨如何结合 ComfyUI 使用 Segment Anything 模型(SAM 2)来自动完成遮罩过程。利用自定义节点和工作流程,你可以高效地定义遮罩、柔化边缘并替换背景。
目录
自动遮罩的关键组件
1. 安装所需的节点包和模型
要开始自动遮罩,你需要安装以下内容:
- 节点包:
使用 ComfyUI Manager 搜索并安装这些节点包。安装完成后,重启 ComfyUI。 - SAM 2 模型:
- 下载 sam2.1_hiera_base_plus-fp16 的模型。来源: Hugging Face。
- 将模型放在
ComfyUI/models/Sam2目录中。如果模型没有自动安装,请按照 Hugging Face 页面上提供的手动安装步骤操作。
2. 设置工作流程
安装所需的工具后,你可以创建一个自动遮罩工作流程。以下是分步指南:

加载图像
首先,使用 Load Image 节点将前景图像和背景图像加载到 ComfyUI 中。请确保已知图像分辨率,因为分割需要用到它。
获取图像分辨率
使用 Essentials Pack 中的 Get Image Size 节点提取已加载图像的宽度和高度。将 Load Image 节点的输出连接到 Get Image Size 节点。
定义分割坐标
要指定分割点:
- 添加 KJNodes 包中的
Points Editor节点。 - 将
Get Image Size节点的图像、宽度和高度输出连接到Points Editor。 - 右键单击
Points Editor节点并选择:- 将小部件转换为输入 (同时适用于宽度和高度)。
- 新建画布 ,创建一个空白画布。
加载 SAM 2 模型
- 添加
Download SAM 2 Model节点,并确保模型参数设置如下:- 模型:
sam2_hiera_base_plus - 设备:
cuda - 精度:
floating.16
- 模型:
- 将加载器节点的输出连接到
SAM 2 Segmentation节点。
创建分割遮罩
- 添加
SAM 2 Segmentation节点。 - 将
Points Editor节点的图像和坐标(正点和负点)连接到分割节点。 - 使用 Essentials Pack 中的
Mask Preview节点预览遮罩输出。

3. 提高遮罩质量
用模糊柔化边缘
要优化遮罩,请使用 KJNodes 包中的 Grow Mask with Blur 节点:
- 将
Grow Mask with Blur节点放置在SAM 2 Segmentation节点与Image Composite Mask节点之间。 - 调整以下参数:
- 模糊半径:设置为
2,以获得更平滑的边缘。 - 扩展值:设置为
2 pixels,以略微扩大遮罩。
- 模糊半径:设置为
- 使用
Mask Preview节点实时查看更改效果。
合成遮罩
将 Grow Mask with Blur 节点的输出连接到 Image Composite Mask 节点。这样可以在保持前景主体完整的同时替换背景。

4. 保存最终图像
对遮罩和背景替换感到满意后:
- 添加一个
Save Image Extended节点,将输出保存到磁盘。 - 确保
Queue Mode设置为Queue。 - 使用
Ctrl + B取消保存节点的旁路,并将工作流程排队以保存图像。

示例工作流程
下面是工作流程设置的一个示例:
1. Load Image Node → Get Image Size Node → Points Editor Node
2. Download SAM 2 Model Node → SAM 2 Segmentation Node → Mask Preview Node
3. Grow Mask with Blur Node → Image Composite Mask Node → Save Image Extended Node
提高遮罩精度
为确保遮罩精度最佳:
- 使用
Points Editor节点准确定义前景点和背景点。 - 在
Grow Mask with Blur节点中尝试不同的模糊值和扩展值,以平衡边缘柔和度与遮罩覆盖范围。