使用 Diffusers 通过 DreamBooth 来训练 Stable Diffusion.md
邀请参与我们的 DreamBooth 微调编程马拉松活动!
DreamBooth 是一种使用专门的微调形式来训练 Stable Diffusion 的新概念技术。一些人用他仅仅使用很少的他们的照片训练出了一个很棒的照片,有一些人用他去尝试新的风格。 Diffusers 提供一个 DreamBooth 训练脚本。这使得训练不会花费很长时间,但是他比较难筛选正确的超参数并且容易过拟合。
我们做了许多实验来分析不同设置下 DreamBooth 的效果。本文展示了我们的发现和一些小技巧来帮助你在用 DreamBooth 微调 Stable Diffusion 的时候提升结果。
在开始之前,请注意该方法禁止应用在恶意行为上,来生成一些有害的东西,或者在没有相关背景下冒充某人。该模型的训练参照 CreativeML Open RAIL-M 许可。
注意:该帖子的先前版本已出版为 W&B 报告
TL;DR: 推荐设置
DreamBooth 很容易快速过拟合,为了获取高质量图片,我们必须找到一个 "sweet spot" 在训练步骤和学习率之间。我们推荐使用低学习率和逐步增加步数直到达到比较满意的状态策略;
DreamBooth 需要更多的脸部训练步数。在我们的实验中,当 BS 设置为 2,学习率设置为 1e-6,800-1200 步训练的很好;
先前提到的对于当训练脸部时避免过拟合非常重要,但对于其他主题可能影响就没那么大了;
如果你看到生成的图片噪声很大质量很低。这通常意味着过拟合了。首先,先尝试上述步骤去避免他,如果生成的图片依旧充满噪声。使用 DDIM 调度器或者运行更多推理步骤 (对于我们的实验大概 100 左右就很好了);
训练文本编码器对于 UNet 的质量有很大影响。我们最优的实验配置包括使用文本编码器微调,低学习率和一个适合的步数。但是,微调文本编码器需要更多的内存,所以理想设置是一个至少 24G 显存的 GPU。使用像 8bit adam、fp 16 或梯度累计技巧有可能在像 Colab 或 Kaggle 提供的 16G 的 GPU 上训练;
EMA 对于微调不重要;
没有必要用 sks 词汇训练 DreamBooth。最早的实现之一是因为它在词汇中是罕见的 token ,但实际上是一种 rifle。我们的实验或其他像 @nitrosocke 的例子都表明使用自然语言描述你的目标是没问题的。
学习率影响
DreamBooth 很容易过拟合,为了获得好的结果,设置针对你数据集合理的学习率和训练步数。在我们的实验中 (细节如下),我们微调了四种不同的数据集用不同的高或低的学习率。总的来说,我们在低学习率的情况下获得了更好的结果。
实验设置
所有的实验使用 train_deambooth.py 脚本,使用 AdamW 优化器在 2X40G 的 A00 机器上运行。我们采用相同的随机种子和保持所有超参相同,除了学习率,训练步骤和先前保留配置。
对于前三个例子 (不同对象),我们微调模型配置为 bs = 4 (每个 GPU 分 2 个),400 步。一个高学习率 = 5e-6,一个低学习率 = 2e-6。无先前保留配置。
最后一个实验尝试把人加入模型,我们使用先去保留配置同时 bs = 2 (每个 GPU 分 1 个),800-1200 步。一个高学习率 = 5e-6,一个低学习率 = 2e-6。
你可以使用 8bit adam,fp16 精度训练,梯度累计去减少内存的需要,并执行相同的实验在一个 16G 显存的机器上。
Toy 猫
高学习率 (5e-6)

低学习率 (2e-6)

土豆先生的头
高学习率 (5e-6) 请注意,颜色伪像是噪声残余物 - 运行更多的推理步骤可以帮助解决其中一些细节

低学习率 (2e-6)

人脸
我们试图将 Seinfeld 的 Kramer 角色纳入 Stable Diffusion 中。如前所述,我们培训了更小的批量尺寸的更多步骤。即使这样,结果也不是出色的。为了简洁起见,我们省略了这些示例图像,并将读者推迟到下一部分,在这里,面部训练成为我们努力的重点。
初始化结果总结
为了用 DreamBooth 获取更好的 Stable Diffusion 结果,针对你的数据集调整你的学习率和训练步数非常重要。
- 高学习率多训练步数会导致过拟合。无论使用什么提示,该模型将主要从训练数据中生成图像
- 低学习率少训练步骤会导致欠拟合。该模型将无法生成我们试图组合的概念
脸部训练非常困难,在我们的实验中,学习率在 2e-6 同时 400 步对于物体已经很好了,但是脸部需要学习率在 1e-6 (或者 2e-6) 同时 1200 步才行。
如果发生以下情况,模型过度拟合,则图像质量会降低很多:
- 学习率过高
- 训练步数过多
- 对于面部的情况,如下一部分所示,当不使用事先保存时
训练脸部使用先前配置
先前的保存是一种使用我们试图训练的同一类的其他图像作为微调过程的一部分。例如,如果我们尝试将新人纳入模型,我们要保留的类可能是人。事先保存试图通过使用新人的照片与其他人的照片相结合来减少过度拟合。好处是,我们可以使用 Stable Diffusion 模型本身生成这些其他类图像!训练脚本如果需要的话会自动处理这一点,但是你还可以为文件夹提供自己的先前保存图像
先前配置,1200 步数,学习率 = 2e-6

无先前配置,1200 步数,学习率 = 2e-6

如你所见,当使用先前配置时,结果会更好,但是仍然有嘈杂的斑点。是时候做一些其他技巧了
调度程序的效果
在前面的示例中,我们使用 PNDM 调度程序在推理过程中示例图像。我们观察到,当模型过度时,DDIM 通常比 PNDM 和 LMSDISCRETE 好得多。此外,通过推断更多步骤可以提高质量:100 似乎是一个不错的选择。附加步骤有助于将一些噪声贴在图像详细信息中。
PNDM, Kramer 脸

LMSDiscrete, Kramer 脸。结果很糟糕

DDIM, Kramer 脸。效果好多了

对于其他主题,可以观察到类似的行为,尽管程度较小。
PNDM, 土豆头

LMSDiscrete, 土豆头

DDIM, 土豆头

微调文本编码器
原始的 DreamBooth 论文讲述了一个微调 UNet 网络部分但是冻结文本编码部分的方法。然而我们观察到微调文本编码会获得更好的效果。在看到其他 DreamBooth 实施中使用的方法后,我们尝试了这种方法,结果令人惊讶!

冻结文本编码器

微调文本编码器
微调文本编码器会产生最佳结果,尤其是脸。它生成更现实的图像,不太容易过度拟合,并且还可以更好地提示解释性,能够处理更复杂的提示。
后记:Textual Inversion + DreamBooth
我们还进行了最后一个实验,将 Textual Inversion 与 DreamBooth 结合在一起。两种技术都有相似的目标,但是它们的方法不同。
在本次实验中我们首先用 Textual Inversion 跑了 2000 步。接着那个模型我们又跑了 DreamBooth 额外的 500 步,学习率为 1e-6。结果如下:

我们认为,结果比进行简单的 DreamBooth 要好得多,但不如我们调整整个文本编码器时那样好。它似乎可以更多地复制训练图像的样式,因此对它们可能会过度拟合。我们没有进一步探索这种组合,但是这可能是改善 DreamBooth 适合 16GB GPU 的过程的有趣替代方法。欢迎随时探索并告诉我们你的结果!
英文原文: Training Stable Diffusion with DreamBooth using Diffusers
译者:innovation64 (李洋)
加入译者团队: https://bit.ly/3QGHTOz
使用 Diffusers 通过 DreamBooth 来训练 Stable Diffusion.md的更多相关文章
- 使用 LoRA 进行 Stable Diffusion 的高效参数微调
LoRA: Low-Rank Adaptation of Large Language Models 是微软研究员引入的一项新技术,主要用于处理大模型微调的问题.目前超过数十亿以上参数的具有强能力的大 ...
- 在英特尔 CPU 上加速 Stable Diffusion 推理
前一段时间,我们向大家介绍了最新一代的 英特尔至强 CPU (代号 Sapphire Rapids),包括其用于加速深度学习的新硬件特性,以及如何使用它们来加速自然语言 transformer 模型的 ...
- Diffusers中基于Stable Diffusion的哪些图像操作
目录 辅助函数 Text-To-Image Image-To-Image In-painting Upscale Instruct-Pix2Pix 基于Stable Diffusion的哪些图像操作们 ...
- AI绘画提示词创作指南:DALL·E 2、Midjourney和 Stable Diffusion最全大比拼 ⛵
作者:韩信子@ShowMeAI 深度学习实战系列:https://www.showmeai.tech/tutorials/42 自然语言处理实战系列:https://www.showmeai.tech ...
- 从 GPT2 到 Stable Diffusion:Elixir 社区迎来了 Hugging Face
上周,Elixir 社区向大家宣布,Elixir 语言社区新增从 GPT2 到 Stable Diffusion 的一系列神经网络模型.这些模型得以实现归功于刚刚发布的 Bumblebee 库.Bum ...
- Stable Diffusion魔法入门
写在前面 本文为资料整合,没有原创内容,方便自己查找和学习, 花费了一晚上把sd安装好,又花了大半天了解sd周边的知识,终于体会到为啥这些生成式AI被称为魔法了,魔法使用前要吟唱类比到AI上不就是那些 ...
- 最新版本 Stable Diffusion 开源AI绘画工具之部署篇
目录 AI绘画 本地环境要求 下载 Stable Diffusion 运行启动 AI绘画 关于 AI 绘画最近有多火,既然你有缘能看到这篇文章,那么相信也不需要我过多赘述了吧? 随着 AI 绘画技术的 ...
- 基于Docker安装的Stable Diffusion使用CPU进行AI绘画
基于Docker安装的Stable Diffusion使用CPU进行AI绘画 由于博主的电脑是为了敲代码考虑买的,所以专门买的高U低显,i9配核显,用Stable Diffusion进行AI绘画的话倒 ...
- Window10环境下,Stable Diffusion的本地部署与效果展示
Diffusion相关技术最近也是非常火爆,看看招聘信息,岗位名称都由AI算法工程师变成了AIGC算法工程师,本周跟大家分享一些Diffusion算法相关的内容. Window10环境下,Stable ...
- Stable Diffusion 关键词tag语法教程
提示词 Prompt Prompt 是输入到文生图模型的文字,不同的 Prompt 对于生成的图像质量有较大的影响 支持的语言Stable Diffusion, NovelAI等模型支持的输入语言为英 ...
随机推荐
- Linux socket API
socket是进程通信机制的一种,与PIPE.FIFO不同的是,socket即可以在同一台主机通信(unix domain),也可以通过网络在不同主机上的进程间通信(如:ipv4.ipv6),例如因特 ...
- C#/.NET/.NET Core优秀项目和框架2023年11月简报
前言 公众号每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架(公众号每周至少推荐两个优秀的项目和框架当然节假日除外),公众号推文有项目和框架的介绍.功能特点以及部分截图等(打不开或 ...
- 429 You are being rate limited
记录贴 429 真的很让人伤心 清除浏览器数据 我用的 Edge : 设置 ⇒ 隐私.搜索和服务 ⇒ 清除浏览器数据 ⇒ 立即清除 然后就重新登陆可以了
- 2023年的PHP项目部署笔记。什么?还有人用PHP?
前言 这是我第一次用 PHP 的包管理工具 composer 一开始用 docker 进行部署,但一直出问题,最后还是选择直接在服务器上安装 php-fpm 搭配 nginx 的方案了. PS:doc ...
- C++学习笔记三:变量与数据类型(浮点型)
1. 数据类型与所占内存大小 类型 大小 精度 注意 float 4 7 double 8 15 默认 long double 16 >double 精度就是有效数字. 2. 声明和初始 ...
- Tensorflow2.0:使用Keras自定义网络实战
tensorflow2.0建议使用tf.keras作为构建神经网络的高级API 接下来我就使用tensorflow实现VGG16去训练数据 背景介绍: 2012年 AlexNet 在 ImageNet ...
- 87 GB 模型种子,GPT-4 缩小版,超越ChatGPT3.5,多平台在线体验
瞬间爆火的Mixtral 8x7B 大家好,我是老章 最近风头最盛的大模型当属Mistral AI 发布的Mixtral 8x7B了,火爆程度压过Google的Gemini. 缘起是MistralAI ...
- 如何使用libgdx做游戏01---libgdx的安装
一般来说使用这个工具做游戏的都是java开发者,这种技术在国外勉强算是必学的,而在国内却很少有这方面的知识. 接下来,我将讲解如何安装libgdx,也算是简单的libgdx入门 工具:idea.jdk ...
- 华企盾DSC在苹果电脑上加密文件不显示加密图标
1.首先mac端暂时只支持在访达内显示加密图标,且新建的加密文件需要切换目录才可查看 2.检查DSCFinderSync进程是否启动,若没有启动重启一下DSC进程 3.若还没有显示直接重启系统的访达进 ...
- 酷表ChatExcel -北大出品免费自动处理表格工具
酷表ChatExcel是通过文字聊天实现Excel的交互控制的AI辅助工具,期望通过对表输入需求即可得到处理后的数据(想起来很棒),减少额外的操作,辅助相关工作人员(会计,教师等)更简单的工作.Cha ...