文本反演 Textual Inversion:学一个新词代表概念

FreeGuideOnline 最新 2026-06-20

什么是文本反演 (Textual Inversion)

文本反演是一种轻量级模型定制技术,它不修改基础模型权重,而是在文本编码器的嵌入空间中学习一个新的“词”来代表特定概念。这个新词被映射为一个嵌入向量,能够像真实词汇一样被模型理解并使用。最简单的理解是:你给模型看几张图,让它给图中共同的核心概念“发明”一个全新的单词,之后只要你输入这个单词,模型就能生成包含该概念的全新图像。

为什么叫“反演”

常规的文本转图像过程是:文本 → 文本编码器 → 嵌入向量 → 扩散模型 → 图像。文本反演则是反过来:给定一组图像 → 找到那个能让模型生成类似图像的嵌入向量。所以是“反演”。


文本反演的核心优势

  • 模型本体不变:不对UNet或其他组件微调,文件极小(通常只有几KB),不会造成灾难性遗忘。
  • 风格与物体分离:可以分别学习物体外观、艺术风格、构图方式,且能自由组合。
  • 即插即用:训练出的 .pt.bin 文件可直接加载到任何兼容的Stable Diffusion工作流中,像使用普通Prompt一样调用。
  • 隐私与安全:适合为个人项目或敏感内容创建专属概念词,无需分享整个模型。

工作原理简述

  1. 准备一组代表同一个概念的图像(比如你的宠物狗、特定画风的作品)。
  2. 为这些图像搭配一个占位文本模板,例如 “a photo of S*”,其中 S* 就是待学习的“伪词”。
  3. 冻结扩散模型的所有参数,只随机初始化 S* 的嵌入向量。
  4. 用这些图像进行前向扩散和去噪,计算模型预测噪声与实际噪声的损失。
  5. 反向传播只更新 S* 的向量,使其逐渐聚拢到能正确描述图像概念的语义位置。
  6. 训练结束后,该向量被保存下来,它就“成了”那个新词。

本质上,文本反演是在文本编码器连续且平滑的语义空间中,通过梯度下降寻找一个最优坐标点。


动手实践:训练你的第一个Embedding

以下使用 Stable Diffusion WebUI(Automatic1111) 作为示例,这也是最广泛的实践环境。

前期准备

  • 已安装并正常运行 SD WebUI
  • 5-20张高质量、内容一致且变化适中的图片(太多雷同会过拟合,太少会学不充分)
  • 图片建议尺寸 512×512,背景干净,多角度/多姿势有助于泛化

步骤一:预处理图片

在WebUI中进入 Train 标签页 → Preprocess images

  • 源目录:你的原始图片文件夹
  • 目标目录:处理后的输出文件夹
  • 勾选 Create flipped copies(水平翻转增加数据量)
  • 勾选 Use BLIP for captionUse deepbooru for caption 自动生成描述文本
  • 执行处理后,每张图会生成同名 .txt 文件,内含自动标注的描述。你需要手动检查并修改这些描述,将想要学习的概念统一用你选定的初始化词替换(习惯上用 [name][filewords] 占位,但实际训练会用到 initialization text)。

关键原则:描述中与本概念无关的内容保持原样,与概念直接对应的部分用占位符替代。例如要学你的猫“Mimi”,描述可写成 “a photo of [name] cat sitting on a sofa”

步骤二:创建Embedding并开始训练

进入 TrainCreate embedding

  • Name:给Embedding起个名字,比如 my_style(系统会自动加上 <> 显示)
  • Initialization text:初始化词,强烈建议使用一个与概念接近的已有词汇(如学狗用 “dog”,学油画风用 “oil painting”),这比随机向量收敛快得多。
  • Number of vectors per token:每个词占用多少个token,默认为1可满足大多数需求;复杂概念可设为2-4,但不宜过高。

创建后,切换到 Train 子标签页:

  • Embedding:选择刚创建的嵌入
  • Learning rate:建议 0.0050.001,过大会破坏空间结构
  • Dataset directory:指向包含图像和 .txt 描述文件的文件夹
  • Prompt template file:通常是 subject.txtstyle.txt,根据你学的内容选择模板(WebUI自带若干模板,也可自定义)
  • Max steps:先用1000-3000步做实验,根据损失曲线和生成预览调整

步骤三:监控与保存

训练开始后,可以在WebUI控制台观察 loss 下降趋势。同时可设置每隔一定步数生成预览图像,检查概念是否被正确学习。当预览图中概念特征清晰且不过度嵌入背景时,即可停止训练。Embedding会自动保存为 .pt 文件,位于 embeddings 文件夹。


使用你训练的Embedding

在文生图或图生图界面,把Embedding文件名(不含扩展名)放入Prompt中即可。例如你训练了 my_cat.pt,直接输入 my_cat 就像使用普通单词一样。

高级技巧

  • 搭配负面提示排除意外元素
  • 调节提示词权重:(my_cat:1.2) 增强该概念
  • 可与LoRA、ControlNet等方法叠加使用
  • 若学习的是风格,Prompt可写 “a landscape in the style of my_style”

常见问题与调优建议

现象 可能原因 解决方案
生成的图与训练图几乎一样 学习率太高 / 步数过多 / 图片太少 降低LR、减少步数、增加图量及多样性
概念泛化差,换个角度就扭曲 训练图姿势单一、描述未覆盖变化 补充多角度、多光照图片,在描述中保留变化细节
学到的概念在生成时不受控制 初始化词选择不当,嵌入漂移 改用语义更接近的初始化词,适当降低学习率
Loss 不下降或震荡 学习率不合适、描述与图片矛盾 检查描述准确性,优先保证“干净”的文本-图像对

文本反演的应用场景

  • 角色一致性:为原创角色、特定人物(需合规)、宠物学习专属词
  • 风格统一:将个人画风、笔触抽象成一个词,后续创作保持视觉连贯
  • 产品设计:为特定商品生成多角度展示图,保持产品特征不变
  • 医学术语可视化:将罕见病征、细胞形态等定义为新词,辅助科研绘图

通过文本反演,你可以在不触碰模型本体的前提下,将任意视觉概念封装进一个可传播、可堆叠的词符之中。这是个性化生成最安全、最轻量的起点。