生成你的专属定制老婆!——使用stable-diffusion-webui的Textual Inversion功能
fmlong
2022年10月11日 21:02

这几天大家都在用stable-diffusion搭载novelai的模型疯狂搓术式生成老婆,我也跟着潮流体验了一下,但是试了很多次却发现无法生成我喜欢的某个冷门角色(比如说姬坂乃爱)。很多人表示只要描述的够详细就能生成想要的角色。我尝试了很多,但终究无法生成心目中的乃爱小姐,因此去详细阅读了原本的github界面的文档,发现了一个非常重要的功能,这个功能支持我们对特定的图片进行针对训练!

使用了乃爱小姐的描述生成的完全不像乃爱的图片

原本的文档在此,熟悉英文的同学可以自己学习:

https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Textual-Inversion


那么这篇专栏主要就是介绍如何训练自己想要的角色tag以及特定的画风,我先在此声明:训练功能对显存要求及其之高,大概保底需要7-8G左右的显存,笔者使用的显卡是quadro RTX6000 24G,训练时常态使用大约9G显存。

接下来就是正片

需要准备的物品:一组你想用来训练角色/画风的图片


为了使用这个功能,我们首先要进入webui的Textual Inversion选项卡,进入之后是这个样子的

创建词条和数据预处理

训练

这个界面一共有三块,容我一一解释。

第一块是create a new embedding,这一块是用来创建你自己的词条的,

  • Name可以随意填写(之后你生成图片的时候就是用这个name当作tag),我为了不撞词条所以一般用带下划线的名字(这里用的是yj_amamiya)。

  • Initialzation text是你初始化这个词条的描述,Initialzation text是训练的起点,比如我要训练乃爱,这里就是对乃爱的描述 blonde hair,green eyes,red bow,red ribbon,long hair 如果用其他的角色或者画风,这里就换成那个角色或者画风的描述。

  • numbers of vectors per token,可以理解为你的tag中包含的信息量,这个参数与你所提供的数据集有关,建议100张以下的图片的数据集最好不要调到3以上,可能会出现过拟合的现象(比如无法给角色换衣服或者换表情。)


第二块是preprocess images,这一块是用来预处理你的数据的,因为它的模型输入只能是512*512的图片,而我们收的图大部分都不是这个大小的,所以必须要先进行一次数据预处理。

  • Source Directory是原图片的文件夹,把你收的图片全部放在这个文件夹里就可以了。

  • Destination Directory是你预处理之后的图片的输出位置,这个可以随便选一个地方。

  • Create clipped copies是每张图片都输出一个镜像,在图片非常少的时候可以选择这个选项(低于20张)。Split oversized images into two是对于过大的图片进行剪切,这个建议选择,因为如果不选的话就会对你的图片进行拉伸,会变得非常不好看。

  • Use BLIP caption as filename是使用自动标注图片的模型。这里说明一下,一般来说图片是要提前标注好tag的,如果不勾选这个选项就在文件名上手动标注tag。勾选这个选项,程序就会下载一个自动标注的包,然后对你原图片全部进行自动标注,具体效果如下。

自动标注的效果

补充:人工标注的话,你只要把文件名改成你对图片描述的tag就可以了,同时不要勾选Use BLIP caption as filename


第三块是Training,这里就是我们的训练模块了。

  • embedding是你要训练的tag,这里拉下选项框选择上面创建的新词就可以了

  • learning rate建议使用默认的参数(如果觉得收敛太慢的话可能可以调高一些)

  • Dataset Directory直接复制上文的Destination Directory就可以了。

  • Log directory是你训练log的输出文件夹,这里使用默认的就可以,之后你可以进入stable-diffusion-webui/textual_inersion文件夹就可以看log文件了

  • Prompt template file是你输入给模型的模板文件,这里建议训练角色的时候使用subject_filewords.txt,训练画风的时候使用style_filewords.txt

  • Max steps是你训练的步数,这里建议设置在10000(算力不够的话至少设置在4000)。

  • 最后两个选项是你每训练多少步输出一次log和参数,这里设置成默认的就行。如果设置步数太高,导致出现了过拟合现象,你可以到textual_inversion文件夹里找到之前步数的pt文件替换就可以了

设置好了参数之后就可以快乐的训练了

出现这个界面就说明成功开始训练了

补充:训练是可以随时打断的,在训练的时候按下interrupt键就可以,而且也支持断点训练,换句话说可以训练到2000steps试一下效果,再训练到5000steps试一下效果,这些都是没问题的。


如果训练的差不多了之后就可以到txt2img和img2img进行生成了,使用方法是在tag里添加你刚才训练的Name

使用方法

注意在使用的时候要添加角色原本的特征,这样输出的角色更加稳定。


最后是分享你的pt文件和使用别人的pt文件的方法

你训练得到的所有pt文件都存储在stable-diffusion-webui/embeddings文件夹下

如果是分享你已经训练好的pt文件,就把这个文件夹里的pt文件分享给其他人,如果是使用别人的pt文件,就拖入到这个文件夹后重启程序,如果显示了

就说明读取pt完成了,之后就可以快乐的创建自己喜欢的角色的色图了!

最后分享一张我生成的最喜欢的乃爱