AI 生图后处理推荐 w 值:崩坏人脸修复的正确姿势
AI 生图的人脸问题
Stable Diffusion / DALL·E / Midjourney 生成人脸时常见:
- 多只眼睛(典型 SD 崩坏)
- 手指数量错误、手畸形
- 五官比例怪异
- 皮肤有生成伪影(斑点、条纹)
- 分辨率低(默认 512×512)
GFPGAN 和 CodeFormer 都能修复这些问题,但 CodeFormer 对 AI 生图的适配性天然更好。
为什么 CodeFormer 更适合 AI 生图
AI 生图的人脸有个特点:它本来就不是真人。所以 CodeFormer 的 w 权重在这个场景下几乎不需要考虑"身份保真"——AI 模型本来就没生成一个"特定的人",它只是生成了"一个看起来像人的脸"。
这意味着:
- w 可以开得很小(0.2~0.4)
- Codebook 会把崩坏的脸替换成"一个自然的人脸"
- 不需要担心"改了本人"这个问题
推荐 w 值
# AI 生图后处理
python inference_codeformer.py -w 0.3 \
--bg_upsampler realesrgan --face_upsample \
--input_path ai_generated_photo.png
| 生图质量 | 退化类型 | 推荐 w |
|---|---|---|
| 完全崩坏 | 多眼、手指错乱 | 0.1 ~ 0.2(Codebook 几乎完全重建) |
| 中度崩坏 | 五官歪、皮肤伪影 | 0.2 ~ 0.3 |
| 轻度崩坏 | 清晰度低、轻微畸变 | 0.3 ~ 0.4 |
| 接近完美 | 只是想拉高分辨率 | 0.4 ~ 0.5 |
在 SD WebUI 里集成
AUTOMATIC1111 的 SD WebUI 是 AI 生图的主流入口,CodeFormer 已经有官方后处理脚本:
位置
安装后在 WebUI 的 Extras 标签页 → Face restoration 下拉菜单选 CodeFormer
参数
- CodeFormer w weight(0-1):默认 0.3,AI 生图场景直接用默认值就行
- CodeFormer upscale 倍数:通常 2
工作流
txt2img → 生成一组候选图
↓
挑最满意的一张 → Extras → Face restoration → CodeFormer (w=0.3)
↓
拉高清(可选:Real-ESRGAN upscaler)
↓
最终成品
在 ComfyUI 里
CodeFormer 有社区贡献的 ComfyUI 节点,放在生成链路的末端(img2img 或 VAEDecode 之后)做人脸修复。
和 GFPGAN 同时使用
AI 生图场景里 CodeFormer 和 GFPGAN 经常搭配使用:
- 先用 GFPGANv1.4 做第一轮修复(更激进,适合完全崩坏的脸)
- 再用 CodeFormer w=0.3 做第二轮精细化(更干净,保留 GFPGAN 的输出结果中的自然部分)
SD WebUI 的 Extras 标签页支持链式修复——先选 GFPGANv1.4,再选 CodeFormer。
常见 AI 生图 CodeFormer 问题
问题:CodeFormer 把脸修"干净"了但风格丢了
AI 生图的一个核心价值是它的风格(赛博朋克、水彩、油画风格)。如果 CodeFormer w 太小,会把脸上的艺术风格也磨掉。
解决:
- AI 生图场景一般只修人脸,背景和整体风格保留
- 如果连脸上的艺术滤镜 / 风格化也被磨掉了,调大 w 值(0.4~0.5)
- 或者在 SD WebUI 里用 img2img + 低 denoising strength 重新生成人脸区域
问题:手指修不了
CodeFormer 只修人脸区域。AI 生图的手指错乱是经典问题,但 CodeFormer 不管手指。手指修复要么用专门的手修复模型,要么用 inpainting 手动修。
问题:修完一张脸、其他脸崩坏
SD 可以生成多人合照,但 CodeFormer 默认只修最明显的一张。检测阈值可以调,但更多时候需要手动裁出每张脸分别修。
完整 AI 生图后处理链路
Stable Diffusion / Midjourney 生图
↓
CodeFormer 人脸修复(w=0.3,整图模式 + 背景增强)
↓
Real-ESRGAN 整图拉高(如果还要更大分辨率)
↓
手指 / 非人脸损坏用 inpainting 修复
↓
(可选)其他后处理:锐化、调色