本篇将引导了解 AI 绘图中,局部重绘的概念,并在 ComfyUI 中完成局部重绘工作流生成,我们将接触以下内容:

  • 使用局部重绘工作流完成画面的修改
  • 了解并使用 ComfyUI 中遮罩编辑器
  • 了解相关节点 VAE Encoder (for Inpainting)

关于局部重绘

在 AI 图像生成过程中,我们常会遇到生成的画面整体较为满意,但是画面中存在一些不希望出现或者错误的元素,但是重新生成可能会生成另外一张完全不同的图片,所以这时候利用局部重绘来修复这部分的元素就非常有必要了。

这就像让 画家(AI 绘图模型) 画了一幅画,但是总是会有稍微有 局部区域需要调整,我们需要向画家说明需要调整的区域(遮罩),然后让画家会根据我们的要求进行 重新绘制(重绘)

局部重绘的场景包括:

  • 瑕疵修复: 消除照片中多余物体、错误的AI生成的画面的肢体等
  • 细节优化: 精准调整局部元素(如修改服装纹理、调整面部表情)
  • 等其它场景

ComfyUI 局部重绘工作流示例讲解

模型及相关素材准备

1. 模型安装

下载下面的模型文件,并保存到ComfyUI/models/checkpoints目录下

2. 局部重绘素材

请下载下面的图片,我们将在这个示例中使用这个图片作为输入使用

这张照片已经包含了 alpha 透明通道,所以并不需要你手动绘制蒙版,在本篇教程也会涉及如何使用遮罩编辑器来绘制蒙版的部分,我们会引导你一步步来完成整个局部重绘的过程

3. 局部重绘工作流

下面这张图的 metadata 包含的对应的json工作流,请将其下载后 拖入 ComfyUI 界面或者使用菜单 工作流(Workflow) —> 打开工作流(Open,快捷键 Ctrl + O) 来加载这个局部重绘工作流

ComfyUI 局部重绘工作流示例讲解

请参照图片序号对照下面的提示完下操作:

  1. 请确保已经加载了你所下载使用的模型
  2. 请在在 Load Image 节点中加载局部重绘的素材
  3. 点击 Queue 按钮,或者使用快捷键 Ctrl + Enter(回车) 来执行图片生成

此外我们在这里可以对比一下,下图是使用v1-5-pruned-emaonly-fp16.safetensors 模型来进行 inpainting 的结果。

你会发现 512-inpainting-ema.safetensors 模型生成的结果局部重绘的效果更好过渡更自然。 这因为这个模型是专为 inpainting 设计的模型,它可以帮助我们更好地控制生成区域,从而获得更好的局部重绘效果。

记得我们一直用的比喻吗?不同的模型就像能力不同的画家一样,但每个画家都有自己能力的上限,选择合适的模型可以让你的生成效果更好。

你可以进行下面的尝试来让画面达到你想要的效果:

  1. 修改正向 、负向提示词,使用更具体的描述
  2. 尝试多次运行,让 KSampler 使用不同的种子,从而带来不同的生成效果
  3. 在了解本篇遮罩编辑器使用的部分后,对于生成的结果再次进行重绘以获得满意的结果。

接下来我们将简单了解如何使用 遮罩编辑器(Mask Editor) ,因为之前提供的输入图片中是已经包含了alpha透明通道(也就是我们希望在绘图过程中进行编辑的区域),所以并不需要你手动绘制,但在日常使用中我们会更经常使用 遮罩编辑器(Mask Editor) 来绘制 蒙版(Mask)

使用遮罩编辑器(Mask Editor) 绘制蒙版

首先在上一步工作流中的Save Image 节点上右键,你可以在右键菜单中看到复制(Clipspace) 选项,点击后会复制当前图片到剪贴板

然后在 加载图像(Load Image) 节点上右键,你可以在右键菜单中看到Paste(Clipspace) 选项,点击后会从剪贴板中粘贴图片

然后在 加载图像(Load Image) 节点上右键,你可以在右键菜单中看到在遮罩编辑器中打开(Open in MaskEditor) 选项,点击后会打开遮罩编辑器

  1. 你可以右侧编辑相关参数,比如调整画笔大小、透明度等等
  2. 绘制错误区域可以使用橡皮檫来擦除
  3. 绘制完成后点击 Save 按钮保存蒙版

这样绘制完成的内容就会作为 遮罩(Mask) 输入到 VAE Encoder (for Inpainting) 节点中一起进行编码

然后试着调整提示词,再次进行生成,直到你可以完成满意的生成结果。

局部重绘制相关节点

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

输入类型

参数名称作用
pixels需要编码到潜空间的输入图像。
vae用于将图片从像素空间编码到潜在空间的 VAE 模型。
mask图片遮罩,用来具体指明哪个区域需要进行修改。
grow_mask_by在原有的遮罩基础上,向外扩展的像素值,保证在遮罩区域外围有一定的过度区域,避免重绘区域与原图存在生硬的过渡。

输出类型

参数名称作用
latent经过 VAE 编码后的潜空间图像。