前置知识:
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这个网站快速切图.
可以借助birme网站切图
当数据集比例不一时、可以通过outpaint外绘来统一、避免裁掉很多细节
示例:9:16 -> 1:1
准备预处理所需环境
用pip install 安装deepdanbooru(负责给你的训练集里的每张图片打标签)依赖pip install tensorflowpip install tensorflow-io去deepdanbooru官网,查看刚才装的两个东西是否满足deepdanbooru 依赖的版本要求
如果刚才装的tensorflow 和 tensorflow-io 满足上述要求,去修改stable diffusion webui 目录下的 launch.py 的对应代码 tensorflow 和 tensorflow-io 改成自己机器上装的版本 (作用是程序运行时 让程序知道按照自己的环境就够了 没必要装最新的然后一直耗着(加速源上没对应版本) 最后卡死报错)
重新运行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
预处理训练数据(用deepdanbooru)
到settings选项卡下
设置 Interrogate: deepbooru 指定某个百分比下的标签会被过滤掉 (建议使用 0.75,也就是保留预测结果大于 75%的结果。)取消勾选 Interrogate: deepbooru sort alphabetically (不让deepbooru识别完标签后 用标签子母顺序代替预测概率顺序)
回到train选项卡下的preprocess images设置
填上 图片训练集源路径 和 预处理完的目的路径(之后训练用的就是这个路径下的文件)勾选use deepbooru for caption(让 deepbooru来 描绘文件都有啥关键词)点击preprecess(deepbooru 就借助tensorflow开始工作了)
运行完成后刚才的目的路径下就有了每张照片的描述,查看并把你不想要的词删除(懒的话可以跳过)
训练前相关参数设置(这里给出综合几处wiki blog 总结的主流推荐设置、有能力的请自行diy)
settings选项卡下的train设置
Unload VAE and CLIP from VRAM when training勾选,训练时从 VRAM 中卸载 VAE 和 CLIP 设置选项卡上的此选项允许您以较慢的预览图片生成为代价节省一些内存。记得点apply settings
train选项卡下的train设置
选择刚才创的Hypernetwork学习率0.000005(100000步)每100步在你填的log路径下随机生成一张图片测试一下 (用于给你展示一下此时pt(hypernetwork文件拓展名)的训练效果)然后还会保存一份当前训练步数的 pt文件 (方便你之后自行选择自己满意的)
开始训练 Train Hypernetwork
点击下面的Train Hypernetwork 开始训练 (cuda 报错貌似再次运行就能成功 其他报错大部分是因为显存不够)
动态观察训练效果
训练是一个动态的过程
Learning rate(超参数:学习率),学习速率代表了神经网络中随时间推移,信息累积的速度,这个参数较大地影响了影响训练的速度。
通常,Learning rate越低学习越慢(花费更长的时间收敛),但是效果一般更好。
用jupterlab之类的工具到log路径下(默认是textual_inversion/训练日期/pt名/
images/ 下是通过每100steps观察AI的迭代效果生成一张图片测试一下 (用于给你展示一下此时pt(hypernetwork文件拓展名)的训练效果)hypernetworks/ 下是每训练100步生成的pt文件 (方便你之后自行选择自己满意的)
个人的训练实例(训练的赛博朋克边缘行者的Lucy)
时间:大概三四个小时步数:20000多步时候的结束的
结束训练(结束时机)
连着几张出鬼影loss大于0.3loss连着10轮没降自己觉得差不多了
以上几种情况下便可以结束
点击Train选项卡下Train Hypernetwork边上的Interrupt结束
使用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训练成果
转载请注明:NovelAI hypernetwork 自训练教程 | GO123.AI网址大全 | ChatGPT | Midjourney | Stable Diffusion | AI工具软件 | AI软件免费教程