Skip to main content
本篇将引导了解 AI 绘图中,局部重绘的概念,并在 ComfyUI 中完成局部重绘工作流生成,我们将接触以下内容:
  • 使用局部重绘工作流完成画面的修改
  • 了解并使用 ComfyUI 中遮罩编辑器
  • 了解相关节点 VAE Encoder (for Inpainting)

关于局部重绘

在 AI 图像生成过程中,我们常会遇到生成的画面整体较为满意,但是画面中存在一些不希望出现或者错误的元素,但是重新生成可能会生成另外一张完全不同的图片,所以这时候利用局部重绘来修复这部分的元素就非常有必要了。 这就像让 画家(AI 绘图模型) 画了一幅画,但是总是会有稍微有 局部区域需要调整,我们需要向画家说明需要调整的区域(遮罩),然后让画家会根据我们的要求进行 重新绘制(重绘)。 局部重绘的场景包括:
  • 瑕疵修复: 消除照片中多余物体、错误的AI生成的画面的肢体等
  • 细节优化: 精准调整局部元素(如修改服装纹理、调整面部表情)
  • 等其它场景

ComfyUI Inpainting 工作流示例

模型与资源准备

1. 模型安装

下载 512-inpainting-ema.safetensors 文件,并将其放入你的 ComfyUI/models/checkpoints 文件夹:

2. Inpainting 素材

请下载下面的图像,我们将其用作输入: ComfyUI Inpainting 输入图像
这张图像已经包含了 alpha 透明度通道(透明遮罩),因此你不需要手动绘制遮罩。本教程也会介绍如何使用遮罩编辑器来绘制遮罩。

3. Inpainting 工作流

下载下面的图像并将其拖入 ComfyUI 以加载工作流: ComfyUI Inpainting 工作流
元数据中包含工作流 JSON 的图像可以直接拖入 ComfyUI,或使用菜单 工作流 -> 打开(Ctrl+O) 来加载。

ComfyUI Inpainting 工作流示例讲解

请按照下图中的步骤操作,以确保工作流正确运行。 ComfyUI Inpainting 工作流
  1. 确保 Load Checkpoint 加载的是 512-inpainting-ema.safetensors
  2. 将输入图像上传到 Load Image 节点
  3. 点击 Queue 或使用 Ctrl + Enter 来生成
作为对比,以下是使用 v1-5-pruned-emaonly-fp16.safetensors 模型得到的结果: SD1.5 Inpainting 结果 你会发现,512-inpainting-ema.safetensors 模型生成的结果具有更好的 inpainting 效果和更自然的过渡。 这是因为该模型是专门为 inpainting 设计的,它帮助我们更好地控制生成区域,从而改善 inpainting 效果。 还记得我们一直使用的比喻吗?不同的模型就像能力各异的画家,但每位画家都有自己的上限。选择合适的模型可以帮助你获得更好的生成结果。 你可以尝试以下方法以获得更好的结果:
  1. 修改正向和负向提示词,使用更具体的描述
  2. 在 KSampler 中使用不同的种子多次运行,以获得不同的生成结果
  3. 在了解本教程中关于遮罩编辑器的内容后,你可以对已生成的结果重新进行 inpainting,直到获得满意的效果。
接下来,我们将学习如何使用遮罩编辑器(Mask Editor)。尽管我们的输入图像已经包含了 alpha 透明度通道(即我们想要编辑的区域),不需要手动绘制遮罩,但在实际应用中,你通常会使用遮罩编辑器来创建遮罩。

使用遮罩编辑器

首先右键点击 Save Image 节点,然后选择 Copy(Clipspace): 复制图像到剪贴板 然后右键点击 Load Image 节点,并选择 Paste(Clipspace): 粘贴图像 再次右键点击 Load Image 节点,并选择 Open in MaskEditor: 打开遮罩编辑器 遮罩编辑器演示
  1. 在右侧面板调整画笔参数
  2. 使用橡皮擦修正错误
  3. 完成后点击 Save
绘制的内容将作为遮罩输入到 VAE Encoder(用于 Inpainting)节点中进行编码 然后尝试调整提示词并再次生成,直到获得满意的结果。

局部重绘制相关节点

通过文生图、图生图 和本篇的工作流对比,我想你应该可以看到这几个工作流主要的差异都在于 VAE 部分这部分的条件输入, 在这个工作流中我们使用到的是 VAE 内部编码器 节点,这个节点是专门用于局部重绘的节点,它可以帮助我们更好地控制生成区域,从而获得更好的生成效果。 VAE Encoder (for Inpainting) 节点 输入类型 输出类型