一、四种任务的差异
denoise 控制改多少。二、img2img:denoise 的精确语义
第 4 章讲过 denoise,这里再补一个数学细节:denoise 决定"起点有多少噪声"。
所以:denoise 越低 → 原图保留越多 → 实际采样步数也越少。这是"改得少 = 跑得快"的物理原因。
三、ComfyUI 的 img2img 工作流
和文生图唯一的差别:LATENT 不是 Empty Latent Image,而是从 VAE Encode(原图) 来。
0.2-0.3:Hi-Res Fix 第二阶段、轻度美化;0.4-0.55:换风格但保构图;0.6-0.75:大改画风、换材质;0.8-0.95:基本重画,仅保留颜色和构图大致位置;1.0 = 文生图。
四、Inpaint(局部重绘)
Inpaint = "告诉模型只改这一块"。它需要两个额外输入:mask(黑白图,白色 = 要改的区域)和可选的 Inpaint 专用模型。
1. 工作流骨架
关键节点:VAE Encode (for Inpaint)——它把原图 + mask 一起编码,告诉 latent "这些区域要重生成"。
2. 两种 mask 来源
ComfyUI-Impact-Pack 或 ComfyUI-segment-anything-2:用自然语言指定要改的对象("hair", "face", "shirt"),自动生成 mask。批量换装/换发色神器。3. 普通 Checkpoint vs Inpaint 专用 Checkpoint
| 模型类型 | 文件特征 | 效果 |
|---|---|---|
| 普通 Checkpoint + Inpaint | 常规 SDXL 模型 | 能跑,但边缘融合一般,denoise 0.7+ 时边界可能"突兀" |
| Inpaint 专用 Checkpoint | 文件名含 inpaint | 训练时就教过"补洞",边界自然,mask 边缘过渡柔和 |
| Differential Diffusion | ComfyUI 节点技术 | 不用专门模型,用"差分去噪"让边缘更自然(下一节) |
4. Differential Diffusion(2024 新姿势)
传统 Inpaint 的问题:mask 内完全重画,mask 外完全不动——边缘硬切。Differential Diffusion 的思路:按 mask 的灰度值分层 denoise,白区 100% 重画,灰区 50%,黑区 0%,自然过渡。
工作流:
Load Image ──▶ VAE Encode ──▶ LATENT
│
▼
Load Checkpoint ──▶ DifferentialDiffusion(节点) ──▶ MODEL'
│
▼
带 mask 的 latent ──▶ KSampler(denoise=1.0)──▶ 结果
效果:即使换了衣服,领口和身体过渡自然,不像传统 Inpaint 那样"贴"上去
5. 经典场景
- 消除物体:mask 框住多余物体,prompt 写背景描述,denoise=1.0
- 换表情:mask 框脸部,prompt 加 "smiling" 或 "crying",denoise=0.7
- 修手部:mask 手部,prompt "detailed five fingers, perfect hands",denoise=0.85
- 换衣服:SAM 自动分割衣服区域,prompt 换服装描述,denoise=1.0
- 换背景:SAM 分割前景反转得到背景 mask,prompt 写新背景,denoise=0.9
五、Outpaint(扩图)
原理和 Inpaint 一样——只不过 mask 是"原图周围的 padding"。ComfyUI 有专门节点 Pad Image for Outpainting:
1. Load Image(原图 1024×1024)
2. Pad Image for Outpainting:
left=0, top=0, right=512, bottom=0, feathering=40
输出:1536×1024 的图(右边 512 是纯色)+ mask(右 512 白,左 1024 黑)
3. VAE Encode (for Inpaint)
4. KSampler(denoise=1.0)——让模型填那块 padding
5. prompt 写要延伸的内容:"extended landscape, mountains, wider view"
feathering(羽化)参数让边界渐变——设 40 表示边界 40 像素渐变,避免"生硬拼接感"。
模型会根据原图猜延伸内容——人像右侧 padding 可能生成一个诡异的第二个人。用 prompt 明确指定延伸内容(如 "solid wall background"),或者一次只扩一个方向,比一次扩四周更稳。
六、Hi-Res Fix:两阶段放大主流方案
为什么要 Hi-Res Fix?SDXL 原生 1024,直接出 2048 会构图崩坏("双头人"常见)。分两阶段:先 1024 出图,再放大到 2048 低 denoise 润色。
完整工作流
两种放大路线对比
| 路线 | 放大器 | 优点 | 缺点 |
|---|---|---|---|
| Latent 放大 | Upscale Latent By | 快、显存省 | 质量一般,纯线性插值 |
| 像素放大 + 回 latent | ESRGAN / 4x-UltraSharp / RealESRGAN-x4plus | 细节更丰富 | 多一步 VAE 编解码,慢 |
放到
ComfyUI/models/upscale_models/。主流:· 4x-UltraSharp:照片/现实风首选,锐利
· 4x-AnimeSharp / 4x-RealESRGAN-Anime:动漫专用,避免把线条放大成锯齿
· RealESRGAN_x4plus:通用平衡
· 4x_foolhardy_Remacri:平衡细节与真实感,后期润色常用
节点:
Upscale Image (using Model)。
denoise 的选择
第二阶段的 denoise 是 Hi-Res Fix 的灵魂参数:
- 0.3-0.4:保守派,只补细节,不改构图——安全但变化小
- 0.45-0.55:甜点——细节明显提升,构图不乱
- 0.6-0.7:大幅增加细节但可能改变面部/物体形态
- ≥ 0.8:几乎等于重画,"双头"风险回来
七、Ultimate SD Upscale(超高分辨率神器)
Hi-Res Fix 放大到 2-3 倍没问题,想放大到 4K/8K?Ultimate SD Upscale——把大图切成多个 tile,每个 tile 单独跑 img2img,最后拼回去。
原理
安装与节点
Manager 装 ComfyUI_UltimateSDUpscale,节点叫 Ultimate SD Upscale:
输入:
image: 原图
model, positive, negative: 正常的模型和 prompt
upscale_model: ESRGAN 模型(先放大 4×)
tile_width / tile_height: 1024(SDXL) 或 768(SD1.5)
mask_blur: 16(接缝羽化)
tile_padding: 32
seam_fix_mode: "Half Tile Offset Pass"(消接缝秘技)
denoise: 0.25-0.35(非常低)
steps: 18-25
关键:配合 ControlNet Tile
Ultimate SD Upscale 最佳拍档是 ControlNet Tile(第 7 章场景 5 的"未完待续"在这)——每个 tile 跑 img2img 时,用 CN Tile 确保生成内容严格贴合原 tile 结构,避免某个 tile "自由发挥"出错误的物体。
完整配方:
Load Image(1K 原图)
──▶ Upscale Image By(ESRGAN 4×,得到 4K 低质图)
──▶ Ultimate SD Upscale
│ model = Juggernaut XL
│ positive = 原 prompt + "ultra detailed, 8k"
│ 带 ControlNet Tile(strength=0.7)
│ denoise = 0.3
──▶ 4K 精细成品
① denoise 设太高(> 0.5):每个 tile 会"自由创作",可能在墙上画出眼睛、在天空加不存在的飞机。
② 不配 CN Tile:某些 tile 里"一半人脸 + 一半背景",模型只看局部容易把背景也识别成人脸。
③ tile 太小(512):接缝变多,拼合痕迹明显。SDXL 用 1024 tile。
八、Face Detailer:人脸专修神器
大图里人脸经常模糊——因为脸只占整图小比例,分辨率不够。FaceDetailer(在 ComfyUI-Impact-Pack 里)自动检测人脸,裁下来放大到 512-1024 单独 img2img,再贴回去。
配合:ADetailer(WebUI 生态移植)、Face Fix,效果类似。商用人像出图基本都要过这一步。
九、Flux Fill:Flux 原生的 Inpaint
Flux 的 Inpaint 玩法和 SDXL 略不同,BFL 专门发布了 Flux.1 Fill dev 模型——原生支持 Inpaint/Outpaint,质量比用普通 Flux + mask 高。
ComfyUI/models/unet/flux1-fill-dev.safetensors (~12GB)
工作流(区别):
Load Diffusion Model(flux1-fill-dev)
├─▶ InpaintModelConditioning(带原图+mask 的条件)
│ ├─ positive / negative
│ ├─ pixels(原图)
│ ├─ mask
──▶ KSampler
cfg=1, FluxGuidance=30(Fill 专用高 guidance)
steps=25-30
十、一个实战长工作流:商品图 4K 精修
需求:1024 的产品初稿 → 精修人脸/产品细节 → 放大到 4K 用于广告。
十一、反模式
- img2img denoise 1.0 + 轻微风格描述:等于文生图,原图白传。
- Inpaint denoise < 0.5:mask 区域改不动,只模糊化。Inpaint 大多要 0.8+。
- Outpaint 一次扩四周:模型难以同时合理补上下左右四个方向。一次扩一向。
- Hi-Res Fix 第二阶段 denoise=1.0:等于 2K 文生图,"双头人"概率回升。
- Ultimate Upscale 不配 CN Tile:tile 间"脑补"冲突,物体破碎。
- 放大后再 Face Detailer:4K 图的人脸还是"放大了的模糊",顺序要反:1K 先 Face Detailer 再放大。
- ESRGAN 模型放错目录:
models/upscale_models/,不是models/checkpoints/。 - Inpaint 忘了 feathering:Outpaint/Inpaint 边缘"刀切"痕迹,用户一眼识破 AI。
- 4K 整图跑 img2img:一般 VAE 会 OOM,且模型没训练过 4K 原生,质量反而差。必须用 tile 方案。
十二、本章小结
① 四种"图变图"任务:img2img 整体重绘、Inpaint 局部、Outpaint 扩画、Upscale 放大——核心区别是"改多少"和"改哪里"。
② Inpaint 的灵魂是
VAE Encode (for Inpaint) + mask,denoise 一般 0.8-1.0。Differential Diffusion 和 Inpaint 专用模型让边缘更自然。
③ Hi-Res Fix 是"1024 出图 → 1.5-2× 放大 → 低 denoise 二次采样"标准两阶段流程,denoise 0.45-0.55 是甜点。
④ Ultimate SD Upscale + ControlNet Tile 是 4K/8K 出图工业标准。tile 1024、denoise 0.3、seam fix 必开。
⑤ FaceDetailer 是商用人像最后一道工序,把脸单独拎出来精修再贴回去。