扩图(Outpainting):AI 怎么猜画面之外有什么?它猜对和猜错的原因

我最早用 AI 扩图时,犯了一个很蠢的错误

我以为 AI 扩图就像 Photoshop 的内容识别填充——把边缘像素复制粘贴,再用模糊算法糊弄过去。于是我把一张半身照扔进 DALL·E 2,想让它补全下半身。结果它给我生成了一个穿着完全不同的裤子,手里还多了一杯咖啡。我当时觉得这 AI 是不是疯了。后来我才想通:它不是在“填充”,它是在“重新想象”。

AI technology illustration

扩图不是缝补,是“画面之外的画面”

Outpainting,也叫图像外扩,跟 Inpainting(图像修复)正好相反。Inpainting 是补画面上的洞,Outpainting 是猜画面外的世界。但骨子里,它们用的技术几乎一样——都是基于扩散模型的条件生成。

扩散模型的工作方式,说人话就是:给一张纯噪声图,然后模型一步步去噪,同时根据你的提示词(比如“日落海滩”)和已知区域来引导生成。已知区域是“锚点”,模型必须在保证锚点不变的前提下,编造出锚点之外的像素。

具体到 Outpainting,你会给模型一张原始图像,以及一个更大的画布。原始图像被放在画布中间或某个位置,画布其余部分是空白(实际是纯噪声)。扩散过程开始后,模型每步去噪时,会强制把原始图像区域覆盖回去,从而保证最终输出中,原图内容不变,新区域跟原图自然衔接。Hugging Face Diffusers 文档里描述得很清楚。

猜对的时候:AI 比你更懂构图

AI 能猜对,根本原因在于训练数据里包含了大量视觉世界的“物理规则”和“语义关联”。比如,一张照片上半部分是蓝天,下半部分是海水,模型学过无数类似的场景,它知道海面应该延伸到画框外,天边会有地平线。当你给它一张站在沙滩上的人像,它会自动补全沙滩、海浪、远处的帆船,甚至根据光线方向加上合理的阴影。

这就像你只看到半张脸,但你知道另一半应该对称,除非这个人有严重伤残。AI 的“常识”也是从几亿张图片里学来的。OpenAI 在介绍 DALL·E 2 的 Outpainting 时,特别强调了它“保持全局一致性”的能力,比如能根据一幅油画《戴珍珠耳环的少女》的局部,补全出厨房背景。OpenAI DALL·E 2 博客

猜错的时候:AI 的想象力有时是胆小鬼,有时是疯子

但 Outpainting 翻车的情况也极其常见,主要分三类:

  • 语义断裂:原图里一个苹果,扩出去变成了一头大象,因为模型在苹果的“附近”概率分布里,突然出现了大象,可能因为训练数据里苹果旁边经常有大象(比如马戏团照片)。没有足够上下文时,模型会“赌”一个最常见的关联,但赌错了。
  • 模糊嫁接:原图边缘是清晰的草叶,扩出去后变成一团绿糊糊。这是因为模型在低频区域(平滑区域)容易生成,但在高频细节(纹理)上不敢冒险,于是用模糊来“和稀泥”。
  • 边界撕裂:原图边缘有一条明显的线,像被撕开一样。这是因为扩散模型在去噪时,原图区域和生成区域没有完美融合,导致颜色或亮度跳变。很多早期 Outpainting 方法,比如论文 Boundless,就专门研究如何消除这种 seam。

我自己最常遇到的是第二种:给一张猫的照片扩图,猫的毛在边缘逐渐变成水墨画,最终变成一团色块。这让我意识到,AI 其实是在“猜分布”,而不是“推理物理”。

Inpainting vs Outpainting:一张表说清区别

维度 Inpainting Outpainting
任务 填补画面内部缺失区域 扩展画面外部未知区域
已知信息 四周都有已知像素,约束强 只有一侧或部分已知,约束弱
难度 较低,因为周围像素提供足够线索 较高,需要生成全新且合理的内容
典型应用 去水印、物体移除 改变画幅、创造全景图

用代码试一次 outpainting,你就懂了

from diffusers import StableDiffusionInpaintPipeline
pipe = StableDiffusionInpaintPipeline.from_pretrained("runwayml/stable-diffusion-inpainting")
# 原图尺寸 512x512,我们要扩展到 512x768
# 创建 mask:原图区域为黑色(不修改),新区域为白色(需要生成)
mask = ... # 一个 512x768 的 mask,下方 512x512 为 0,上方 256x512 为 1
image = pipe(prompt="a cat sitting on a sofa", image=original_image, mask_image=mask).images[0]

这里的核心是 mask 和 prompt 的配合。mask 告诉模型哪里不能动,prompt 告诉模型该生成什么。如果 prompt 跟原图不一致,模型就会精神分裂。

几个常见误解

误解 1:Outpainting 只是把边缘像素向外推

不是。扩散模型完全重新生成整个画面,只不过在生成过程中强制原图区域不变。它更像一个画家看着一张照片,然后凭空想象画框外的世界。

误解 2:只要 prompt 写得好,就能完美扩图

prompt 只是引导,模型的世界知识才是地基。如果原图是某种罕见的物体,模型没见过,prompt 再详细也没用。比如你给一张克苏鲁风格的雕塑,模型可能扩出乱七八糟的触手,因为训练数据里没有足够的“克苏鲁”概念。

误解 3:Outpainting 可以无限扩展

理论上可以反复迭代,但每次扩展都会积累误差。就像传话游戏,到后来画面会越来越离谱。实际应用中,超过 2-3 次扩展后,质量会急剧下降。

能力边界:什么时候该用,什么时候该放弃

如果你需要扩展一张产品图,让背景变成纯色天空,那没问题。但如果你想给蒙娜丽莎补全下半身,我劝你省省,AI 会给她穿上莫名其妙的衣服,还会把手臂接错位置。这不是技术问题,是训练数据里根本没有“蒙娜丽莎全身像”这个答案。

说到底,Outpainting 是概率的延伸,不是逻辑的推理。它猜对的,都是你也能猜对的;它猜错的,恰恰是人类独有的“未知感”——AI 从不知道“我不知道”。

原创文章,作者:guanweilu,如若转载,请注明出处:https://guanweilu.cn/article/138.html

(0)
上一篇 2026年8月16日 上午12:11
下一篇 2026年8月16日 上午12:15

相关推荐