Stable Diffusion WebUI Forge 自定义模型训练:4 步把几张图变成 AI 的“新单词“(Textual Inversion 完整实操指南)
2026/9/13 14:50:25 网站建设 项目流程

Stable Diffusion WebUI Forge 自定义模型训练:4 步把几张图变成 AI 的"新单词"(Textual Inversion 完整实操指南)

【免费下载链接】stable-diffusion-webui-forge项目地址: https://gitcode.com/GitHub_Trending/st/stable-diffusion-webui-forge

本文带你走一遍 Stable Diffusion WebUI Forge 自定义模型训练:从准备几张图片,到训练出一个能在提示词里直接调用的文本嵌入(Textual Inversion),你会拿到四步动手流程、参数设置表和一份翻车急救清单。

60 秒看懂原理:给模型加新单词,而不是换脑子

文本嵌入(Textual Inversion,相当于给模型"背一个新单词")不动原模型的权重,只往文本编码器里加几组可训练的向量。模型遇到你的占位符时,就查这组向量,新概念从此有了着落。

类比一下:这就像在词典里新增一个同音字,不用重印整本书,只需要给这个字配一个"读法"。底层做的事,就是训练一组可替换的向量。

上面这张就是嵌入训练完成后的效果:提示词里的<rick>会被替换成那组训练好的向量,输出的角色因此稳定出现。

动手:从备料到出图

整个 WebUI Forge 训练嵌入的流程,可以拆成四个能独立做完的动作。先说明一点:Forge 走轻量化路线,本仓库内置训练页已被注释(modules/textual_inversion/ui.py整文件都是注释),训练入口建议挂一个社区训练扩展,或直接调用源码里的create_embedding;向量生成、存储、加载、注入的完整链路都在仓库里,下面按链路讲。

备料:同一主体的 5-20 张图 + 一个占位符

你要做的:准备一个小数据集,并给新概念定好占位符。

  1. 拿到项目:
git clone https://gitcode.com/GitHub_Trending/st/stable-diffusion-webui-forge
  1. 建一个文件夹,放 5-20 张同一主体的图:角度、光照有变化,尺寸统一裁成 512x512
  2. 每张图配一份提示词(同名.txt),文字里必须带同一个占位符,例如a photo of sktest dog;占位符建议用随机字符串,避免撞上模型已会的英文单词

判断做对了:随便抽几张提示词都含同一个占位符,图片尺寸全部是 512x512,主体在画面中占比一致。

建嵌入:用"锚点词"初始化向量

你要做的:生成初始向量,落盘成.pt文件。

  1. 选一个和目标概念语义接近的初始化文本(锚点词):训练一只特定狗,就用dog起步
  2. 设定每个 token 的向量数:单一主体选 1,复杂风格选 4
  3. 执行创建后,embeddings/目录会多出一个名字.pt文件,向量由锚点词编码而来

判断做对了:embeddings/里出现你的.pt文件;重启 WebUI 后日志会列出已加载的嵌入名,你的新词在列。

跑训练:一套不翻车的文本嵌入训练参数设置

你要做的:把数据集喂进训练循环,盯着 Loss 走。

以下这组参数是安全起步值:

参数推荐值一句话说明
学习率0.005起步值,过大概念会漂移
训练步数1000-3000按样本量线性放大
Batch size1显存吃紧先设 1,富余再加大
向量数1复杂风格可上调到 4
正则化图片0-5 张通用同概念图,抑制过拟合
自动裁剪参照autocrop逻辑把主体裁正

判断做对了:Loss 从 0.5 以上逐步降,降到 0.05 附近并走平;训练结束或中断时,嵌入文件会随当前步数自动保存。

验证:出图时提示词怎么写

你要做的:回生成页调用这个新单词,看它到底记住了什么。

  1. 单向量嵌入直接把名字写进提示词:a photo of sktest in the snow
  2. 多向量嵌入用尖括号包起来:<my_style>
  3. 换几个 seed 各出几张,重点看主体特征是否稳定复现

判断做对了:出图主体与训练样本一致,而不是回退成锚点词的样子;生成参数里也能看到嵌入名,说明注入链路走通了。

翻车急救:Loss 不下降、显存爆掉,先看这 4 个症状

遇到文本嵌入 Loss 不下降怎么办,大概率落在这几条里。

症状:训练刚启动就报显存不足。原因:预览图生成占用了显存,或 batch 过大。修复:batch size 设 1,关掉训练预览图生成,重跑。

症状:Loss 卡在 0.3 左右,半天不动。原因:学习率偏小,或数据集里图片质量参差。修复:学习率上调一档(如 0.01),并把所有样本统一到 512x512 同一构图。

症状:出图长得像锚点词,不像你的概念。原因:步数不够,新概念还没盖过锚点词。修复:续训 500 步;开了优化器状态保存的话,.optim文件能让续训接着上次的进度走。

症状:生成主体永远是同一个姿势。原因:过拟合到训练样本。修复:加正则化图片,或减少步数、扩充数据集。

源码地图:训练链路落在哪几个文件

  • modules/textual_inversion/textual_inversion.py— 嵌入向量的存储、.pt/.safetensors/ PNG 多格式加载与模型注入
  • modules/textual_inversion/image_embedding.py— 嵌入数据藏进 PNG 元数据的读写逻辑,方便分享
  • modules/textual_inversion/autocrop.py— 训练图片的自动裁剪
  • modules/sd_hijack.py— 持有嵌入数据库实例,负责模型加载时的嵌入装载
  • embeddings/— 嵌入文件默认存放目录,也是接收别人分享文件的落点

下一步玩什么

  • 给嵌入配一个 LoRA 做混合训练:LoRA 管整体结构,嵌入管占位符,两者能在同一条提示词里叠加使用,相关网络实现在packages_3rdparty/webui_lora_collection/
  • scripts/prompts_from_file.py批量跑提示词文件做回归测试,参数每次改动前后对比同一批出图。

【免费下载链接】stable-diffusion-webui-forge项目地址: https://gitcode.com/GitHub_Trending/st/stable-diffusion-webui-forge

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询