模型实际在做什么
一次扩图先把你的图放到一张更大的画布上。空出来的区域变成遮罩,模型的任务是把这块遮罩填成和它能看到的像素相符的样子。原图部分不会被重新生成,边缘那几十像素是模型判断「框外有什么」的全部依据。
这一点几乎解释了扩图的所有行为。如果你照片的边缘上有半扇门,你会得到一扇门;如果边缘上有一个肩膀,你大概率会得到一整个人,因为肩膀是模型能拿到的最强线索,它会把认出来的模式补完。不同工具把这个功能叫 generative fill、uncrop 或者 AI 扩图,底层都是同一步「加画布 + 填遮罩」。
一次该扩多少
单次扩 25% 到 40%。分三次每次扩 30%,效果明显好过一次扩 100%,而且每一步都是一个可以否决的检查点,错误不会累积到最后才发现。
除了步长,还有两个习惯同样重要:
- 留真实的重叠区。 遮罩应该从原图内部往里退几十像素开始,让模型有余量去过渡,而不是硬拼。多数工具把这个参数叫羽化或遮罩模糊。羽化宽一点能藏住接缝;宽过头就会把你想保留的细节一起重画。
- 盯住像素预算。 一张 1024 宽的输出摊到两倍宽的画布上,主体身上的细节就只剩一半。先扩图,最后再放大。
值得认清的几种翻车
- 主体被复制。 新区域里多出一个人、一棵树、一扇窗。原因是主体贴边。解法:缩小单次扩展量、起始裁切让主体离边远些、加反向提示词。
- 地平线接不上。 新补的天和地和原图对不齐。原因是一条窄边几乎不携带透视信息。解法:一侧一侧地扩,并在提示词里说清地平线在什么高度。
- 光打反了。 新区域的光来自错误方向。解法:直接在提示词里写明光从哪来,模型不会靠一条阴影可靠地推断出来。
- 纹理复制。 草地、砖墙、虚化光斑出现肉眼可见的重复贴图。解法:换种子重跑。这一项改措辞基本没用。
扩图的提示词怎么写
描述整张成品,而不只是新加的那部分。条件是全局作用的,一条只提新区域的提示词,会和模型已经看到的像素互相打架,出来的画面自己跟自己矛盾。
然后把你要的画幅说出来。扩图几乎总是为了改画幅,所以要交代新增的那两条边里应该有什么:空墙、更多天空、又一扇门,或者什么都没有。明确写出「什么都没有」,往往正是阻止模型凭空造出一群人的那句话。