Stable diffusion

如何在SD中使用Embeddings

Embedding嵌入,也称为textual inversion文本倒置,是在 Stable Diffusion 中控制图像风格的另一种方法。在本文中,将说明什么是embedding,在哪里可以找到他们以及如何使用它们。

一、什么是embedding

embedding嵌入是文本倒置的结果,这是一种在模型中定义新关键字而不修改它的方法。该方法之所以受到关注,是因为它能够将新样式或对象注入到模型中但只需要 3 -5 个样本图像。

1、textual inversion文本倒置如何工作?

文本倒置的惊人之处不在于添加新样式或对象的能力——其他微调方法也可以做到这一点或做得更好。但是文本倒置它可以在不更改模型的情况下做到这些。

下面是原始论文中提到的文本倒置是怎样工作的:

首先,你为新对象或新样式定义一个不在模型中的新关键字。该新关键字将像提示中的任何其他关键字一样被token化(由数字表示)

然后将每个token转换为唯一的嵌入向量,供模型用于图像生成。

文本倒置找到最能代表新样式或新对象的新关键字的嵌入向量,而无需更改模型的任何部分。您可以将其视为在语言模型中寻找一种方法来描述新概念。

2、embedding案例

嵌入可用于新对象。下面是一个注入玩具猫的例子。请注意,新概念(玩具猫)可以与模型中的其他现有概念(船、背包等)一起使用。

嵌入也可以是一种新的样式。下面的示例显示了嵌入新样式并将样式转移到不同的上下文。

二、在哪里可以找到embedding

1、Hugging Face

Hugging Face 上的stable diffusion概念库(Stable Diffusion Concept Library),这是一个包含大量自定义入的资源库。

2、Civtai

Civtai,C站上也有很多的嵌入模型,你们可以通过筛选 textual inversion查看embedding模型。

三、如何使用embedding

1、Stable Diffusion Conceptualizer

Stable Diffusion Conceptualizer不需要下载就可以使用嵌入。

首先在概念库(Concept Library)中确定要测试的嵌入。假设你想使用这种 Marc Allante style,接下来,确定触发此样式所需的token。你可以在文件 token_identifier.txt 中找到它,即 <Marc_Allante> 。

Stable Diffusion Conceptualizer输入框中输入<Marc_Allante> a dog ,将会形成独特的 Marc Allante 风格。

Web 界面的缺点是你不能使用不同模型的嵌入及更改任何参数。

2、Stable Diffusion Web UI

首先,从概念库下载一个名为 learned_embedds.bin的嵌入文件,点击下载按钮进行下载。

接下来,将文件重命名为你想要使用此嵌入的关键字。它必须是模型中不存在的东西,比如 marc_allante.bin 是个不错的选择。

将其放在 GUI 工作目录的 embeddings 文件夹中,stable-diffusion-webui/embeddings

重新启动界面。在启动终端中,你应该会看到如下消息:

Loaded a total of 1 textual inversion embeddings.

Embeddings: marc_allante

使用文件名作为提示词的一部分,比如说,

(marc_allante:1.2) a dog,然后我们就可以得到预期的风格

需要注意,即使少了一个字母,嵌入也不起作用。此外,不能将 v1 嵌入与 v2 的模型一起使用,反之亦然——它们使用两种不同的语言模型。

那如何确保你输入的正确性,有一个小技巧可以使用。在界面的垃圾桶和复制有个按钮,像小红书

选择它,你可以在文本倒置Textual Inversion的tab下看到你已经安装的所有的嵌入。

单击选择就可以直接将这个嵌入插入到提示词中。这个可以避免你自己输入错误的问题。

3、使用嵌入需要注意的事情

之前案例(marc_allante:1.2) a dog,增加了嵌入的强度。有可能是和Stable Diffusion Web UI加载嵌入的方式有关系,加强关键字的权重效果可能会更好一点。

下面是同一个种子但是权重不一样的示例:

更复杂的是,不同种子值所需的强度可能不同,可以利用XYZ表多刷几个,然后进行选择。

四、个人喜欢的embedding

1、wlop_style

如果你玩过 Stable Diffusion 基础模型,你会发现无论你怎么努力,都无法生成 wlop 的风格(wlop在很久之前抗议过,让SD从训练集把他的作品下掉)。因此你需要搭配自定义模型一起使用才可以做到这点。

wlop_style 嵌入能够渲染艺术家 wlop 的一些漂亮的插图风格。它需要与 SirVeggie 的wlop-any 自定义模型一起使用。

直接下载嵌入—wlop_style embedding

直接下载模型 – wlop-any model

如果你尝试一下,发现它根本不起作用,那么你需要调整提示词的强度。

请看一下上面图片的提示词:

正面提示词:(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作品中的一些常见的对象。一般不生效,就是因为这个作者很少有产出这块的内容,然后模型没有学过,所以它不会。

2、Kuvshinov

Kuvshinov 是俄罗斯风格的插图。你可以将 kuvshinov

嵌入与 Stable Diffusion v1.4 一起使用。

直接下载链接

请看一下上面图片的提示词:

正面提示词:(_kuvshinov:1), a woman with beautiful detailed eyes, highlight hair

负面提示词:disfigured, deformed

注意,这里作者已经将嵌入的名称重命名为_kuvshinov.bin

五、embedding、dreambooth、hypernetwork和LoRA的差别

微调稳定扩散模型的流行方法有以下几种:文本倒置textual inversion(嵌入embedding)、dreambooth 和hypernetwork超网络,LoRA-Low Rank Adaption低秩适配

嵌入定义了新的关键字来描述一个新的概念而不改变模型。嵌入向量存储在 .bin 或 .pt 文件中。它的文件非常小,通常不到 100 kB。

Dreambooth 通过对整个模型进行微调来注入新概念。文件大小是 Stable Diffusion 的典型文件大小,大约 2 – 4 GB。文件扩展名与其他型号相同,为ckpt。

Hypernetwork 是附加到 Stable Diffusion 模型去噪 UNet 上的附加网络。目的是在不改变模型的情况下微调模型。文件大小通常约为 100 MB。

LoRA采用的方式是向原有的模型中插入新的数据处理层,这样就避免了去修改原有的模型参数,从而避免将整个模型进行拷贝的情况,同时其也优化了插入层的参数量,最终实现了一种很轻量化的模型调校方法。它的文件一般在100-200MB左右。

六、embedding的优缺点

1、优点

嵌入的优点之一是它的体积小。文件大小100KB左右,甚至更小,那么将多个文件存储在本地存储中很简单。因为嵌入只是新的关键字,所以它们可以在同一张图像中一起使用。

2、缺点

嵌入的缺点是有时不清楚它应该与哪个模型一起使用。如果模型作者没说,你可以从 v1.4 或 v1.5 开始。你可能还需要考虑有没有用VAE的效果的差别。此外对于动漫风格,模型作者使用像 Anything v3 这样的动漫模型作为底模并不少见。

总的来说,使用嵌入比使用自定义模型更难一些。经常在使用的时候没办法达到模型作者演示的效果,需要不断地调整关键词的权重来抽卡。

翻译:@Hazel

原文链接:https://stable-diffusion-art.com/embedding/#Pros_and_Cons_of_using_embedding

jovi

AiCC : AI Creative Commons AI 设计,关注 AiCC 知识共创! AiCC.pro

发表回复

Back to top button