ComfyUI 的 Hires Fix 效果不稳定,通常不是模型不够好,而是放大和细化被错误地塞进了同一个采样阶段。低分辨率采样器负责构图与明暗关系,高分辨率阶段则要处理纹理和边缘,两个阶段的目标不同,采样参数也不能共用。把链路拆开,才能在放大后保留结构,同时补出清晰但不生硬的细节。

Hires Fix 的核心机制:潜空间放大与二次采样
ComfyUI 中的 Hires Fix 依赖的是 Stable Diffusion 的潜空间表示。图像在 VAE 编码后进入潜空间,分辨率会缩小为原来的八分之一左右。如果在低分辨率潜像上直接用 KSampler 生成,再解码成小图,得到的构图通常没有问题,但细节密度不足。
常见的错误做法是直接把 KSampler 的 latent 尺寸调大,再跑一次完整采样。这样做模型可能在同一张画面中生成多个主体,或者出现肢体重复、面部错乱,因为扩散模型在高分辨率下难以维持全局一致性。分阶段放大就是为了绕过这个问题:先让小分辨率采样确定结构,再对潜像做放大,并用较低的重绘幅度做第二次采样。第二次采样只补充细节,不重新打乱构图。
Latent Upscale 节点可以在这个阶段直接放大潜像,比先解码到像素、再放大、再编码回潜空间更省显存,也能减少颜色偏差。配合 nearest-exact 或 bilinear 插值,可以在放大后保持相对稳定的潜像分布。后续第二次 KSampler 的 denoise 一般控制在 0.3 到 0.5 之间,过大会破坏原始构图,过小则细节补充不足。
两段式放大工作流搭建与关键参数
典型的两段式链路如下:Load Checkpoint 加载底模,先用一个 KSampler 以较低分辨率生成初始潜像,然后接 Latent Upscale 将潜像放大到目标尺寸,再用第二个 KSampler 做低幅度重绘,最后经过 VAEDecode 输出像素图。如果还需要进一步放大,可以在像素级接入 Upscale Model 和 Image Scale,但高频细节建议在这一步已经基本完成。
下面是一个简化的工作流节点配置,使用 JSON 表示。节点连接遵循 ComfyUI 的 links 规则,其中 widgets_values 分别对应节点参数。
{
"nodes": [
{
"id": 1,
"type": "Load Checkpoint",
"widgets_values": ["sd_xl_base_1.0.safetensors"]
},
{
"id": 2,
"type": "KSampler",
"widgets_values": [12345, "randomize", 20, 7.5, "euler", "normal", 1.0]
},
{
"id": 3,
"type": "Latent Upscale",
"widgets_values": ["nearest-exact", 1024, 1024, "disabled"]
},
{
"id": 4,
"type": "KSampler",
"widgets_values": [67890, "fixed", 15, 5.0, "dpmpp_2m", "karras", 0.45]
},
{
"id": 5,
"type": "VAEDecode",
"widgets_values": []
}
],
"links": [
[1, 0, 2, 0],
[2, 0, 3, 0],
[3, 0, 4, 0],
[4, 0, 5, 0]
]
}
注意第二段 KSampler 的 denoise 设为 0.45,适合 1.5 到 2 倍左右的潜像放大。如果放大倍率超过 2 倍,建议把 denoise 提到 0.5 到 0.6,但不要超过 0.65,否则容易在生成人物时出现五官漂移。步数可以根据底模调整,第二段采样不建议低于 12 步,否则容易出现噪点和颜色断层。
对于 SDXL 模型,第一阶段输出尺寸通常设置在 768 到 1024 之间,第二阶段直接放大到 1536 或 2048。显存不足时可以在 Latent Upscale 之后接一个 VAEEncode 转回像素空间,再使用切片放大节点,但这样会额外引入一次 VAE 编解码,可能造成轻微的细节损失。
细节细化阶段的控制与避坑
第二阶段采样虽然能补出细节,但在人脸、手部和复杂纹理区域仍然可能出现崩坏。原因在于重绘幅度增大时,模型会倾向于重新发明内容,而不是基于已有潜像做细化。对于人物图,可以在第二阶段 KSampler 的前后接入 ControlNet Tile 或 ADetailer,用来锁定结构。ControlNet Tile 会把图像切成小块,让模型只做局部增强,避免整体构图变化。
颜色漂移是 Hires Fix 工作流中另一个常见问题。由于潜像放大和重绘后还需要经过 VAE 解码,如果放大倍率较大,潜像分布会偏离原始训练分布,导致画面整体偏灰或偏红。解决办法包括在第二阶段使用 karras 或 exponential 调度器,并在采样器参数中稍微降低 CFG,通常从第一阶段的 7.5 降到 5.0 左右。CFG 过高会放大潜像中的伪影,让细节显得生硬。
如果生成的是复杂场景,建议把两段式工作流扩展为三步:第一段低分辨率构图,第二段中等尺寸重绘,第三段像素级放大加轻量去噪。第三段可以使用 Upscale Model 搭配 Image Scale,然后通过一个很小的 denoise 进行像素空间重绘。这样做虽然会增加时间,但能明显改善高频纹理的自然度。
实际效果对比与推荐参数范围
为了更直观地判断分阶段放大是否生效,可以对比同一张初始图像在直接高分辨率采样、单次 Hires Fix 和两段式 Hires Fix 下的差异。直接高分辨率采样容易出现重复背景元素,单次 Hires Fix 容易在边缘出现重影,而两段式方案在保持主体结构的同时,纹理更细,噪点更少。
| 放大倍率 | 第二阶段 denoise | 建议步数 | 适用场景 |
|---|---|---|---|
| 1.2 - 1.5 | 0.3 - 0.4 | 12 - 18 | 轻度放大,细节增强 |
| 1.5 - 2.0 | 0.4 - 0.5 | 15 - 22 | 人像与复杂场景 |
| 2.0 - 3.0 | 0.5 - 0.6 | 18 - 25 | 高倍率放大,需配合 ControlNet |
表中的 denoise 范围不是绝对标准,需要根据底模和提示词强度微调。对于写实类底模,denoise 尽量取低值;对于二次元或插画类底模,可以适当提高,因为模型对结构漂移的容忍度更高。
分阶段放大的核心价值在于把构图的确定与细节的生成解耦。理解了这一点之后,即使不依赖现成模板,也能根据不同模型和显卡条件,组合出适合自己的 Hires Fix 链路。最终目标是让放大后的图像看起来像是原生高分辨率生成,而不是低分辨率图的简单插值结果。
ComfyUI Hires Fix分阶段放大细节细化修改时间:2026-09-30 02:49:45