「想要高清,把宽度改成 2048 不就行了」——这么做的结果通常是一个人有两颗头,或者画面里重复出现同一扇窗。原因不玄学:模型只在训练分辨率附近见过画面。
为什么会重复
扩散模型是在固定分辨率下训练的:SD 1.5 系接近 512×512,SDXL 接近 1024×1024。在这个尺寸附近,卷积的感受野和画面的空间尺度是匹配的。
当你把宽度拉成两倍,模型看到的潜在画布变大了,但它学到的「一个头应该占多少像素」没变。于是它会在新的空间里继续按老尺度排布结构——填不满就再排一个。多头、多手、重复的窗户,都是这么来的。
所以「直接拉高分辨率」不是放大,是让模型在一个它不熟悉的画布上重新构图。
正确路径:先出图,再放大
标准流程分两步:
- 在训练分辨率附近生成(512 或 1024),得到构图正确的底图。
- 走放大流程,把这张底图放大,同时补细节。
放大又分两条技术路线,差别很大。
路线一:潜空间放大(Hires Fix)
做法是把潜空间张量本身放大,再做一次低强度去噪。
生成 512×768 底图
→ 潜空间插值放大到 1024×1536
→ 以 denoise 0.4–0.55 再采样一次
关键参数是第二次采样的 denoise:
| denoise | 效果 |
|---|---|
| 0.2–0.3 | 几乎只是插值,细节变化很小,放大感明显 |
| 0.4–0.5 | 补细节的甜点区,纹理变实但构图不变 |
| 0.6+ | 开始改内容,可能出现新的结构 |
潜空间放大的优点是自然、结构一致。缺点是细节上限有限——它是在已有信息上做插值,不会凭空长出真实的纹理。
路线二:像素空间放大(放大模型)
先把潜空间解码成像素图,再用专门的放大模型(如 4x-UltraSharp、ESRGAN 系列)在像素层面放大,最后可选地做一次低强度重绘来软化放大痕迹。
优点是细节锐利、纹理真实感强。缺点是计算慢、文件大,而且放大模型会放大瑕疵——底图里的噪点和错误边缘会被一起放大。
所以路线的顺序很重要:底图有瑕疵时先修,再放大。别指望放大能修问题。
两条路线怎么选
| 潜空间放大 | 像素放大 | |
|---|---|---|
| 细节真实度 | 中 | 高 |
| 结构一致性 | 高 | 中(可能改细节) |
| 速度 | 慢(要重新采样) | 快(一次前向) |
| 适合 | 需要保构图的成品 | 需要输出大图、印刷级细节 |
实际生产里常用组合:潜空间放大到 2 倍 → 像素放大到 2 倍 → 得到约 4 倍尺寸。中间那次重绘负责补结构,最后那次放大负责锐度。
放大倍数与目标尺寸
| 目标用途 | 建议成品尺寸 | 建议路径 |
|---|---|---|
| 网页配图 | 1280 宽以内 | 直接按 1024 生成,无需放大 |
| 高清壁纸 | 1920×1080 | 1024 生成 → 潜空间 2 倍 |
| 4K 壁纸 | 3840×2160 | 1024 → 潜空间 2 倍 → 像素 2 倍 |
| 打印(A4 300dpi) | 约 3508×2480 | 同上,注意保留 PPI 元数据 |
超过 4096 之后,收益递减很明显,而且文件体积会失控。除非要印刷,一般到 4K 就够。
宽高比的坑
SD 1.5 常用的宽高比是 512×512、512×768、768×512。用极端比例——比如 512×1024(1:2)——也会触发重复结构,因为模型在训练时很少见到这种比例。
建议比例控制在 1:1 到 3:4 / 4:3 之间。要更长的画幅,先按常规比例生成,再用裁剪或外扩(outpaint)扩展。
分段放大:超大图的稳妥办法
需要 6K 以上的图时,一次性放大往往崩。做法是切块:
- 用 Tile 类 ControlNet 或分块放大节点,把图切成有重叠的区块。
- 每块单独放大,块与块之间保留 64–128 像素重叠区。
- 重叠区做羽化融合,避免接缝。
这个流程慢,但它是唯一能在超大尺寸下保持细节一致的方式。商业出图里很常见。
一句话总结
分辨率要贴着模型的训练尺度走,想要更大的图靠「放大」而不是「拉宽高」。放大前先修瑕疵,放大后别再加高 denoise,否则前面所有控制都会失效。
评论 0