NovelAI hypernetwork 自训练教程

NovelAI指南 2年前 (2023) liang
937 0

前置知识:

10.29号更新(推荐全体流程用VSCode操作、大大提升效率)

概念说明

webui的train标签页可以实现为SD及衍生模型增加类似 DLC 扩展包的自训练功能

目前为止SD的自训练方法训练出pthypernetworks训练embedding训练(Textual Inversion)Aesthetic Gradients embedding训练出ckpt文件dreambooth训练 11.18日更新了DreamBooth的教程

这里引用AiDraw文档中部分内容说明上述方法原理及区别

Textual Inversion 训练为了 embeddings,embeddings 为 Ai 提供处理过的输入数据,告诉这个角色“具体是什么”,训练特殊的人物,角色会更好。

Hypernetworks 则会对超网络的改动,与 embeddings 不同,Hypernetworks 会对模型进行微调,所以泛化效果更加好,训练画风会更好。

Aesthetic Gradients 通过计算平均权重,来提升图片的质量,提高美观度。在少量提示词情况下也可以生成效果不错的作品。

dreambooth 可适应用户特定的图像生成需求。"只需几张指定物体的照片和相应的类名(如“狗”)作为输入,并添加一个唯一标识符植入不同的文字描述中,DreamBooth 就能让被指定物体“完美”出现在用户想要生成的场景中。" 和 Textual Inversion 不同,dreambooth 向输出插入训练数据,可以做到高相似,效果特别好。但是不能即插即用, 强度不可调。

准备数据集

512*51230张左右统一风格 不要多人 不要空镜

可以借助Birme这个网站快速切图.

NovelAI hypernetwork 自训练教程

可以借助birme网站切图

当数据集比例不一时、可以通过outpaint外绘来统一、避免裁掉很多细节

示例:9:16 -> 1:1

NovelAI hypernetwork 自训练教程 NovelAI hypernetwork 自训练教程

准备预处理所需环境

用pip install 安装deepdanbooru(负责给你的训练集里的每张图片打标签)依赖pip install tensorflowpip install tensorflow-io去deepdanbooru官网,查看刚才装的两个东西是否满足deepdanbooru 依赖的版本要求

NovelAI hypernetwork 自训练教程

如果刚才装的tensorflow 和 tensorflow-io 满足上述要求,去修改stable diffusion webui 目录下的 launch.py 的对应代码 tensorflow 和 tensorflow-io 改成自己机器上装的版本 (作用是程序运行时 让程序知道按照自己的环境就够了 没必要装最新的然后一直耗着(加速源上没对应版本) 最后卡死报错)

NovelAI hypernetwork 自训练教程

重新运行webui 并在运行命令中加上预处理相关参数 (—no-half —precision 会占用更多硬件资源 如果机器性能不够去掉这两个参数) COMMANDLINE_ARGS="--deepdanbooru --no-half --precision full --port 6006" REQS_FILE="requirements.txt" python launch.py

创建你要hypernetwork的文件

webui train选项卡下create hypernetwork 下指定你要创建hypernetwork的名字 (比如角色人物名 )后面训练完成后就是用这个名字加入prompt中,然后点击create

NovelAI hypernetwork 自训练教程

预处理训练数据(用deepdanbooru)

到settings选项卡下

NovelAI hypernetwork 自训练教程

设置 Interrogate: deepbooru 指定某个百分比下的标签会被过滤掉 (建议使用 0.75,也就是保留预测结果大于 75%的结果。)取消勾选 Interrogate: deepbooru sort alphabetically (不让deepbooru识别完标签后 用标签子母顺序代替预测概率顺序)

回到train选项卡下的preprocess images设置

NovelAI hypernetwork 自训练教程

填上 图片训练集源路径 和 预处理完的目的路径(之后训练用的就是这个路径下的文件)勾选use deepbooru for caption(让 deepbooru来 描绘文件都有啥关键词)点击preprecess(deepbooru 就借助tensorflow开始工作了)

NovelAI hypernetwork 自训练教程

运行完成后刚才的目的路径下就有了每张照片的描述,查看并把你不想要的词删除(懒的话可以跳过)

NovelAI hypernetwork 自训练教程

训练前相关参数设置(这里给出综合几处wiki blog 总结的主流推荐设置、有能力的请自行diy)

settings选项卡下的train设置

Unload VAE and CLIP from VRAM when training勾选,训练时从 VRAM 中卸载 VAE 和 CLIP 设置选项卡上的此选项允许您以较慢的预览图片生成为代价节省一些内存。记得点apply settings

NovelAI hypernetwork 自训练教程

train选项卡下的train设置

NovelAI hypernetwork 自训练教程

选择刚才创的Hypernetwork学习率0.000005(100000步)每100步在你填的log路径下随机生成一张图片测试一下 (用于给你展示一下此时pt(hypernetwork文件拓展名)的训练效果)然后还会保存一份当前训练步数的 pt文件 (方便你之后自行选择自己满意的)

NovelAI hypernetwork 自训练教程

开始训练 Train Hypernetwork

点击下面的Train Hypernetwork 开始训练 (cuda 报错貌似再次运行就能成功 其他报错大部分是因为显存不够)

NovelAI hypernetwork 自训练教程

动态观察训练效果

训练是一个动态的过程

Learning rate(超参数:学习率),学习速率代表了神经网络中随时间推移,信息累积的速度,这个参数较大地影响了影响训练的速度。

通常,Learning rate越低学习越慢(花费更长的时间收敛),但是效果一般更好。

NovelAI hypernetwork 自训练教程

用jupterlab之类的工具到log路径下(默认是textual_inversion/训练日期/pt名/

images/ 下是通过每100steps观察AI的迭代效果生成一张图片测试一下 (用于给你展示一下此时pt(hypernetwork文件拓展名)的训练效果)hypernetworks/ 下是每训练100步生成的pt文件 (方便你之后自行选择自己满意的)

NovelAI hypernetwork 自训练教程

个人的训练实例(训练的赛博朋克边缘行者的Lucy)

时间:大概三四个小时步数:20000多步时候的结束的

结束训练(结束时机)

连着几张出鬼影loss大于0.3loss连着10轮没降自己觉得差不多了

以上几种情况下便可以结束

点击Train选项卡下Train Hypernetwork边上的Interrupt结束

NovelAI hypernetwork 自训练教程

使用hypernetwork

挑出后期满意的pt

images/下找最满意的图片对应步骤号,

去textual_inversion/hypernetworks/找到对应的pt文件,

复制到stable-diffusion-webui/models/hypernetworks 下改名 (PT文件的文件名就是等会程序能识别的 prompt tags 所以建议起个不会和其他东西混淆的独特ID (自己原来用lucy就会有时被识别为欧美小女孩所以改成了lucycyber))

回到sd webui中加载pt

settings选项卡下StableDiffusion设置下Hypernetwork选刚才准备的pt 其他保持如下图的设置点击Apply settings保存!!!

现在就可以在txt-img img-img 各个功能下识别你训练的hypernetwork了 (注意模型你用那个模型训练的hypernetwork就只能在那个模型上用)

IMG-IMG

TXT-IMG

放下自己训练结果对照

loopback 迭代草图

(loopback还可配合inpaint进行修图、类似ps 美图秀秀里的修补功能)

成果展示

一个技巧 在prompt中输入 character profile或者character sheet 可以让AI画 人物概念设计图 可以检验hypernetwork训练成果

相关文章