ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

告别“一眼AI”:Stable Diffusion超写实人像生成全流程指南

告别“一眼AI”:Stable Diffusion超写实人像生成全流程指南

你肯定遇过这种情况:图已经生成得很有氛围感,肤色也对,构图也稳,但只要把脸放大到局部,皮肤就跟打了一层蜡一样光滑,眼睛里头没有高光细节,手指头不是多了就是少了。这种“一眼 AI”的穿帮感,其实不是某个模型不行,而是整套生成流程里少了几个关键环节。

我拿 SD(Stable Diffusion 这一类本地扩散模型)做超写实图片也折腾了大半年,从最开始“十张里碰运气出一张能看的”,到最近稳定在“六成以上出图可直接进后期”,核心变化不是换了个更贵的显卡,也不是找了某个“神级大模型”,而是把出图思路从“写一句 prompt 压抽卡”改成了“用流程去约束每一次生成”。这篇就按我的实操顺序,把步骤、参数、模型选择逻辑、踩坑点一起说清楚。

1. “一眼AI”到底差在哪:这问题比 Prompt 本身更值得琢磨

很多人拿到 SD 的第一反应是拼命学提示词,觉得只要把形容词堆到位,图自然就高级了。实际上,一张图“假不假”,根本原因通常不在 prompt,而在生成过程里两个非常具体的问题:一是中频细节丢失,二是物理规律不成立。

1.1 皮肤没有“呼吸感”是头号穿帮点

AI 生成的图片在预览小图时往往很唬人,因为缩略图把细节模糊掉了。一旦放大,皮肤区域的过渡特别“干净”,毛孔、汗毛、皮肤纹理全都不见,剩下一个磨皮过度的表面。

我的理解是,扩散模型在去噪时更偏好“容易学”的低频结构,所以它会不自觉地让光线平滑地铺满高光区,同时把高频率的皮肤细节当作噪声区别开。你看到的结果是:脸部轮廓清楚,但质感像是被统一抹过一遍。这里有几个经验性的解决办法:

  • 出图阶段就控制采样器,不要上来就用“锐化感”很强的预设。写实方向我常用 DPM++ 2M Karras,不用刻意追求“极致细节”的采样器,细节可以留给后期修复。
  • CFG 别给太高。CFG 太高会让每一点结构都往“概念原型”上靠,结果就是“你以为的写实”变成了“模型记忆里的写实平均值”,恰好就是最没有个体纹理的那种脸。
  • 用细节类 LoRA 增加皮肤质感,避免在后期用“锐化滤镜”硬拉边缘。锐化只会增加轮廓硬度,对毛孔这种级别的高频纹理是没有帮助的。

1.2 结构错乱和光线失真,是第二次穿帮

第二个典型穿帮是结构崩坏和光影不统一。尤其是手部,因为手在模型训练数据里的形态变化太大,手指角度、遮挡关系、关节比例复杂,SD 很容易在采样时给出手指粘连或多节。

更隐蔽的是光线。模型其实不清楚“物理上某束光会从哪里打过来、往哪里反射”,它只是按统计概率合成一种大致合理的照明。所以很多超写实图单看细节都像照片,但放在一起就觉得“有点怪”。比如人物脸上的高光来自左上方,而身后景物的影子却朝左,这种违和感不需要专业摄影知识也能感觉到。

既然是统计概率的结果,你就不能指望“再抽一张”能自动修正结构问题。正确做法是引入控制条件,让人物姿态和场景深度先被固定下来,再去生成皮肤和颜色。这也是后面为什么必然要上 ControlNet 的原因。

2. 先把底子打好:提示词和基础参数的正确姿势

超写实不等于在 prompt 里反复写“超写实”“8K”“细节丰富”。真正有用的提示词结构,应该在最开始就模拟“某台相机在现场拍摄”的描述方式。

2.1 正向提示词的结构:主体、动作、光线、镜头语言

我习惯按这个顺序去写正向提示词,顺序本身也影响出图质量:

  • 主体描述:人物性别、年龄段、发型、服装、整体气质。这里写具体的,不写抽象的。
  • 动作和角度:表情、肢体姿势、视线方向、拍摄角度。让画面有“抓拍感”,避免摆拍感。
  • 光线条件:natural window light、soft rim light、overcast sky 都可以。光线提示词比单纯写“高质量”有用得多,因为它直接改变体积感和光影过渡。
  • 镜头与构图参数:35mm、f/1.8、85mm、cinematic 这类词会在不同程度上影响景深和透视感。超写实方向我一般倾向用 85mm 配合 f/2.0,或者 35mm 拍环境人像。

举个例子,一个比较有效的正向提示词大概是这样:

a portrait of a woman in her late twenties, short wavy hair, denim jacket, looking over her shoulder, subtle smile, golden hour, soft window light, 85mm, f/1.8, shallow depth of field, photo taken on film medium format

注意:不要把所有“画质形容词”都放前面,模型对 prompt 的注意力是按位置衰减的,主体、光线、镜头语言这种和物理成像强相关的词,尽量靠前。

2.2 负向提示词不是随便堆词,关键在“语义排除”

负向提示词的逻辑不是“告诉模型不要画丑东西”,而是用一个具体的、模型能理解的概念去排除同类特征。比如你写“bad anatomy, extra fingers, deformed hand”,模型确实会在采样过程中降低这些语义出现的概率。但你写“low quality, jpeg artifacts”这类词,它只会把整张图往“过度平滑”上拉,反而让皮肤细节丢失。

我自己的负向提示词相对比较紧凑:

bad anatomy, bad hands, extra fingers, missing fingers, deformed fingers, poorly drawn face, mutation, blurred, oversmoothed, flat lighting, oversaturated, no film grain, watermark, text

后面几个“oversmoothed”“flat lighting”是我的重点,因为它们直接对应超写实最常见的光滑塑料感问题。“no film grain”是我个人偏好,因为我喜欢真实胶片质感的层次,而不是干净平滑的数码感。

2.3 采样、步数、CFG、尺寸怎么搭配

到现在还有人在用默认的参数组合,实际那是为“通用出图”设计的,对超写实并不友好。我试过相对稳定的写实参数组合是这样的:

参数推荐值说明
采样器DPM++ 2M Karras细节和速度均衡,写实向优先
步数28~35太少结构不稳,太多不会继续变好
CFG3.5~5写实取 4,风格化取 6~7
尺寸768x1024 或 728x960接近 3:4 竖构图,人脸比例更自然
VAE与模型匹配即可不匹配会让颜色偏灰偏脏

CFG 这一点多说几句。很多人觉得 CFG 越高越“听提示词”,但在写实方向,CFG 高于 6 以后,画面会出现一种很明显的“过度刻板”感,脸的颜色会向模型记忆的“标准肤色”偏移,同时皮肤开始变塑料。我自己出写实人像几乎固定在 4 左右,特殊构图才会上到 5.5。

尺寸方面,如果直出 512x512 再拉大,后遗症会特别多。写实人像我至少 768 宽,否则后期放大时脸部和发丝的纹理结构很难救回来。

3. 模型选择:超写实的核心变量其实在这

基础模型决定了整张图的“审美底子”。很多教程喜欢让你下载十几个模型反复抽卡,我的经验刚好相反:固定一个你熟悉的写实向底模,把精力花在理解它的脾气上,比不断换大模型更有效率。

3.1 底模和微调模型的定位差异

SD 的生成本质上是“模型 + 附加 LoRA + ControlNet + 采样参数”的组合。所谓底模,决定了模型原本理解的“世界是什么样的”:同样是写一张街头人物照片,有的底模偏纪实感,有的偏商业人像修图感,出来的肤色、光影风格差异很大。

超写实方向我个人更推荐“纪实摄影向”的底模,而不是“韩系精修人像向”的底模。前者保留了更多的自然质感,后者虽然第一眼很惊艳,但放大后很容易暴露光滑皮肤和低细节问题。

另外一个常见误区是,一些人下载“全能模型”,想同时在真实感、光影、风格化上都要。最后出来的图,往往哪个维度都差一口气。我自己的处理方式是:

  • 选一个熟悉的写实向底模作为“地基”,长期使用;
  • 有针对性的 LoRA 去弥补它的短板,比如皮肤纹理、镜头感、服装材质;
  • 不去频繁换大模型,因为换一次模型,等于把之前积累的提示词经验和参数习惯全部推倒重来。

3.2 LoRA 的正确打开方式:少而精,目的明确

LoRA 是超写实里最能改变出图质量的变量,但也是最容易用错的一环。许多人一次性挂三个 LoRA,每个权重都开到 1.0,结果特征互相打架,脸部结构反而变得很奇怪。

我用 LoRA 的核心原则是“一个目的,一个 LoRA”。如果你觉得画面缺乏皮肤纹理,就挂一个写实皮肤细节 LoRA;如果觉得发丝不够细腻,就挂一个发丝材质 LoRA。尽量不要同时挂两个以上影响脸部特征或材质的 LoRA。权重默认我很少开满,0.8 左右效果最好,特殊情况才会调到 0.9。

挂 LoRA 时还要注意它的“影响范围”。有些 LoRA 是场景向的,有些是人物脸部特征向的。如果你想保持人物的可辨识度,那人物特征 LoRA 一定不要和全局风格 LoRA 叠加过猛,否则画出来的人会变成“某个通用模板脸”。

安全提示在这里也要说一次:模型和 LoRA 尽量从官方仓库或可验证来源的社区下载,不要碰那些来路不明、刻意修饰过的“一键大模型包”。你不知道它内部整合了哪些权重,很可能埋了色彩偏移或者不稳定的兼容问题,到时候你排查半天错误,浪费的都是自己做图的时间。

4. 控制画面结构:ControlNet 与局部修复,解决“崩”字难题

“超写实”有三个字,重点不只在“写实”,还在“超”和“像”。想让人一眼看不出 AI,结构就不能乱。ControlNet 在这里的作用不是让你“偷懒”,而是让你把画面的骨架先画好,再由模型去填充材质和光影。

4.1 用 ControlNet 约束姿态、深度和边缘

ControlNet 是一个开源的控制方案,它允许你把一张参考图片的姿态或者深度图喂给 SD,让生成结果在结构上遵循参考图。对于超写实人像,最常用的是姿态控制(骨架)和深度控制(空间关系)。

姿态控制适合解决“动作不自然”和“手部位置跑偏”的问题。给 ControlNet 喂一张姿态骨架图,模型在采样时就不会自由发挥肢体角度,手的位置也更容易保持在合理范围。深度控制则适合复杂场景,比如人物站在街角、有前后遮挡关系的时候,深度图可以约束远近层次。

但 ControlNet 并非“开得越重越好”。控制强度过高,画面会失去生成模型带来的真实纹理,甚至出现轮廓僵硬的感觉。我一般把 ControlNet 的强度设置在 0.5~0.7,让它“框住结构”但不过分限制材质细节。还有一个容易忽略的点:使用高分辨率修复时,ControlNet 不要重复施加,或者至少要降低强度,否则两轮处理会让结构叠加出重影。

4.2 面部修复和手部重绘:剪裁、重绘、再融合

即使前面都做对了,一次生成里还是有概率出现五官崩坏。我的流程里一定会加一步“局部修复”。现在比较成熟的做法是先用扩展程序先识别脸部位置,再对脸部区域做一次针对性重绘。这样做的原理是:局部修复只改变被遮挡区域的像素,不会影响整张图的光影和构图,第二次采样时模型可以专注于五官和细节。

  • 对脸部进行修复时,重绘幅度控制在 0.2~0.3,太低没效果,太高会把脸型改变,产生“换了一个人”的问题。
  • 手部如果出现问题,我会直接用手部遮挡区域做局部重绘,而不整体重新生成。手部结构复杂,靠“再抽一次”的成功率不高,重绘时配合姿态控制会更容易出结构正确的手。
  • 修复之后,如果需要进一步放大,再用放大模型对整张图做一次超分,这样修复痕迹会被重新采样覆盖掉。

这一套流程组合下来,我在出图时基本不用再纠结“这张脸崩了要不要重新抽卡”,因为大多数结构问题都能在修复阶段解决,而修复阶段改的只是局部结构,画面整体氛围仍然保持稳定。

5. 一次完整的实操演示:从出图到大图的完整流程

前面讲的都是理论和参数,这里放一套我实际出图会用到的完整流程。你不需要完全照抄,但可以照着这个思路去检查你自己步骤里缺了什么。

5.1 一套我自己常用的出图流水线

第一步:固定随机种子,先用基础参数出草图,同时不添加 ControlNet。这轮的目的是确定构图、光线和整体氛围,不追求一次到位。参数大致如下:

positive prompt: 写实人像词 + 自然光 + 85mm negative prompt: bad anatomy, bad hands, oversmoothed... sampler: DPM++ 2M Karras steps: 30 cfg scale: 4.0 size: 768x1024 seed: 固定为一个值,比如 20241016

第二步:草图觉得构图可以了,再引入 ControlNet,用一张姿势参考图约束人物姿态。如果画面里只有半身人像,这一步也可以跳过,但一旦涉及全身或复杂动作,ControlNet 会在很大程度上避免肢体错乱。

第三步:在修复工具里对脸部做一次局部修复,重绘幅度设在 0.25。同时如果你有比较偏好的脸部五官 LoRA,可以在这里挂上,注意 LoRA 权重不要超过 0.8。

第四步:放大图片。这一步我建议用“两次放大”的思路。第一遍先做小比例提高分辨率并保留足够的细节,第二遍再做一次轻微的超分辨放大。不要一上来就拉好几倍,很容易让皮肤变成橡胶质感,修复阶段的毛孔细节也会被进一步抹平。

5.2 放大策略和画质收尾

放大这块值得单独讲一下。很多人喜欢直接开超高倍数放大,觉得大图就是“清晰”。但超写实的高清不是“锐利”,而是“有细节层次”。过度的放大锐化会把皮肤变成磨砂玻璃,把发丝变成一圈圈白边,反而更假。

我的习惯是:

  • 先放大到目标尺寸的 90% 左右,观察细节是否自然;
  • 如果细节偏软,用轻微锐化提升边缘,而不是再用放大模型重采样一遍;
  • 最后检查皮肤和背景交界处有没有“光晕”,如果有,就在局部做一下模糊过渡。

这个阶段的另一个tips:当你觉得一张图“颜色很稳但太干净”,可以再加一层非常轻的胶片颗粒,或者用调色工具把高光阴影拉出一点差异。颗粒不是用来掩盖问题,而是让数字生成的画面更接近真实感光元件的质感。

6. 常见问题排查速查表:踩坑记录

做超写实图片,最烦人的不是“不会写提示词”,而是“同样的问题反复出现却找不到原因”。这里我把踩过的坑按现象整理成一张速查表,排查时可以对号入座。

6.1 字迹、手指、眼睛等个别部位崩坏

现象可能原因处理方式
手指多或少、粘连模型对复杂手部结构理解有限局部修复手部 + 姿态控制约束
眼睛无神、高光丢失脸部修复幅度过大或底模细节不足降低重绘幅度,单独补眼睛区域
皮肤像塑料CFG 过高,或 VAE 不匹配CFG 降到 4~5,检查 VAE 是否正常
脸型不稳定LoRA 权重过高或叠加冲突调整 LoRA 权重,减少叠加数量
画面偏灰、色彩断层采样器和 CFG 组合不当换 DPM++ 2M Karras,CFG 保持在 4~6

6.2 显存、速度与重复性问题的解决

上面表格里是比较内容层面的问题,下面这两个更偏运行环境,但也很常见。

显存不够的时候,很多人会直接降低分辨率,但这样会牺牲构图的稳定度。我的办法是分块处理:先生成低分辨率整体图,再用局部修复分别处理脸部、手部、背景,最后合成。这样既避免显存爆掉,又保留了足够多的细节空间。

重复性问题也是很多人卡住的点。明明提示词和参数都没变,但每次结果都不同,这是随机种子的影响。如果你需要反复迭代一张图,第一件事就是固定 seed,然后再逐步微调提示词或参数。否则你根本不知道某次出图变好是“参数对了”还是“运气好”。

我想特别强调的一个经验是:不要在一个问题上死磕。如果你连续三次用同一套流程出图都崩在同一处,那大概率不是运气问题,而是某个前置条件不对。这时候要做的不是继续调 prompt,而是回头检查底模和 ControlNet 的匹配程度,或者换一个思考角度重写提示词。


这套流程看着步骤多,实际上跑顺之后非常机械:草图、骨架、局部修复、放大,每一轮只做一件事,每件事都有明确目的。我的体会是,超写实图片真正难的不是“技术门槛”,而是每一步都愿意慢下来做判断。有时候一张图我宁愿把重绘幅度降到 0.2 慢慢试,也不愿意一键放大十次赌概率。

如果你刚开始做,建议先照着这篇的参数组合跑一轮,不要急着堆叠各种增强功能。先让画面“像照片”,再考虑“更有摄影感”。等你对底模的脾气熟悉了,再去调整光线提示词和 LoRA 权重,那时候你会发现自己不需要靠运气也能稳定出图。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进