ComfyUI 里用 CodeFormer 做人脸修复:社区节点和工作流
ComfyUI 是什么
ComfyUI 是另一个流行的 Stable Diffusion 前端,完全基于节点化工作流——每个处理步骤是一个节点,节点之间连线传递数据流。相比 SD WebUI 的标签式界面,ComfyUI 更灵活、更适合复杂链路编排。
安装 CodeFormer 节点
CodeFormer 没有被官方 ComfyUI 包含,需要用社区插件:
方式一:ComfyUI Manager
ComfyUI Manager → Custom Nodes Manager → 搜 "CodeFormer" → 安装
方式二:手动 clone
cd ComfyUI/custom_nodes/
git clone <仓库地址>
# 作者 ttulttul(非官方,社区维护)
# 装依赖
pip install basicsr facexlib
下载预训练模型
社区节点通常需要手动下载 CodeFormer 权重到指定目录。参考节点 README 的说明(不同插件路径不同)。
基础工作流:SD 生图 → CodeFormer → 放大
Load Checkpoint
↓
CLIP Text Encode (positive)
CLIP Text Encode (negative)
↓
Empty Latent Image
↓
KSampler → Latent Decode
↓
【CodeFormer 节点】 ← 这里做人脸修复
↓
【Upscale Model Loader】(Real-ESRGAN)
↓
【ImageUpscaleWithModel】
↓
Save Image
CodeFormer 节点的输入:
- image:上一个节点的输出图(Latent Decode 后的 Image 类型)
- codeformer_fidelity:w 值,AI 生图默认 0.3
- upscale:放大倍率
进阶工作流:条件控制 + CodeFormer
CodeFormer 可以和 ControlNet 组合:
ControlNet (OpenPose 或 DWPose)
↓ 约束人体姿态
Load Checkpoint → KSampler → Latent Decode
↓
CodeFormer (w=0.3)
↓
... 后续处理
ControlNet 保证生图的姿态正确,CodeFormer 把脸修干净——两者互补。
仅人脸区域修复(Inpaint 模式)
如果你只想修 ComfyUI 链路中某张图的人脸区域(不重新生整图):
Load Image
↓
Masking(手动或自动检测人脸)
↓
KSampler Inpaint(或其他 inpaint 节点)
↓
CodeFormer(只处理 mask 覆盖的区域)
显存考虑
ComfyUI 相比 SD WebUI 更省显存(因为惰性加载和节点化),但加 CodeFormer 节点后:
- 模型加载 + SD 推理 + CodeFormer 推理:至少 10GB
- 如果同时开 ControlNet + CodeFormer:建议 12GB+
社区工作流示例
在 ComfyUI Manager 的 Workflow Browser 里搜 "CodeFormer" 可以找到其他用户分享的完整工作流 JSON 文件,直接导入就能用。
和 SD WebUI 相比
| 维度 | ComfyUI + CodeFormer | SD WebUI + CodeFormer |
|---|---|---|
| 灵活性 | 节点可任意组合,适合复杂链路 | 标签页式,够用但固定 |
| 可视化 | 节点连线图,直观看到数据流 | 文本参数,需要理解 |
| 调试 | 每个节点可单跑看中间结果 | 只能看最终输出 |
| 上手 | 学习曲线较陡 | 简单 |
| 批量 | 支持但需自己编排 | Extras 面板自带 |
| 性能 | 略省显存 | 略吃显存 |
如果你已经在用 ComfyUI 做复杂的 SD 链路(ControlNet + LoRA + Inpaint),CodeFormer 节点可以无缝嵌入。如果只是偶尔修脸,SD WebUI 更省心。