Stable Diffusion WebUI Forge 自定义模型训练指南:几张照片教 AI 认识你的专属风格
【免费下载链接】stable-diffusion-webui-forge项目地址: https://gitcode.com/GitHub_Trending/st/stable-diffusion-webui-forge
想让你的 Stable Diffusion WebUI Forge 学会一个 AI 从没见过的事物吗?比如你养的那只猫、你公司的品牌配色、或者你自己固定的手绘风格。文本嵌入训练(Textual Inversion)让你只拍 5 到 20 张照片,就能让 AI 记住这个新概念,而不用去改模型本身的权重。训练完成后,你在提示词里打一个标签,比如a photo of <mycat> sitting on the window sill,画出来的猫就是它,而不是"某只猫"。整个过程不需要读一行源码,下面按步骤带你走一遍。
原理速通:给模型的"生词本"贴一个新词
把模型的词表想象成一本已经印好的生词本:每个词对应一页解释。你不能撕掉重写,但可以贴一张便签——"这个词,以后就代表这只猫"。文本嵌入做的就是这件事:你挑一个占位符 token 当便签,然后拿你的照片反复"喂"它,模型就会把那张便签和猫的样子绑定起来。训练只改这一个词对应的向量,模型的其余部分原封不动。这套逻辑写在 modules/textual_inversion/textual_inversion.py 里,Embedding和EmbeddingDatabase两个类分别管"存/读一个嵌入"和"把嵌入注册进当前模型",你了解个大概就够了。
准备清单:数据集怎么备、名字怎么取
开工前把四件事办妥,后面就能一路绿灯:
- 拉代码:
git clone https://gitcode.com/GitHub_Trending/st/stable-diffusion-webui-forge,按正常方式启动 WebUI。 - 建数据集:在项目里建一个
dataset文件夹,放进 5–20 张训练图。 - 统一尺寸:全部裁成 512x512,角度和光照尽量多样但主体保持一致。
- 写描述:每张图配一行文字,用
[V]当占位符,例如a photo of [V] style。[V]的位置就是将来新词出现的位置。 - 取名字:嵌入名只能有字母、数字和下划线(如
my_style),别用中文和空格,创建时会自动清掉非法字符。
训练实操:从建向量到出图,四步走完
建:在 Train 页创建你的第一个向量
打开 WebUI 的Train标签页,走一遍创建流程(背后调用的是 ui.py 里的create_embedding,实际建向量逻辑在 textual_inversion.py 的create_embedding函数):
- 嵌入名称:如
my_style。 - 初始化文本:填一个跟目标相近的概念,比如油画风格就填
oil painting。这一步是给便签一个"起跑姿势",填得越接近目标,收敛越快。 - 向量数量:简单概念选 1,复杂风格选 4。
创建成功后,会生成一个.pt文件落在embeddings目录,这就是待训练的新词。
定:参数这样配,新手不翻车
| 参数 | 建议值 | 说明 |
|---|---|---|
| 学习率 | 0.005 | 先按此值起步,训练中可逐步调小 |
| 训练步数 | 1000–3000 | 样本少取低值,多取高值 |
| 批次大小 | 1–4 | 完全看 GPU 显存余量 |
| 梯度累积 | 4 | 显存不够时用它换"等效大批次" |
跑:盯住 Loss 曲线判断好坏
点开始训练(对应train_embedding入口),页面上会出现实时损失值。健康的走势是:Loss 稳步下降,最后稳定在 0.05 以下。如果中途手动停止或正常跑完,训练会自动把结果存成embeddings里的[名称].pt,不用你手动保存。
验:在生成界面用新标签出图
切回 txt2img,在提示词里用尖括号调用新词:
a photo of <my_style> landscape with mountains出图稳定、主体一致,就算验收通过。
调优手册:效果差时依次试这三招
- 补样本:再拍几张不同角度、不同光照的图加进
dataset,信息量上去了,概念才立得稳。 - 换学习率策略:把固定学习率换成调度器(比如余弦退火),前期大步探索、后期小步精修,通常更稳。
- 开自动裁剪:训练界面开启 auto-crop,项目自带的裁剪逻辑(见 autocrop.py)会自动把主体框出来再训练,减少背景干扰。
踩坑急救包:常见现象对应处理
现象:训练直接崩、显存爆掉→ 开 Low VRAM 模式;批次大小压到 1;关掉训练过程中的预览生成;顺手清理tmp目录的临时文件。
现象:训练 Loss 很低,但生成结果僵硬、千篇一律(过拟合)→ 减少训练步数,或加入正则化样本(放几张"无关图"陪跑)。
现象:AI 把两个概念搅在一起,出的图四不像(概念混淆)→ 多半是初始化词没选好,换一个更贴切的初始化文本重建向量重训。
现象:同一批提示词,时好时坏→ 回头检查数据集:光照、角度是否太乱,主体占比是否太小。统一一下再来。
收尾:分享你的模型,以及下一步
训练产物就是一个小文件:把.pt发给朋友,让他丢进自己项目的embeddings目录,刷新即生效——整个分享流程如此简单。
顺带一提,load_from_file 除了读.pt/.BIN/.safetensors,还支持把嵌入数据塞进 PNG 图片元数据里(实现见 image_embedding.py),方便打包分享。
想再往前进一步,可以看看这两个方向:
- 叠加 LoRA:文本嵌入负责"是什么",LoRA 负责"怎么画",两者混用效果更好,相关代码在 packages_3rdparty/webui_lora_collection。
- 混合训练:风格嵌入 + 物体嵌入一起跑,让"你的画法"和"你的角色"同时学会。
第一次训练翻车很正常,把数据集备好、参数按表格填,跑通一遍你就掌握了 Stable Diffusion WebUI Forge 文本嵌入训练的完整闭环。
【免费下载链接】stable-diffusion-webui-forge项目地址: https://gitcode.com/GitHub_Trending/st/stable-diffusion-webui-forge
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考