先做尺寸对照,再改提示词,顺序反过来容易把两个问题搅在一起。人物图脸部发虚,通常来自两条独立的线:一是输出总像素不够,脸占的那块区域本来就没几个像素;二是人物在画面中占比太小,比如提示词写成全身、远景、大场景,模型把细节预算分给了背景。先用同一提示词只改输出尺寸各出一张,确认尺寸是不是主因,再决定要不要改提示词里的距离和构图描述。
建议按这个顺序排查:固定提示词与采样参数,只改输出尺寸出两张图,1:1 看脸部是否变实;若两张都糊,再检查人物在画面里的占比,并在提示词里写清近景/半身/全身与人物距离;最后用原图与放大图的同位置局部裁切,区分是生成阶段就糊还是后处理放大糊。适用前提是模型、步数、随机种子等参数保持一致,任一参数变动,对照结论就不成立。风险边界:提高输出尺寸会增加显存占用和出图时间,先小批量试。
用同一提示词在两组输出尺寸下各出一张
这一步只验证一件事:输出像素量不足是不是主因。两次请求的提示词必须逐字一致,随机种子、采样步数、引导强度也保持一致,唯一变量是输出尺寸。先不要把尺寸拉得太极端,用一组常规尺寸和一组更大边长即可,例如 1024 边长与 1536 边长。文件名按“场景_尺寸_种子”命名,避免事后对不上是哪张。
# 请求 A:基础尺寸,字段名按你实际接入方式替换
POST /your-image-endpoint
{
"prompt": "一位中年男性,短发,深色针织衫,正面半身肖像,自然窗光,背景为浅灰墙面,皮肤纹理清晰,五官锐利,写实摄影风格",
"negative_prompt": "模糊, 低分辨率, 涂抹感, 过度磨皮",
"size": "1024x1024",
"seed": 1234,
"steps": 30,
"guidance": 4.0
}
# 请求 B:同一提示词,只改 size
POST /your-image-endpoint
{
"prompt": "一位中年男性,短发,深色针织衫,正面半身肖像,自然窗光,背景为浅灰墙面,皮肤纹理清晰,五官锐利,写实摄影风格",
"negative_prompt": "模糊, 低分辨率, 涂抹感, 过度磨皮",
"size": "1536x1536",
"seed": 1234,
"steps": 30,
"guidance": 4.0
}
# 保存文件名对照
portrait_s1024_seed1234.png
portrait_s1536_seed1234.png
出图后把两张图缩放到同一显示尺寸并排看,或直接 1:1 看脸部局部。判断方式很直接:如果 1536 那张的五官边缘、睫毛、皮肤纹理明显更实,说明之前主要是输出像素不足,优先把输出尺寸和人物占比一起往上调;如果两张在脸部区域的观感差不多都发虚,说明尺寸不是主因,接着做第二组对照。注意不同接入方式可能对尺寸有取值约束(如必须是 64 的倍数或存在上限),需要结合环境确认,超出上限时请求可能被拒绝或静默回退,建议看返回体里的实际尺寸字段。
在提示词里显式写清人物距离与构图
尺寸排除了,就查人物在画面中的占比。只说“一个人”时,模型可能给全身或带大量场景,脸部只占很小一块,再怎么放大也无法从生成阶段补出细节。做法是在同一尺寸下只改构图描述,出三张对照,其余条件保持不变。
- 近景(脸部为主):
面部特写,人物距镜头很近,头部占据画面大部分,背景虚化,输出文件名 portrait_close_seed1234.png - 半身:
半身肖像,取景到胸口以上,人物位于画面中央,占画面高度约三分之二,输出文件名 portrait_half_seed1234.png - 全身:
全身照,人物站在画面中央,从头到脚完整入镜,环境占比较大,输出文件名 portrait_full_seed1234.png
三张一起看,结论通常是:近景那张脸部最实,全身那张最糊但整体构图更完整。这不是模型“不会画脸”,而是全身构图下留给脸部的像素本身就少。实际出图建议按用途取舍:要看清脸就用半身或近景,要展示服装和场景就接受脸部细节有限,必要时分两次生成再人工合成,而不要指望靠堆分辨率把远处的小脸修出来。
按脸部区域的像素占比估算可用细节
把“糊不糊”换成可算的像素量,判断就有依据了。换算分三步:先取画面总尺寸,再估人物占画面高度的比例,最后估脸占人物高度的比例,三者相乘得到脸部的大致像素高。
脸高像素 ≈ 画面高度 × 人物占画面高度比 × 脸占人物高度比
脸宽像素 ≈ 画面宽度 × 人物占画面宽度比 × 脸占人物宽度比
# 代入示例(参数为假设,需按你的出图实测调整)
1024 × 0.70 × 0.13 ≈ 93 px # 全身构图,脸很小
1024 × 0.90 × 0.20 ≈ 184 px # 半身构图
1536 × 0.90 × 0.20 ≈ 276 px # 半身 + 更大输出尺寸
得到数值后自己定一条底线:脸部高度低于大约 100 像素时,五官边缘和皮肤细节基本撑不起来,观感就是发虚;接近或超过 200 像素,细节才有讨论空间。这条线不是硬指标,和模型版本、观看距离、最终展示尺寸都有关,需要结合环境确认。换算的价值在于:当你算出脸只有几十像素,就不该再在提示词里加“超高清、8K”这类词,而应该改构图或加尺寸。
区分是生成阶段就糊还是后处理放大后糊
最后一步排除放大环节。很多人把原图拿去超分或放大后再看,误以为是模型出图糊。做法是从原图和放大图的同一位置各裁一小块,拼在一起 1:1 对比。
# 以脸部左上角为起点裁 256x256 局部,坐标按实际图调整
magick portrait_s1024_seed1234.png -crop 256x256+380+300 +repage face_orig.png
magick portrait_s1024_seed1234_upscaled.png -crop 1024x1024+1520+1200 +repage face_up.png
magick face_orig.png -resize 1024x1024 face_orig_zoom.png
magick face_orig_zoom.png face_up.png +append face_compare.png
判断标准:如果原图局部本身就缺边缘、五官轮廓粘连,那是生成阶段的问题,回到输出尺寸和人物占比上解决;如果原图局部结构清楚、只是颗粒感和锐度一般,放大图出现了涂抹、塑料感或边缘光晕,那是放大环节引入的,换放大方式或直接提高原始输出尺寸更有效。裁切前先用图片信息确认放大图的实际像素与实际倍数,避免坐标和倍率对不上,得出错误结论。