使用扩散器训练具有文本反转的稳定扩散模型

使用扩散器训练具有文本反转的稳定扩散模型

在浏览互联网寻找神经网络和各种艺术领域的有趣技术时,我偶然发现了一篇 Twitter 帖子,其中 苏拉吉·帕蒂尔 宣布仅使用 3-5 张图像训练文本反转的稳定扩散模型的可能性。

这个消息在浩瀚的英语社区中传播得非常快(虽然不是每个人都知道它是什么),但在浩瀚的俄语社区中,甚至好几天都没有提及此事。因此,我决定讨论它,并提供您可以自己测试的代码。有些问题可以在文末回答。

什么是文本反转?

我将尝试用更易于理解的语言来解释它。

文本反转允许您训练一个新“概念”的模型,您可以将其与“单词”相关联,而无需更改权重,而是微调文本嵌入向量。

因此,例如,我添加了一堆毛绒企鹅的照片。然后,我可以要求模型,例如,为我的特殊毛绒企鹅绘制一幅画。或者生成一张我坐在山顶上的毛绒企鹅的照片。目标是允许您从不是由模型生成的照片/图像中导入特定的想法/概念,并学习如何表示它们。它也可以用来表示样式。因此,假设您上传了某位艺术家的一堆画作,然后您可以要求他们生成该特定风格的图像。

使用文本反转

现在我将展示如何使用文本反转来训练稳定扩散。此代码也可以在 github仓库 或使用这个 等人 .

在开始工作之前,我建议您注册 拥抱脸 并使用“写入”访问设置获取访问令牌。现在你可以开始了。

在 colab 中,代码位于可以单独运行的单元格中,但我将尝试解释经常导致问题的要点。

  • 首先,您需要安装必要的库并转到 HuggingFace。为此,我们需要一个访问令牌。登录 HuggingFace 将允许您保存经过训练的模型,并在需要时与 Stable Diffusion 内容库共享。

  • 在“教授新概念的设置”部分中,您必须选择一个检查点,所有培训都将在该检查点上绑定。默认情况下,有一个检查点“CompVis/stable-diffusion-v1-4”。您可以指定任何其他。

  • 接下来,开始使用数据集。官方文本反转 colab 允许您使用直接链接到图像,但是对于我的项目继承了艺术家 Ilya Kuvshinov 的风格,我使用了谷歌磁盘,其中我有大约 1000 幅该艺术家的艺术图像(我只使用了30 张图片)。为此,我登录了我的 colab 帐户并使用 shutil 模块从我的 Google 驱动器中复制了该文件夹:

  • 接下来,我必须稍微修改代码,以便模型可以使用我的图像:

  • 现在我们可以继续设置模型了。在“what_to_teach”部分,您可以选择一个对象(允许您向模型教授新对象)或一种风格(在我的例子中,艺术家图像的风格)。在“placeholder_token”部分中,您必须指定一个名称,以便以后可以在经过训练的模型上使用它。我有这个.在“initializer_token”部分,您必须指定 1 个单词来显示您的模型是关于什么的。我有这个kuvshinov。

  • 现在我们可以开始训练模型了。为此,只需运行本节“教模型一个新概念(使用文本反转进行微调)”中的单元格。您还可以查看那里使用了哪些参数,如果您有兴趣,甚至可以编辑它们。有时,在本节中的单元启动期间,可能会发生错误,其中代码发誓错误的 initializer_token。大多数情况下,这个错误是由一个单元格引发的,所以你可以注释掉一段不必要的代码,比如我的。该单元的名称是“获取占位符和初始化令牌的令牌 ID。如果初始化字符串不是单个令牌,此代码块将报错”。之后就可以继续运行代码了

  • 模型训练平均需要 +/- 3 小时。之后,您可以测试生成的模型并将其发布到稳定扩散内容库

  • 为了测试和发布模型,您需要转到“使用新训练的模型运行代码”部分。在“将新创建的概念保存到概念库”框中,您可以指定概念的名称,以及选择是否发布模型。如果您决定发布它,则必须在 hf_token_write 行中指定您在上面输入 HuggingFace 时指定的访问令牌。请务必检查此令牌的访问权限。其中只有 2 个:读和写(写)。我们需要一个写令牌。

  • 之后,您可以一个一个地运行所有其他单元格。在提示行的最后一个单元格中,您必须用英语指定文本提示并指明您的 placeholder_token。例如:墙上的涂鸦在上面

问题和答案

  • 训练模型需要多少资源?

为了训练我的模型,我使用了 30 张 1024x1024 的图像,但您也可以使用更少的图像。这项技术的开发人员为他们的测试选择了 3 到 5 张图像。

  • 学习率是否取决于数据集的大小?

不,它没有。我尝试同时使用 5 和 30 张图像,平均而言学习率保持不变。

  • “要保存此概念以供重复使用,请下载learned_embeds.bin 文件或将其保存到概念库中。”这是否意味着我可以在我已经在运行的本地扩散稳定器上使用它?我该怎么做,这个 .bin 文件将放在哪里,以及如何告诉程序使用它?

是的,您可以在本地计算机上运行模型,但您需要确保有足够的显存,因为这一切的核心是需要 8 GB 显存的稳定扩散模型。要查看它是如何工作的,请使用这个 等人 .

  • 这可以用来添加更多/新的流行文化内容,以便在现有集合中需要更多数据的内容获得更好的结果,还可以添加不在数据集中的新内容,以便 SD 可以输出指定内容的数据?

是的。你可以。

感谢您阅读本文。这是我的第一篇文章,所以不要太苛刻地判断。如果您想了解更多相关信息,请查看 扩散器 笔记本 github。你也可以问我一些问题,虽然我不是一个合格的专家,不能确切地告诉你,但我会帮你做一些事情。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/24586/43261009

posted @ 2022-09-10 09:43  哈哈哈来了啊啊啊  阅读(379)  评论(0编辑  收藏  举报