如果想要快速训练,使用B站up主秋叶的整合包搭配视频【AI绘画】最佳人物模型训练!保姆式LoRA模型训练教程 一键包发布_哔哩哔哩_bilibili即可.
训练的基本逻辑就是首先进行预处理,可以通过stable diffusion web ui中的预处理,也可以通过ps这种图片处理软件,比如我想训练一个某动漫角色的Lora模型,那就需要这个角色的一些图.
当然有了图之后,也需要标注,也就是label标签,可以选择deepbooru或者BLIP生成标注数据.
然后进行配置训练参数,如果用的有GUI的直接读入配置json文件即可.下面是一套低显存配置.
{
"pretrained_model_name_or_path": "runwayml/stable-diffusion-v1-5",
"v2": false,
"v_parameterization": false,
"logging_dir": "C:/Users/ohmni/AI/SAMPLE IMAGES/ADAMS/LORA OUTPUT/log",
"train_data_dir": "C:/Users/ohmni/AI/SAMPLE IMAGES/ADAMS/LORA OUTPUT/img",
"reg_data_dir": "",
"output_dir": "C:/Users/ohmni/AI/SAMPLE IMAGES/ADAMS/LORA OUTPUT/model",
"max_resolution": "512,512",
"learning_rate": "0.0001",
"lr_scheduler": "constant",
"lr_warmup": "0",
"train_batch_size": 1,
"epoch": "1",
"save_every_n_epochs": "1",
"mixed_precision": "fp16",
"save_precision": "fp16",
"seed": "1234",
"num_cpu_threads_per_process": 2,
"cache_latents": true,
"caption_extension": ".txt",
"enable_bucket": false,
"gradient_checkpointing": true,
"full_fp16": false,
"no_token_padding": false,
"stop_text_encoder_training": 0,
"use_8bit_adam": true,
"xformers": true,
"save_model_as": "safetensors",
"shuffle_caption": false,
"save_state": false,
"resume": "",
"prior_loss_weight": 1.0,
"text_encoder_lr": "5e-5",
"unet_lr": "0.0001",
"network_dim": 128,
"lora_network_weights": "",
"color_aug": false,
"flip_aug": false,
"clip_skip": 2,
"gradient_accumulation_steps": 1.0,
"mem_eff_attn": true,
"output_name": "Addams",
"model_list": "runwayml/stable-diffusion-v1-5",
"max_token_length": "75",
"max_train_epochs": "",
"max_data_loader_n_workers": "1",
"network_alpha": 128,
"training_comment": "",
"keep_tokens": "0",
"lr_scheduler_num_cycles": "",
"lr_scheduler_power": ""
}
实际配置的时候,可以多在C站看看好的Lora模型然后拉到stable-diffusion中看看别人的训练信息.
然后存训练的图片也有讲究,文件夹命名有格式要求,这里后面细说.
主要使用derrian-distro/LoRA_Easy_Training_Scripts: A set of two training scripts written in python for use in Kohya's SD-Scripts repository. (github.com)这个仓库学习.
下载安装即可,Windows平台下载installer.py文件,作者推荐使用3.10.6,当然3.10版本应该都能跑.
脚本会询问是否安装一些可选项,我基本没有装特别的.
image-20230419215705031安装完成后开始准备数据集,推荐两个图片搜集软件,这样不用自己到处爬取了.一个是Grabber和Hydrus.我用了一下,Grabber是不错的,下载链接在参考资料里.
此外还可以使用Release first release · derrian-distro/Quick_Image_Sort (github.com)来进行图片整理排序.
图片的分辨率影响模型的生成,同时也要注意你机器的配置,比如512x512是一般8G以上的图片大小,最好将获取的图片裁剪或调整到相同的分辨率同时可以进行重命名.这写步骤可以在一些在线图片编辑网站BIRME - Bulk Image Resizing Made Easy 2.0 (Online & Free)操作,web ui中也有相关选项用于图片裁剪.同时注意图片中背景处理,可以使用Cleanup.pictures - Remove objects, people, text and defects from any picture for free清除图片中的一些东西.
如果使用Grabber下载图片,可以直接设置下载图片的同时得到标签文件.设置如下
也可以参考链接https://i.imgur.com/XHvfAkj.png
如果要获取自己的图像文件标签并编辑,可以使用很多软件,比如stable diffusion web ui的插件,比如stable-diffusion-webui-wd14-tagger
和stable-diffusion-webui-dataset-tag-editor
.
或者使用软件https://github.com/starik222/BooruDatasetTagManager编辑标签.值得一提的是这里的"标签"一般叫caption或者tag.
除了stable-diffusion web ui中有打标签的,本身kohya_ss的GUI也有打标功能
本质上是使用一些已有的模型得到图片的信息。
有了生成的标签后需要自己对标签进行一些处理,这里的处理是为了后面训练lora达到效果,一般叫pruning captions.
一般的准则:
比如关于一个人物的Lora模型,那么这个人物名字就没必要作为prompt了,所以就要去掉这个tag.
编辑标签可以用上述说的stable diffusion中的dataset-editor或者软件BooruDatasetTagManager.
其中的txt文件就是caption文件,而其中的5_ConceptA是概念文件夹,5表示其中的图片每张训练5次.
Concept 概念文件夹遵循这种格式:<编号>_<名称>
<编号>决定了你的训练脚本将在该文件夹上进行的重复次数。只要你有匹配的txt标题文件,<名称>就纯粹是装饰性的。
caption文件是强制性的,否则LoRAs将使用概念名称作为标题进行训练。
需要一个根目录,根目录下面是多个concept文件夹.同时可以在这个根目录同级创建一个reg文件夹用于正则化防止过拟合.
image-20230421212314625比如这里 train_girls里面是训练数据,下面放置多个概念文件夹,reg_girls里放图片.
实战训练一个人物Lora,这里就懒得在网上一个一个找角色的图了,使用Grabber搜索角色名,比如星野爱,hoshino_ai.注意设置所有来源
image-20230422122414943在 "来源 "下勾选你希望搜索的任何一个Booru(s)。 (注意:不是所有的Boorus都能立即工作,Danbooru需要配置) 在 "目的地 "下选择你希望保存图像的文件夹(!确保这与日志是同一个文件夹!)。 要下载,只需右击任何图像缩略图并点击保存即可 如果你想批量下载,你可以在底部选择 "获取本页 "或 "获取全部 "来组成一个下载队列。 你也可以使用ctrl + click,然后使用get selected。 然后导航到上面的 "下载 "选项卡,开始下载 你下载的所有图片都会有一个包含标签的同名文本文件
注意可能图片样式会有很多,包括nsfw的,等会在训练的时候可以设置多个概念文件夹.
同时设置下载图片时增加tag文件,按下图设置即可.Filename要跟下载图片的路径一样.
Grabber这个软件还是不错的,此外还有另一个软件之前推荐过Hydrus
,不过设置相对麻烦,这里就不使用了.
最后下载内容如下
你可以将人物不同风格和样式的图片放到不同文件夹.
然后注意,我们需要一个所谓的触发词,也就是使用你这个Lora模型的词汇,这里可以使用hoshino_ai这个tag,所以我们需要添加这个触发词,操作如下
然后使用Dataset Tag Editor插件编辑tag
将包含图片和tag文件的目录加载到插件中,这里我删除了一些频率高同时没什么含义的标签比如有个++
的标签.具体操作可以看看仓库写的很详细toshiaki1729/stable-diffusion-webui-dataset-tag-editor: Extension to edit dataset captions for SD web UI by AUTOMATIC1111 (github.com)
最终tag如下,注意这是其中一个概念文件夹的图片
最后不要忘了保存
image-20230422131618882对于其他concept文件夹操作类似.
最后开始训练,如果使用GUi,那么需要调的值比较多,可以加载别人的配置https://pastebin.com/dl/ZgbbrE7f,自己需要改的就是底模路径,导出模型和数据路径.
也可以使用B站up主秋葉aaaki写的脚本,本质类似,不过对于新手不用跳太多参数了.
后面发现我的笔记本竟然显存只有4G,所以后面把图片进行了统一裁剪并减少了数量,大概三十张图片,concept在3~6之间并且只训练Unet,最后终于不提示显存溢出了.
只训练了10个epoch每两个epoch生成一个模型,最终结果如下.走完了一套流程,虽然显存只有4G,最终效果可能也一般,但还是希望能帮到一些人.
image-20230423111800865最后测试了一下训练结果,可以说是莫名其妙,惨不忍睹.根本看不出训练集是星野爱的.
不过也算是走完了训练流程吧,毕竟显卡能力有限.
xyz_grid-0000-212138179 xyz_grid-0001-3228716209后续会写一些参数解析,欢迎关注.
LoRA Training Guide (rentry.co)
《BLIP》-用更干净更多样的数据进行多模态预训练,性能超越CLIP!代码已开源! - 知乎 (zhihu.com)
Bionus/imgbrd-grabber: Very customizable imageboard/booru downloader with powerful filenaming features. (github.com)
[AI绘画]《LORA模型训练超入门级教程》--人人都可以当炼金术士 - 知乎 (zhihu.com)
开源图像模型Stable Diffusion入门手册 - 腾讯云开发者社区-腾讯云 (tencent.com)
Lora人物训练(多concept)导论 - 哔哩哔哩 (bilibili.com)
本文由 mdnice 多平台发布