SDXL 宽高比
SDXL NPU 模型支持在生成时使用任意宽高比,无需为每个分辨率单独准备模型文件。
实现原理
SDXL UNet 的输入始终固定为 1024×1024 —— 同一份二进制处理所有宽高比。为了产出非正方形图像,应用采用了一种 inpaint 风格的巧妙方式:
- 在 1024×1024 的潜空间画布中,把目标输出区域放置在居中的矩形位置。
- 每个去噪步骤中,矩形之外的区域被遮罩,模型仅在目标区域内更新像素。
- 采样完成后,从中心矩形中裁出对应区域作为最终图像。
效果是模型"以为"自己在生成 1024×1024 图像,但去噪计算被限制在居中的目标矩形内,从而生成出符合所选宽高比的干净图像。
尺寸规则
- 长边始终为 1024。
- 短边按所选宽高比等比计算,再向上取整到 8 的倍数 —— 模型只接受 8 的倍数作为尺寸。
例如:3:2 宽高比 → 1024 × 2/3 ≈ 682.67,向上取整为 1024×688;9:16 宽高比 → 正好 576×1024。
性能
因为底层计算图始终在 1024×1024 上执行:
- 生成时间与所选宽高比无关,完全相同。
- 没有"更小分辨率更快"这种捷径 —— 选择窄长或宽扁画布既不会加速,也不会减速。
与 SD1.5 的对比
SD1.5 采取的是另一种思路:每个分辨率(512×768、768×512、768×1024、1024×768 …)都是独立的补丁模型,切换画布尺寸时需要切换模型。详见 SD1.5 NPU 高分辨率。
| SD1.5 NPU | SDXL NPU | |
|---|---|---|
| 每个分辨率独立模型 | 是(每个尺寸一份) | 否(单一 1024×1024 模型) |
| 切换画布尺寸 | 需要重新加载不同补丁 | 即时切换,无需重新加载 |
| 生成时间随画布变化 | 随分辨率变化 | 恒定不变 |
注意事项
- 宽高比选项仅对 SDXL NPU 模型生效。SD1.5 NPU 仍使用每分辨率补丁的方式。
- 极端宽高比会使 1024×1024 画布内的可用区域变小,在很窄或很宽的比例下可能影响构图质量。