文本反转
什么是文本反转?
文本反转:用几张反映该概念的图像教授关于特定概念的基本模型新词汇。
- 概念可以是:姿势、艺术风格、纹理等。
- 这个概念不必在现实世界中实际存在。例如,您可能已经看到许多生成的图像,其负面提示(np)包含“EasyNegative”标签。这是在一堆有人认为质量差的图像上训练的人工概念。
- 它不会丰富模型。如果你的基本模型只训练在苹果的图像上,并且你试图用大约20张香蕉图像教模型“香蕉”这个词,那么——充其量——当你要香蕉时,你的模型会给你长长的黄色苹果。(当然,你可以得到1000多张图片的香蕉和苹果的模型,但这真的值得吗?;) )
培训的结果是.pt
或.bin
文件(前者是原始作者使用的格式,后者是扩散器库使用的格式),并嵌入其中。这些文件可以共享给其他生成艺术家。
使用预先训练的嵌入
将嵌入到embeddings
目录中,并在提示符中使用其文件名。您不必重新启动程序才能正常工作。
例如,这是我在WD1.2模型上训练的Usada Pekora的嵌入,在53张图片(119个增强)上,共19500步,每个令牌设置有8个矢量。
它生成的图片:
portrait of usada pekora
Steps: 20, Sampler: Euler a, CFG scale: 7, Seed: 4077357776, Size: 512x512, Model hash: 45dee52b
您可以在一个提示中合并多个嵌入:
portrait of usada pekora, mignon
Steps: 20, Sampler: Euler a, CFG scale: 7, Seed: 4077357776, Size: 512x512, Model hash: 45dee52b
非常小心您与嵌入一起使用的模型:它们与您在训练期间使用的模型配合得很好,但在不同的模型上效果不太好。例如,以下是上述嵌入和香草1.4Stable Diffusion 模型:
portrait of usada pekora
Steps: 20, Sampler: Euler a, CFG scale: 7, Seed: 4077357776, Size: 512x512, Model hash: 7460a6fa
培训嵌入
文本反转选项卡
对用户界面中培训嵌入的实验性支持。
- 创建一个新的空嵌入,选择带有图像的目录,在上面训练嵌入
- 该功能非常原始,使用风险自负
- 在几万步后,我能够重现我与其他repos在培训动漫艺术家的风格中得到的结果
- 使用半精度的浮子,但需要实验,看看结果是否同样好
- 如果你有足够的内存,运行更安全
--no-half --precision full
- UI自动运行图像预处理的部分。
- 您可以在不丢失任何数据的情况下中断和恢复训练(AdamW优化参数除外,但现有的repos似乎都没有保存这些,所以一般观点是它们并不重要)
- 不支持批次大小或梯度累积
- 应该不可能使用
--lowvram
和--medvram
标志运行它。
参数解释
创建嵌入
- 名称:创建的嵌入的文件名。在引用嵌入时,您还将在提示中使用此文本。
- 初始化文本:您创建的嵌入最初将填充此文本的矢量。如果您创建一个名为“zzzz1234”的矢量嵌入,将“树”作为初始化文本,并在没有训练的情况下在提示中使用它,那么提示“a zzzz1234 by monet”将产生与“a tree by monet”相同的图片。
- 每个令牌的向量数:嵌入的大小。这个值越大,您可以嵌入的主题信息就越多,而且它从您的提示津贴中带走的单词就越多。通过稳定的扩散,提示中限制为75个令牌。如果您在提示符中使用带有16个向量的嵌入,您将为75-16 = 59留出空间。同样根据我的经验,矢量数量越多,你需要的图片就越多才能获得好的结果。
预处理
这从目录中获取图像,处理它们以准备进行文本反转,并将结果写入另一个目录。这是一个方便的功能,如果您愿意,您可以自己预处理图片。
- 源目录:带有图像的目录
- 目标目录:将写入结果的目录
- 创建翻转副本:对于每个图像,也写入其镜像副本
- 将超大图像分成两部分:如果图像太高或太宽,请调整其大小,使其短边与所需的分辨率相匹配,并创建两个,其中可能相交的图片。
- 使用BLIP字幕作为文件名:使用询问器的BLIP模型向文件名添加字幕。
训练嵌入
- 嵌入:从这个下拉列表中选择要训练的嵌入。
- 学习率:培训应该有多快。将此参数设置为高值的危险是,如果您将其设置得太高,您可能会破坏嵌入。如果您在培训信息文本框中看到
Loss: nan
,这意味着您失败了,嵌入已死。使用默认值,这不应该发生。在此设置中,可以使用以下语法指定多个学习速率:0.005:100, 1e-3:1000, 1e-5
-这将以0.005
的lr进行前100步的训练,然后是1e-3
到1000步,然后1e-5
直到结束。 - 数据集目录:带有培训图像的目录。它们都必须是正方形的。
- 日志目录:部分训练的嵌入的示例图像和副本将写入此目录。
- 提示模板文件:带有提示的文本文件,每行一个,用于训练模型。查看directorytextual
textual_inversion_templates
中的文件,了解您可以用这些文件做什么。训练样式时使用style.txt
,训练对象嵌入时使用subject.txt
。可以在文件中使用以下标签:[name]
:嵌入的名称[filewords]
:来自数据集图像文件名的单词。有关更多信息,请参阅下文。
- 最大步骤:完成这么多步骤后,培训将停止。一个步骤是将一张图片(或一批图片,但目前不支持批次)显示给模型,并用于改进嵌入。如果您中断训练并在稍后恢复训练,则保留步骤数。
- 通过嵌入PNG块保存图像:每次生成图像时,都会将其与最近记录的嵌入相结合,并以一种既可以作为图像共享的格式保存到image_embeddings中,也可以放入您的嵌入文件夹并加载。
- 预览提示:如果不是空,此提示将用于生成预览图片。如果为空,将使用培训提示。
文件单词
[filewords]
是提示模板文件的标签,允许您将文件名中的文本插入提示符。默认情况下,删除文件的扩展名,以及文件名开头的所有数字和破折号(-
)。因此,此文件名:000001-1-a man in suit.png
将成为提示文本:a man in suit
。文件名中文本的格式保持原样。
It's possible to use options Filename word regex
and Filename join string
to alter the text from filename: for example, with word regex = \w+
and join string = ,
, the file from above will produce this text: a, man, in, suit
. regex is used to extract words from text (and they are ['a', 'man', 'in', 'suit', ]
), and join string (', ') is placed between those words to create one text: a, man, in, suit
.
也可以制作一个文件名与图像相同的文本文件(000001-1-a man in suit.txt
),只需将提示文本放在那里。文件名和正则表达式选项将不会被使用。
第三方回购协议
我使用这些存储库成功训练了嵌入:
其他选择是在colabs上训练和/或使用扩散器库,对此我一无所知。
在线查找嵌入
- Github恳请我删除这里的所有链接。
超网络
超网络是一本小说(明白吗?)在不接触任何重量的情况下微调模型的概念。
目前训练超网的方法是在文本反转选项卡中。
培训的工作方式与文本反转相同。
唯一的要求是使用非常非常低的学习率,比如0.000005或0.0000005。
Dum Dum指南
一位匿名用户写了一本带有使用超网络图片的指南:https://rentry.org/hypernetwork4dumdums
训练时从VRAM卸载VAE和CLIP
设置选项卡上的此选项允许您以较慢的预览图片生成为代价节省一些内存。