英文原文:https://stable-diffusion-art.com/embedding/
Embedding(嵌入),也称为textual inversion(文本反转),是在稳定扩散中控制图像风格的另一种方法。我们将回顾什么是嵌入、在哪里找到它们以及如何使用它们。
什么是嵌入?
嵌入是文本反转的结果,是一种在模型中定义新关键字而不修改模型的方法。该方法之所以受到关注,是因为它能够用少至 3 - 5 个样本图像向模型注入新的样式或对象。
文本反转是如何工作的?
文本反转的惊人之处不是添加新样式或对象的能力——其他微调方法也可以做到这一点,甚至更好。事实上,它可以在不改变模型的情况下做到这一点。
下面转载的原始研究文章中的图表说明了它的工作原理。
通过文本反转为新标记 S* 找到新的嵌入。
首先,为新对象或样式定义一个不在模型中的新关键字。该新关键字将被标记化(由数字表示),就像提示中的任何其他关键字一样。
然后,每个token都会转换为唯一的嵌入向量,供模型用于图像生成。
文本反转找到最能代表新样式或对象的新关键字的嵌入向量,而不更改模型的任何部分。您可以将其视为在语言模型中寻找一种方法来描述新概念。
嵌入的示例
嵌入可用于新对象。下面是注射玩具猫的示例。请注意,新概念(玩具猫)可以与模型中的其他现有概念(船、背包等)一起使用。
嵌入对象的示例。
嵌入也可以是一种新的样式。下面的示例显示了嵌入新样式并将样式传输到不同的上下文。
嵌入样式的示例。
在哪里可以找到嵌入
下载嵌入的首选地点是 Civitai。使用文本反转进行过滤以仅查看嵌入。
Hugging Face 托管稳定扩散概念库,它是大量自定义嵌入的存储库。
稳定扩散概念库。
如何使用嵌入
网页界面
Stable Diffusion Conceptualizer 是无需下载即可尝试嵌入的好方法。
首先,确定要在概念库中测试的嵌入。假设您想使用 Marc Allante 风格。接下来,确定触发此样式所需的令牌。您可以在文件 token_identifier.txt 中找到它,即 <Marc_Allante>。
输入提示
<Marc_Allante> a dog
为您带来独特的 Marc Allante 风格。
Web 界面的缺点是您无法使用不同模型的嵌入或更改任何参数。
AUTOMATIC1111
在 AUTOMATIC1111 中使用嵌入非常简单。
首先,从 Civitai 或 Concept Library 下载嵌入文件。
如果您从概念库下载该文件,则嵌入是名为 learn_embedds.bin 的文件。确保不要在下面的屏幕中右键单击并保存。这将保存它链接到的网页。单击文件名,然后单击下一页的下载按钮。
接下来,将文件重命名为您要用于此嵌入的关键字。它必须是模型中不存在的东西。 marc_allante.bin 是一个不错的选择。
将其放入 GUI 工作目录的 embeddings 文件夹中:
stable-diffusion-webui/embeddings
重新启动图形用户界面。在启动终端中,您应该看到如下消息:
Loaded a total of 1 textual inversion embeddings.
Embeddings: marc_allante
使用文件名作为提示的一部分
例如,以下提示适用于 AUTOMATIC1111。
(marc_allante:1.2) a dog
我们得到了具有预期风格的图像。
在 AUTOMATIC1111 中使用嵌入的快捷方式
即使只有一个字母,嵌入也不起作用。此外,您不能将针对 Stable Diffusion v1.5 训练的嵌入与 v2 一起使用,反之亦然 - 它们的语言模型不同。
您可能想知道您是否使用的是嵌入而不是关键字。这可能很难说,因为它的影响有时是微妙的。
您应该使用 GUI 按钮来插入嵌入,而不是键入嵌入的文件名。单击 txt2img 或 img2img 页面上的文本反转选项卡。选择要插入的嵌入。嵌入关键字应插入您的提示中。
在 AUTOMATIC1111 中使用嵌入的注意事项
如果您注意提示,您会注意到我增加了触发关键字 marc_allante 的强度。我发现有必要调整关键词强度。这可能与 AUTOMATIC1111 加载嵌入的方式有关。
您可能需要调整关键字强度才能获得您想要的效果。下面是一个在保持种子和其他所有内容相同的情况下改变强度的示例。
调整关键字强度以获得您想要的效果。
更复杂的是,不同的种子值所需的强度可能不同。
有用的嵌入
许多有用的嵌入都是负嵌入。将它们放在否定提示中。 (很重要!)
BadDream
BadDream 是 DreamShaper 模型的负嵌入。
UnrealisticDream
UnrealisticDream 是写实风格图像的负嵌入。您应该将其与现实模型(例如现实视觉)一起使用。
这种负嵌入需要与 BadDream 一起使用,因此使用它如下:
BadDream, UnrealisticDream
EasyNegative
EasyNegative 是 Anything v3 和 OrangeMix 等动漫模型的负嵌入。
我喜欢的嵌入
有许多可用的嵌入可供我尝试。以下是我发现的一些我喜欢的。
wlop_style
wlop_style 嵌入 wlop-any 模型
如果您使用过 Stable Diffusion 基础模型,您会发现无论您如何努力,都无法生成 wlop 的风格。与自定义模型一起嵌入最终可以做到这一点。
wlop_style 嵌入能够渲染艺术家 wlop 的一些漂亮的插图风格。它应该与 SirVeggie 的 wlop-any 自定义模型一起使用。 (有关安装自定义模型的信息,请参阅本指南。)
如果你尝试一下,你可能会发现它不起作用。您需要做的是调整提示强度。
AUTOMATIC1111 的工作提示是
(wlop_style :0.6) (m_wlop:1.4) woman wearing dress, perfect face, beautiful detailed eyes, long hair, birds
负面提示:
closed eyes, disfigured, deformed
wlop_style 是嵌入的关键字,m_wlop 是模型的关键字。
如果您没有掌握这种风格,请不要感到沮丧。尝试更改两个关键字的提示强度。某些对象可能无法使用嵌入。尝试 wlop 作品中的一些常见物品。
Kuvshinov
库夫希诺夫是一幅俄罗斯插画。您可以将 kuvshinov 嵌入与稳定扩散 v1.4 结合使用。
提示词:
(_kuvshinov:1), a woman with beautiful detailed eyes, highlight hair
负面提示:
disfigured, deformed
(注意我已将嵌入重命名为 _kuvshinov.bin)
embedding、dreambooth 和hypernetwork之间的区别
微调 Stable Diffusion 模型的三种流行方法是 textual inversion(embedding)、dreambooth 和hypernetwork。
embedding 定义了新的关键字来描述新概念,而无需更改模型。嵌入向量存储在 .bin 或 .pt 文件中。它的文件大小非常小,通常小于100 kB。
Dreambooth通过对整个模型的微调,注入了新的概念。文件大小是稳定扩散的典型文件大小,大约 2 – 4 GB。文件扩展名与其他模型相同,ckpt。
hypernetwork是附加到 Stable Diffusion 模型的去噪 UNet 上的附加网络。目的是在不改变模型的情况下微调模型。文件大小通常约为 100 MB。
使用嵌入的优点和缺点
使用嵌入的优点之一是其尺寸小。文件大小为 100 KB 或更小,将多个文件存储在本地存储中非常简单。因为嵌入只是新的关键字,所以它们可以在同一图片中一起使用。
使用嵌入的缺点是有时不清楚应该与哪种模型一起使用。对于动漫风格,请尝试将它们与 Anything v3 等动漫模型一起使用。
尽管嵌入具有尺寸优势,但它比自定义模型更难使用。发现自己无法重现预期效果是很常见的。