首页 > 其他分享 >AI绘图!Lora训练简明教程

AI绘图!Lora训练简明教程

时间:2023-04-23 18:00:10浏览次数:58  
标签:训练 AI 标签 文件夹 绘图 com stable Lora 图片

如果想要快速训练,使用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-20230419215740689

脚本会询问是否安装一些可选项,我基本没有装特别的.

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下载图片,可以直接设置下载图片的同时得到标签文件.设置如下

image-20230421194316595 image-20230421194257509

也可以参考链接https://i.imgur.com/XHvfAkj.png

如果要获取自己的图像文件标签并编辑,可以使用很多软件,比如stable diffusion web ui的插件,比如stable-diffusion-webui-wd14-taggerstable-diffusion-webui-dataset-tag-editor.

或者使用软件https://github.com/starik222/BooruDatasetTagManager编辑标签.值得一提的是这里的"标签"一般叫caption或者tag.

image-20230421201313975

除了stable-diffusion web ui中有打标签的,本身kohya_ss的GUI也有打标功能

image-20230422113936860

本质上是使用一些已有的模型得到图片的信息。

有了生成的标签后需要自己对标签进行一些处理,这里的处理是为了后面训练lora达到效果,一般叫pruning captions.

Pruning Captions

一般的准则:

  1. 如果你要训练一个画家作品的Lora,那给这些作品打标签时需要去掉关于这个作家的标签,如果是一个人物Lora,那需要去除人物的名字相关tag以及一些决定性的特征.这样这种风格或人物就存在与其他标签上.
  2. 剔除任何应该隐含在所有生成结果中的标签或任何会偏离训练数据的标签

比如关于一个人物的Lora模型,那么这个人物名字就没必要作为prompt了,所以就要去掉这个tag.

编辑标签可以用上述说的stable diffusion中的dataset-editor或者软件BooruDatasetTagManager.

设置图片文件夹

Directory Example

其中的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要跟下载图片的路径一样.

imgbird image-20230422123208032

Grabber这个软件还是不错的,此外还有另一个软件之前推荐过Hydrus,不过设置相对麻烦,这里就不使用了.

最后下载内容如下

image-20230422125727350

你可以将人物不同风格和样式的图片放到不同文件夹.

然后注意,我们需要一个所谓的触发词,也就是使用你这个Lora模型的词汇,这里可以使用hoshino_ai这个tag,所以我们需要添加这个触发词,操作如下

image-20230422131005321

然后使用Dataset Tag Editor插件编辑tag

image-20230422125853433

将包含图片和tag文件的目录加载到插件中,这里我删除了一些频率高同时没什么含义的标签比如有个++的标签.具体操作可以看看仓库写的很详细toshiaki1729/stable-diffusion-webui-dataset-tag-editor: Extension to edit dataset captions for SD web UI by AUTOMATIC1111 (github.com)

最终tag如下,注意这是其中一个概念文件夹的图片

image-20230422130925796

最后不要忘了保存

image-20230422131618882

对于其他concept文件夹操作类似.

最后开始训练,如果使用GUi,那么需要调的值比较多,可以加载别人的配置https://pastebin.com/dl/ZgbbrE7f,自己需要改的就是底模路径,导出模型和数据路径.

也可以使用B站up主秋葉aaaki写的脚本,本质类似,不过对于新手不用跳太多参数了.

image-20230422183430349

后面发现我的笔记本竟然显存只有4G,所以后面把图片进行了统一裁剪并减少了数量,大概三十张图片,concept在3~6之间并且只训练Unet,最后终于不提示显存溢出了.

只训练了10个epoch每两个epoch生成一个模型,最终结果如下.走完了一套流程,虽然显存只有4G,最终效果可能也一般,但还是希望能帮到一些人.

image-20230423111800865

最后测试了一下训练结果,可以说是莫名其妙,惨不忍睹.根本看不出训练集是星野爱的.

不过也算是走完了训练流程吧,毕竟显卡能力有限.

xyz_grid-0000-212138179

xyz_grid-0001-3228716209

xyz_grid-0002-3260766832

后续会写一些参数解析,欢迎关注.

参考资料

  1. LoRA Training Guide (rentry.co)

  2. 《BLIP》-用更干净更多样的数据进行多模态预训练,性能超越CLIP!代码已开源! - 知乎 (zhihu.com)

  3. Bionus/imgbrd-grabber: Very customizable imageboard/booru downloader with powerful filenaming features. (github.com)

  4. [AI绘画]《LORA模型训练超入门级教程》--人人都可以当炼金术士 - 知乎 (zhihu.com)

  5. 开源图像模型Stable Diffusion入门手册 - 腾讯云开发者社区-腾讯云 (tencent.com)

  6. Lora人物训练(多concept)导论 - 哔哩哔哩 (bilibili.com)

标签:训练,AI,标签,文件夹,绘图,com,stable,Lora,图片
From: https://www.cnblogs.com/kanashiminoblog/p/17347314.html

相关文章

  • [vite]: Rollup failed to resolve import "APlayer" from "./APlayer/index.vue".Thi
    这个错误提示是在你使用Vite构建项目时遇到的。错误信息提示Rollup在构建过程中无法解析import"APlayer",而且这很可能会在运行时破坏你的应用程序。这个问题的原因是,APlayer并不是一个模块,没有被正确地导出到你的项目中。为了解决这个问题,你需要告诉Rollup将APlayer......
  • ai问答:使用 Vue3 组合式API 和 TypeScript 封装 echarts 折线图
    <template><divref="chart"style="height:500px;"></div></template><scriptlang="ts">import{ref,onMounted,watch}from'vue'import*asechartsfrom'echarts'e......
  • Rollup failed to resolve import "vue-demi" from
    1、背景:vue3+vite+ts的一个项目打包的时候报错了2、报错截图 3、引入截图 4、修改引入vue-demi->vue5、结果可以正常打包啦~~ ......
  • Explain执行计划分析
    id操作的唯一标识,值越大的操作越先执行select_type操作的类型,不同类型的查询效率不同.包括:simple,简单的select语句,查询中不包含自查询或者unionprimary,查询若包含任何复杂的子部分,最外层查询则被标记为primarysubquery,在select或where列表中包含子查询derived,在f......
  • 修改Git全部Commit提交记录的用户名Name和邮箱Email
    当我们换邮箱了,想把已经提交过的commit的邮箱和用户名改成新的时候。先把本地配置成新的gitconfiguser.name'丁少华'gitconfiguser.email'新邮箱@xx.com'这时候就可以用下面的脚本代码了在项目根目录下创建email.sh写入下面这段代码#!/bin/shgitfilter-branch......
  • 175_模型_Power BI 显示详细信息(Show Ditails)
    175_模型_PowerBI显示详细信息(ShowDitails)一、背景在PowerBI数据分析的道路上有一个闭环:明细数据(详细信息)=>数据清洗=>根据业务建立模型=>出具数据分析报告(可视化)=>洞见问题=>根据问题指标返回业务人员问题指标的明细数据=>推动改善,监控洞见。很多时候在洞见问题后......
  • 首次发刊!Coremail管理员社区2023年Q1季刊发布
    4月21日,Coremail安全邮件城市沙龙在北京正式开展,此次沙龙活动的主题为“践行教育信创,护航邮件安全”。广东盈世计算机科技有限公司服务副总裁、ICANNUA大使吴秀诚在活动上正式发布《Coremail管理员社区2023年Q1季刊》。Coremail管理员社区Coremail管理社区属于云服务板块之一,由Cor......
  • Unable to tunnel through proxy. Proxy returns "HTTP/1.1 503 Service Unavailable
    背景:某日,一正常项目迁移到新的服务器新的服务器,需要使用代理来访问之前能直接访问的接口,加完代理之后,发现无法获取数据了报错:org.springframework.web.client.ResourceAccessException:I/OerroronGETrequestfor"https://xxxxxxxxxx/xxxx":Unabletotunne......
  • rails的接口查询详解
    RetrievingObjectsfromtheDatabasefind"find"是一种常用的数据库查询方法,在Rails中被用于从数据库中查找单个记录。它可以接收一个主键作为参数,也可以接收一组条件参数。以下是"find"方法的使用方式:#使用主键查找单个记录Model.find(1)#使用条件参数查找单个记录Mod......
  • 个人语音信息助理AIS构想
    随着Chat-GPT的出现,人们获取、使用信息,以及使用电子设备的方式有了更多可能,可以设计一种类似手机的硬件设备,结合AI技术,从根本上改变人们目前使用手机遇到的众多问题。AIS(AIviaSound)可理解为“通过语音实现的个人智能助理“。以下将该设备暂命名A。A设备硬件和目前手机硬件基......