Stable Diffusion 训练


前言

简单介绍了Stable diffusion的训练过程。


一、主要训练方式

Stable Diffusion主要有 4 种方式:Dreambooth, LoRA, Textual Inversion, Hypernetworks

1.Textual Inversion (也称为 Embedding),它实际上并没有修改原始的 Diffusion 模型, 而是通过深度学习找到了和你想要的形象一致的角色形象特征参数,通过这个小模型保存下来。这意味着,如果原模型里面这方面的训练缺失的,其实你很难通过嵌入让它“学会”,它并不能教会 Diffusion 模型渲染其没有见过的图像内容。

2.Dreambooth 是对整个神经网络所有层权重进行调整,会将输入的图像训练进 Stable Diffusion 模型,它的本质是先复制了源模型,在源模型的基础上做了微调(fine tunning)并独立形成了一个新模型,在它的基本上可以做任何事情。缺点是,训练它需要大量 VRAM, 目前经过调优后可以在 16GB 显存下完成训练。

3.LoRA (Low-Rank Adaptation of Large Language Models) 也是使用少量图片,但是它是训练单独的特定网络层的权重,是向原有的模型中插入新的网络层,这样就避免了去修改原有的模型参数,从而避免将整个模型进行拷贝的情况,同时其也优化了插入层的参数量,最终实现了一种很轻量化的模型调校方法, LoRA 生成的模型较小,训练速度快, 推理时需要 LoRA 模型+基础模型,LoRA 模型会替换基础模型的特定网络层,所以它的效果会依赖基础模型。

4.Hypernetworks 的训练原理与 LoRA 差不多,与 LoRA 不同的是,Hypernetwork 是一个单独的神经网络模型,该模型用于输出可以插入到原始 Diffusion 模型的中间层。 因此通过训练,我们将得到一个新的神经网络模型,该模型能够向原始 Diffusion 模型中插入合适的中间层及对应的参数,从而使输出图像与输入指令之间产生关联关系。

二、kohya_ss安装(Linux)

安装步骤参考:https://github.com/bmaltais/kohya_ss

1.打开终端并切换到所需的安装目录

2.通过运行以下命令克隆存储库

git clone https://github.com/bmaltais/kohya_ss.git

3.切换到kohya_ss目录

cd kohya_ss

4.通过执行命令来运行安装脚本

bash ./setup.sh

5.安装完成后,在kohya_ss目录下,运行

bash ./gui.sh --listen 0.0.0.0 --server_port 12345 --inbrowser --share

三、利用koyha_ss GUI训练lora

1.准备训练数据

  • 收集20张以上特定风格的图片
  • 保证图片的高质量(训练SDXL模型分辨率最好在10241024以上,训练SD1.5分辨率在512512以上)对模型训练结果有很大影响
  • 避免相似度高或者重复的图片

2.图像数据打标签(CLIP词表)

使用Stable-diffusion-webui中的Dataset Tag Editor
在这里插入图片描述

3.标签优化

在这里插入图片描述

4.训练配置

  • 保存好的图文对文件夹命名规范:”repeat_stylename”
  • repeat代表重复次数,越精细的图,值越高
  • batch_size:训练批量大小,根据显卡类型选择,一般为1,也可以增加
  • epoch:迭代次数
  • 总训练步数:一般在4000以上比较稳定,其计算公式如下 steps=Image数量×repeat×epocℎ/batcℎ_size

5.kohya_ss GUI训练lora

  • 切换到kohya_ss目录下
  • 运行bash ./run.sh打开kohya_ss训练界面
    在这里插入图片描述
    Configuration file 可以打开已有配置文件,自动配置训练参数,也可以保存之前选择好的参数以便下次使用。
  • 路径: LoRA – Training – source model
    在这里插入图片描述
  • 路径: LoRA – Training – Folders
    在这里插入图片描述
  • 路径: LoRA – Training – parameters – Basic
    在这里插入图片描述
    训练参数根据自己的需求设置,比如train batch size一般设为1,如果你的GPU算力充足则可以设置大一些,会加快训练速度。
  • 配置完成,开始训练
    在这里插入图片描述

总结

简单介绍了利用koyha_ss训练lora模型的过程,后面会继续补充更多相关知识!

  • 40
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 稳定扩散训练是一种机器学习算法,用于处理图像和视频等数据的分割和分类问题。它通过在训练过程中逐渐减小学习率和增加正则化项的方式,使模型的参数逐渐稳定,从而提高模型的泛化能力和鲁棒性。该算法在医学影像分析、自然语言处理等领域得到了广泛应用。 ### 回答2: 稳定扩散训练是一种用于图像生成和图像恢复的算法,它是深度学习中的一种优化方法。稳定扩散训练是通过梯度下降来学习图像生成和图像恢复模型的参数的。 训练过程中,使用稳定扩散训练算法来注入不同的图像噪声,如高斯噪声或椒盐噪声,这有助于模型学习如何处理图像中的噪声和不确定性。 稳定扩散训练利用了如下的想法:在优化过程中,需要在不断减小损失函数的同时,避免过拟合。过拟合常出现在模型训练得太好,导致模型对数据的过度拟合,而无法应对新的、未见过的数据。为了防止过拟合,稳定扩散训练中使用了随机噪声。这些噪声可以使模型对于一些数据的小变化不敏感,因此可以提高模型的鲁棒性和泛化能力。 稳定扩散训练算法旨在解决深度学习中的一些常见问题,如模型收敛速度过慢、过拟合问题等。它的主要优势是可以在训练过程中注入噪声来提高模型的鲁棒性,同时仍然能够减小损失函数以及提高模型的泛化能力。 ### 回答3: Stable diffusion训练是一种基于扩散过程实现的神经网络训练方法,它采用一种称为Langevin动力学的模拟随机过程来驱动神经网络参数进行迭代更新,以提高神经网络的性能和鲁棒性。Stable diffusion训练是一种非常有效的深度学习训练方法,它不仅可以在标准视觉任务中取得很好的结果,还可以在很多其他任务中得到有效的应用。 Stable diffusion训练最大的特点就是能够避免深度神经网络训练过程中出现的优化困境,即梯度消失和梯度爆炸问题。它通过在网络参数空间上随机游走,并且在每个时间点添加高斯噪声,以达到网络参数的平滑以及更好的探索全局最优解的目的。此外,Stable diffusion训练还能够自适应地调节网络参数更新的幅度和速率,以进一步提高训练效果。 相比于传统的随机梯度下降(SGD)方法,Stable diffusion训练在收敛速度、稳定性和泛化能力方面都有明显的优势。它能够更快地达到较高的训练精度,并且能够避免过拟合和泛化性能下降的问题。此外,Stable diffusion训练还可以结合其他深度学习技术,如自适应学习率和正则化等方法,以进一步提高神经网络的性能和鲁棒性。 总之,Stable diffusion训练是一种非常有效的深度学习训练方法,它通过扩散过程模型来优化神经网络的性能和稳定性。它不仅具有高效、快速、稳定的特点,同时也可以结合其他深度学习技术来进一步提高网络的性能。它在未来的深度学习领域中有着很广泛的应用前景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值