【NovelAI绘图教程】如何更好的模仿你喜欢的画师的画风——Hypernetworks模型的训练

0 / 1043

想必各位炼金术师们经过这么长时间的实践与研究,已经弄清楚了Embedding能够对炼丹的效果带来多么巨大的影响了吧。不单单可以用来训练特定角色的tag,还可以用于学习各个画师的画风,可以说是非常有用的一种辅助模型了。但经过这几天的测试,我发现embedding在某些方面还是有着局限性的。比如在模仿特定画师画风的时候,embedding有时会使生成的图片带有奇怪的构图效果。此外,embedding在有些时候对原画师的画风模仿是不尽人意的。那么有没有一种方法,能够更好的去模仿画师的画风,生成让我们更加满意的图片呢?这里介绍另一种画风模仿模型的训练思路——Hypernetworks。

Hypernetworks模型能对画风进行改变的特性,使其成为了模仿画风的不二之选。下面是一则效果对比图,展示了使用Hyper模型带来的画风变化:
使用了5w步的ZUN画风hyper模型

可见在附加了hyper之后,所生成的图片画风会发生巨大的变化,让它看起来非常像原画师的画像的风格。下面我将一步步来讲解要如何炼制一个Hyper模型。

准备:收集数据

为了训练你所需要的画师的画风,你需要收集大量的该画师所绘制的插图,画风尽量一致。

数据集预处理

为了能让训练的效果更好,我们需要用到webui新版本当中的deepdanbooru这一功能。Deepdanbooru,是一款基于Danbooru的图片分析模型,通过输入图片,就可以分析得到该图片所对应的danbooru tag。这一模型被webui用在了img2img的标签识别和数据集标注上。通过对数据集进行标记,可以显著提升训练的效果。

下面是安装方式:

  1. https://aiqianji.com/openoker/DeepDanbooru/archive/master.zip下载库,并将其丢在\你的webui目录\models\deepbooru下:
    直接解压
  2. (懒人包用户)对文件夹下的webui-user.bat进行编辑,具体内容如下:
    --medvram参数视个人情况添加

准备就绪后运行bat启动webui。Linux用户直接执行python webui.py (--share)--deepdanbooru即可。如果deepdanbooru启用成功,你会看到在img2img界面中,Generate的按钮下出现了deepdanbooru的按钮。
Generate按钮

之后打开Settings,像这样对选项进行调整:
Settings

这样可以使deepdanbooru输出的标签正常化,避免出现奇怪的问题。接下来,在Train-Create Hypernetworks里面创建好模型:
生成选项

之后对图片进行预处理和裁剪,按照下面的来就行。

预处理

生成反转图片和裁剪长图视情况而定。点击Preprocess,过一会就能看到裁剪好的图和deepdanbooru识别的tag文本文件了。

正式开始训练

直接在template当中输入hypernetwork.txt。
hypernetwork

确认你的vae已经弹出(未加载)后,来到训练界面,像这样填好你的训练参数:
分辨率一般512x512

Hypernetwork选中你需要训练的那个。学习率一般0.000005就行。最大步数一般建议在20000步-35000步之间,太高会过拟合。要注意的是:模型存档时间(倒数第二个)一定要调到5000以上,不然80mb一个的hyper模型会把你的硬盘撑爆,预览Prompt根据喜好填写即可。
预览Prompt
之后点击“Train Hypernetwork”,开始训练。训练最起码需要8G显存。你应该能在控制台看到这样的信息:
控制台

每隔一段时间记得去看一下预览图,确认模型是否过拟合。确认方法:若前面的步数生成的图片质量良好,后面的质量急转直下,生成无关图片甚至鬼图,即模型已经过拟合了。如果过拟合就在webui上停止训练。

测试和生成

训练完成后,你的models/hypernetworks目录下应该会出现之前你训练的pt模型文件。进入Settings,找到stable-diffusion,点击蓝色按钮刷新,在列表里面找到你训练好的pt,选中,应用。
Settings

这样就算是载入好了hypernetwork模型。接下来,按照正常步骤生成图片,即可看到效果。使用效果如图,seed和prompt是一样的:

  • 无Hypernetwork

无Hypernetwork

  • 有Hypernetwork

有Hypernetwork