1. 从零到一:为什么选择Stable Diffusion做AI写真?

最近身边好几个朋友都在问我,看到网上那些用AI生成的“写真照”特别心动,自己也想试试,但一看到什么“模型”、“参数”、“提示词”就头大,感觉门槛太高。其实,这事儿真没想象中那么复杂。我折腾了快一年的Stable Diffusion,从最开始连界面都看不懂,到现在能稳定产出各种风格的“数字分身”,踩过的坑不少,但总结下来的核心流程其实很清晰。今天,我就用一个最接地气、最“手把手”的方式,带你从零开始,用Stable Diffusion给自己或者朋友做一套独一无二的AI写真。

首先得搞清楚,我们说的“AI写真”到底是什么。它不是你用美颜相机拍张照然后加个滤镜,而是让AI学习你(或目标人物)的面部特征,然后在一个全新的、由你设定的场景、光影、服装和姿态下,“凭空”生成一张以你为主角的照片。这背后的核心就是Stable Diffusion这个开源图像生成模型。相比于一些在线的、功能受限的AI绘画工具,本地部署的Stable Diffusion给了我们最大的控制权:你可以自由选择擅长人像的模型,可以精细地训练只属于你面部特征的微调模型(比如LoRA),可以控制画面的每一个细节。最终目的,是生成一组风格统一、质量上乘、且人物特征高度一致的系列图片,这才能真正称之为“写真集”。

那么,这条路该怎么走?整个流程可以拆解为四个环环相扣的核心阶段: 环境搭建 -> 素材准备与处理 -> 模型训练(核心) -> 写真生成与精修 。听起来步骤不少,但每一步我都会告诉你最省事、最不容易出错的做法。网上教程很多,但很多要么过于简略跳过了关键细节,要么堆砌术语让人云里雾里。我会尽量用大白话,把每个环节的“为什么”和“怎么做”都讲透,让你不仅能跟着做出来,还能明白其中的道理。

2. 环境准备:选择最适合新手的“启动器”

工欲善其事,必先利其器。第一步就是要把Stable Diffusion请到你的电脑上。对于绝大多数新手而言,我不推荐你去折腾复杂的源代码编译和依赖安装,那会消耗你大量的热情和耐心。我们的目标是快速上手,稳定出图。

2.1 WebUI懒人包:新手的福音

目前最友好、社区资源最丰富的方案,就是使用 Stable Diffusion WebUI 的整合包,也就是大家常说的“懒人包”。其中, 秋叶大佬制作的启动器 在国内社区口碑极佳,它集成了WebUI本体、常用的模型管理、插件市场、疑难解答等一系列功能,并且针对网络环境做了很多优化(比如内置了模型下载加速)。你只需要从可靠的渠道下载一个压缩包,解压,点击启动器,它就会自动完成环境配置。

注意 :请务必从作者发布的官方页面或可靠的社区(如B站、知乎相关专栏)获取下载链接,避免下载到被篡改或捆绑恶意软件的文件。

下载解压后,你会看到一个目录,里面有一个 启动器.exe 。首次运行,它会自动检测并安装必要的环境(如Python、Git)。整个过程基本是全自动的,你只需要点点“确定”和“下一步”。启动完成后,你会看到一个WebUI的界面在浏览器中打开(通常是 http://127.0.0.1:7860 )。恭喜,你的AI画室已经搭建完毕了。

2.2 核心:你的第一个大模型

启动器只是房子,模型才是里面的“画家”。我们需要为这位画家准备“画册”和“画笔”。首先是最重要的 Checkpoint 模型(大模型) 。它决定了生成图像的基础风格和画风。对于人像写真,我们需要选择那些在人物面部刻画、皮肤质感、光影表现上特别出色的模型。

对于新手,我强烈推荐从以下几个模型开始尝试:

  • ChilloutMix :亚洲人脸生成的神器,对亚洲人面部特征拟合非常好,出图肤色自然,细节丰富,是很多人像创作的起点。
  • Realistic Vision :如其名,追求极致真实感,生成的肖像几乎可以乱真,适合制作证件照风格或高写实风格的写真。
  • MajicMix Realistic :另一个写实风格的优秀模型,在光影和人物神态上常有惊艳表现。

这些模型文件(后缀为 .safetensors .ckpt )通常有几个GB大小。下载后,需要放入WebUI目录下的 models/Stable-diffusion 文件夹中。然后,在WebUI界面左上角的模型选择下拉框里刷新一下,就能看到并切换使用它们了。

2.3 效率工具:必备插件安装

原生的WebUI功能已经很强大了,但安装几个插件能让你的效率翻倍。在WebUI的“扩展”标签页中,点击“可下载”,然后“加载扩展列表”。我建议新手必装的有:

  • Civitai Helper :这是一个模型资源浏览器,可以直接在WebUI内浏览、下载Civitai(最大的模型分享网站)上的模型、LoRA和Embedding,免去手动下载和放置的麻烦。
  • Additional Networks (LoRA插件) :用于在生成时便捷地加载和控制LoRA模型,这是后面训练个人特征模型后必须用到的。
  • ControlNet 这是实现可控AI写真的核心神器 。它允许你通过输入一张草图、姿势图、深度图或边缘检测图,来精确控制生成人物的姿势、构图和轮廓。没有它,你很难让AI生成特定姿势的“你”。

安装插件后,记得点击“已安装”标签页下的“应用并重启用户界面”,让插件生效。

3. 素材准备:决定写真上限的关键一步

很多人觉得AI生成很“玄学”,出图质量不稳定。其实, 素材的质量直接决定了模型训练的天花板 。准备阶段偷懒,后面再怎么调参都难以补救。

3.1 拍摄高质量源图片

你需要准备一组清晰、高质量的人物面部照片作为训练素材。理想的数量在15-25张之间。太少,模型学不到足够特征;太多,可能会学习到不必要的背景杂讯。拍摄时请遵循以下原则:

  1. 面部清晰,角度多样 :包含正面、左侧面、右侧面、微仰头、微低头等多种角度。确保面部光线均匀,没有强烈的阴影遮挡五官。
  2. 表情自然,妆容统一 :表情可以是微笑、平静等,但尽量避免夸张的大笑或鬼脸。如果你希望写真带妆,那么所有训练图片最好保持同一种妆容风格。
  3. 背景简洁 :纯色背景(如白墙)是最佳选择。复杂的背景会被模型当作特征学习进去,导致你未来生成的照片总带着那个背景的“影子”。
  4. 分辨率要高 :建议单张图片分辨率不低于512x512,最好是1024x1024或更高。清晰的图片能让模型捕捉到更细腻的皮肤纹理和面部细节。
  5. “一人一镜” :确保所有图片中只有你要训练的目标人物,不要出现其他人或宠物。

3.2 图片预处理:打标与裁剪

拿到原始照片后,不能直接扔给模型训练。我们需要进行预处理,核心工作是 打标(Tagging) 裁剪

裁剪 :使用任何图片编辑工具(如Photoshop,甚至Windows自带的画图工具),将每张图片裁剪为正方形,并确保人脸位于画面中央,占比适中(大约占画面的1/3到1/2)。统一裁剪到512x512或768x768的分辨率。

打标 :这是告诉模型“图片里有什么”的过程。我们需要为每张图片生成一个文本描述文件(.txt)。手动描述效率太低,我们可以利用WebUI的“训练”标签页下的“预处理”功能。

  1. 将裁剪好的所有图片放入一个文件夹(例如 origin_images )。
  2. 在WebUI中,进入“训练” -> “预处理”。
  3. “源目录”选择你的 origin_images 文件夹。
  4. “目标目录”新建一个文件夹(例如 tagged_images )。
  5. 勾选“使用DeepBooru生成标签”(对于真人照片,DeepBooru比BLIP更合适)。
  6. 点击“预处理”。完成后, tagged_images 文件夹里会得到每张图片和一个同名的txt文件,里面是AI自动识别的标签,比如 1girl, solo, looking at viewer, black hair, ...

关键步骤:手动修正标签 。AI自动打的标签非常啰嗦且不准确,我们必须手动清理和修正。打开每个txt文件,进行以下操作:

  • 删除与人物核心特征无关的标签 :比如 wall, indoor, shirt 等背景、服装描述。我们的目标是让模型只学习“脸”,而不是“穿着某件衣服在某个地方的脸”。
  • 保留或添加核心特征描述 :例如,统一用 zhangsan (假设你叫张三)来指代这个人。可以添加一些面部特征词,如 detailed eyes, beautiful face 。但注意不要用过于泛化的赞美词,如 masterpiece, best quality ,这些应该在生成时使用。
  • 标准化 :确保所有图片的标签文件中,对同一特征的描述是一致的。

经过处理的标签文件,可能最终只剩下 zhangsan, 1girl, looking at viewer, smile 这样简洁的核心描述。这个步骤枯燥但至关重要,它直接决定了后续LoRA模型的质量和泛化能力。

4. 模型训练:炼制你的“数字分身”

有了高质量的素材和标签,我们就可以开始训练专属于你的 LoRA模型 。LoRA是一种轻量化的模型微调技术,它不像训练完整大模型那样需要海量数据和算力,而是通过训练一个很小的“适配器”文件(通常几十MB),来教会大模型“这个人长什么样”。生成时,将大模型和你的LoRA结合使用,就能在任意场景下还原你的面部特征。

4.1 训练工具与配置

在WebUI的“训练”标签页下,选择“LoRA训练”。我们需要配置几个关键参数:

  1. 基础模型 :选择我们之前下载的、擅长人像的大模型,例如 chilloutmix_NiPrunedFp32Fix.safetensors
  2. 训练数据集 :指向我们处理好的 tagged_images 文件夹。
  3. 正则化图像 (可选但推荐):这是一个进阶技巧,用于防止模型过拟合(即只会复刻训练图,没有泛化能力)。你可以使用一些非人物的、各种角度光影的肖像图作为正则化数据集,帮助模型更好地理解“人脸结构”而不是“张三的某张照片”。网上可以找到打包好的正则化数据集。
  4. 输出设置 :给模型起个名字,如 zhangsan_v1 。设置输出文件夹。

4.2 核心参数详解:迭代步数与学习率

接下来是参数部分,这里有几个关键数字,理解了它们,你就掌握了训练的主动权:

  • 训练步数(Max steps) :这是最重要的参数之一。步数太少,模型学不会;步数太多,会过拟合(导致生成的脸很像训练图,但僵硬不自然,且换姿势就崩)。对于20张左右的图片,一个常用的起始值是 1500-2000步 。你可以采用“分阶段训练法”:先设1000步,训练完后测试效果,如果特征不明显,再基于这个模型继续训练500步,如此迭代,找到最佳点。
  • 学习率(Learning rate) :控制模型每次根据错误调整的幅度。太大容易震荡学不好,太小则学习速度慢。对于LoRA训练,使用 1e-4 是一个比较稳妥的初始值。
  • 网络维度(Network Rank / Alpha) :这决定了LoRA模型的“容量”。通常设置为 128 64 。数值越大,学习能力越强,但也更容易过拟合。新手可以从 128 开始。
  • 批次大小(Batch size) :受显卡显存限制。如果显存只有8GB,可以设为 1 ;如果显存充足(12GB以上),可以设为 2 4 ,能加快训练速度。

配置好后,点击“开始训练”。这个过程会持续几十分钟到几小时,取决于你的步数和显卡。训练过程中,你可以观察控制台输出的损失值(loss),理想情况下它应该稳步下降并逐渐趋于平缓。

4.3 测试与验证:你的LoRA成功了吗?

训练完成后,会在输出文件夹生成一个 .safetensors 文件,这就是你的个人LoRA。如何测试它是否有效?

  1. 回到WebUI的“文生图”页面。
  2. 在提示词中,用特定的语法调用你的LoRA: <lora:zhangsan_v1:1> 。这里的 1 是权重,通常从0.7开始尝试。
  3. 输入一个简单的提示词,例如: <lora:zhangsan_v1:0.8>, zhangsan, portrait, professional photography, studio lighting
  4. 点击生成。

如果生成的肖像与你的真实面容有较高的相似度,且表情自然,那么恭喜你,LoRA训练基本成功。如果相似度很低,或者脸部扭曲,可能需要检查训练素材质量或增加训练步数。如果生成的脸很像但极其僵硬,像一张面具,那就是过拟合了,需要减少LoRA权重或使用更多样化的正则化图像重新训练。

实操心得 :训练LoRA有点像煲汤,火候(步数)和调料(学习率)需要微调。我的经验是“宁欠勿过”——特征稍微弱一点,我们可以在生成时通过提示词和ControlNet加强;但一旦过拟合,这个LoRA就几乎废了,因为它会顽固地把所有脸都变成训练图里某个固定角度和光影的样子。

5. 写真生成实战:从想法到成片

现在,我们有了强大的大模型和专属的个人LoRA,是时候创作真正的写真集了。这个过程是艺术和技术结合,核心在于 提示词(Prompt) ControlNet 的运用。

5.1 构建高效提示词:告诉AI你想要什么

提示词是AI创作的蓝图。一个结构清晰的提示词能极大提高出图质量。我通常采用以下结构:

(画质/风格前缀), (主体描述:人物+LoRA), (场景细节), (光影氛围), (镜头与构图), (画质后缀)

例如,我们想生成一张在巴黎咖啡馆窗边的文艺写真:

(masterpiece, best quality, ultra-detailed, photorealistic), <lora:zhangsan_v1:0.75>, zhangsan, a beautiful Chinese woman, sitting by the window in a Parisian cafe, wearing a beige trench coat, soft smile, looking outside, holding a coffee cup, ambient light from the window, cinematic lighting, shallow depth of field, bokeh, film grain, 35mm lens, portrait photography

提示词技巧

  • 权重控制 :用 () 增加权重, (word:1.3) word 的权重设为1.3倍。用 [] 降低权重。
  • 交替词语 :用 [word1|word2] 让AI随机选择其中一个,增加多样性。
  • 负面提示词(Negative prompt) :同样重要,用于排除不想要的元素。通用性很强的负面词如: (worst quality, low quality:1.4), (bad anatomy), blurry, cartoon, 3d, deformed, disfigured

5.2 姿势控制灵魂:ControlNet深度解析

没有ControlNet,你只能靠提示词和运气来碰姿势。有了ControlNet,你可以“指挥”AI摆出任何你想要的姿势。这是实现系列写真“构图感”的关键。

最常用的ControlNet模型是 OpenPose 。它的使用流程如下:

  1. 找一张你想要的姿势参考图(可以从网上找模特写真,甚至可以用自己的照片或绘图)。
  2. 在文生图页面下方,展开ControlNet面板,把你的姿势图拖进去。
  3. 预处理器选择 openpose_full (检测全身姿势)。
  4. 模型选择 control_v11p_sd15_openpose
  5. 勾选“启用”、“完美像素模式”、“控制权重”建议先设为0.8-1.0,“引导介入时机”保持默认。
  6. 点击“预处理器预览”按钮,你会看到一张骨骼图,确认姿势被正确识别。

现在,当你生成图片时,AI就会严格按照这个骨骼姿势来构图中的人物。你可以固定一个种子(Seed),然后只更换提示词中的场景和服装,就能生成一系列姿势统一、但背景各异的连贯写真,极大地提升了作品的系列感和专业性。

5.3 参数配置:平衡速度与质量

在生成前,还需要调整一些关键参数:

  • 采样方法(Sampler) :对于人像写真, DPM++ 2M Karras Euler a 是速度和质量平衡得比较好的选择。
  • 采样迭代步数(Steps) :20-30步通常就能获得不错的效果,增加到40-50步细节会更丰富,但时间成本翻倍。
  • 面部修复(Restore faces) :建议开启,能自动优化生成的面部细节。
  • 高清修复(Hires. fix) :这是提升成图分辨率的神器。首先生成一个较低分辨率(如512x768)的图,然后通过高清修复放大2倍。放大算法推荐 R-ESRGAN 4x+ Latent 。这能有效增加细节,避免直接生成大图时出现多人或畸形。

5.4 批量生成与筛选

一套写真需要多张图片。我们可以利用“批处理”功能。

  1. 在提示词中,用 [scene1|scene2|scene3] 来定义多个场景。
  2. 设置一个较大的“批处理数量”(Batch count),比如8或16。
  3. 点击生成,让AI一次性产出多张不同场景的图。
  4. 从生成的众多图片中,挑选出面部相似度高、构图美观、没有明显瑕疵(如多余的手指、扭曲的肢体)的图片作为备选。

6. 后期精修:让AI写真更完美

AI直接生成的图片,有时在细节上仍有瑕疵,比如手指轻微畸形、发丝杂乱、背景有奇怪的污渍等。这时就需要进行后期精修。

6.1 使用Inpainting进行局部重绘

WebUI的“图生图”标签页下的“局部重绘(Inpainting)”功能是修正瑕疵的利器。

  1. 将需要修改的图片发送到“图生图”。
  2. 使用画笔工具,涂抹掉有问题的地方(如畸形的手指)。
  3. 重绘区域选择“仅蒙版”。
  4. 提示词保持与原图一致或更简单(例如只写 perfect hand, five fingers )。
  5. 适当降低“重绘幅度”(Denoising strength,如0.3-0.5),避免重绘区域与周围环境不融合。
  6. 点击生成,AI会只对你涂抹的区域进行重新绘制。

6.2 使用ADetailer进行面部与手部增强

这是一个非常实用的插件,能自动检测图片中的脸和手,并对这些区域进行二次高清修复,显著提升细节。安装ADetailer插件后,在生成图片时勾选启用,并选择合适的人脸检测模型(如 face_yolov8n.pt ),它会自动在生成流程的最后阶段对脸部进行优化。

6.3 传统软件最终调整

将筛选和修复好的图片导入Photoshop、Lightroom等传统软件,进行最后的调色、对比度调整、锐化等操作。可以统一套用一个滤镜或色彩预设,让整套写真的色调风格更加统一和谐。这一步是赋予作品个人审美和风格的最后一步,能让你的AI写真真正脱颖而出。

7. 常见问题与避坑指南

在实际操作中,你肯定会遇到各种各样的问题。这里我总结了一份高频问题排查清单,希望能帮你节省大量折腾的时间。

问题现象 可能原因 解决方案
生成的人脸完全不像 1. LoRA训练失败(素材或参数问题)
2. LoRA权重太低
3. 提示词中人物描述与LoRA冲突
1. 检查训练素材质量(清晰度、角度、背景),尝试增加训练步数。
2. 逐步提高LoRA权重(从0.5到1.0尝试)。
3. 提示词中避免使用与训练标签冲突的详细面部描述,让LoRA主导。
脸部扭曲、畸形或多脸 1. 分辨率设置不当
2. 提示词过于复杂或矛盾
3. LoRA过拟合
1. 使用标准分辨率(如512x768),并开启高清修复(Hires. fix)来放大。
2. 简化提示词,确保描述一致。
3. 降低LoRA权重(如从1.0降到0.7),或在训练时使用正则化图像。
身体姿态无法控制 1. ControlNet未正确启用或模型选错
2. 控制权重太低
3. 提示词中姿势描述与ControlNet冲突
1. 确认勾选“启用”,预处理器和模型匹配(如openpose配openpose模型)。
2. 将控制权重提高到0.8-1.2。
3. 提示词中避免详细描述姿势,交给ControlNet。
图片模糊、缺乏细节 1. 迭代步数不足
2. 未使用高清修复
3. 大模型本身偏写意
1. 将采样步数提高到25-35。
2. 务必开启高清修复,选择适合的放大算法。
3. 更换为更写实的大模型(如Realistic Vision)。
生成速度极慢 1. 分辨率设置过高
2. 迭代步数太多
3. 同时启用过多ControlNet单元
1. 先低分辨率生成,再用高清修复放大。
2. 步数20-30通常足够,无需盲目增加。
3. 非必要不同时启用多个ControlNet。
手部生成效果差 这是SD通病,手部结构复杂 1. 在负面提示词中加入 bad hands, extra fingers
2. 开启ADetailer插件,并启用手部检测修复。
3. 使用局部重绘(Inpainting)手动修正。

最后再分享一个小技巧 :建立一个自己的“工作流笔记”。每次成功生成一张满意的图片,记得把正负向提示词、使用的模型、LoRA及其权重、ControlNet设置、种子数、采样参数等全部记录下来。久而久之,你就会积累出一套属于自己的、在不同场景下都能稳定出片的参数模板,效率会成倍提升。AI写真创作,一半是技术,一半是审美和耐心。多试,多调,多积累,你一定能创造出令人惊艳的数字作品。

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐