使用Dreambooth训练稳定扩散
对使用Dreambooth训练稳定扩散的实验分析
Created on December 9|Last edited on February 14
Comment
本报告是作者苏拉·帕蒂尔(Suraj Patil)、佩德罗·昆卡(Pedro Cuenca)、瓦伦丁·科津(Valentine Kozin)所写的"How to Train a Conditional Diffusion Model from Scratch"的翻译
Dreambooth是一种通过特殊形式的微调来教授稳定扩散(Stable Diffusion)新概念的技术。有些人用Dreambooth来搭配一些照片,让自己置身于美丽的环境中,而另一些人则用Dreambooth来融入新的风格。🧨 扩散器(Diffusers)提供了一个Dreambooth训练脚本,但一些用户表示很难获得好的结果。
我们进行了大量实验来验证脚本,并分析Dreambooth不同设置的效果。本报告将介绍实验的发现和一些技巧,以提高大家在Dreambooth训练稳定扩散时的效果。
所涉及的内容
TL,DR;学习率(LR)的影响实验设置调查结果摘要噪声和退化图像的影响先验保存对人脸的影响调度器(采样器)的影响使用蛋头先生数据集调度器影响的总结微调文本编码器的效果微调文本编码器的总结文本倒置和Dreambooth相关资料
TL,DR;
- 使用Dreambooth,StableDiffusion很快就会过度拟合。为数据集找到合适的学习率(LR)和训练步骤很重要。用较少的步骤训练较高的学习率,用较多的步骤训练较低的学习率,得到的结果非常相似。我们必须找到给定学习率的“最佳”训练步骤,以获得合理的图像。
- Dreambooth需要更多人脸训练步骤。在批次大小为2、学习率为1e-6的实验中,大约800-1200个步骤效果不错。
- 在对人脸进行训练时,先验保存(Prior preservation)很重要,以避免过度拟合,对于其他对象来说,似乎没有太大区别。
- 如果看到生成的图像有噪声,或者质量下降,很可能意味着过度拟合。首先,尝试以上步骤来避免。如果生成的图像仍然有噪声,使用DDIM调度器或运行更多的推理步骤(在我们的实验中,大约100个步骤效果不错)。
- 执行EMA似乎并没有什么区别。
- 通过微调文本编码器,结合低学习率和适当数量的步骤,获得了最佳结果。然而,微调文本编码器需要一个至少有24GB内存的GPU。
学习率(LR)的影响
使用Dreambooth,StableDiffusion很快就会过度拟合。为了获得较好的结果,调整数据集的学习率和训练步骤很重要。我们在四个具有高学习率和低学习率的数据集上,对Dreambooth SD进行了微调,在所有情况下,用低学习率训练时,模型产生的结果更好。
实验设置
所有实验都是使用train_dreambooth.py脚本和AdamW优化器,在2x 40GB A100s上进行的。我们使用了相同的种子,并在整个运行过程中保持所有超参数相等,除了学习率、训练步骤和使用先验保存。
对于前三个示例,我们对模型进行了微调,批量为4(每个GPU 2批),400步。我们使用了5-6的高学习率和2e-6的低学习率。未使用先验保存。
人脸示例在先验保存的情况下进行训练,批量为2(每个 GPU 1 批),800步和1200步。我们使用了5-6的高学习率和2e-6的低学习率。
下方可以看到具有高学习率和低学习率的四个数据集的结果。
猫咪玩具示例
高学习率 (5e-6)

低学习率 (2e-6)

Pighead Example
高学习率 (5e-6)

低学习率 (2e-6)

蛋头先生示例
高学习率 (5e-6)

低学习率 (2e-6)

人脸示例
调查结果摘要
正如所见,要在使用Dreambooth训练稳定扩散技术时获得良好的结果,重要的是:
- 调整数据集的学习率和训练步骤。
- 高学习率和过多的训练步骤会导致过度拟合(换句话说,无论提示如何,模型都只能从训练数据中生成图像)。
- 低学习率和过少的步骤会导致欠拟合,这是因为模型无法生成经过训练的概念。
- 在我们的实验中,2e-6用于具有400个训练步骤的对象,1e-6或2e-6用于具有约1200个步骤的人脸,似乎效果不错。
噪声和退化图像的影响
如果模型过度拟合,图像质量会下降很多,如果出现以下情况,就会发生这种情况:
- 学习率过高,如上节所述。
- 运行了太多的训练步骤,如上节所述。
- 对于人脸的情况,如果没有使用先验保存的话。
先验保存对人脸的影响
使用先验保存,1200步,低学习率 (2e-6)

未使用先验保存,1200步,低学习率 (2e-6)

调度器(采样器)的影响
以上所有结果都是使用PNDM调度器(又名PLMS)生成的,同样有趣的是,不同的调度器有不同的效果。
过度拟合时,使用PNDM和LMSDiscrete (klms) 调度器时,图像质量受到的影响最大。使用DDIM进行推理似乎更加稳健。通过执行更多的扩散步骤,也可以提高质量(约100步似乎效果不错)。
PNDM

LMSDiscrete

DDIM

使用蛋头先生数据集
PNDM

LMSDiscrete

DDIM

调度器影响的总结
如果看到生成的图像有噪声或质量下降,则可能意味着过度拟合。要避免这种情况,请执行以下步骤:
- 使用低学习率或较少的训练步骤
- 使用先验保存
如果经过以上步骤,图像质量仍然下降:
- 尝试不同的调度器
- 使用更多的推理步骤
微调文本编码器的效果
有些人观察到,使用扩散器的效果不如其他Dreambooth分支的效果,尤其是对于人脸。经过研究,我们发现在CompVis分支中,文本编码器也进行了微调!微调文本编码器的效果很不错。
请自行查看:
冻结文本编码器

微调文本编码器

微调文本编码器的总结
微调文本编码器似乎产生了最好的效果,特别是对人脸。
- 生成更逼真的图像
- 减少过度拟合
- 允许更优的提示解释性(prompt interpretability),即可以处理更复杂的提示。
微调文本编码器的唯一缺点是,无法在16GB GPU上进行训练,我们至少需要一张24GB的显卡。使用DeepSpeed在16GB中应该可以,但这会增加训练时间。
文本倒置和Dreambooth

如上所见,结果比只做Dreambooth好得多,但不如微调整个文本编码器时好,因为这似乎更多地复制了训练图像的风格。但这也可能是因为过度拟合。我们没有多加探讨,但这可能是微调文本编码器的一个很好的替代方案,因为文本倒置和Dreambooth都可以在16GB的GPU运行,而且训练时间较短。我们将其留给社区进行深入探索。
这种分析并不完美,还有其他方法可以改进Dreambooth。如果发现任何错误或改进之处,敬请告知。感谢阅读!
相关资料
Making My Kid a Jedi Master With Stable Diffusion and Dreambooth
In this article, we'll explore how to teach and fine-tune Stable Diffusion to transform my son into his favorite Star Wars character using Dreambooth.
Speed Up Stable Diffusion on Your M1Pro Macbook Pro
How to speed up your Stable Diffusion inference and get it running as fast as possible on your M1Pro Macbook Pro laptop.
Improving Generative Images with Instructions: Prompt-to-Prompt Image Editing with Cross Attention Control
A primer on text-driven image editing for large-scale text-based image synthesis models like Stable Diffusion & Imagen
Running Stable Diffusion on an Apple M1 Mac With HuggingFace Diffusers
In this article, we look at running Stable Diffusion on an M1 Mac with HuggingFace diffusers, highlighting the advantages — and the things to watch out for.
Add a comment
Iterate on AI agents and models faster. Try Weights & Biases today.