人像类 AI 生成这两年被讨论得最多,但真正落地的时候,大部分人卡在同一个地方:出图好看不难,难的是每次都长成同一个人。抽卡抽到一张满意的,第二天再生成就换了张脸,这种体验没法用在正经活儿上。sd-webui-EasyPhoto之所以在社区里被反复提起,就是因为它把「AI 人像 LoRA 训练」和「双阶段推理生成」这两件事打包成了一条流水线:你丢进去十几张同一个人的照片,它自己完成人脸检测、裁剪、打标、训练、验证,然后你选个模板,它再分两步把图给你生成出来,第一步搭骨架,第二步把脸换回去。整个过程不需要你手写训练脚本,也不需要你懂 diffusers 的底层调用。这篇内容面向的是已经摸过一点 WebUI、但还没系统跑通过人像定制的朋友,也照顾完全没接触过 LoRA 训练的新手——我会把每个参数为什么这么设、每一步翻车了该往哪查,都摊开讲清楚。
1. 这套方案到底在解决什么问题
1.1 人像生成的三道坎:一致性、可控性、质感
把话说透,AI 人像定制之所以比风景、比产品图难,是因为它同时被三个指标卡着。一致性指的是同一张脸在几十张不同场景里要保持稳定,眉眼间距、下颌角、鼻梁高度这些细节不能飘;可控性指的是姿势、构图、服装、光位要能被人为指定,而不是全靠提示词祈祷;质感指的是皮肤、发丝、眼神光这些微观细节要经得起放大看。三者里面任意一个掉链子,成片就没法交付。
常规的文生图流程在这三件事上都不占优势。你在提示词里写「一个短发女性,侧脸,窗边自然光」,模型给你的是一张漂亮的陌生人的脸——漂亮但陌生。想让它认人,要么靠img2img拿原图垫着,结果是姿势被原图锁死;要么靠ControlNet控制结构,结果脸依然是随机抽的。EasyPhoto 的思路是把这三个指标拆开,用不同的技术手段分别解决:一致性交给LoRA 微调,可控性交给模板加 ControlNet,质感交给人脸修复与局部重绘。理解了这种「分而治之」的拆解方式,后面所有参数你都能自己对上号。
注意:很多人第一反应是「我把提示词写详细点不就行了」。人脸的个体差异是像素级的,语言描述的分辨率根本不够。提示词能描述「高鼻梁」,但描述不了「鼻梁在两眼之间偏左两毫米的那道小凹陷」,而这恰恰是熟人一眼认出你的依据。
1.2 什么样的活儿适合用它,什么活儿别硬上
从实际使用看,这套流程最舒服的场景是半身到胸像的人像写真、电商模特换装、社交内容配图、证件照风格统一化这类需求。这些场景的共同点是:人脸的像素占比足够大(通常超过画面高度的 1/6),背景复杂度可控,姿势不需要极端(大幅度扭转、倒立、严重遮挡都不行)。
反过来,有些活儿别硬上。全身远景、多人合影、戴墨镜口罩大墨镜遮挡、强烈逆光剪影、婴儿大幅度表情变化——这些场景里人脸区域的像素可能只有几十个,任何基于人脸特征点的方法都会失准。我见过有人拿一张侧脸 90 度的照片去训练,出来的结果五官全糊,还以为是参数没调好,其实是数据阶段就已经废了。判断标准很简单:把照片缩到 512×512,如果这时候你还能一眼认出是谁,那这张图就有训练价值;如果缩完只剩个模糊轮廓,直接剔掉。
1.3 它不是一个「黑盒一键出图」工具
需要提前打个预防针:EasyPhoto 降低了门槛,但它没有消除门槛。它把训练脚本封装成了按钮,把推理流程封装成了滑块,可数据质量、参数含义、失败排查这些事还是得人来判断。我个人的定位是——它是一个把 80% 的重复劳动自动化掉的流水线工具,剩下的 20% 判断力,恰恰决定了你出的图是「像」还是「非常像」。所以下面我会花相当篇幅讲数据准备和参数背后的逻辑,而不是简单地告诉你「点这个按钮」。
2. 整体架构拆解:为什么是 LoRA 加双阶段推理
2.1 三个模块各自的分工
整条链路拆开看就三段。第一段是数据预处理:插件对你的原始照片跑人脸检测,拿到人脸框和五点关键点,按框裁出一个正方形的人脸区域,同时保留一张包含肩颈的较大裁剪,再把裁好的图连同文件名、人脸位置写进训练用的元数据。这一步的本质是「把非结构化的照片整理成模型能吃的规整样本」。
第二段是 LoRA 训练:以写实类底模为基础,用这批裁剪图做小规模微调,只更新少量低秩旁路参数,产出一个几十到一百多兆的权重文件。训练期间插件会定期跑验证:用固定的几条提示词生成样张,再拿人脸识别模型去比对这些样张和训练集里的人脸,算一个相似度分数,最后把分数最高的那个检查点挑出来。
第三段是双阶段推理:第一阶段按你选的模板生成一张「结构正确但脸不一定对」的图,第二阶段在上一张图的基础上做人脸区域的局部重绘,用训练好的 LoRA 加上人脸特征约束,把脸往目标身份上拉,一次生成多张候选,用相似度打分挑最好的一张,最后叠一层人脸修复。
2.2 为什么选 LoRA,而不是别的定制方案
这条路线上其实有好几种技术选择,社区里也一直有争论。我把常见的几种放在一起对比,你就明白 EasyPhoto 为什么走 LoRA 这条线。
| 方案 | 训练成本 | 身份还原度 | 对底模的污染 | 适用场景 |
|---|---|---|---|---|
| Textual Inversion(文本反转) | 极低,几分钟 | 偏低,只能抓住风格和大致气质 | 无 | 概念、画风类 |
| HyperNetwork | 低 | 中等,细节容易糊 | 无 | 画风微调 |
| DreamBooth 全量微调 | 高,需要大显存 | 高 | 严重,权重被整体改写 | 单一主体的极致还原 |
| LoRA / LoCon | 中低,单卡可跑 | 高,接近全量微调 | 无,独立权重文件 | 人像、风格、物品定制 |
| 免训练的身份注入类方案 | 无 | 中等偏高,依赖参考图质量 | 无 | 快速试水 |
LoRA 的数学本质是「冻结原权重,在旁边挂一对低秩矩阵做增量更新」。假设原模型某个注意力层的权重矩阵是 1024×1024,全量微调要更新一百多万个参数;LoRA 把它拆成 1024×r 和 r×1024 两个小矩阵相乘,r 取 64 或 128,参数量直接掉一个数量级。带来的好处很直接:显存占用小、训练快、产出文件小、可以随时插拔不污染底模。对一个需要反复切换不同人物身份的工作流来说,这种「可插拔」特性比峰值精度更重要。
免训练的身份注入类方案确实更省事,上传一张参考图就能出图,但它在大幅度姿势变化和复杂光照下的稳定性明显不如微调。我自己的测试结论是:如果只是做几张头像试试水,免训练方案够用;如果要做一套几十张风格统一、姿势各异的写真,还是老老实实训练一个 LoRA 更稳。
2.3 双阶段推理为什么要拆成两段
这是整个方案里最容易被误解的设计。很多人会问:既然已经训了 LoRA,为什么不在第一阶段就用 LoRA 直接生成一张脸对的图?答案是结构和身份这两个目标的优化方向是冲突的。
第一阶段如果强行用 LoRA 加高权重去压身份,模型为了保住脸,会不自觉地把姿势、构图拉回训练集里出现过的样子——训练集里全是正面半身照,那生成出来就永远是正面半身照,模板里那些坐在窗边、侧身回头的构图全部失效。这就是典型的过拟合外溢。
拆成两段之后,第一阶段彻底放飞,用模板图加 ControlNet 去保证结构,LoRA 权重调低甚至不启用,只负责让画风统一;第二阶段拿着第一阶段的成品图当底,只把人脸区域框出来做局部重绘,这时候模型的自由度被限制在一个小方块里,它没法再去改变姿势构图,只能专心把脸画对。约束范围越小,身份还原的精度越高,这个道理和修图时先定构图再精修五官是一个逻辑。
3. 环境搭建与安装落地
3.1 硬件底线与显存估算
训练和推理的显存需求不是一个量级,我按 512 分辨率和 768 分辨率分别估了一遍,供你对号入座。下面这组数字是常见实践下的经验值,不同底模、不同优化器会有浮动,实际以你机器上跑起来为准。
| 环节 | 分辨率 | 批量 | 大致显存 | 备注 |
|---|---|---|---|---|
| LoRA 训练 | 512×512 | 1 | 8~10 GB | 开启梯度检查点后更省 |
| LoRA 训练 | 768×768 | 1 | 14~18 GB | 需要更大 rank 才有意义 |
| 第一阶段生成 | 512×768 | 2 | 6~8 GB | 含 ControlNet 常驻 |
| 第二阶段重绘 | 512×768 | 4 候选 | 10~12 GB | 候选数直接影响占用 |
| 人脸修复 | 任意 | 1 | 2~4 GB | 可单独跑,吃显存少 |
显存只有 8 GB 的话,建议把训练分辨率压在 512,第二阶段候选数从默认的 4 降到 2,人脸修复放到 CPU 上跑(慢但能出结果)。别硬扛,显存爆了不是报个错就完事,有些情况下会让整个 WebUI 进程直接退出,前面跑了一半的训练白费。
3.2 安装步骤与目录约定
EasyPhoto 是挂在 WebUI 下的扩展,安装方式和其他扩展一致。我习惯用命令行装,比在界面里点更可控,出问题也容易看日志。
# 进入 WebUI 的扩展目录 cd stable-diffusion-webui/extensions # 拉取扩展仓库 git clone <扩展仓库地址> sd-webui-easyphoto # 回到 WebUI 根目录安装依赖 cd .. ./venv/bin/python -m pip install -r extensions/sd-webui-easyphoto/requirements.txtWindows 环境下把./venv/bin/python换成venv\Scripts\python.exe,路径分隔符也要跟着改。装完之后启动 WebUI,在顶部标签栏能看到对应页签就说明加载成功了。
底模的选择上,训练和推理必须用同一个写实类底模,这一点没有商量余地。用 A 底模训出来的 LoRA 挂到 B 底模上,身份还原度会掉一大截,因为不同底模对「人脸」这件事的内部表征方式根本不一样。我一般固定用一个偏写实、皮肤纹理保留较好的 1.5 系底模,训练、推理、验证全程不换,出问题的概率最低。如果是 768 以上的高分辨率流程,就要换成对应的 XL 系底模,注意 LoRA 和底模的大版本必须对齐,1.5 的 LoRA 挂到 XL 上会直接报维度不匹配。
3.3 路径与缓存的几个坑
扩展目录下会有几个关键路径,建议先摸清楚,后面排查问题时能省很多时间。训练产物、验证图、缓存文件一般分散在扩展目录和 WebUI 的输出目录里,照片原图和预处理后的裁剪图要分开存放。我遇到过磁盘满了导致训练在最后一步写文件失败的情况,因为缓存图一直在累积没人清,几十次试验下来占了几十 GB。养成习惯,每跑完一轮就去清一次临时目录,尤其是那种只跑了一百步就中断的失败试验,缓存文件一个不少地留在那儿。
4. 训练数据准备:最容易翻车的一步
4.1 照片的硬指标清单
这一节我建议你逐条对照着筛。数据决定上限,参数只能逼近上限,这句话在人像定制里是铁律。
- 数量:5 到 20 张,我一般用 12 到 15 张。少于 5 张,模型抓不住面部特征的稳定成分,容易把某一根碎发当成身份标识;超过 20 张,边际收益急剧下降,训练时间却线性增加。
- 分辨率:人脸区域至少 512×512 像素。整张图是 2000×3000 但人是远景,裁出来只有 100×100,那和直接拍一张 100×100 没区别。
- 角度分布:正面占一半以上,剩下的给左右 30 度以内的侧脸、轻微俯仰。极端角度一张都不要。
- 光照:尽量统一。全是柔和自然光最好;如果混了强烈顶光和逆光,模型会学到两套完全不同的阴影逻辑,出图时光位容易错乱。
- 遮挡:刘海遮眼、口罩、手指挡脸、墨镜,全部剔除。模型会把这些遮挡物当成脸的组成部分,之后你换任何场景,它都会想方设法给你加回来。
- 妆容:素颜或淡妆为主。浓妆和大浓妆混在一起,会得到一个「半永久浓妆」的脸,想生成自然状态就没戏了。
- 表情:微表情可以,大笑、张嘴、眯眼这类会改变面部几何形状的,控制在一两张以内。
提示:筛选照片时有个很实用的办法——把这批照片并排铺开看。如果一眼扫过去觉得「这是同一个人在同一天拍的」,那这批数据就是合格的;如果一眼扫过去觉得「这几张是同一个人,那几张不太确定」,那就先把不确定的剔掉再说。
4.2 自动预处理流水线在干什么
你把照片拖进去之后,插件会依次做几件事。先跑人脸检测,拿到人脸框和五个关键点(双眼、鼻尖、两嘴角);然后以关键点为基准做相似变换,把人脸摆正、对齐到一个标准模板上;接着按固定比例裁出人脸区域和更大的肩颈区域;最后把文件名、人脸框坐标这些信息写进元数据,供后续训练和推理定位人脸用。
这套流程里最需要注意的是检测失败的静默处理。有些照片的人脸检测模型给不出结果,比如侧脸太偏、分辨率太低、戴了墨镜,插件的表现可能是不报错但那张图被跳过,也可能是给了一个错误的人脸框。所以预处理跑完之后,一定要把裁剪结果过一遍。我见过裁剪框偏到只剩半张脸的,训练出来的 LoRA 出图时人脸永远是斜的,排查了半天才发现是数据阶段的问题。
4.3 数据扩充与三条经验法则
如果手头照片不够,可以用水平翻转做简单扩充,但要注意两点:左右脸不对称比较明显的人,翻转后会产生「镜像脸」,训练时要控制翻转样本的比例;纯侧脸不要翻转,翻转后就变成反方向的侧脸,会给模型注入矛盾信息。
三条我自己总结的法则:宁可少而精,不要多而杂——10 张干净照片的效果通常优于 30 张杂乱照片;先看裁剪结果再训练——预处理这步花两分钟检查,能省下半小时的无效训练;每次只换一个变量做对比——不要一次改五个参数然后看结果,那样你永远不知道是哪个改动起了作用。
5. LoRA 训练参数与过程观察
5.1 核心参数该设多少
下面这张表是常用的起点配置,覆盖了大部分需求。表格里的数值是基于 512 分辨率、12 张训练图的场景,你可以按比例调整。
| 参数 | 常用取值 | 作用 | 调大之后 |
|---|---|---|---|
| 学习率 | 1e-4 | 每步更新的幅度 | 收敛快但容易崩,出现色块、噪点 |
| 网络维度 rank | 64~128 | 低秩矩阵的宽度 | 表达能力强,但更易过拟合,文件更大 |
| 网络 alpha | rank 的一半 | 缩放系数 | 影响更新强度,通常设 rank/2 |
| 最大训练步数 | 600~900 | 总迭代次数 | 超过临界点后开始丢细节、变僵硬 |
| 批大小 | 1 | 每次喂入的图数 | 需要线性放大学习率,显存吃紧 |
| 梯度累积 | 1~4 | 等效放大批大小 | 用时间换显存,小卡常用 |
| 分辨率 | 512 | 训练时人脸区域尺寸 | 分辨率越高细节越多,显存翻倍 |
| 验证间隔 | 100 步 | 多久出一次样张 | 更细的检查点选择,训练时间略增 |
学习率设 1e-4 是个人像 LoRA 的甜点区。设成 5e-4 的时候我在几个案例里都观察到类似现象:前两百步看起来还行,四百步之后开始出现肤色不均、脸部有色块,这就是步子太大直接跳出了好的解空间。设成 1e-5 又太保守,八百步跑完人脸还是「有点像我但说不清哪不像」。rank 的取舍更微妙:64 够用,128 在细节上确实更锐利,但如果你只有 8 张训练图,128 的 rank 必然会记住照片的噪声,出图时出现「人脸很像我但背景里莫名有训练照片的家具」这种诡异现象。
5.2 训练步数怎么算,不是拍脑袋
训练步数和图像数量、批大小、累积步数、轮数之间是有一组换算关系的:
总步数 = 轮数 × 图像数 ÷ (批大小 × 梯度累积) 例:12 张图,批大小 1,累积 1,跑 60 轮 总步数 = 60 × 12 ÷ (1 × 1) = 720 步要注意这里的「轮数」不是传统意义上的概念微调,因为每一轮喂进去的是同一批图,模型很容易在几十轮内就记住了。人像 LoRA 的经验区间是:每张图跑 50 到 80 步。12 张图就是 600 到 960 步,取中间值 800 步是个稳妥的起点。图越少,单图步数要给得越多,但也不要超过 100 步/图,否则过拟合的概率远超收益。
判断是否过拟合有个很直观的方法:拿训练集里没有的姿势去生成,比如训练图全是正面,你就让它生成一张低头侧脸。如果脸还是像的、结构也正常,说明泛化不错;如果脸变形、五官挤压、或者干脆生成了一张正脸贴到侧身的头上,那就是过拟合了,回去把步数砍两成、rank 降一档。
5.3 训练过程中盯什么指标
跑起来之后别放着不管,有几个东西值得盯。损失值的绝对数值意义不大,要看趋势,正常情况下应该是前期快速下降、中期缓慢波动、后期基本走平。如果出现剧烈震荡甚至突然飙升,通常是学习率太高或者某张数据有问题。验证样张才是真正有价值的东西,插件每 100 步会用固定提示词出一组图,你看这组图里的脸是不是越来越像、细节是不是越来越稳。
最关键的还是相似度打分。插件会自动计算验证图和训练集人脸的相似度,训练结束后把分数最高的那个检查点选出来。这个机制很实用,因为它能规避「跑满步数反而变差」的问题。我建议训练结束后手动去看一眼分数曲线,如果分数在第 300 步就到顶、后面一直在平台期波动,那下次可以直接把最大步数设到 500,省一半时间。
5.4 训练失败的典型表现对照
| 现象 | 大概率原因 | 处理方向 |
|---|---|---|
| 出图完全不像 | 数据太杂或步数不足 | 精简数据、单图步数加到 80 |
| 像但僵硬、表情呆板 | 过拟合 | rank 降到 64、步数砍两成 |
| 脸上有色块、噪点 | 学习率过高或数据分辨率不齐 | 学习率降到 5e-5、统一裁到 512 |
| 每张图都带同款背景/衣服 | 数据背景太单一,模型记住了背景 | 加入背景多样的照片,或预处理时做抠图 |
| 出图人脸位置漂移 | 预处理裁剪框偏移 | 回看裁剪结果,剔除异常样本 |
6. 双阶段推理:从模板到成片
6.1 第一阶段:模板匹配与结构锁定
第一阶段的核心是「给定一个结构,让模型往里面填内容」。模板本质上是一张构图参考图,插件会从模板里提取边缘、深度或者姿态信息,通过 ControlNet 注入生成过程。这一步 LoRA 的作用被刻意压低,因为它负责的是画风一致性,不是身份。
选模板有个诀窍:模板的构图复杂度和你的需求复杂度要匹配。想要一张大特写,就用构图简单的模板,背景干净、人物居中;想要环境人像,就用带场景的模板,但这时候人脸像素占比会下降,第二阶段的还原难度会上升。我一般会把模板分成三档——特写档(脸占画面 1/3 以上)、半身档、环境人像档,按最终用途选,而不是按模板好不好看去选。
ControlNet 的权重不要给满。设到 0.8 到 1.0 之间,结构会锁得很死,但画面容易僵;设到 0.6 左右,模型有余地去补细节,自然度更好。我的习惯是从 0.75 起步,看第一张效果再调。
6.2 第二阶段:人脸融合、多候选择优与修复
第二阶段是整个方案里最精巧的部分。拿到第一阶段成品后,插件会重新对成品跑一次人脸检测,把检测到的人脸区域框出来,然后只在这个区域里做局部重绘。重绘时的条件包括:训练好的 LoRA、目标人脸的参考特征、以及你填的补充提示词。
关键参数是人脸相似度阈值。它决定了候选图里哪些会被判定为「合格」。设得太高(比如 0.85 以上),可能全部候选都不达标,白跑一轮;设得太低,又容易放进不像的图。0.5 到 0.6 是比较务实的区间。插件通常会一次性生成多张候选,逐张打分,把分数最高的那张输出,如果全都不达标,就会调整参数重试。
人脸修复这一步单独说。皮肤质感的重绘和人脸几何的还原是两回事,局部重绘负责后者,修复模型负责前者。修复强度我一般给 0.3 到 0.5,给太高会把皮肤磨成塑料,纹理全丢,出图一看就是 AI 味;给 0.2 以下又修不干净,原图里的噪点和瑕疵都留着。这个值跟你的底模质量强相关,写实类底模本身质感好的话,修复强度可以再往下压。
6.3 参数组合实测对照
| 场景目标 | 相似度阈值 | 修复强度 | ControlNet 权重 | 候选数 |
|---|---|---|---|---|
| 证件照风格 | 0.65 | 0.4 | 0.95 | 4 |
| 日常头像 | 0.55 | 0.35 | 0.75 | 4 |
| 环境人像 | 0.50 | 0.30 | 0.65 | 6 |
| 快速试水 | 0.45 | 0.50 | 0.70 | 2 |
补充提示词这一栏容易被忽略,但它很有用。写清楚你要的光线质感、镜头焦段感、皮肤状态,能明显改善成片观感,比如加上「柔和窗光、浅景深、自然肤质」这类描述词。但别在这里重复描述长相,长相交给 LoRA 和特征约束,提示词写长相只会打架。
7. 常见问题排查实录
7.1 训练侧的高频故障
训练启动就报显存不足。先确认分辨率是不是被默认设成了 768,再检查是不是有其他进程占着显存。把批大小降到 1、打开梯度检查点、关掉同时运行的其他生成任务,九成以上能解决。如果还不行,就是底模本身太大,考虑换一个更轻量的写实模型。
训练跑完了但 LoRA 加载报错。多半是底模和 LoRA 的大版本不匹配,或者扩展版本和 WebUI 版本不兼容。先看日志里的维度信息,报维度不符基本就是版本错配;如果是文件读不出来,检查文件是不是完整写入,磁盘满导致的半截文件很常见。
验证图全是黑的或者全是噪点。这是训练发散,通常是学习率过高或者数据里有损坏文件。把学习率砍半重跑,同时把数据重新过一遍,找那种打开就花屏的图。
7.2 推理侧的高频故障
生成的人脸完全不像。按可能性从高到低排查:LoRA 有没有真的加载上、相似度阈值是不是设得太宽松导致放行了低分候选、模板分辨率是不是太低导致人脸像素不够、第一阶段 ControlNet 权重是不是太高把脸框死了。我遇到最多的是第一个——以为加载了其实没生效。
人脸位置错乱,出现两张脸的残影。这是第二阶段的人脸检测框出了问题,可能是第一阶段生成的图里人脸被头发或手遮挡,检测框给偏了。换一个更简洁的模板,或者把补充提示词里加上「无遮挡、完整面部」试试。
出图肤色和本人差太多。检查训练数据里的光照是不是太单一,同时推理阶段的光照描述词和数据里的光照要匹配。训练图是室内暖光,你推理时写「户外正午强光」,肤色必然走偏。
多张候选全都一样。说明随机种子被固定了,或者候选生成时的噪声参数被设成了同一值。检查种子设置,把它设成 -1 让每张走随机。
7.3 排查速查表
| 症状 | 第一检查项 | 第二检查项 |
|---|---|---|
| 不像 | LoRA 是否加载 | 相似度阈值与候选数 |
| 图像糊 | 人脸区域像素够不够 | 修复强度是否过高 |
| 结构僵 | ControlNet 权重 | 模板构图复杂度 |
| 出图慢 | 候选数与分辨率 | 是否有其他任务抢显存 |
| 忽好忽坏 | 底模是否混用 | 训练数据是否光照矛盾 |
8. 实操心得与边界认知
8.1 我自己踩过的几个坑
第一个坑是贪多。刚开始做的时候,我觉得照片越多越好,塞了三十多张进去,角度妆容全都不一样。训出来的 LoRA 出图时好时坏,同样的参数跑两次结果差很多,排查了半天才意识到是数据内部的矛盾在打架——一会儿学到浓妆,一会儿学到素颜,模型自己也没想明白该听谁的。后来砍到 14 张统一条件的照片,稳定性立刻上来了。
第二个坑是迷信默认参数。默认步数是通用的折中值,不是为你的数据调的。我有一次只用了 6 张照片,还按默认的 800 步跑,结果严重过拟合,出图表情全是同一个僵硬的微笑。后来改成单图 80 步、总共 480 步,效果反而更好。参数没有绝对的好坏,只有和数据匹不匹配。
第三个坑是跳过裁剪检查。省那两分钟,后面可能要花两小时重新训练。现在我固定流程:预处理完先看裁剪图的九宫格,确认每张都是完整的正脸,再去点训练。
8.2 质量判定的三个肉眼标准
出图之后怎么判断合格?我的三条标准:放大到 100% 看眼睛,眼白和瞳孔的边缘是否干净,这里的细节最能暴露模型有没有真的学到;看脖子和下巴的过渡,合成痕迹最常出现在这个位置,皮肤纹理断裂或者阴影不连续就是有问题;眯起眼睛看,模糊状态下如果能一眼认出是谁,说明骨相抓对了,而不是靠某个局部特征硬凑出来的相似。
8.3 使用边界这件事必须说清楚
这套技术能做的事和不能做的事,边界其实很清楚。它能把一个人的面部特征迁移到新的场景里,这意味着任何使用都必须建立在本人知情同意的基础上。用于自己的形象创作、用于有授权的商业拍摄、用于已获授权的模特素材,这些是正向的。拿别人的照片去做任何未经许可的内容,不管技术上多容易实现,都是越界的。行业中已经有明确的共识和规范,实际落地时留痕、存证、取得书面授权这些流程一步都不能省。
另外要留意的是不要追求过度逼真。现在很多人追求「完全看不出是 AI」的效果,这个方向本身没问题,但一旦脱离了授权范围,技术越逼真风险越大。我个人的做法是:产出图里保留合理的艺术化处理,不做一比一的写实复刻,既好看,也把边界守住了。
8.4 后续还能往哪些方向扩展
跑通基础流程之后,我试过几个延伸玩法,效果不错。一个是多人物 LoRA 混合,把两个人的 LoRA 按不同权重叠加,做家庭合影或者双人构图,权重比例 0.6/0.4 这种配置比较稳,各 0.5 容易产生「缝合脸」。另一个是服装和配饰单独训一个 LoRA,人物 LoRA 负责脸,服饰 LoRA 负责衣服,两者解耦之后换装灵活度大幅提升,比在一个 LoRA 里混训要清晰得多。还有一个是固定模板加批量出图,把一套模板配好参数存下来,接一个批量脚本跑几十张,做内容矩阵的时候效率非常高,但前提是前面的人脸一致性已经调稳了,否则批量出来一堆废图更浪费时间。
最后一个实用建议:建一个自己的实验记录表,每次训练记下数据量、参数、相似度分数、主观评价。跑个十几次之后你会明显感觉到规律,哪些参数组合在你的底模上是稳的,哪些是雷区,一目了然。这件事看着笨,但它比任何教程都管用,因为你的数据、你的底模、你的审美偏好,只有这套记录能对上号。