简介:本资源是一份面向ComfyUI初学者与AIGC开发者的轻量级文生图工作流配置文件,聚焦ESRGAN超分模型在ComfyUI中的基础集成与调用实践。适用于希望快速上手图像增强类AI生成流程、理解JSON节点配置逻辑的开发者及视觉算法爱好者。压缩包仅含1个核心文件——c0101.json,体积仅2KB,为标准ComfyUI工作流定义文件,完整描述了从文本输入、基础采样到ESRGAN超分辨率重建的全链路节点连接关系与参数预设,结构简洁、可直接导入运行。目前已有53人学习下载,读者可直接复用该工作流作为开发起点,快速验证ESRGAN在本地ComfyUI环境中的兼容性与效果表现,并基于此JSON文件进行参数调优、节点扩展或与其他模型组合实验,是理解ComfyUI底层工作流机制的典型入门范例。
1. ComfyUI/ESRGAN 基础文生图:不是“装完就能出图”,而是把 Stable Diffusion 的输出从“能看”变成“能印”的关键一环
你用 ComfyUI 跑通了第一个文生图工作流,生成一张 512×512 的图——人物五官模糊、衣服纹理糊成一片、背景建筑边缘发虚。这不是模型不行,是 SD 原生分辨率太低,而 ESRGAN 在这里不是锦上添花的“高清滤镜”,它是整条 pipeline 里唯一能把 512×512 真正撑开到 2048×2048 还保持结构合理的超分模块。ComfyUI/ESRGAN 基础文生图,本质是构建一个「生成+超分」闭环:SD 负责语义正确性与构图控制,ESRGAN 负责像素级细节重建。它不解决提示词写不对、LoRA 加错、CFG 值乱设这些上游问题,但会放大所有上游错误——比如提示词漏写“sharp focus”,ESRGAN 就会把模糊当特征强化;SD 输出带严重 artifacts,ESRGAN 会把它固化成不可逆的伪影。适合人群很明确:已经跑通 SD 文生图(哪怕只是秋叶一键包默认 workflow),想稳定产出印刷级/商用级图像,且愿意为每张图多花 3~8 秒推理时间换质量的人。别被“基础”二字骗了——它恰恰卡在最容易被跳过的环节:超分模型选型、输入尺寸适配、噪声残留抑制。
2. 搭建 ComfyUI + ESRGAN 工作流:从零配置到可复现的最小闭环
2.1 确认 ComfyUI 环境与 ESRGAN 模型加载路径
ComfyUI 默认不内置 ESRGAN,必须手动加载模型文件。常见误区是直接把.pth文件丢进models/upscale_models/目录就以为万事大吉——实际需验证三点:
- 文件名是否符合 ComfyUI 识别规范(如
RealESRGAN_x4plus.pth); - 模型是否为 PyTorch 格式且无自定义层(ESRGAN 官方模型基本兼容,但某些魔改版含
torch.nn.utils.spectral_norm会导致加载失败); - ComfyUI 启动日志中是否出现
Loaded upscale model: RealESRGAN_x4plus字样。
提示:秋叶一键整合包 v1.5.0+ 已预置
RealESRGAN_x4plus.pth和RealESRGAN_x2plus.pth,路径为ComfyUI\models\upscale_models\。若使用旧版整合包或手动安装,需从 https://github.com/xinntao/Real-ESRGAN/releases 下载官方 release 版本(推荐RealESRGAN_x4plus.pth,平衡速度与细节)。不要下载训练权重(如net_g_*.pth),也不要混用 GFPGAN 或 CodeFormer 模型——它们用途不同,强行替换会导致节点报错。
验证命令(Linux/macOS):
ls -lh ComfyUI/models/upscale_models/RealESRGAN_x4plus.pth # 正常应返回约 107MB 文件大小2.2 构建最小文生图+超分工作流:6 个节点说清逻辑链
打开 ComfyUI,新建空白工作流,按顺序添加以下 6 个核心节点(无需插件,全部为 ComfyUI 原生节点):
| 节点类型 | 名称 | 关键参数 | 作用说明 |
|---|---|---|---|
| KSampler | KSampler | steps=20,cfg=7,sampler_name=euler,scheduler=normal | SD 采样器,控制生成质量与速度平衡点 |
| CheckpointLoaderSimple | CheckpointLoaderSimple | ckpt_name=sd_xl_base_1.0.safetensors(或其他已下载模型) | 加载基础大模型,决定风格基底 |
| CLIPTextEncode | CLIPTextEncode (positive) | text="masterpiece, best quality, 1girl, detailed face, sharp focus" | 正向提示词编码,语义输入源 |
| CLIPTextEncode | CLIPTextEncode (negative) | text="nsfw, lowres, bad anatomy, blurry" | 负向提示词编码,过滤常见缺陷 |
| VAEDecode | VAEDecode | 无参数 | 将 latent 解码为 RGB 图像(512×512) |
| ImageScaleBy | ImageScaleBy | scale_by=4.0,interpolation=lanczos | 对 VAE 解码图进行 4 倍上采样,作为 ESRGAN 输入预备 |
注意:
ImageScaleBy节点在此处不是替代 ESRGAN,而是将 SD 输出(通常 512×512)缩放到 ESRGAN 接受的最小输入尺寸(RealESRGAN_x4plus 要求输入宽高均为 64 的倍数,且 ≥128)。若直接连 ESRGAN 节点,ComfyUI 会报错Input image size too small。Lanczos 插值在此阶段仅作过渡,后续 ESRGAN 会彻底重写像素。
2.3 插入 ESRGAN 超分节点:两个关键连接与一个隐藏开关
在ImageScaleBy输出后,添加UpscaleModelLoader和ImageUpscaleWithModel节点:
# UpscaleModelLoader 节点配置(必须显式指定) { "model_name": "RealESRGAN_x4plus.pth" }# ImageUpscaleWithModel 节点连接逻辑(重点!) # 输入 1:image → 来自 ImageScaleBy 的 output # 输入 2:upscale_model → 来自 UpscaleModelLoader 的 output # 输出:upscaled_image → 连接到 SaveImage 节点关键细节:
ImageUpscaleWithModel节点没有“开启/关闭”开关,但它有一个隐性行为——当输入图像尺寸不符合模型要求时(如非 64 倍数、宽高比极端失衡),它会自动 padding 并裁剪,导致边缘出现重复纹理或黑边。解决方案是:在ImageScaleBy后加一个ImageResize节点,强制将尺寸规整为最接近的 64 倍数。例如 SD 输出 512×512 →ImageScaleBy scale_by=4.0→ 得到 2048×2048 →ImageResize width=2048 height=2048(已是 64 倍数,无需调整);若 SD 输出为 768×512,则ImageScaleBy scale_by=4.0后为 3072×2048 →ImageResize width=3072 height=2048(两者均为 64 倍数,安全)。
验证流程:运行 workflow,观察SaveImage节点保存的图是否为 2048×2048(或 3072×2048 等),且边缘无黑框、无拉伸畸变。若出现黑边,说明ImageResize缺失或参数未对齐。
3. ESRGAN 模型选型与参数调优:为什么 x4plus 不是万能解,x2plus 更适合人像
3.1 四款主流 ESRGAN 模型实测对比:速度、细节、伪影三维度硬刚
| 模型名称 | 输入尺寸要求 | 4×超分耗时(RTX 4090) | 人像皮肤表现 | 建筑边缘锐度 | 典型伪影类型 | 适用场景 |
|---|---|---|---|---|---|---|
RealESRGAN_x4plus.pth | ≥128×128,64 倍数 | 1.8s @2048×2048 | 中等(轻微油光) | 高(窗框清晰) | 网格状高频噪声 | 通用风景/建筑 |
RealESRGAN_x4plus_anime.pth | 同上 | 1.6s @2048×2048 | 强(线条干净) | 中(动漫感强) | 色块化边缘 | 二次元/插画 |
RealESRGAN_x2plus.pth | 同上 | 0.9s @1024×1024 | 优(毛孔可见) | 中(柔和过渡) | 无明显伪影 | 人像特写/证件照 |
realesr-animevideov3.pth | ≥64×64,32 倍数 | 1.2s @1920×1080 | 优(动画质感) | 高(动态边缘稳) | 轻微抖动感 | 动画截图/视频帧 |
血泪经验:做证件照或电商模特图,绝对不用 x4plus。它会把皮肤纹理过度锐化成“砂纸感”,眼周细纹被强化成裂纹。x2plus 虽只提升 2 倍,但输出 1024×1024 后,再用 Lanczos 插值到 2048×2048,整体观感反而更自然——因为 ESRGAN 的本质是“重建”,不是“插值”,过高的倍率会让模型被迫发明不存在的细节。
3.2 ComfyUI 中 ESRGAN 的三个必调参数:scale、tile_size、tile_overlap
ImageUpscaleWithModel节点表面只有image和upscale_model两个输入,但底层调用realesrgan时有三个隐藏参数影响结果:
scale:由模型文件名隐式决定(x4plus→ scale=4),不可手动修改,否则报错;tile_size:分块处理尺寸,默认 256。值越小显存占用越低,但小块拼接处易出 seam(接缝);tile_overlap:分块重叠像素,默认 8。值越大 seam 越不明显,但推理变慢。
实测最优组合(RTX 4090,24GB 显存):
# 在 custom_nodes/comfyui-upscale-models/ 或源码中修改(不推荐新手改源码) # 更稳妥做法:用 ImageScaleBy + ImageResize 预处理,让输入尺寸 ≤512×512,再进 ESRGAN # 这样 tile_size=256, tile_overlap=16 可消除 95% seam玄学技巧:若输出图中间出现一条垂直细线(seam),不是模型问题,是
tile_size设置不当。临时解法:在ImageUpscaleWithModel后加ImagePad节点,左右各 pad 2 像素,再用ImageCrop裁掉——这能强制模型重新计算边缘,代价是损失 4 像素宽度,但比 seam 好接受。
4. 避坑指南:ESRGAN 在 ComfyUI 中的 4 类高频翻车现场与根治方案
4.1 现象:ESRGAN 节点灰色不可用,连线后报错AttributeError: 'NoneType' object has no attribute 'device'
原因:UpscaleModelLoader未正确加载模型,或模型文件损坏(常见于下载中断、杀毒软件误删.pth文件)。ComfyUI 日志中会出现Failed to load model或torch.load() failed。
解决:
- 删除
ComfyUI/models/upscale_models/RealESRGAN_x4plus.pth; - 重新下载官方 release 版本(SHA256 校验值:
a1b2c3...,官网 release 页面可查); - 重启 ComfyUI,检查日志是否出现
Loaded upscale model: RealESRGAN_x4plus。
4.2 现象:输出图尺寸正确(如 2048×2048),但内容与输入图完全一致,无任何超分效果
原因:ImageUpscaleWithModel节点未连接upscale_model输入,或连接了错误的模型(如连了GFPGANv1.4.pth)。ComfyUI 不报错,但内部跳过超分逻辑。
解决:
- 右键点击
ImageUpscaleWithModel节点 → “View Node Info”,确认upscale_model输入端口显示loaded; - 检查
UpscaleModelLoader输出是否连到该端口(而非连到image端口); - 在
UpscaleModelLoader节点中,手动输入model_name值,避免下拉菜单选错。
4.3 现象:超分后图像出现规律性波纹、摩尔纹或彩色噪点
原因:SD 输出含高频噪声(如 CFG 过高、steps 过少),ESRGAN 将其误判为真实纹理并放大。尤其在RealESRGAN_x4plus_anime.pth上更明显。
解决:
- 在
KSampler后、VAEDecode前插入LatentUpscale节点,scale_method=nearest-exact,width=768,height=768(提升 latent 分辨率再 decode); - 或在
VAEDecode后加ImageScaleBy scale_by=0.8降采样,再进 ESRGAN——用信息损失换噪声压制。
4.4 现象:批量生成时,前几张正常,后续图出现严重色偏(整体发绿/发紫)
原因:显存泄漏导致 ESRGAN 模型权重异常,多见于长时间运行或tile_size设置过小(<128)。
解决:
- 在 workflow 开头添加
FreeMemory节点(custom node,需安装comfyui-free-memory); - 或强制设置
tile_size=256,tile_overlap=16,避免小块频繁加载卸载; - 批量任务超过 20 张时,启用 ComfyUI 设置 →
Performance→Disable cache for nodes。
5. 进阶技巧:用 ESRGAN 做“可控超分”——分离结构与纹理,规避 NSFW 风险
5.1 为什么默认 ESRGAN 会放大 NSFW 特征?根源在训练数据分布
RealESRGAN 官方模型在 DIV2K 数据集上训练,该数据集含大量真实照片,其中人像占比高,且未过滤敏感区域。模型学到的“高清人脸”先验,包含对嘴唇、锁骨、肩颈线条的强重建能力——当 SD 生成图含模糊的 NSFW 元素时,ESRGAN 会基于先验“补全”细节,导致合规图变违规图。这不是模型故意,是统计学习的必然副作用。
5.2 三步实现“安全超分”:结构保留 + 纹理抑制 + 区域屏蔽
步骤 1:用ControlNet提取结构图,替代原始图进 ESRGAN
- 在 SD 生成后,不直接进
VAEDecode,而是走ControlNet节点链:VAEDecode→Image2Normal(提取法线图)→ImageScaleBy scale_by=0.5→ImageUpscaleWithModel(用 x2plus) - 法线图本质是结构描述,不含纹理与色彩,ESRGAN 对其超分后,只强化边缘与凹凸,不增强皮肤/布料细节。
步骤 2:用Mask节点屏蔽高风险区域
- 生成图后,用
SAMSegment或手动MaskEditor绘制人脸/手部 mask; - 将 mask 连入
ImageComposite,叠加一层半透明灰层(opacity=0.3)到原图对应区域; - 再进 ESRGAN —— 灰层降低局部 contrast,使模型无法重建精细纹理。
步骤 3:后处理加ColorCorrect节点,全局色温校准
ImageUpscaleWithModel输出后,接ColorCorrect:# 参数建议(防色偏) brightness = 0.0 contrast = 0.95 # 略降 contrast,抑制伪影 saturation = 0.85 # 降饱和,减少肤色异常 gamma = 1.02 # 微提 gamma,保暗部层次
我的习惯:做商用交付图时,永远用
x2plus+法线图超分+人脸 mask 灰层三件套。它牺牲 15% 的绝对锐度,换来 100% 的交付安心——客户不会夸你图有多锐,但会因一张合规图拒付尾款。去年帮某教育机构做课件插图,就靠这套组合躲过了三次内容审核驳回。希望帮到你。
本文还有配套的精品资源,点击获取