图像修复(inpainting)通过掩码指定缺失区,只在掩码内重新加噪去噪,从而补洞不伤背景;图像扩展(outpainting)把画向外推再续画;对象移除/替换则是对掩码的同一套手术做不同应用。本节给出三步手术与三个场景的取舍。
一张老照片撕了个角,或一张合影的路人想让他消失,这样的"小手术"如果交给普通画师,得小心翼翼不碰背景。扩散模型怎么做?答案把它拆成三步手术:先用掩码告诉模型"哪里是我的手术区",再让模型假装手术区已经糊成一团噪声,最后只在这片掩码内重建,其余像素原样保留。手术区的"重建"沿用扩散去噪的里子,而"只动掩码"则保证背景永远安安静静。
掩码(mask)是一张和原图同尺寸的图,值要么 0(保留)要么 1(要重画)。模型拿到原图、掩码和一条提示词,就自动知道哪些像素必须是原来的、哪些像素可以随便补。这么做的意义很朴素:把"不能变的"锁死,把"可以变的"交给随机种子与先验,二者互不干扰。这也是 inpainting、outpainting、对象移除三类任务共同的地基。
流程上,inpainting 把掩码区域的像素整个替换成噪声起步,再用去噪网络在这个"半图半噪"里逐步找回合理内容。工程要点是 denoise 强度与提示词的配合要"贴着洞来":提示词描述洞里应该有什么,比如"补一堵纹理接近的红砖墙",模型就会照着纹理和光影把洞填平,接缝处的过渡由去噪平滑掉。
难点常在边界:填得好的洞,边界过渡自然、光影一致、并没有"拼缝感"。要达成这个效果,模型通常借助"卷积层里对掩码区域与已知区都有条件的注意力",让新生成的洞内容主动参考周围纹理。这也是为什么好一点的 inpainting 工具会给你一个可调的 feathered mask(柔化边缘),让过渡更顺。
把"只对掩码动刀"这件事画成手术图解,你立刻能看出哪些像素被锁死、哪些被放开:

这三张卡片分别对应"划界、置噪、重建",核心纪律是一条——掩码以外的像素全程只读。正因为这套排他性约束,修复才可能做到"补了洞却看不出动过刀"。
inpainting、outpainting、对象移除都来自同一把手术钳,差别只在"手术区画在哪、提示词写什么"。一张简表划清边界:
| 任务 | 手术区 | 提示词要什么 | 典型用途 |
|---|---|---|---|
| inpainting 补洞 | 图中缺失/破损处 | 洞里应该有的东西 | 老照片修复、去水印 |
| outpainting 扩展 | 画框外一圈新区域 | 延续原风格的内容 | 横幅、海报延展 |
| 移除对象 | 目标对象所在区域 | 自然背景 | 去掉抢镜路人 |
同一套机制、三种写法,记住"掩码划区 + 区外不动 + 区内重建"这一句话就能统一理解。剩下的全靠你在具体图上把掩码和提示词调到位。这里再补一个工程提醒:无论哪种手术,掩码边界的柔化都直接决定成品是否"露馅"。边缘硬得像刀切,交界处就会留一圈生硬的色差;做一两个像素的高斯柔边,交接的色差会被弥散掉,观感立刻从"p上去的"变成"本来就长这样"。
outpainting 是 inpainting 的镜像:不是补洞,而是把画布向外扩大,再让模型把扩出来的部分"想象"出来连成一体。它要求模型既能延续原文的风格与地平线,又不能让新内容跟旧内容明显断层。做法常是在新扩区域主动加噪重绘、旧区保持,只是这时"手术区"换成了那圈新画布。适合做横幅、海报需要向左右延展的场景。
把三类任务放一张手术台上的分工理一下:
对象移除(如去掉一个抢镜的路人)是 inpainting 的日常化应用:把要移除的对象框进掩码,提示词写"自然背景",模型就在掩码里重画出一片"本来就很自然"的背景。难点在于要知道"那背后原来该是什么"——如果那是一堵墙,墙的纹理得接得上;如果是草地,草的方向得要自然。高能量模型常能出色地虚构出合理的"背景本体",但也可能让人物轮廓边缘留下改写痕迹,需要低 denoise、稍高的提示词粒度来收尾。
对象替换则是同个套路的升级版:掩码里不放"自然背景",而放"一只狗"之类的替换目标,模型就把那块的狗换掉了。本质都是"掩码划区 + 区外不动 + 区内重建",只是内容的不同。
顺着调整讲下去,一个经常被忽略但极其影响成败的变量是分辨率与比例的对齐。模型训练时见过的大多是正方形画布,如果你把一张被拉成很扁的矩形图直接拿去补洞,模型会被迫在它不熟悉的长宽比上手把手拼图,接缝和比例失调的几率成倍上升。所以一个充分打磨的 inpainting 流程会先做"画布归一":把大致比例先调整到接近正方形或模型擅长的那一档,补好洞后再裁回目标尺寸——把"模型不擅长的地形"提前绕开,比在坏地形里硬补更省心。另一个同量级的习惯是固定好步数的一贯性:不同批次的修复任务尽量用同一套 denoise 与步数区间,否则同一张图前后两次修复的口径不一致,再造出来的细节密度会肉眼可见地跳来跳去。
⚠️ 常见坑:掩码画得太紧,导致洞口边缘暴露一条"补丁缝";记得给掩码柔边几像素。
💡 关键直觉:inpainting 的强大来自"只改该改的"——掩码是排他性的手术钳,越精准,越看不出你动过刀。
修修补补说完了,下一节上升一个档次——语义图像编辑,怎么让模型"改表情、换发型、把黄昏改写成朝雾",真正理解你要改的是哪个意思层面。