19| 实战项目(三):动手做一个自己的LoRA模型
如何训练一个 LoRA
数据准备
- 深入了解
- 翻译
- 解释
- 总结
本文详细介绍了如何从零开始训练自己的LoRA模型,以宝可梦生成和彩铅风格生成为例,探索了LoRA模型表达内容和表达风格的能力。文章首先介绍了训练LoRA模型的两个关键问题:数据集获取和基础模型选择。对于数据准备,作者提到了使用现有数据集或者自己的图片进行训练,并展示了如何加载和可视化数据集中的图片和对应prompt。对于基础模型选择,作者强调了选择与训练目标风格接近的基础模型的重要性,并提供了下载基础模型的方法。 接着,文章详细介绍了LoRA训练过程的核心代码逻辑,包括使用VAE模块将图像编码到潜在空间、随机噪声和加噪到第t步、使用CLIP将文本描述作为输入等步骤。作者还解释了训练LoRA模型的核心代码,以UNet模型中的交叉注意力模块投影矩阵为例,详细阐述了训练过程中需要优化的部分是矩阵A和矩阵B。 此外,文章还介绍了如何使用Colab进行LoRA训练,以及如何将训练得到的LoRA模型应用到WebUI上。作者通过实例讲解了如何准备训练数据、图像prompt生成、LoRA训练、LoRA本地使用、超分功能修复生成效果的完整流程。同时,还提到了如何组合使用不同的LoRA模型以及与其他基础模型搭配使用时需要谨慎处理的问题。 总的来说,本文为读者提供了一手的实战经验和技术指导,深入探讨了LoRA模型的训练流程和应用。通过对数据准备、基础模型选择和LoRA训练过程的详细讲解,读者可以快速了解并掌握训练自己的LoRA模型的关键步骤和技术要点。
《AI 绘画核心技术与实战》,新⼈⾸单¥59
全部留言(14)
- 最新
- 精选
- Geek_7401d2老师你好,看完后还是不知道如何入手训练,有几个问题 1、选择素材图片时要用多少张,什么样的图片合适,比方说训练某个人物的Lora时,选择该人的图片时要选择什么样的,全身照、半身照、面部特写等各占多少合适 2、Lora 模型训练多少轮(num_epochs)合适 3、训练完会有多个Lora模型,选择哪一个呢,选最后一轮训练的吗 4、我理解训练lora模型的原理是一样的,为什么同样的素材、用同样的基础模型,用不同的代码会出现不同的训练效果,文中用到的这两个代码库差异在哪呢
作者回复: 你好。针对问题1,以人物LoRA为例,我的经验是以半身照为主,可以混合一些全身照和面部特写,不用混合很多。图片的数量越多越好,推荐不少于10张。针对问题2,训练步数可以根据效果来定,一般而言,300-500步效果会比较好,训练步数过多模型会出现过拟合,多样性能力会变差。针对问题3,咱们代码中有可视化看每一轮次的训练效果,可以挑选一个效果好的模型。一般来说,选择300-500步训练后的模型,不要选择步数太少的模型。针对问题4,diffusers的代码中可调整的参数非常少,数据增广较少、text_encoder学习率等指标设置也不够灵活等。对于开发者而言,可以以diffusers代码仓为基础,逐渐把这些特性加进去,模型的效果会有提升。希望能帮助到你。
2023-08-31归属地:北京4 - cmsgoogle使用diffusers库训练Lora,文中提到:耐心等待 20 分钟,我们就完成了 LoRA 模型的训练。 需要说明下是什么环境,如果再colab上使用T4服务器,大约要1个小时10多分钟。
作者回复: 你好,感谢你的反馈。训练用时因计算资源而异,如果需要下载模型还会受网速影响,应该加一些说明。我们会根据反馈进行调整。
2023-09-16归属地:美国1 - 王大叶老师好,请教两个问题: 1. 对于人像 LoRA 的训练,精细化的打标是否有必要,对 LoRA 质量的影响会很大吗? 2. 实验发现用 deepbooru 给写实人像打标不是很准确,比如经常会把男性图片标注成 1girl,用 BLIP 打标信息又比较少,无法完全涵盖画面的内容。请教人像 LoRA 训练有什么推荐的打标方法吗?
作者回复: 你好。针对第一个问题,我的看法是精细化打标不是很有必要,只需要保证发型、眼镜、服饰颜色这些最基本的信息被涵盖即可,很多时候训练人像LoRA的Prompt甚至是“A photo of a <sks> man”这种粗糙的描述。针对第二个问题,把男性图片标注成 1girl是由于DeepDanbooru的分类精度不够导致的,Midjourney有一个描述功能,写出的Prompt比较准确、信息也比较丰富,可以试试。也可以试试Qwen-VL这种多模态大模型的Caption效果,应该也不错。希望能帮助到你。
2023-09-13归属地:北京1 - 易企秀-郭彦超Y=(W+weight1∗A1⋅B1+weight2∗A2⋅B2)⋅X 老师你好,按照上面公式权重融合的过程是加权融合,W的值在相同维度上会同时受到A和B的影响,最终导致结果既不像A也不像B, 有没有一种累计方式 避免A和B的互相影响? 比如多lora融合前先merge, 根据CNN的思想, 取d/2的A模型参数量 与d/2的B模型参数量 合并成新的d*d lora模型,新的模型保留了原始的A 和 B的部分参数 并没有累加A和B
作者回复: 你好。这是个很有意思的想法,更直观的,我们可以训练两个LoRA,每个LoRA影响不同的UNet模型Attention模块,这样融合的时候便不会在权重上产生叠加效应。但有一个问题,使用这种方式,即使我们能够将不同的LoRA权重解耦开,最终得到的效果大概率还是两个LoRA的中间态,因为这些LoRA都对图像生成的过程都产生了影响,这些影响是叠加还是冲突无法预测。
2023-08-31归属地:北京21 - Geek_ca0b19老师好我有一个问题 如果采用五六张类似风格画风的图,可以通过这几张图训练出一个代表类似风格的lora吗?
作者回复: 你好!使用5-6张图是可以训练出一个风格化LoRA模型的,需要保证这些图片的风格一致。我们可以在MidLibrary上获取很多风格图片:https://midlibrary.io/styles。
2023-09-14归属地:广东 - 石沉溪洞老师您好,请问这个能支持将基本模型改为SDXL吗?谢谢您
作者回复: 你好,将基础模型更换为SDXL需要在代码中做出一定改动,可以参考这个Colab:https://github.com/Linaqruf/kohya-trainer/blob/main/kohya-LoRA-trainer-XL.ipynb
2023-09-14归属地:广东 - @二十一大叔老师,lora训练可以写一个本地运行的python版本吗,colab上看的不是很明白
作者回复: 你好。Colab的代码在加餐篇中我们计划继续深扒。当前如果想理解lora的训练细节,直接看这个脚本就可以:https://github.com/huggingface/diffusers/blob/main/examples/text_to_image/train_text_to_image_lora.py。我们用的Colab在这份代码的基础上,增加了BLIP、数据增广的功能,底层逻辑是一样的。希望能帮助到你,欢迎多交流讨论。
2023-09-05归属地:上海 - 陈问渔请问 make_captions.py 的代码在哪看呀?
作者回复: 你好,make_captions这个脚本可以看这个链接:https://github.com/Linaqruf/kohya-trainer/blob/main/finetune/make_captions.py。这个脚本完成两件事情:下载BLIP模型,为每张图生成prompt。
2023-09-05归属地:上海2 - Alex最新的sd 的bweui 的additional networks 是已经集成了么?我不太确定 我安装了一下 没有显示这个选项 请老师指教下
作者回复: 你好,additional network这个插件需要单独安装,可以按照这个说明来安装:https://github.com/kohya-ss/sd-webui-additional-networks。
2023-09-03归属地:江苏 - peter是否有安卓手机上可以使用绘画AI?
作者回复: 你好,应用商店里有不少AI绘画APP,可以检索一下。当前模型推理需要较多算力,所以主要还是通过调用各种云服务来完成绘画过程。希望能帮助到你。
2023-08-31归属地:北京