
简介这份资源面向使用 ComfyUI 进行图像处理的用户尤其是需要借助 Supir 节点完成图像缩放与超分放大的进阶玩家和开发者。它提供了一份可直接导入的 JSON 工作流配置帮助解决手动搭建缩放节点链路繁琐、参数难以复现的问题适合已熟悉 ComfyUI 基础操作、希望快速复用成熟流程的中高级使用者。压缩包为 rar 格式内含 1 个 json 文件整体体积约 4KB文件类型单一但结构完整导入后即可还原对应节点与参数设置省去逐项调试的步骤。目前已有 96 人学习下载说明该配置在图像缩放场景中具备一定参考价值。读者可获得一份可直接加载的工作流模板用于对照理解 Supir 缩放节点的连接方式与参数组织逻辑并在此基础上按自身需求调整放大倍率与处理策略提升出图效率与结果稳定性。1. 从一张糊图到高清大图ComfyUI 里 Supir 图像缩放到底在做什么你手里有一张 512×512 的老照片或者 AI 生成的半成品图想放大到 4K 当壁纸直接拉尺寸得到的是糊成一团的马赛克。ComfyUI 里挂上 Supir 节点之后同一张图跑一遍人脸的五官轮廓、衣服的布料纹理、树叶的边缘都能被“猜”回来这就是 Supir 图像缩放和传统插值放大最本质的区别。Supir 全称 Scaling Up to Excellence是一个基于扩散模型的图像超分方案它不靠像素插值而是用扩散过程重新生成高频细节。ComfyUI 作为节点式工作流工具把 Supir 封装成可拼接的节点你不需要写推理脚本拖几个节点、连几条线、填几个参数就能跑。这篇文章面向两类人一类是刚装好 ComfyUI 秋叶整合包、想给自己的图做无损放大的新手另一类是已经用过 ESRGAN、4x-UltraSharp 这类传统放大模型发现细节还是不够、想换扩散超分路线的熟手。接下来我会把 Supir 在 ComfyUI 里的完整落地路径拆开包括模型怎么放、节点怎么连、参数怎么调、显存不够怎么救以及那些我踩过的坑。2. Supir 在 ComfyUI 里的运行原理与前置准备2.1 Supir 为什么比传统放大模型更能“猜”细节传统放大模型比如 Real-ESRGAN本质是在像素空间做卷积映射它学到的是“低分到高分”的固定映射关系遇到训练集里没见过的纹理就只会平滑过渡结果就是放大后边缘发虚、皮肤像塑料。Supir 走的是扩散模型路线它把低分图当作条件输入在潜空间里逐步去噪每一步都在根据文本提示和图像特征重新生成细节。这意味着 Supir 可以“想象”出合理的纹理比如砖墙的缝隙、毛衣的编织纹路而不是简单地把像素拉大。代价是推理速度慢、显存占用高一张 1024×1024 的图在 24G 显存上跑 50 步大概要 40 到 60 秒而 Real-ESRGAN 只要两三秒。所以 Supir 适合对画质有极致要求、不赶时间的场景比如修复老照片、放大 AI 生成的关键帧、给印刷物料做预处理。2.2 在 ComfyUI 里装 Supir 节点和模型文件如果你用的是秋叶 ComfyUI 整合包Manager 已经内置了直接搜 Supir 就能找到节点包。手动安装的话进入 ComfyUI 根目录用 git 拉取节点仓库然后装依赖。常见做法是cd ComfyUI/custom_nodes git clone https://github.com/kijai/ComfyUI-SUPIR.git cd ComfyUI-SUPIR pip install -r requirements.txt装完之后重启 ComfyUI在节点列表里搜 Supir 就能看到SupirModelLoader、SupirUpscaler这些节点。模型文件需要单独下载Supir 依赖两个东西一个是 Supir 自己的模型权重另一个是 SDXL 的基础模型作为底模。Supir 权重文件通常命名为SUPIR-v0Q.ckpt或SUPIR-v0F.ckptv0Q 偏质量、v0F 偏保真我一般用 v0Q。SDXL 底模可以用sd_xl_base_1.0.safetensors放在ComfyUI/models/checkpoints目录下。Supir 权重放在ComfyUI/models/supir目录没有这个目录就自己建一个。另外还需要一个 CLIP 文本编码器通常跟 SDXL 底模配套放在ComfyUI/models/clip下。注意Supir 节点包对 diffusers 和 transformers 的版本有要求如果启动时报cannot import name xxx from diffusers大概率是版本冲突。秋叶整合包用户建议在 Manager 里看依赖状态手动安装的用户可以尝试pip install diffusers0.25.0 transformers4.36.0这两个我验证过能跑通的版本。2.3 最小工作流从加载图片到保存放大结果在 ComfyUI 画布上一个能跑通的最小 Supir 工作流包含五个节点Load Image加载原图SupirModelLoader加载 Supir 权重和 SDXL 底模SupirUpscaler执行放大Save Image保存结果再加一个CLIPTextEncode给正向提示词。连线逻辑是Load Image 的 IMAGE 输出接到 SupirUpscaler 的 image 输入SupirModelLoader 的 model 输出接到 SupirUpscaler 的 supir_model 输入CLIPTextEncode 的 CONDITIONING 接到 SupirUpscaler 的 positive 输入。SupirUpscaler 的关键参数有scale放大倍数常用 2 或 4steps采样步数20 到 50 之间cfg_scale提示词引导强度一般 4 到 7seed随机种子固定种子可以复现结果。跑之前确认原图不要太大1024×1024 输入放大 4 倍就是 4096×4096显存不够会直接爆。第一次跑建议用 512×512 的图、scale 设 2、steps 设 20先验证流程通不通。3. Supir 图像缩放的关键参数怎么调3.1 scale、steps、cfg_scale 三个核心参数的取值逻辑scale决定放大倍数但它不是简单的尺寸乘法。Supir 内部会先把原图编码到潜空间然后按 scale 计算目标潜空间尺寸再逐步去噪生成。scale 设 4 意味着输出边长是输入的 4 倍面积是 16 倍显存占用也接近 16 倍。我一般建议分两步走先 scale 2 跑一遍保存结果再把结果作为输入再 scale 2最终得到 4 倍放大。这样每步的显存压力小而且中间结果可以检查哪一步出问题能及时停。steps控制去噪迭代次数步数越高细节越丰富但超过 50 步之后收益急剧下降我通常设 30 步作为质量和速度的平衡点。cfg_scale是提示词引导系数设太低比如 1 到 2模型自由发挥可能生成奇怪的纹理设太高比如 10 以上画面会过饱和、出现伪影。4 到 7 是比较稳的区间我习惯用 5.5。3.2 提示词和负面提示词在 Supir 里的实际作用很多人以为 Supir 不需要提示词其实正向提示词会显著影响生成细节的方向。比如你放大一张人像提示词写high quality, detailed skin, sharp eyes, 8k模型会更倾向于在皮肤和眼睛区域生成纹理如果写oil painting, brush strokes输出会带油画质感。负面提示词同样有效blurry, low quality, jpeg artifacts, oversmooth能抑制过度平滑。但要注意Supir 的提示词引导是在潜空间里做的效果不像 SD 文生图那么强烈所以不要指望靠提示词完全改变画面内容。我的习惯是正向提示词只写画质相关的词不写具体物体描述避免模型“脑补”出原图没有的东西。负面提示词固定写blurry, low quality, worst quality, jpeg artifacts, oversmooth, plastic skin这套组合在我大部分场景下都管用。3.3 用 Tiled 分块和 FP8 精度把显存压下来显存不够是 Supir 最常见的翻车点。一张 1024×1024 的图 scale 4、steps 30在 12G 显存的卡上基本必爆。解决办法有两个开 Tiled 分块和用 FP8 精度。Tiled 模式把大图切成小块分别放大再拼回去tile_size设 512 或 768tile_overlap设 32 到 64 像素避免拼接缝。FP8 精度把模型权重从 FP16 降到 FP8显存占用大概能降 40%画质损失很小肉眼几乎看不出区别。在SupirModelLoader节点里勾选use_fp8就行。如果还爆把steps降到 15、scale降到 2先出结果再迭代。另外ComfyUI 启动参数加--lowvram或--medvram也能缓解但会拖慢速度。我自己的 12G 卡跑 1024 输入 scale 2、steps 20、开 FP8 和 Tiled峰值显存大概 9.5G能稳定跑完。# 这是一个在 ComfyUI 外部用 Python 调用 Supir 推理的示例 # 适合批量处理图片不依赖 ComfyUI 界面 import torch from PIL import Image from supir_utils import load_supir_model, supir_upscale # 加载模型指定 FP8 精度和 Tiled 模式 model load_supir_model( supir_ckptSUPIR-v0Q.ckpt, sdxl_ckptsd_xl_base_1.0.safetensors, use_fp8True, # 开启 FP8 降低显存 tile_size512, # 分块大小 tile_overlap48 # 块间重叠像素 ) # 读取原图 img Image.open(input.jpg).convert(RGB) # 执行放大scale2 表示放大两倍 result supir_upscale( modelmodel, imageimg, scale2, steps25, cfg_scale5.5, positive_prompthigh quality, detailed, sharp, negative_promptblurry, low quality, oversmooth, seed42 ) result.save(output_2x.png)上面这段代码展示了 Supir 推理的核心参数在脚本层面怎么传。use_fp8和tile_size是显存控制的关键scale、steps、cfg_scale跟 ComfyUI 节点里的含义完全一致。如果你在 ComfyUI 里跑通了想批量处理一个文件夹的图片可以把这段脚本改成循环读取。注意supir_utils是我自己封装的工具函数实际使用时你需要根据 Supir 节点包里的 API 来调整导入路径和函数名不同版本的节点包接口可能有差异。4. Supir 图像缩放的避坑与排查4.1 启动报错找不到 Supir 模型或 CLIP 编码器现象ComfyUI 启动后加载 Supir 节点控制台报FileNotFoundError: SUPIR-v0Q.ckpt not found或者CLIP model not found。原因通常是模型文件放错目录或者文件名跟节点期望的不一致。Supir 节点默认在ComfyUI/models/supir下找权重在ComfyUI/models/clip下找 CLIP。解决方法是确认目录结构ComfyUI/models/supir/SUPIR-v0Q.ckpt和ComfyUI/models/clip/clip_l.safetensors。如果文件名不对要么重命名要么在SupirModelLoader节点里手动指定路径。另外SDXL 底模要放在ComfyUI/models/checkpoints节点会自动扫描这个目录。4.2 跑图过程中显存溢出直接崩掉现象进度条走到一半控制台报CUDA out of memoryComfyUI 进程直接退出。原因前面说过Supir 的显存占用跟输出尺寸的平方成正比。解决步骤第一把scale从 4 降到 2第二在SupirModelLoader里勾选use_fp8第三在SupirUpscaler里开启tiled模式tile_size设 512第四把steps从 30 降到 15 到 20第五如果还不行启动 ComfyUI 时加--lowvram。这五步按顺序试一般到第三步就能跑通。我遇到过一张 2048×2048 的输入图scale 2、steps 20、开 FP8 和 Tiled 之后峰值显存 11.2G12G 卡刚好卡住后来把输入先缩到 1024 再跑就稳了。4.3 放大后出现拼接缝或色块现象开了 Tiled 模式之后输出图上有明显的网格状接缝或者某些块的颜色跟周围不一致。原因是tile_overlap设得太小块与块之间的过渡区域不够模型在边界处生成的结果不连续。解决办法是把tile_overlap从默认的 16 或 32 提高到 64让相邻块有足够的重叠区域做融合。如果还有缝把tile_size从 512 降到 384块越小边界越多但重叠比例相对更高。另外tile_overlap不要超过tile_size的一半否则计算量会暴增。我一般用tile_size512, tile_overlap64这组参数在 12G 卡上跑 1024 输入 scale 2 没出过缝。4.4 输出图过度平滑或者出现塑料感现象放大后的图看起来像被磨皮了皮肤没有毛孔布料没有纹理整体像塑料。原因是cfg_scale设得太低模型没有足够强的引导去生成高频细节或者负面提示词里没有抑制平滑的词。解决办法把cfg_scale从 3 提到 5.5 到 7 之间负面提示词加上oversmooth, plastic skin, blurrysteps从 20 提到 30 以上。如果还不行检查正向提示词是不是写得太抽象改成detailed skin texture, fabric weave, sharp edges这类具体描述。另外Supir 的 v0F 模型比 v0Q 更保真如果 v0Q 平滑过头可以换 v0F 试试但 v0F 的细节生成能力弱一些需要权衡。4.5 提示词完全不起作用或者画面被改得面目全非现象写了正向提示词但输出跟没写一样或者提示词里的物体被“脑补”进了画面原图里没有的东西出现了。原因是 Supir 的提示词引导机制跟 SD 文生图不同它是在潜空间里做条件去噪引导强度受cfg_scale和steps共同影响。如果cfg_scale太低提示词几乎无效如果太高模型会过度解读提示词把不存在的物体画进去。解决办法正向提示词只写画质相关的通用词比如high quality, detailed, sharp, 8k不要写a cat, a tree这种具体物体cfg_scale控制在 4 到 7 之间如果发现画面被改把cfg_scale降到 4 以下或者干脆把正向提示词留空只靠负面提示词控制。我自己的习惯是正向提示词永远只写画质词具体内容交给原图本身。5. 把 Supir 图像缩放用稳的几个进阶习惯5.1 用两步放大法替代一步到位一步 scale 4 的显存占用和失败风险都远高于两步 scale 2。我的固定流程是原图先 scale 2、steps 25、cfg 5.5 跑一遍保存中间结果检查中间结果没有拼接缝、没有塑料感之后再把中间结果作为输入同样参数再 scale 2得到最终 4 倍图。这样做的好处是每一步的显存峰值都可控而且中间结果可以单独使用——有时候 scale 2 的结果已经够用不需要继续放大。两步法的总耗时比一步法多大概 30%但成功率从“看运气”变成“基本稳”。如果你要放大到 8 倍就重复四次 scale 2每次检查一遍。5.2 固定种子和参数组合做批量对比Supir 的seed参数控制去噪过程的随机性同一个种子加同一组参数输出完全可复现。我习惯在调参阶段固定seed42然后只改一个参数做对比先固定steps25, cfg5.5把scale从 2 试到 4再固定scale2, cfg5.5把steps从 15 试到 40最后固定scale2, steps25把cfg从 3 试到 8。每次只改一个变量输出图并排看这样能快速找到适合自己图片类型的参数组合。找到之后把参数记下来批量处理同类图片时直接套用。下面这张表是我在 12G 显存、1024×1024 输入、开 FP8 和 Tiled 条件下的实测参数对照参数组合scalestepscfg_scale峰值显存单张耗时适用场景快速验证2154.07.2G18s流程调试平衡画质2255.59.5G35s人像、风景高细节2406.511.8G58s纹理复杂图极限放大4305.5爆显存-需分两步5.3 输出前用像素级检查代替肉眼判断肉眼在缩略图上看不出拼接缝和色偏但放大到 100% 之后问题就暴露了。我的习惯是输出之后用 Python 做一次像素级检查把输出图切成 256×256 的小块计算每块的均值和方差如果某块的均值跟相邻块差异超过阈值就说明有拼接缝或者色块。下面这段脚本可以快速跑一遍import numpy as np from PIL import Image img np.array(Image.open(output_4x.png).convert(RGB), dtypenp.float32) h, w, _ img.shape block 256 means [] for y in range(0, h, block): for x in range(0, w, block): patch img[y:yblock, x:xblock] means.append(patch.mean(axis(0, 1))) means np.array(means) # 计算相邻块之间的均值差异 diff np.abs(np.diff(means, axis0)).mean() print(f相邻块均值差异: {diff:.2f}) if diff 5.0: print(警告可能存在拼接缝或色块建议检查 tile_overlap) else: print(像素级检查通过)这段脚本的逻辑很简单把输出图按 256 像素分块计算每块的平均 RGB 值然后看相邻块之间的差异。如果差异超过 5.0说明块与块之间的过渡不自然大概率是tile_overlap不够或者 Tiled 融合有问题。这个检查比肉眼可靠得多尤其是批量处理的时候跑一遍脚本就能筛出有问题的图。参数block可以根据输出尺寸调整输出越大块可以设得越大但不要超过 512。5.4 我的固定习惯先跑小图验证再上大图我刚开始用 Supir 的时候直接拿一张 2048×2048 的图 scale 4 跑结果显存爆了三次浪费了半个多小时。后来养成一个习惯不管什么图先缩到 512×512 跑一遍完整流程确认节点连通、模型加载正常、参数没有明显错误然后再换原图跑。这一步多花两分钟但能避免大图跑到一半崩掉重来的时间损失。另外每次换新模型或者更新节点包之后也先用小图验证一遍确认没有版本兼容问题再上生产。这个习惯帮我省了很多后悔药。希望帮到你。本文还有配套的精品资源点击获取