【ComfyUI学习笔记04】案例学习:局部重绘 - 上

发布于:2025-07-30 ⋅ 阅读:(14) ⋅ 点赞:(0)

前言

大多时候,我们会对AI生成的图片感到整体的满意,但觉得其中的一些细节尚需修改,这要怎么做呢?

本节讲述了ComfyUI中实现对图片进行局部重绘的2个工作流及其核心节点 VAE Encode for Inpainting 应用讲解,并涉及对蒙版的基本认识和编辑操作,下一节将额外补充蒙版 Mask 的相关知识和编辑方式。

本系列博客不涉及过多底层原理,若有纰漏,万望海涵

【往期传送门】

ComfyUI学习笔记01:下载安装 | 运行第一个工作流 | 学习思路
ComfyUI学习笔记02:工作区的整理与注释办法 | 2个节点包推荐
ComfyUI学习笔记03:案例学习:图片放大的3个基本工作流

局部重绘的通识介绍

一句话概括,局部重绘 inpainting 是利用蒙版 Mask 来有针对性地修改画面内容做法的统称。根据官方手册对 Image Upscaling1 的介绍:

这就像让一位艺术家(AI模型)绘制一幅画,但我们对具体细节仍不满意。我们需要告诉艺术家需要调整的区域(遮罩),然后让其根据我们的要求重新绘制(填充)。

局部重绘是 图生图Img2Img 的一种重要应用,常用于图片的局部修改,或者固定主体后进行画风调整。

在WebUI中,局部重绘被称译作蒙版模式,对蒙版区域的处理主要有填充、原版,潜空间噪声和空白潜空间4种:

  • 填充 Fill:一般情况下会得到一个“色块”,它的色彩数值来自蒙版区域周围的像素颜色和纹理

  • 原版 Original:保留蒙版区域原始图像的内容,然后将这些内容连同新的提示词一起扔进潜空间进行重绘。注意!它不是从零开始画,而是读取原图的数据作为底图 + 新图的描述进行生成

  • 潜空间噪声 Latent Noise:无视蒙版区域的任何原始信息,直接在潜空间的对应区域填满纯粹的、随机的噪声;

  • 空白潜空间 Empty Latent:用一个中性的、零值的“空”信号来填充潜空间区域,等待下一步的信息输入
    四种生成方式的对比

上图来自:Beginner’s guide to inpainting (step-by-step examples)2

面向直接应用的需要,ComfyUI中为一般用户提供了“原版”和“空白潜空间”这两种模式,分别对应了两个重绘的关键电池——Set Latent Noise MaskVAE Encode (for inpainting),我们将在后面的案例中上手体会。

在今天的案例中,我们将通过局部重绘功能实现以下的效果:
本期任务

由于疏忽,准备资料的时候忘了保存原始数据了,接下来的案例出图与上图将有点小差异

蒙版 Mask的基本认识

不妨将我们想象成一位医生,需要对患者的病灶进行精准手术,为了屏蔽非手术区域对我们的干扰,我们会在病灶处搭上一块“布”,即“铺巾”,布面上留出的孔洞就是我们要操作的部位。在上述的情境中,那块“布”其实就是我们图片重绘中的蒙版,不同的是,医生用的是绿色的,我们用的是黑色的

在ComfyUI中,蒙版以黑白表示是否被修改,白色表示待修改,黑色表示不修改,灰色则控制修改的强弱。

对图片添加蒙版的方式主要有两种:

  • 手动绘制:在ComfyUI中,右键Load Image的图片,在弹出的菜单下方找到 Open in MaskEditor 进入蒙版编辑页面在这里插入图片描述在这里插入图片描述
  • 提前绘制导入:常用,下篇讲。

VAE Encode for Inpainting 工作流

VAE Encode for Inpainting基础工作流

如图展示的是使用“VAE Encode for Inpainting”进行局部重绘的最基础工作流,由3块组成——导入,重绘和生成。

工作流解读

  • 导入模型、图片、VAE:这是工作流的准备阶段,导入要修改的图片,自备的蒙版等,模型 CheckPoint 将决定重绘时的画风,Load VAE 是可选项,亦可以通过Load Checkpoint节点中的vae进行后续连线,但由于ComfyUI的vae是默认的SD XL,1等版本使用的vae,可能与当前的checkpoint结合起来并不是最优的,所以:
    • 【建议】查看 模型 Checkpoint 的作者手册中对此是否有额外的推荐;,在作者没有特别对Checkpoint搭配的VAE有推荐时,可以加载通用 VAE :vaeFtMse840000EmaPruned_vaeFtMse840k3.
  • 图片生成:CLIP Text Encode(Prompt)主要用于添加重绘部分的提示词,Ksampler进行采样,然后经过Vae Decode,Preview Image进行图片查看
    • 【建议】正面提示词的建构一般是:“重绘部分”的内容+模型激活词、调用词(有使用Lora时)
  • 局部重绘:此处仅为最基础的工作流,因此,直接入了本案例关键的VAE Encode for Inpainting
    • 局部重绘部分进阶还会加入对蒙版的处理,主要是导入,扩展/收缩选取,羽化边缘

关键节点

  • VAE Encode for Inpainting

    • pixels 像素图输入: 用于接入图片信息,并经过vae,与Mask一同被转化成Latent信息
    • vae:略
    • mask:较常用节点 VAE Encode 多出来的接口,用于专门接收蒙版 Mask信息
    • grow_mask_by: 向外扩充蒙版的待修改区域(白区),值越高,向外扩充的像素就越多,被修改区域就越大grow_mask_by
  • KSampler:重绘实际上就是对选定区域重新采样,因此在接口和参数的设置上会有以下一下变动和考量:

    • model:即大模型 Checkpoint,此处接入的模型将会直接影响重绘的画风,在对人物的二次元化、三次元化、背景的替换中尤为重要
      • 具体可以去C站上进行画风的挑选,【!!留意部分Checkpoint是有指定“唤醒词”的,需要添加进CLIP Text Encode中】
    • positive / negative:接入提示词 Prompts,这里的正向 positive 提示词只用写重绘部分即可,不用再将原来的prompt复制过去
      • 再次提醒,如果调用的Checkpoint,Lora需要“唤醒词”,请及时加上
    • latent_image: 接入VAE Encode for Inpainting即可
    • Step:优先根据调用的Checkpoint的推荐值进行设定,但由于是局部重绘,在电脑配置不足的时候,可以稍微调低 5 - 10
    • cfg:优先根据调用的Checkpoint的推荐值进行设定
    • 采样器:优先根据调用的Checkpoint的推荐值进行设定
    • denoise:在使用 VAE Encode for Inpainting 时,值不能太低,0.8调整的基准,可以上下浮动0.2进行调整;

    案例演示

此处是案例原图,需要请自取案例原图案例最终呈现在这里插入图片描述
案例基本参数:(请将以下内容复制到空白ComfyUI中打开)

{
   
   
  "id": "b8009e0e-6d6c-4708-9148-aa17c260e600",
  "revision": 0,
  "last_node_id": 19,
  "last_link_id": 21,
  "nodes": [
    {
   
   
      "id": 18,
      "type": "VAEDecode",
      "pos": [
        1850,
        220
      ],
      "size": [
        140,
        46
      ],
      "flags": {
   
   },
      "order": 7,
      "mode": 0,
      "inputs": [
        {
   
   
          "name": "samples",
          "type": "LATENT",
          "link": 12
        },
        {
   
   
          "name": "vae",
          "type": "VAE",
          "link": 21
        }
      ],
      "outputs": [
        {
   
   
          "name": "IMAGE",
          "type": "IMAGE",
          "links": [
            13
          ]
        }
      ],
      "properties": {
   
   
        "cnr_id": "comfy-core",
        "ver": "0.3.44",
        "Node name for S&R": "VAEDecode"
      },
      "widgets_values": []
    },
    {
   
   
      "id": 13,
      "type": "VAELoader",
      "pos": [
        737.1824340820312,
        721.64794921875
      ],
      "size": [
        270,
        58
      ],
      "flags": {
   
   },
      "order": 0,
      "mode": 0,
      "inputs": []

网站公告

今日签到

点亮在社区的每一天
去签到