Embedding指的是Textual Inversion(TI)的结果,能用于让Stable Diffusion(SD)绘制新物体,或是新画风(画风相较于HyperNetwork学习能力较差。
1. Embedding是什么
Embedding指的是TI的结果。TI能在不修改模型的情况下给模型定义新的关键词。它吸引人的点在于:只用三五张图片就能够给模型“注入”新风格、新物体。
1.1 Textual Inversion为什么有效
让SD画出新物体或者新风格,这其他微调方法也能做到。TI的惊人之处在于它在不修改模型的情况下做到这点。论文中对TI的工作流程图示如下。
给新物体/画风定义模型中没出现过的新关键词。就像prompt中的其他关键字一样,这个新关键字会被转化为token(数值)。每个token会被转换为唯一的embedding,以用于图像生成。
TI能用已知的词汇贴切地描述一个新概念,找到最能代表新关键字的embedding,而无需更改模型的任何部分。
1.2 Embedding的举例:
告诉模型什么是“toy cat”
1.3 怎么得到新Embedding(还没看完)
详见paper。
为了得到新概念的embedding ,需要使用了 3~5 张具有不同的背景或姿态的图像,通过最小化图像重建损失进行优化(类似Latent Diffusion Model的训练)。
2. 到哪里找现成Embedding
- HuggingFace的Stable Diffusion Concept Library中有大量自定义关键词的Embedding。
- Civtai上搜textual inversion也能找到Embedding。
3. 如何使用Embedding
-
在线接口
Stable Diffusion Conceptualizer :无需下载,就能试用Embedding
(这里的Embedding不能在别的模型上用) -
在stable-diffusion-webui中使用
从 Concept Library下载Embedding并重命名为关键字(例如,marc_allante
一种画风),放在stable-diffusion-webui/embeddings
文件夹。
重启会看到Loaded a total of 1 textual inversion embeddings.
prompt中添上(marc_allante:1.2)
就能绘制该风格的图了。
注意:- prompt中的关键字错一个字符就会让Embedding失效
- SD v1和v2的Embedding是不互通的
- 可以用
(keyword:weight)
的形式控制关键词强度(详见各种prompt技巧),关键词强度可以是负值(等同于方括号[unwated objects]
)。