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

0 / 87

想必各位炼金术师们经过这么长时间的实践与研究,已经弄清楚了 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