Textual Inversion 是一个用于个性化文本到图像生成的开源项目,其核心思想是通过少量示例图像,在冻结的文本到图像模型的嵌入空间中学习新的“词”来表示一个独特概念。该项目由来自特拉维夫大学和 NVIDIA 的研究者提出,论文标题为《An Image is Worth One Word: Personalizing Text-to-Image Generation using Textual Inversion》。
用途方面,该方法旨在解决如何用语言引导模型生成特定概念的问题,例如把用户的猫变成一幅画,或基于喜欢的玩具想象新产品。仅需用户提供 3-5 张概念图像(如某个物体或某种风格),模型即可学习用嵌入空间中的新“词”表示该概念。这些“词”可以组合进自然语言句子,以直观方式实现个性化创作。论文发现,单个词嵌入就足以捕捉独特且多样的概念,并在多种应用和任务上比多种基线方法更忠实地呈现概念。
主要能力上,该仓库提供官方代码、数据与示例反演结果。功能包括:对图像集进行反演训练,学习概念对应的嵌入;使用学习到的占位符生成新图像;合并多个检查点(LDM 及 SD 嵌入),以在一条提示中同时使用多个概念;发布数据集与预训练嵌入(部分数据集因图像版权暂不可用);并加入 Stable Diffusion 支持(截至 2022 年 8 月 29 日,SD 嵌入合并可用,SD 关键调优代码处于 WIP 状态)。更新记录还显示优化了梯度存储与检查点机制,内存需求与训练时间减少约 55%。
使用方式上,项目基于并共享 Latent Diffusion Models(LDM)的环境依赖。需先设置 LDM 环境,并下载官方 LDM 文本到图像检查点。反演图像集时需指定初始化词(init_word),该词是单 token 的粗略描述(如 'toy'、'painting'、'sculpture'),仅作为优化起点,并非后续代表概念的占位符;若输入超过一个 token,会提示替换。论文使用 5k 次训练迭代,但某些概念(尤其是风格)可能收敛更快。多 GPU 可通过 --gpus 参数传入逗号分隔的 GPU 索引。嵌入与输出图像保存在日志目录。更多选项(如更改占位符字符串,默认 "*"、最大训练迭代次数、检查点保存频率等)可在 configs/latent-diffusion/txt2img-1p4B-finetune.yaml 中配置。生成学习概念的新图像时使用占位符字符串;合并检查点可分别针对 LDM 或 SD 嵌入执行。
适用场景包括:对特定物体或风格进行个性化图像生成、将概念组合进新场景或新角色、以及研究文本到图像模型嵌入空间的可解释性与个性化。
限制方面:仓库未提供具体收费或价格信息(暂未提供)。训练集图像应保持正向,手机拍摄图像可能因旋转元数据导致方向错误,需手动校正或等待元数据解析支持。结果可能对随机种子敏感,可尝试更换种子重新反演。Stable Diffusion 支持仍在进行中。部分数据集因图像所有权不可用,预训练模型“即将推出”。提示中加入 "a photo of" 通常能提升目标一致性。