Dreambooth 是一种将任何东西(您所爱的人、您的狗、您最喜欢的玩具)放入Stable Diffusion模型的方法。我们将介绍 Dreambooth 是什么、它是如何工作的以及如何进行培训。
本教程针对的是已经使用过 Stable Diffusion 但之前没有使用过 Dreambooth 的人。
您将按照逐步指南准备训练图像,并使用我们简单的一键式 Colab notebook进行 dreambooth 训练 – 无需编写代码!
您知道许多自定义模型都是使用 Dreambooth 进行训练的吗?完成本教程后,您将知道如何制作自己的。
您将首先了解 Dreambooth 是什么及其工作原理。但如果您只对训练感兴趣,则可以跳至逐步指南。
什么是Dreambooth?
Dreambooth由 Google 研究团队于 2022 年发布,是一种通过向模型注入自定义主题来微调扩散模型(如Stable Diffusion)的技术。
为什么叫Dreambooth?据谷歌研究团队称,
它就像一个照相亭,但一旦拍摄到主题,它就可以合成到您的梦想带您去的任何地方。
It’s like a photo booth, but once the subject is captured, it can be synthesized wherever your dreams take you.
听起来很棒!但它的效果如何?下面是研究文章中的一个例子。仅使用特定狗(我们称之为Devora)的 3 张图像作为输入,dreamboothed 模型就可以在不同的环境中生成 Devora 的图像。
只需 3 个训练图像,Dreambooth 即可将自定义主题无缝注入Stable Diffusion。
Dreambooth如何工作?
您可能会问,为什么不能简单地使用这些图像通过额外的步骤来训练模型?问题是,众所周知,这样做会因过度拟合(因为数据集非常小)和语言漂移而导致灾难性的失败。
Dreambooth 通过以下方式解决了这些问题
- 对新主题使用一个罕见的单词(请注意,我为狗使用了一个罕见的名字Devora),这样它一开始在模型中就没有太多意义。
- 类的预先保留:为了保留类别(上例中的狗)的含义,模型进行了微调,注入主体(Devora),同时保留类别(狗)的图像生成。
还有另一种类似的技术称为文本反转(textual inversion)。不同之处在于,Dreambooth 对整个模型进行了微调,而文本反转则注入了一个新词,而不是重复使用生僻词,并且仅对模型的文本嵌入部分进行了微调。
训练Dreambooth 需要什么
你需要三样东西
- 一些自定义图像
- 唯一标识符
- 一个类名
在上面的例子中。唯一标识符是Devora。类名称是狗。
然后你需要构建你的实例提示词:
[唯一标识符] [类名称] 的照片
a photo of [unique identifier] [class name]
还有类提示词:
[类名称]的照片
a photo of [class name]
在上面的例子中,实例提示词是
a photo of Devora dog
由于 Devora 是一只狗,所以类提示词是
a photo of a dog
现在已经了解训练需要什么,让我们开始训练吧!
逐步指南
获取训练图像
与任何机器学习任务一样,高质量的训练数据是成功的最重要因素。
为您的自定义主题拍摄 3-10 张照片。照片应该从不同的角度拍摄。
拍摄对象还应该处于多种背景中,以便模型可以将拍摄对象与背景区分开来。
我将在教程中使用这个玩具。
调整图像大小
为了在训练中使用图像,您首先需要将它们的大小调整为 512×512 像素,以便使用 v1 模型进行训练。
BIRME是一个调整图像大小的便捷网站。
- 将您的图像拖放到 BIRME 页面。
- 调整每张图像的画布,使其充分显示主题。
- 确保宽度和高度均为 512 像素。
- 按“保存文件”将调整大小的图像保存到您的计算机。
训练
我建议使用 Google Colab 进行训练,因为它可以省去您设置的麻烦。
整个训练时间约为30分钟。如果您不经常使用 Google Colab,您可能可以在不断开连接的情况下完成训练。购买一些计算积分以避免断开连接的挫败感。截至 2022 年 12 月,10 美元即可获得 50 小时,因此成本并不高。
notebook会将模型保存到您的Google Drive中。如果您选择 fp16(推荐),请确保您至少有 2GB ;如果您不选择,请确保您至少有 4GB。
- 获取Dreambooth 指南并打开 Colab 笔记本。
- 如果您想从Stable Diffusion v1.5模型(推荐)进行训练,则无需更改 MODEL_NAME 。
- 放入实例提示词和类提示词。对于我的图像,我将我的玩具兔子命名为 zwx,因此我的实例提示是“photo of zwx toy”,我的课堂提示是“photo of a toy”。
4. 单击单元格左侧的“播放”按钮 ( ▶️ ) 开始处理。
5. 授予访问 Google 云端硬盘的权限。目前,除了将模型文件保存到 Google 云端硬盘之外,没有简单的方法可以下载该模型文件。
6. 按选择文件上传调整大小的图像。
7. 完成训练大约需要30分钟。完成后,您应该会看到新模型生成的一些示例图像。
8. 您的自定义模型将保存在您的Google Drive文件夹下Dreambooth_model
。下载模型检查点文件并将其安装在您喜欢的 GUI 中。
就是这样!
测试模型
您还可以使用笔记本的第二个单元来测试模型的使用情况。
使用提示
梵高风格zwx油画
oil painting of zwx in style of van gogh
对于我新训练的模型,我对得到的结果感到满意:
使用模型
您可以在 AUTOMATIC1111 GUI 中使用模型checkpoint文件。它是一个免费且功能齐全的 GUI,您可以在 Windows 和 Mac 上安装,或在Google Colab上运行。
如果您尚未使用 GUI 并且模型文件已保存在 Google Drive 中,最简单的方法是 Google Colab 选项。您需要做的就是将模型的路径放入 Google Drive 中即可使用它。有关更多详细信息,请参阅分步教程。
如何从不同的模型进行训练
您将需要更改MODEL_NAME
和BRANCH
。
目前,notebook仅支持训练半精度v1和v2模型。您可以通过查看模型尺寸来判断。v1 模型应约为 2GB。
您可以在 Huggingface 页面下方找到模型名称和分支名称。如下所示的页面在这里。
进一步阅读
如果您想深入了解 Dreambooth,我推荐以下文章。
《如何使用Dreambooth训练Stable Diffusion模型 (Colab notebook)》有3条评论