简介图像超分辨率是计算机视觉与图像处理中的经典课题传统放大算法依赖插值重建面对低分辨率或受损图片时往往只能得到模糊轮廓。扩散模型的出现改变了这一局面它通过生成式推理为图像补充高频细节在放大分辨率的同时完成去噪与修复。SUPIR作为基于扩散模型的高质量图像缩放方案在ComfyUI中可借助可视化节点快速搭建修复型放大工作流实现老照片修复、截图增强与电商图翻新等场景的高保真处理。然而其效果受环境配置、模型放置与关键参数影响较大尤其是放大倍数、降噪强度与显存占用之间的平衡。本文围绕ComfyUI中SUPIR的完整落地路径展开从环境准备、节点链路到参数取值与常见问题排查给出可直接复用的工程实践参考。1. 为什么用SUPIR做图像缩放而不是传统放大算法把一张 512×512 的旧照片拉到 2048传统放大只能把轮廓磨得更圆细节靠猜而 ComfyUI 里的 SUPIR 图像缩放是把“放大”和“修复”当成同一件事来做——扩散模型在生成高分辨率版本时会顺带把糊掉的眼角、发丝、衣服纹理重新推理出来。很多人上手就把它当成普通超分辨率工具结果要么放大了但脸被重绘成另一个人要么显存爆掉要么出图灰蒙蒙。下面直接说怎么避免这些问题从环境准备、模型放置、最小节点链路到 5 个必调参数和常见翻车现场最后给出一套能落地的验证流程。适合在 ComfyUI 里做老照片修复、截图放大、电商图翻修的从业者直接抄。2. 在ComfyUI里搭起SUPIR缩放链路环境准备、模型放置与最小节点连接2.1 先把ComfyUI环境清干净版本、Python与国内源切换SUPIR这类节点对环境很敏感。手动装ComfyUI的话Python版本我一般固定在3.10torch用cu121或cu124版本不要图新上Python 3.13。很多人在这一步翻车Python版本太高open_clip、transformers这类依赖编译出错然后归结为“模型有问题”。其实是环境问题。如果你用的是秋叶一键整合包反而省心因为它的Python、torch和依赖都是锁好的但要注意整合包不一定自带SUPIR节点你还需要通过ComfyUI Manager补装。常见做法是先检查ComfyUI版本和显卡驱动python --version nvidia-smi python -c import torch; print(torch.__version__, torch.version.cuda)如果第一行输出3.11以上而你还没换环境的打算别急着怪SUPIR节点。只要ComfyUI能正常跑文生图基础环境通常没问题SUPIR卡住的时候问题多半不在ComfyUI本身而在SUPIR模型的额外依赖。国内网络条件下装节点依赖经常会卡在pypi或huggingface.co上。建议先把pip源切到国内镜像再开始装依赖pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple然后在ComfyUI的custom_nodes目录下找到SUPIR节点目录执行cd custom_nodes/节点目录 pip install -r requirements.txt这里有个我踩过的坑不要笼统地直接pip install open_clip。不同SUPIR节点对open_clip版本要求差很多有的要open_clip_torch有的要open_clip还有的要特定commit。看requirements.txt里锁的版本不要自己猜。装完依赖后重新启动ComfyUI日志里能看到节点导入成功才算真的装好。如果你用的是秋叶整合包优先用整合包自带的“安装依赖”入口不要手动pip install到系统Python里。因为整合包在启动时会用内置的python_embeded环境手动装到系统Python等于白装。提示在custom_nodes目录里看得到节点不代表节点能跑。启动后如果ComfyUI界面里没有SUPIR节点名去日志里找ImportError才是正路。2.2 把SUPIR模型权重和辅助文件放对地方SUPIR主模型是一套独立的扩散模型权重体积不小。不同作者写的节点对路径要求不同但我常用的原则是先看节点的README或源码里读取路径的部分不要凭感觉乱放。三种常见路径情况如下。文件类型常见放置目录作用SUPIR主模型safetensors格式ComfyUI/models/checkpoints/ 或 节点自建models目录提供UNet主网络参数open_clip相关权重节点仓库内model/或ckpt/目录图片与文本编码器传统放大模型如4x-UltraSharpComfyUI/models/upscale_models/配合做第二遍放大这表不算官方标准只是覆盖我见过的绝大多数SUPIR节点实现。主模型最好放在checkpoints下因为ComfyUI的加载器会统一扫描这个目录但有些节点嫌弃checkpoints目录里模型太多会硬编码相对路径。这时你把模型放哪都白搭它会去自己目录下找。验证模型放对地方的方法是在ComfyUI界面里点一下“刷新”按钮然后在Load SUPIR Model节点的下拉菜单里看到主模型文件名。如果下拉菜单是空的说明路径没对上去节点源码里搜safetensors或model_path关键词直接看它拼接了哪个目录。还有一个很容易忽略的细节SUPIR模型基于SDXL架构但它内部已经包含了VAE相关组件。有些版本还需要额外的ae权重。如果在加载时报KeyError: model.diffusion_model...通常是加载器把普通SDXL模型误当成SUPIR模型用或者模型文件下载不完整。这时可以检查一下模型文件大小是不是和发布页对得上下载中断产生的半截文件会给你最离谱的报错。辅助模型这一块最稳妥的做法是把节点目录下所有*.safetensors、*.bin都看一遍。比如open_clip的大文件如果没有预下载加载时会默认去huggingface.co拉取国内网络一旦超时界面就卡几十分钟。我遇到这个情况时会先把节点要求的CLIP模型手动下载到节点目录再修改节点源码里的下载地址为本地路径。这个操作比较扎手但为了稳定值得做。2.3 最小可跑通的SUPIR缩放节点链路环境干净了模型放对了接下来是最小链路。不同SUPIR自定义节点打包方式不一样有的把模型加载器拆成独立节点有的直接集成在放大节点里。下面是核心链条你在界面上按这个顺序连Load Image加载待放大的低分辨率图。Load SUPIR Model选择主模型设置device和dtype输出一个MODEL引用。SUPIR Upscale把MODEL引用和图像接进来设置scale_factor、denoise_strength等参数输出latent或直接输出图像。VAE Decode如果第3步输出的是latent必须接上VAE解码成像素图。Save Image保存结果。如果你看到某个节点输出的是图片而不是latent那就不需要VAE Decode千万不要强行接否则颜色会偏成青灰色。我见过有人把SUPIR输出又接了一次VAE结果整个画面像泡在水里。再补充一个安装细节我推荐用ComfyUI-Manager搜索安装。如果Manager安装时提示git clone失败大概率是网络访问问题不要傻等直接去源站下载zip放进custom_nodes。下载后注意目录名里不要带空格ComfyUI在import时可能直接跳过。解压出来的目录名如果带版本号后缀比如supir_node-main能用但如果你改过目录名记得确认里面没有嵌套一层同名目录否则节点路径会失效。节点注册成功后可以用下面这个命令快速确认# 列出custom_nodes目录确认SUPIR节点目录存在且没有报错后缀 ls -la custom_nodes/ | grep -i supir # 启动日志里看到节点加载信息且没有红色ERROR才算完整 python main.py 21 | tee /tmp/comfyui.log tail -f /tmp/comfyui.logComfyUI在启动时会把custom_nodes下每个节点的.py文件都import一遍如果在日志里看到ImportError或ModuleNotFoundError说明节点环境依赖没装全。很多“节点列表里没有SUPIR”的问题不是没下载节点而是import失败了。最小链路跑通之后再用一组小图试参数不要上来就放大4096像素的大图。这一步能帮你区分是环境问题还是参数问题。环境问题会集中在加载阶段参数问题则会均匀地出现在出图质量上。3. 拆解SUPIR缩放工作流先修复还是先放大两遍缩放的配合方式3.1 加载SUPIR模型时就要想清楚的事设备、精度和VAE归属SUPIR加载节点里通常有device、dtype、use_tiled这几个选项。device一般不用动默认cuda即可dtype默认fp16就能跑如果你的显卡是10系或16系这种fp16算力弱的卡反而要切成fp32或bf16。这里有个玄学fp16在SUPIR上不是永远更快20系及以下的显卡开fp16经常会出现输出噪点。建议先用fp16跑一张如果有明显颗粒感再切fp32对比一次没有画面污染就保持fp16。use_tiled是用来把图像切成小块逐个处理的选项显存不够时非常有用。但开了分块后把tile拼回去可能有缝隙尤其人像脸部容易在tile边界处出现违和感。所以如果显存充足我一般会关掉让整图一起推理只有6GB、8GB显存才开tiled。VAE归属问题SUPIR模型通常在内部打包了VAE或配套的autoencoder。你在工作流里不要额外从普通SDXL模型里拉一个VAE出来接给SUPIR的放大节点。正确做法是用SUPIR加载器自带输出的VAE或者直接让放大节点自己管理VAE。这个点很多人踩坑接错VAE后输出图像亮度偏低颜色像蒙一层灰并不是参数问题。设备选择上如果有多块显卡优先把SUPIR固定在显存最大的卡。可以在加载器节点里设置device为cuda:0或cuda:1。不要让它自动选因为ComfyUI会把默认cuda:0给你如果你cuda:0上还挂着别的模型SUPIR一下就把显存吃满了。养成习惯在加载器里显式写设备号别让系统猜。3.2 第一遍缩放让SUPIR自己做修复型放大SUPIR的定位是“修复型放大”它和ESRGAN这类分辨率重建模型的最大区别是它在放大时真的在创作细节。因此第一遍缩放要承担两件事把分辨率抬上去顺带把污染、模糊、压缩痕迹清掉。这一步没必要直接做最终倍数尽量控制在2倍左右。把3倍、4倍这种激进倍数留到确认参数后再试。以一张640x640的图为例第一遍设置scale_factor2denoise_strength取0.5左右输出的1280x1280已经能把大部分杂讯清理掉。如果原图本身很干净只是分辨率低denoise_strength可以降到0.4如果原图有严重噪点或老照片划痕才上调到0.6以上。不要一开始就用0.7那不是缩放是重绘脸型、五官都保不住。再提醒一个常见混淆SUPIR放大节点内部的高清晰修复和超分辨率不是两个互相独立的阶段而是同一个扩散采样过程。有些工作流为了让效果更猛会先用低分辨率预放大再跑SUPIR但预放大用的如果是Lancoz并不会给SUPIR增加太多信息反而是把原图的噪点等比例放大了。更好的做法是先用轻量级的传统放大模型把图放大到接近目标倍数再让SUPIR在这个基础上做细节修复这样能明显减少扩散模型的“脑补”程度。下面给一个粗略的显存估算公式方便你在开跑前判断第一遍能不能过# 输入原图尺寸和放大倍数估算SUPIR所需的显存压力经验值非官方标准 def est_vram(w, h, scale, tiledFalse): target_area (w * scale) * (h * scale) # 6GB是模型本身基础开销系数来自我在8G/12G卡上的实测均值 vram 6.0 target_area / 1e6 * 0.9 return vram * 0.6 if tiled else vram print(est_vram(640, 640, 2)) # 非tiled约7.4GB print(est_vram(1024, 1024, 2)) # 非tiled约9.6GB这个公式不是官方参数只是用来评估当前机器能不能跑。真正的显存占用还受批次大小、cfg_scale影响。tiled开启后显存占用会显著下降但速度会变慢因为分块之间有时间片切换。如果你发现估算结果比卡的显存高出1GB左右开tiled基本能扛过去高出太多就别指望分块能救果断把scale_factor砍到1.5。3.3 第二遍缩放传统缩放器和扩散缩放器的分工纯SUPIR放大到4倍画质不一定比“SUPIR 2倍 传统缩放器2倍”更好看原因在于扩散模型在放大的同时重绘。如果原图是扫描的证件照、文档扫描件重绘反而会把文字笔画改得歪歪扭扭。对这种内容第二遍用传统缩放器更安全。常见做法是这样的一条工作流原图先用UpscaleModelLoader加载一个传统放大模型比如UltraSharp放大2倍SUPIR再拿这个中间结果做修复型放大2倍如果目标倍数是4倍或更高最后可以再用一个轻量缩放器收尾。反过来先SUPIR后传统缩放器也有不少人用。区别在于先传统放大SUPIR看到的图像更大、噪声相对小适合高保真场景先SUPIR会把重绘的细节放大适合老照片这种本来就缺细节的场景。这个先后顺序不是玄学是放大模型对信号和噪声的敏感度不同。我一般会按内容类型选顺序图像类型建议顺序理由人像/半身照先传统放大1.5倍再SUPIR修复2倍保留五官比例减少AI脸动漫线稿SUPIR先2倍修复再传统放大2倍线稿清晰度优先少量重绘可接受文档/截图只传统放大SUPIR开低重绘强度文字不能改笔画老照片SUPIR先2倍修复再传统放大2倍缺的主要是细节修复优先这张表值得抄下来贴在你的工作流旁边。注意第一列不要当成绝对规则因为不同来源的图像噪声水平差异很大我提供的只是能让你少走弯路的安全起点。如果你用的是ComfyUI自带的API模式来跑第二遍可以在请求里把两个放大节点的参数都写进去一个节点输出给另一个节点。这里是一个用Python提交工作流并修改SUPIR参数的骨架import requests, json workflow json.load(open(supir_upscale_workflow_api.json)) for node_id, node in workflow.items(): if node[class_type] SUPIRUpscale: workflow[node_id][inputs][scale_factor] 2 workflow[node_id][inputs][denoise_strength] 0.45 resp requests.post(http://127.0.0.1:8188/prompt, json{prompt: workflow}) print(resp.json())这里的逻辑是ComfyUI把工作流以节点ID为键的JSON存储你只需要遍历节点找到SUPIR放大节点改它的inputs。比在界面上反复拖要稳定尤其是你要一次性跑几十张图的时候。注意不同自定义节点的class_type不一定叫SUPIRUpscale你先在导出的API格式里搜一下SUPIR关键词确认真正的类名再写脚本。4. SUPIR图像缩放必调的5个参数从默认值到能出片的数值先把话放在前面不同SUPIR节点的参数命名有差异有的叫scale有的叫scale_factor有的把high_quality_restore写成开关有的把它做成下拉选项。下面的参数名按最常见的节点写法来你看自己的工作流时先对一下不要照搬。4.1 scale_factor放大倍数2倍还是4倍为什么不是越高越好SUPIR的scale_factor直接决定最终分辨率。很多第一次用的人直接把4倍拉满结果出图要么显存不够要么画面出现“塑料感”。原因在于放大倍数越高扩散模型要补的细节比例越大一旦原图信息不足它就开始按自己的审美重绘人脸五官会漂移。我的建议第一遍固定2倍之后需要更大分辨率再用传统缩放器补。特殊情况比如老照片修复原图本身只有200x300第一遍可以允许3倍但denoise_strength一定要降到0.5以下否则会把它画成别人。scale_factor在自定义节点里一般允许填浮点数比如1.5、2.5都可以填没必要非得整数。1.5倍配合传统放大能有效避免放大倍数过高带来的重绘风险。如果节点里同时出现scale和scale_factor两个参数优先动scale_factor。scale在某些实现里只是预处理阶段的缩放改了不一定作用在最终输出上。我见过有人把scale调到4跑了半天输出还是原分辨率气得直骂节点有问题其实就是参数搞混了。参数的本质是“放大倍数和修复强度要联动”。你放大倍数越高就越得压低修复强度因为高倍数放大天然会生成大量新像素如果修复强度也高那些新像素会被“用力过猛”地结构化成奇怪五官。建议每次只加0.25倍地试不要一步到位。4.2 denoise_strength降噪强度清晰度与AI感的跷跷板denoise_strength是我最看重的参数它控制扩散模型在多大程度上重绘图像。理解成“改写量”更直观0.1是轻微磨皮0.9相当于让你整张图重新画一遍。SUPIR的默认值往往偏高处于0.6到0.7之间直接跑出来的图片会明显更像AI生成而不是“放大的原图”。如果你要做保真为主的缩放denoise_strength在0.35-0.45之间比较安全。这个区间能去掉压缩噪声、轻微修复边缘但不会改动五官结构。原图噪点特别明显时升到0.55再多就要出问题。反过来如果你想做二次创作比如把老照片里的背景重绘干净开到0.7以上才有效果。判断是否过头的方法很简单放大后把原图和结果各缩到同样尺寸叠在一起看五官对齐。如果眼角痣没了、法令纹变浅说明重绘过强。这个检查方法在第6章会再提到。还有一个容易被忽略的细节denoise_strength在0.3以下时SUPIR的输出会像只做了锐化很多细节没有被激活这和“放大修复”的预期不符。所以它不是越低越保真而是存在一个让细节冒头又不改写结构的最小值我通常从0.4开始找。如果你的原图是高清视频截图比如某眼那类压得很狠的图denoise_strength可以比普通照片高0.05-0.1。因为压缩痕迹本身就是一种噪声模型需要更多重绘权才能把它们抹掉。4.3 high_quality_restore高质量修复开关什么时候开什么时候关在SUPIR工作流里不少节点会提供一个high_quality_restore或类似布尔选项说人话就是“第一遍高质量修复”。打开后模型会先做一次细节增强再做缩放放大。这个开关适合严重损坏的旧照片、低码率视频截图不适合本身已经比较清晰、只是分辨率低的图。为什么这么说因为高频细节增强会把原图上扫描出来的纸纹、灰尘也一并放大结果画面变得脏脏的。你在参数表里看到类似选项时先从False跑起出图不满意再切True用同一张图对比肉眼判断哪个更干净。不要无脑打开默认关闭反而是多数场景的最优解。这个开关还会影响处理速度。开启后同一张图推理次数增加时间大概多出20%-40%如果你的批量任务多开关决策会影响整体效率。建议先不开用低denoise跑一张再看要不要开。开了之后要注意scale_factor是否出现变化部分节点会在开启high_quality_restore时强制做一次2倍预放大导致最终输出尺寸比你预期的大一倍。如果你对最终分辨率有硬性要求比如电商平台要求最长边不超过2048就要把scale_factor相应减半。如果你发现开了这个开关后图里的皮肤变成像蜡像一样光滑别急着关。先检查denoise_strength是不是也被联动调高了。有些节点实现里high_quality_restoreTrue会把内部denoise拉高你需要手动再压回来。4.4 cfg_scale与controlnet_scale结构保持和风格自由的平衡SUPIR节点里cfg_scale和controlnet_scale才是真正控制“像不像原图”的一对参数。cfg_scale越大生成结果越贴近提示词描述的结构但也会让画面变锐、变齁controlnet_scale则控制ControlNet对结构的约束力这个值越大越能锁住原图构图。经验取值cfg_scale在4-7之间controlnet_scale在0.3-1.5之间。如果原图是线稿、建筑图controlnet_scale开高到1.2以上防止SUPIR把直线画弯如果做人像controlnet_scale0.5左右就够太高会让脸部光影变得硬朗。这两个参数要一起调不要只动一个。比如你把cfg_scale调到8、controlnet_scale却留在0.2输出画面会显得很用力但结构还是漂反过来cfg_scale只有4、controlnet_scale拉到1.5画面会稳但可能糊掉细碎纹理因为约束太紧导致扩散模型放不开手脚。我的顺序是先定controlnet_scale因为它决定“骨架稳不稳”再回头微调cfg_scale。骨架稳不住的时候cfg_scale调多高都像在描红。还有一个经验当原图分辨率特别低比如人脸只有80像素宽时controlnet_scale不要超过1.0。因为低分辨率下的ControlNet特征本身就不准约束太强反而会把错误的边缘锁进最终结果。这种图宁可让cfg_scale高一点、controlnet_scale低一点给扩散模型更多自由去“猜”出合理结构。4.5 tiled分块与chunk_size显存受限时的最后一根稻草显存不够时首先考虑tiled打开其次调chunk_size。分块大小决定每次送入模型的图像块尺寸常用值是32、64、128。块越大上下文越完整画质越好但显存压力也越大块太小图像块之间缺少连贯信息缩放后可能在边界出现明显接缝。8GB显存跑SUPIR 2倍放大我个人觉得chunk_size从64起步如果还爆显存再降到32。注意降低chunk_size不只是显存变化还会影响细节连贯性。尤其人像脸的跨块边缘在32的情况下会出现一边脸修一半的尴尬。这也是为什么我建议尽量用12GB以上的卡跑SUPIR分块确实能救急但救急有代价。tiled和denoise_strength也存在互动分块会让局部区域独立采样所以同样denoise_strength下分块模式的画面可能比整块模式的更碎。如果你开了tiled发现脸上出现格子感优先把denoise_strength降0.05-0.1不要立刻去调chunk_size因为chunk_size调整对显存影响大但对艺术效果的影响不如denoise_strength直接。如果显存实在紧张也可以配合ComfyUI启动参数--reserve-vram 2让整体显存使用更保守。这个参数我给后台任务留2-3GB能减少那种“上一张图内存碎片没释放下一张图报OOM”的情况。但要注意它会让每次推理变慢不要设太大。最后放一张参数速查表你可以把它打印出来贴在显示器边上参数作用安全范围翻车信号scale_factor放大倍数1.5-2.0放大后五官结构漂移denoise_strength重绘强度0.35-0.55原本的痣/疤消失high_quality_restore细节增强先置False画面变脏、纸纹被放大cfg_scale结构驱动4-7太锐/太齁、边缘硬controlnet_scale结构锁定0.3-1.5直线变弯、光影变形注意这只是我的经验值不同显卡、不同原图噪声水平会浮动。把参数当成起点以单张图的目检为准不要迷信某个固定数值。5. SUPIR缩放的常见翻车点与排查一个现象、一个原因、一个解法5.1 现象模型加载后一直停在“Loading model”或直接崩原因有两个一是模型文件下载不完整二是节点依赖的open_clip或transformers版本不对。SUPIR主模型几个GB如果下载中断过加载时会一直卡在读文件或者直接报KeyError。另一个常见原因是open_clip权重在huggingface上下载超时节点显示“Loading model”但实际卡在网络请求上。解决先检查模型文件大小是否和发布页一致不一致就删掉重新下载。如果是网络问题把huggingface_hub环境变量配好离线模式或者手动下载辅助模型放到节点指定目录。启动时开日志卡住后看最后几行是HTTPError还是UnicodeDecodeError前者是网络后者是文件损坏。我一般会在下载完模型后顺手算一下校验和虽然麻烦但能省掉半夜跑批时发现模型损坏的时间。5.2 现象放大后人脸五官被“重绘”成另一个人原因是denoise_strength太高或者放大倍数超过2倍。SUPIR在生成细节时会倾向于填上“统计意义上的五官”而不是保持原图特征。尤其脸只有几十像素的时候它基本靠猜。解决把denoise_strength先降到0.35看一眼是否还像原图。如果发现某个局部特别无关比如眼睛朝向变了用controlnet_scale往上加把结构锁住。还有一个小技巧先把原图用传统缩放器拉到2倍再用SUPIR做一次“原分辨率修复”让五官区域在输入时有更多像素。这个做法比单纯降denoise更有效因为问题根源是输入信息量不够不是模型太激进。5.3 现象中途显存爆掉OOM进程直接被杀原因scale_factor太大或tiled没开或者chunk_size设得太高。SUPIR的峰值显存比普通SDXL高不少因为要同时处理原图、latent和ControlNet特征。有时候甚至不是主显存问题而是CUDA平台把显存碎片留在后台跑完一张后第二次运行还报OOM。解决先开tiled把chunk_size从128降到64或32。如果还报OOM把scale_factor降为1不开SUPIR缩放只让它做高质量修复尺寸放大交给传统缩放器。另外在ComfyUI启动参数里可以加--reserve-vram预留显存这个参数我通常设2GB到3GB能减少后台碎片导致的假性爆显存。注意这个参数不是万能的它只是让PyTorch不要一次占满全部显存。5.4 现象出图颜色发灰像蒙了一层雾原因VAE接错或者high_quality_restore开关开了之后叠加了错误的色彩校准。很多人习惯了稳定扩散工作流里从CLIP/VAE里拉一个普通VAE但SUPIR使用的VAE和SDXL不一样。接普通VAE后latent解码时的缩放偏移会让黑位抬升画面就像蒙了灰。解决首先检查节点链路里是否有额外的VAE链接有就断掉改用SUPIR加载器自带的VAE。如果已经用的是自带VAE再看high_quality_restore开关在部分节点上打开后会引入色偏这时可以关闭它或者把它放在传统放大之后而不是之前。颜色发灰还有一个次要原因输出格式是16位PNG而看图器没做色彩配置文件转换这属于显示问题和SUPIR无关。5.5 现象小图放大后细节反而更模糊甚至出现网格纹原因原图本身有压缩噪声JPEG块状失真或缩放算法把噪点放大了SUPIR对噪声敏感把它当作细节“修复”结果噪声变成了高频纹理甚至网格。很多人以为SUPIR会自动过滤噪声但它其实是把噪声当成需要恢复的信号去猜。解决在原图进入SUPIR之前先加一个轻量的滤波节点或用传统缩放器做一次小放大把噪声平滑一下。比如先放大1.2倍再SUPIR修复2倍这样原图的块状噪声会被摊薄。如果出现网格纹把denoise_strength稍微升到0.5左右反而有用因为更强的重绘会把网格当成破坏性信号重画掉。这里和之前“重绘毁脸”的直觉相反所以要记住噪声图和网格图的处理参数方向是相反的。6. 批量放大前的最后一件事用一组高难度样张验证参数并沉淀预设6.1 用一张“必翻车”的图做参数回归这里的“回归”是从测试环境迁移到生产环境前的固定流程不是数学回归。选一张同时包含细网纹、弱反光、写实人脸的图先跑scale_factor2、denoise_strength0.4、controlnet_scale0.6的基准预设。输出后用ImageMagick比一下边缘# 用PSNR粗略判断结构保留程度值大于30可以认为结构偏差不大 compare -metric PSNR original.png output.png diff.png 21但PSNR对“重绘但结构正确”不敏感所以再手动检查两个点嘴角到眼角连线距离在放大后的变化是否在1%以内脸颊上的胎记或斑点是否仍存在。这两个点过了说明保真度够再进入批量。批量时不要直接跑全量。我会先用5张图把参数跑通输出到临时目录和原图逐张目检。没有一张出现“AI脸”后再把scale_factor从2提到4重新过一遍这5张。这样一轮只花十几分钟却能避免一次跑500张图后才发现参数不行。6.2 把有效参数存成工作流模板让缩放过程变成流水线在ComfyUI里跑通一组好参数后点“Export”保存为JSON。这个JSON就是你的参数预设之后换图时不需要重新拖节点直接在Load里导入只换图像文件名。我还建议你在JSON文件里用注释节点把参数含义标好方便同事和未来的自己理解。{ scale_factor: 2.0, denoise_strength: 0.4, cfg_scale: 5.0, controlnet_scale: 0.6, high_quality_restore: false }这段示例就是我的默认预设。遇到具体图时我会按前面第4章的顺序逐项调一次只改一个参数不搞联动。改完跑半张图对比再决定收摊还是继续调。这是我吃了几次亏养成的习惯SUPIR缩放最怕的从来不是模型不好而是想一次把所有问题都交给参数解决。希望帮到你。本文还有配套的精品资源点击获取