局部重绘与外扩:Inpainting / Outpainting

核心 约 20 分钟 inpaintingoutpainting掩码局部重绘核心原理
前置知识点(建议先学)
学习状态:

一句话定义

Inpainting 在掩码指定区域内重新生成内容、区域外保持原样;outpainting 是把画布向外扩、用同样的机制补全新增区域,两者共享「掩码约束下的条件去噪」这一原理。

为什么重要

它是修手指、换背景、扩画布等高频操作的机制层答案,也集中体现了扩散模型「局部性不好管」的特有难题——为什么会出现接缝、为什么掩码一大就变成整图重画、专用 inpainting 模型与「普通模型+掩码」差在哪。这些问题的答案全在「潜码混合」这个工程细节里。

前置知识

kp-012(img2img 的加噪-去噪框架);kp-003(潜码与像素的对应)。

核心概念

原理与机制

朴素做法(LDM 论文方案,无专用模型时可用):对参考图整图按 kp-012 加噪到 t₀,然后每步去噪后执行混合:

zt−1 ← (1 − m) ⊙ zreft−1 + m ⊙ zgent−1,  m 为掩码(潜码分辨率下)

掩码外永远跟随「参考图自己的加噪轨迹」,掩码内自由生成。这个混合是双刃剑:好处是区域外严格保真;代价是混合点在两个「原本不相识」的轨迹之间硬切换,接缝处上下文不连续,大掩码时更显突兀。专用 inpainting 模型的改进:把掩码与被掩码内容作为额外输入通道送进网络(SD1.5/SDXL 均有 inpainting 版本),训练时就学会「围着破洞补画、边缘自然衔接」,接缝质量显著更好。羽化则在掩码边缘给出过渡带,让「跟随」与「生成」在几像素内渐进换手,是零成本消除硬边的标准手段。outpainting 把原图视为「必须保持的掩码外区域」、新增画布为掩码内区域,机制完全同构;难点在生成区域只与半边上下文相邻,常需在提示词与分块策略上补偿。

公式与推导

本节公式即混合式(上)。值得推导的性质:掩码外区域因逐步被拉回参考轨迹,其等效「重绘幅度」为 0;掩码内区域等效幅度等于 img2img 的 s——inpainting = 掩码加权的 img2img。混合发生在潜码层(每步),而像素层混合(只在最后替换像素)会导致色彩统计不连续,是劣质实现的接缝来源。

图示

原图 z_ref + 掩码 m→每步:掩码内生成 / 掩码外拉回参考轨迹→混合轨迹 z₀→VAE 解码(羽化在像素侧柔化边缘)

直观类比

像修墙师傅补墙洞:不拆整面墙(掩码外原样),只把洞周围铲出斜坡(羽化),新灰浆(生成内容)与旧墙在斜坡上交接。普通模型补洞是「凭感觉抹平」,专用模型是「持证上岗、专门学过怎么把新料接进旧墙面」。

实例或案例

常见误区

自测题

  1. 写出潜码混合公式并解释羽化的作用。

答案要点:z ← (1−m)⊙z_ref + m⊙z_gen 每步执行;羽化让掩码边缘渐变换手,抑制硬接缝。

  1. 专用 inpainting 模型改了网络哪一处?

答案要点:输入通道扩为潜码 4 + 掩码 1 + 被掩码潜码 4 = 9 通道,训练即含掩码任务。

  1. 为什么超大掩码效果反而差?

答案要点:掩码内缺乏上下文锚定,生成退化为无约束重绘。

与其他知识点的关系

kp-014 的 ControlNet 提供另一种「控制区域内容」的思路(结构约束而非掩码替换);kp-025 收录接缝与羽化缺失的失败案例;kp-024 提到大图 inpainting 的分辨率分段实践。

延伸阅读

RePaint(CVPR 2022)给出无需专用模型的迭代混合方案,是「掩码混合」思想最清晰的学术表述;LDM 论文 4.3 节的 inpainting 实验。

相关知识点