ComfyUI 修图实战:图生图、局部重绘与放大,从「能出图」到「能交付」
上一篇我们完成了文生图工作流:写提示词、搭 KSampler、调采样器参数,最终生成一张满意的图。但如果目标是接修图的活儿,你会发现一个现实问题——客户发来的不是提示词,而是一张已经存在的图片。他们要的不是「生成一张新的」,而是「把这张改好」。
会文生图只是第一步,真正能交付的是「改图」。图生图(Img2Img)、局部重绘(Inpaint)、放大(Upscale)这三个技能,构成了 AI 修图接单的核心组合,也是从「能出图」走向「能交付」的关键一步。本篇实测环境仍为 Mac mini M4(32G 统一内存)+ ComfyUI Desktop + SDXL 模型。
三技能总览:先分清定位
三者的分工可以用一张表说清:
| 技能 | 输入 | 改动范围 | 典型场景 |
|---|---|---|---|
| 图生图 Img2Img | 一张图 + 提示词 | 全图整体变化 | 改画风、换场景、调整体色调 |
| 局部重绘 Inpaint | 一张图 + 蒙版 | 只有蒙版区域变 | 去水印、修瑕疵、换衣服、去路人 |
| 放大 Upscale | 一张图 | 分辨率提升、细节增强 | 高清输出、印刷、电商大图 |
判断用哪个,只问一个问题:改动是「整张图」还是「某个区域」还是「只是不够清晰」。整图换风格用图生图;只动局部、其他必须原样保留,用局部重绘;客户要求 4K 输出或印刷尺寸,用放大。真实接单中三者几乎总是组合使用,后文会给出完整示例。
图生图(Img2Img):整体重绘的核心
原理
图生图把一张已有图片作为起点:图片先经 VAE Encode 转成 latent 噪声表示,再由 KSampler 从这个「半成品」出发重新采样。与文生图的区别只在输入端——文生图是从纯随机噪声开始,图生图是从你的原图开始。
denoise:图生图最重要的参数
KSampler 上的 denoise(降噪强度)决定采样从噪声的哪一层开始:值越低,保留原图越多;值越高,越接近从零生成。这个参数直接决定成图是「微调」还是「重画」,必须逐档理解:
- 0.3–0.4:微调档。构图、人物、物体全部保留,变化集中在色调、纹理、光感层面。适合统一照片色调、轻度质感优化。低于 0.3 时模型基本没有发挥空间,输出与原图差异极小。
- 0.5–0.7:重构档。构图大体保留,但细节会被重新解释:人脸特征可能变化、物体形状会重画。这是照片转插画、线稿化最常用的区间——要的就是「同一个构图,换一种画法」。
- 0.8 以上:重画档。只保留非常粗略的布局暗示,画面内容基本重新生成,提示词的影响力超过原图。适合以原图为灵感来源的完全重创作,不适合任何需要「保持原样」的交付场景。
为什么说 denoise 是图生图最重要的参数?因为客户需求最终都落在「保留多少原图」这个问题上。修图接单的失败案例,一大半是 denoise 给高了——客户要微调,你交付了一张面目全非的新图。
操作步骤
- 右键画布 Add Node → image → Load Image,加载一张本地图片。
- Load Image 的 IMAGE 输出连到 VAE Encode 的 pixels 输入(VAE 模型仍用 sd_xl_vae 或 checkpoint 自带的)。
- VAE Encode 的 LATENT 输出连到 KSampler 的 latent_image 输入,替换掉原来的 Empty Latent Image。
- 设置 denoise:按上面的档位选择。
- 其余连接(模型、提示词、VAE Decode)与文生图工作流完全一致,直接复用。
一个细节:图生图时 KSampler 的 steps 和 cfg 保持文生图的默认即可,denoise 才是主导变量。另外图生图对图片尺寸有要求,SDXL 最佳区间是 1024×1024 左右,原图尺寸偏离太远时先在外部工具里调整到合适比例。
典型应用
- 改画风:照片转插画、转水彩、转线稿,denoise 0.5–0.6,提示词写目标风格。
- 换场景:人物保留、背景氛围改变,denoise 0.6 左右,提示词描述新环境。
- 修整体色调:偏黄的老照片、色温不对的产品图,denoise 0.3–0.4 轻推。
局部重绘(Inpaint):精准修改的关键
原理
图生图改的是全图,但修图需求绝大多数是「只改这里,别处不许动」:去水印、修掉背景里的路人、把模特的衣服换个颜色。局部重绘通过蒙版(Mask)告诉模型:只有蒙版覆盖的区域参与采样,其余像素原封不动。
操作步骤
- Load Image 加载原图。
- 在 Load Image 节点上直接用鼠标涂抹要修改的区域,ComfyUI 会自动生成蒙版;也可以单独用 ImageAndMaskPreview 或 MaskEditor 检查蒙版范围。节点上 Open in MaskEditor 可以精确涂抹。
- IMAGE 和 MASK 输出连到 VAE Encode (for Inpainting) 的对应输入。注意这个节点与普通 VAE Encode 不同:它接收 pixels + mask 双输入,只在蒙版区域内编码。
- KSampler:latent_image 接 VAE Encode (for Inpainting) 的输出,denoise 设高一些,0.7–0.9。原因:蒙版区域是要「重新画」的内容,denoise 太低会导致新内容与周围不融合,出现明显的补丁感。
- 用 Image Composite Masked 把重绘结果贴回原图:destination 接原图 IMAGE,source 接 VAE Decode 输出,mask 接同一张蒙版。这样蒙版外的像素是原始图片,彻底避免二次采样对保留区域的意外损伤。
蒙版怎么画
蒙版不是涂得越精准越好,两个实践要点:
- 范围略大于目标:要修掉一个水印,蒙版边缘要超出水印边界 10–20 像素,否则边缘残留旧内容的像素痕迹。
- 边缘必须模糊:MaskEditor 里可以设置羽化(feather)。硬边缘蒙版会让重绘区域和原图之间出现一条肉眼可见的接缝;羽化后新内容与旧像素平滑过渡。这个细节是业余和专业的分水岭——客户未必说得出哪里不对,但能感觉到「修过的地方很假」。
典型应用
去水印、修皮肤瑕疵、移除背景杂物和路人、给模特换衣服、改产品颜色、修补照片破损区域。凡是「精确、局部、保留原样」的需求,都是 Inpaint 的主场。
放大(Upscale):高清输出的三种方法
生图通常在 1024×1024 完成,但交付时客户常要 2K、4K 甚至印刷尺寸。放大有三种路线。
方法一:模型放大
用预训练的放大模型做像素级超分:
- 下载放大模型(推荐 4x-UltraSharp,细节锐利、适合照片类;皮肤人像可用 4x-UltraSharp 或 4x_NMKD-Siax),放入
models/upscale_models/。 - Upscale Image (using Model) 节点:upscale_model 选 Load Upscale Model 加载的模型,image 接原图。
- 输出直接就是 4 倍分辨率的图。
优点是快、稳、内存占用低,一张 1024 图几秒完成;缺点是它只做「超分辨率重建」,不会新增语义细节。适合:图本身已经够好,只需要更大的尺寸。
方法二:放大 + 二次采样(Hires Fix 思路)
先模型放大,再送回 KSampler 补一轮细节:
- 方法一放大后的图接 Upscale Latent (or Image to Latent),经 VAE Encode 转回 latent。
- 再接一个 KSampler,denoise 设 0.4 左右,steps 可适当降低(20 步即可)。
- VAE Decode 输出。
这轮采样的作用是在高分辨率上重新「画」一遍细节:发丝、织物质感、瞳孔反光这类低分辨率下画不出来的内容会在二次采样中涌现。缺点是慢,且 denoise 超过 0.5 时画面内容可能漂移。适合:追求极致细节的成品输出。
方法三:Tiled Diffusion 分块放大
当目标尺寸很大(比如 4096 以上)时,整张图一次算完会爆内存。Tiled Diffusion(安装 ComfyUI-TiledDiffusion 插件,配合 Tiled VAE)把大图切成小块分别处理再拼接,单块显存/内存占用恒定,32G 的 Mac mini 也能跑大图放大。缺点是块与块的接缝处偶有不一致,需要用 overlap 参数(通常 64–128)缓解。适合:超大尺寸输出、内存紧张的场景。
选择建议:日常交付用方法一;重点作品用方法二;尺寸或内存吃紧用方法三。三者也可以串联:模型放大打底,二次采样补细节,最后按需分块。
组合实战:老照片修复工作流
用一个完整例子把三技能串起来。假设客户需求:修复一张 90 年代的破损老照片,输出可打印的尺寸。
第一步,放大打底。 老照片通常分辨率很低(几百像素),先用方法一的模型放大,把它抬到 1024 左右,让后续操作有足够的像素空间。这一趟主要是「把图变清楚」。
第二步,局部重绘去破损。 照片上的划痕、霉斑、折痕,用 Inpaint 逐块处理:用蒙版圈住破损区域,denoise 设 0.7–0.8,让模型用周围的皮肤、衣物纹理补全这块。一处一处来,比一次性圈大片区域更可控——圈得太大,模型可能画出与原人物不匹配的特征。
第三步,图生图统一色调。 老照片常有偏黄、褪色的问题,用图生图 denoise 设 0.3–0.4,提示词里写「restored photo, natural color」,轻推整体色调,让它回到自然的色彩。
第四步,放大输出。 处理完成后,再用放大输出到客户要的尺寸(比如 A4 打印的 300dpi 规格)。如果目标特别大,用方法三分块放大兜底。
这个流程也是实际接单的标准套路:先修(Inpaint 处理局部破损)→ 再调(Img2Img 统一观感)→ 最后输出(Upscale 定尺寸)。每一步都有明确的客户可见的改善,交付时也好向客户解释每一步做了什么。
避坑指南
denoise 过高导致面目全非。 图生图/重绘时 denoise 设得过高,客户要微调你却交付了重画的新图。原则:能低不高,先从小值试起,达到效果即可。
蒙版选错区域。 蒙版圈错了地方,改的不是客户要改的地方。重绘前一定要用 MaskEditor 预览蒙版范围,确认覆盖正确。
放大后细节糊或出现伪影。 模型放大本身不产生新细节,如果原图本身糊,放大了只会更糊。先确认原图质量;二次采样补细节时 denoise 别超过 0.5,否则容易出伪影和内容漂移。
内存不足。 放大到大尺寸或 batch 开大时被 killed。用分块放大(Tiled Diffusion)、关掉其他大应用、batch 保持 1。
Inpaint 与 ControlNet 的注意点。 局部重绘常配合 ControlNet(比如要严格保持原图的姿势、结构)。两者叠加时,ControlNet 的 strength 要适当降低(0.5–0.7),否则会抑制重绘区域按提示词重画,导致改不动。这个在第 5 篇会详细展开。
相关资源
- 放大模型:HuggingFace 搜
4x-UltraSharp、4x_NMKD-Siax_200k - Tiled Diffusion 插件:ComfyUI-TiledDiffusion(ComfyUI Manager 内可搜)
- ComfyUI 官方:https://github.com/comfyanonymous/ComfyUI
下一篇进入 ControlNet 实战——让 AI 严格按你画的来。姿态、线稿、深度三种控制方式实操,以及它和局部重绘怎么配合。这也是从「能改图」走向「能精准定制」的关键,很多商稿需求都卡在这一步。