你生成一张人像,脸看着没问题,放大一看眼睛微妙地不对:一只比另一只高几个像素、两个虹膜方向不太一致、或者一只瞳孔明显更大。缩略图看起来没事,但只要别人看全图就立刻觉得”哪里怪怪的”。原因很直接:在 1024x1024 的 SDXL 人像里,眼睛区域在 latent 空间里只有大概 60x40 像素,模型根本没有足够分辨率去把对称的五官锁死。
修这个问题的关键是让脸单独跑一次细化——通过 face-detailer 节点、CodeFormer / GFPGAN 这种 face-restore 模型,或者手动在 2 倍分辨率下做一次局部重绘。
常见原因
按命中率从高到低:
1. 脸在 latent 空间里太小
SDXL 默认 1024x1024 渲染一张半身像时,眼睛区域大约只有 50x30 像素。模型是在那个分辨率下决定眼睛位置的,根本不可能把两个瞳孔放到亚像素级精确。
如何判断:放大看脸。如果脸在画面里占比不到 30%,就属于”低分辨率脸”区间,眼睛漂移几乎是必然。
2. 竖图或非方形长宽比
渲染 832x1216(SDXL 竖图)或 9:16 时,主要用 1:1 数据训练的模型只能外推。竖图里的脸经常歪、轻微倾斜、或者左右眼高度不一。
如何判断:相同 Prompt、相同 seed,先在 1024x1024 跑一次。如果方图眼睛对齐、竖图就跑偏,那就是长宽比的锅。
3. pipeline 里没有 face-detailer / face-restore
ComfyUI / Automatic1111 / Forge 的默认工作流不会专门跑一次脸。模型输出什么就是什么。没有专门的脸部 pass,眼睛不对齐是常态而不是例外。
如何判断:检查工作流 JSON。如果没有 FaceDetailer、ADetailer、CodeFormer 或 GFPGAN 节点,你就没有兜底。
4. 风格 LoRA 把五官比例压歪了
强风格 LoRA(尤其是动漫-写实混合或绘画风的 LoRA 在 1.0+ 权重下)经常会扭曲五官比例。风格盖在基础解剖结构上,把眼睛位置带偏。
如何判断:把 LoRA 权重从 1.0 降到 0.6 重生成。如果眼睛自己修正了,就是 LoRA 过力。
5. 步数太少或采样器选得不对
某些采样器(Euler a、DPM++ 2M Karras)需要 25-35 步才能把精细解剖跑完。如果你用 turbo 采样器只跑 15 步,模型还没来得及把五官细化完就停了。
如何判断:同 seed 把步数从 20 提到 35。如果眼睛改善,就是采样不够。
最短修复路径
Step 1:加一个 face-detailer pass
ComfyUI 里挂一个 Impact Pack 的 FaceDetailer 节点;Automatic1111 / Forge 装 ADetailer 扩展。推荐参数:
ADetailer 模型: face_yolov8n.pt
Inpaint denoise: 0.35-0.45
Mask blur: 4
Inpaint width/height: 768 或 1024(不是基础渲染尺寸)
采样器: 同基础,20 步
detailer 会先裁出脸、放大、在 1024x1024 下只重绘脸、再合成回去。眼睛区域这下拿到了完整的 latent 预算。
Step 2:用 CodeFormer 或 GFPGAN,权重适中
如果没有 face-detailer,退一步用 face-restore 模型:
CodeFormer weight: 0.5(不要 1.0,1.0 会把皮肤纹理全抹平)
GFPGAN weight: 0.4
这俩是在对齐过的人脸数据集上专门训的,能修正眼睛对称、瞳孔大小、虹膜朝向。代价是皮肤会被轻微平滑——权重压在 0.6 以下能保住质感。
Step 3:自动修不好时手动局部重绘
死活修不好的情况:
- 把图扔进 Automatic1111 / Forge 的 inpaint
- 只蒙住眼睛区域,mask blur 设 8
- inpaint denoise 设 0.45
- “Inpaint area” 选 “Only masked”,padding 32
- Prompt 改成
symmetric eyes, matching pupils, both eyes same size, looking at camera, sharp iris detail - 生成 4 张挑最干净的一张
Step 4:生成时就预防
正向 Prompt 里加:
symmetric face, both eyes aligned, matching pupils, perfect eye anatomy, sharp iris detail, eye contact
负向 Prompt 里加:
asymmetric eyes, mismatched pupils, lazy eye, cross-eyed, different iris color, droopy eyelid
这些提示词本身解决不了分辨率问题,但能让模型在 face-detailer 兜底前先选个更好的默认。
预防建议
- 人像默认就启用 face-detailer / ADetailer,不要每次手动加
- 竖图先在 1024x1024 出图再纵向扩图,不要直接走 832x1216
- CodeFormer 权重全局固定在 0.3-0.5,永远不要破坏皮肤纹理
- 用风格 LoRA 时权重上限压在 0.7-0.8,给解剖结构留空间
- 把带 face-detailer 的工作流存成 preset,永远从它开始