[Guide] Make your own Loras, easy and free

详情

模型描述

你无需下载任何东西,这是一个使用在线工具的指南。点击下方“显示更多”。

你可以在我的新网站 https://arcenciel.io/articles/1 找到此指南的更新版本,这是一个让经验丰富的AI艺术家和模型创作者分享作品的舒适空间。

🏭 前言

即使你不知道从何开始,或者没有强大的电脑,我也可以引导你制作出你的第一个LoRA!

本指南将使用我 GitHub 页面 中的资源。如果你是Stable Diffusion的初学者,我也有一个完整指南,教你生成自己的图像并学习有用的工具。

我编写这个指南,是因为分享我的爱好以及投入其中的工作让我感到快乐。我相信所有信息都应向所有人免费开放,包括图像生成软件。然而,如果你试图使用AI欺骗他人、诈骗或违法,我不会支持你。我只是为了乐趣而做这件事。

📃 你需要准备

  • 一个互联网连接。你甚至可以用手机完成(只要能防止标签页关闭)。

  • 了解LoRA是什么以及如何使用它们

  • 耐心。我会尽量以简单的方式解释这些新概念。只需仔细阅读,运用批判性思维,遇到错误也不要放弃。

🎴 制作一个LoRA

它曾被认为很难。选项繁多,且无人说明它们各自的作用。但通过我的优化流程,任何人都能在不到一小时内从零开始制作出属于自己的LoRA!同时保留一些你可以后续使用的高级设置。

当然,你也可以在你自己电脑上训练LoRA,前提是你的显卡是Nvidia且显存达到6GB或以上。但在本指南中,我们不会走这条路,我们将使用Google Colab,它让你每天免费借用谷歌强大的计算机和显卡几小时(有些人说每周最多20小时)。你也可以花10美元获得额外50小时,但不是必须的。我们还将使用少量Google Drive存储空间。

本指南聚焦于动漫风格,但同样适用于写实风格。不过,如果你未经同意复制真人面孔,我不会协助你。

🎡 LoRA类型

如你所知,LoRA可以用于训练和使用以下内容:

  • 一个角色或人物
  • 一种艺术风格
  • 一个姿势
  • 一件服装
  • 等等

但如今也有不同类型的LoRA:

  • LoRA:经典类型,适用于大多数情况。

  • LoCon:具有更多层,能学习训练数据中的更多方面。非常适用于艺术风格。

  • LoHa、LoKR、(IA)^3:这些使用新颖的数学算法处理训练数据。我不涵盖它们,因为我觉得它们用处不大。

📊 第一部分:制作数据集

这是制作LoRA中最长且最重要的部分。数据集(对我们而言)是一组图像及其对应的描述,每对文件同名(例如“1.png”和“1.txt”),且它们有某种共同点,正是你希望AI学习的东西。数据集的质量至关重要:你的图像中至少应包含2个以上的不同姿势、角度、背景、服装等。例如,如果所有图像都是脸部特写,那么你的LoRA在生成全身图像时会很困难(但并非不可能!),除非你额外加入一些全身图像示例。随着你增加多样性,AI对概念的理解会更好,从而能够创造训练数据中没有的新内容。例如,角色可能会被生成在新的姿势或穿着不同的服装中。你用最少5张图片也能训练出一个中等水平的LoRA,但我建议至少20张,最多可达1000张。

至于描述部分,对于一般图像,你需要简明且详细的句子,比如“一位金发女性坐在椅子上的全身照片”。对于动漫,则需要使用booru标签(如“1girl, blonde hair, full body, on chair”等)。让我说明标签在数据集中如何运作:你需要尽可能详细,因为LoRA会通过你训练时使用的基础模型来参考图像内容。如果你的图像中存在某项特征,但你没有在标签中提及,那它将自动成为你的LoRA的一部分。这是因为LoRA会吸收那些难以用语言描述的细节,比如面部特征和饰品。借助这一点,你可以让这些细节被吸收进一个激活标签中,这是一个唯一词或短语,放在每个文本文件的开头,使你的LoRA更容易被提示。

你可以从网上收集图像并手动描述。幸运的是,你可以使用我的新📊 数据集生成器Colab 自动完成大部分过程。

以下是步骤:

1️⃣ 设置:这将连接到你的Google Drive。为你的项目选择一个简洁名称,并设置你喜欢的文件夹结构,然后点击左侧浮动的播放按钮运行该单元格。它会请求权限,请允许以继续指南。

  • 如果你已有训练用图像,请上传至Google Drive的“lora_training/datasets/project_name”(旧)或“Loras/project_name/dataset”(新)文件夹,然后可选择跳过第2步。

2️⃣ 从Gelbooru抓取图像:在动漫场景中,我们将使用庞大的艺术作品库来训练LoRA。Gelbooru通过数千个booru标签对图像进行分类,涵盖图像中的一切内容,这也是我们后续为图像打标签的方式。请遵循Colab中的说明:基本是你请求包含特定标签的图像,以代表你的概念、角色或风格。运行该单元格后,它将显示结果并询问你是否继续。当你满意后,输入“yes”,等待一分钟下载图像。

3️⃣ 精选图像:Gelbooru上有很多重复图像,我们将使用FiftyOne AI检测重复图像并标记删除。运行该单元格后,大约需要几分钟。但图像还不会被立即删除:之后会在单元格下方出现一个互动区域,以网格形式显示所有图像。在这里你可以选择不喜欢的图像并标记删除。请遵循Colab中的指示。删除低质量或无关图像非常有帮助。完成后,在互动区域上方的文本框中按Enter,以应用你的更改。

4️⃣ 为图像打标签:我们将使用WD 1.4标签AI为动漫图像添加描述性标签,或使用BLIP AI为写实/其他图像生成描述。这需几分钟时间。我发现标签阈值在0.35到0.5之间效果良好。运行该单元格后,它将显示数据集中最常见的标签,这在下一步中非常有用。

5️⃣ 精选标签:对于动漫标签,此步骤可选但非常有用。你可以在这里为LoRA设置激活标签(也称触发词)。如果你训练的是风格,可能不需要激活标签,以确保LoRA始终生效。如果你训练的是角色,我通常会删除(修剪)角色内在的常见标签,如身体特征、头发/眼睛颜色等。这样它们就会被吸收到激活标签中。修剪可以使提示更容易,但也会降低灵活性。有些人喜欢修剪所有服装以用一个标签定义角色服装,但我并不推荐,因为过度修剪会影响某些细节。更灵活的方法是合并标签,例如,如果有冗余标签如“条纹衬衫、竖条纹、竖条纹衬衫”,你可以将其全部替换为“条纹衬衫”。你可以多次运行此步骤。

6️⃣ 准备就绪:你的数据集已保存在Google Drive中。你可以随意处理它,但我们接下来将直接进入本教程的第二部分,开始训练你的LoRA!

⭐ 第二部分:设置与训练

这是较难的部分。为了训练你的LoRA,我们将使用我的⭐ LoRA训练器Colab🌟 XL LoRA训练器Colab,取决于你是想训练SD1.5模型还是SDXL模型。两者非常相似,都只有一个包含所有必要设置的单元格。这些设置中的许多都不需要更改。但本指南和Colab将会解释每个设置的作用,让你以后可以自由调整。

以下是设置说明:

▶️ 设置:输入你在第一部分中使用的相同项目名称,它将自动运行。此处你也可以更改训练所用的基础模型。有两个推荐的默认模型,但你也可以复制一个自定义模型的直接下载链接。请确保选择与数据集生成器相同的文件夹结构。

▶️ 处理:这些是改变数据集处理方式的设置。

  • 分辨率应保持为512,这是Stable Diffusion的常规设置。增加分辨率会使训练慢很多,但有助于细节表现(SDXL默认为1024)。

  • flip_aug 是一种技巧,可使学习更均衡,仿佛你拥有更多图像,但可能导致AI混淆左右方向,因此由你自行决定是否启用。

  • shuffle_tags 如果你使用动漫标签,应始终保持激活状态,这能提高提示的灵活性并减少偏见。

  • activation_tags 很重要,如果在数据集部分添加了激活标签,请设为1。这也称为 keep_tokens

▶️ 步骤:我们在此处需格外注意。涉及4个变量:你的图像数量、重复次数、周期数(epochs)和批次大小(batch size)。它们共同决定了总步数。

你可以选择设置总周期数或总步数,我们稍后将举例说明。步数太少会导致LoRA“未煮熟”而无用,步数太多则会“煮过头”,导致图像失真。因此我们选择每隔几个周期保存一次LoRA,以便之后比较并作出决定。为此,我建议少量重复次数和大量周期数。

训练LoRA的方法有许多种。我目前采用的方法是平衡这些数值,使总步数为250–1000(根据图像数量而定)。注意,风格可能需要更多周期和更小的学习率。如果你在XL上训练,重复次数只需约为一半。以下是XL的示例:

  • 10张图像 × 10次重复 × 10周期 ÷ 2批次大小 = 500步
  • 20张图像 × 5次重复 × 10周期 ÷ 4批次大小 = 250步
  • 100张图像 × 1次重复 × 10周期 ÷ 4批次大小 = 250步
  • 1000张图像 × 1次重复 × 6周期 ÷ 8批次大小 = 750步

▶️ 学习率:最重要的一组设置。但首次训练时,你无需更改任何一项。无论如何:

  • UNet学习率 决定了LoRA吸收信息的速度。与步数类似,若值过小,LoRA毫无反应;若过大,则会使你生成的所有图像都“深炸”(失真)。存在一个灵活的可工作范围,特别是因为你可以调整提示中LoRA的强度。假设你将dim设置为8至32(见下文),我推荐绝大多数情况下使用5e-4的UNet学习率。若你想慢煮,1e-4或2e-4更合适。请注意,这些是科学记数法:1e-4 = 0.0001

  • 文本编码器学习率 相对不那么重要,特别在训练风格时。它有助于更好地学习标签,但即使没有它,也能学习到。通常认为其值应为UNet的一半或五分之一,良好取值包括1e-4或5e-5。如果这些小数值让你困惑,可以用Google作为计算器。

  • 调度器(scheduler)用于随时间调整学习率。这并非关键,但仍能提供帮助。我始终使用带3次重启的余弦调度,我个人感觉这样能让LoRA“保持新鲜”。可以自由尝试 cosine, constant, 和 constant with warmup。这三种都不会出错。还有“预热比率”有助于高效启动训练,默认的5%效果很好。

▶️ 结构:在这里你可从最初提到的两种LoRA类型中进行选择。此外,dim/alpha 代表你的LoRA大小。尺寸更大并不总是更好。我个人使用16/8,其在角色LoRA方面表现极佳,仅占18MB。

▶️ 准备就绪:现在你已准备好运行这个大单元格,开始训练你的LoRA。启动需约5分钟,之后进入训练阶段。总共应少于一小时,训练结果将保存在你的Google Drive中。

🏁 第三部分:测试

你没看错。我骗了你! 😈 本指南实际上有三个部分。

当你完成LoRA训练后,仍需测试以确认其效果。进入你的Google Drive,在 /lora_training/outputs/ 文件夹内,下载项目名称文件夹中的全部内容。每一个都是训练不同周期保存的LoRA。每个文件名带有数字,如01、02、03等。

以下是寻找最佳使用方式的简单工作流:

  1. 将你最终的LoRA加入提示中,权重设为0.7或1,并包含你在标签部分看到的常见标签。你应该能清楚看到效果,理想情况下与你训练的目标相似。调整提示,直到你满意,或感觉已无法再优化。

  2. 使用 X/Y/Z绘图 比较不同周期的LoRA。这是WebUI的内置功能。进入生成参数底部,选择脚本。在提示中加入第一个周期的LoRA(如“lora:projectname-01:0.7”),在脚本的X值中输入类似“-01, -02, -03”等内容。确保X值处于“提示S/R”模式。这将在你的提示中进行替换,使生成过程依次使用不同编号的LoRA,便于比较质量。如果你想节省时间,可以每2个或每5个周期比较一次。理想情况下应成批测试,以公平比较。

  3. 找到你最喜欢的周期后,尝试找到最佳权重。再次运行X/Y/Z绘图,本次X值设为“:0.5, :0.6, :0.7, :0.8, :0.9, :1”。它将替换成不同的LoRA权重,从而比较效果。成批比较更好。你希望找到一个权重,既能呈现最佳细节,又不会扭曲图像。如果你愿意,可以将第2和第3步结合为X/Y,虽然耗时更长但更彻底。

  4. 如果你找到了满意的结果,恭喜!继续测试不同情境、角度、服装等,观察你的LoRA能否发挥创造力,生成训练数据中没有的内容。

最后,以下是一些可能出错的情况:

  • 如果你的LoRA毫无作用或效果极弱,我们称之为“未煮熟”,可能是因为UNet学习率太低,或需要更多训练时间。请确认你没有在提示中犯错。

  • 如果你的LoRA有效但与你期望不符,可能仍是“未煮熟”,或你的数据集质量低下(图像和/或标签)。有些概念非常难训练,若感到困惑,建议向社区寻求帮助。

  • 如果你的LoRA产生图像扭曲、伪影,且早期周期也无帮助,甚至出现“nan”错误,我们称之为“煮过头”,说明学习率或重复次数过高。

  • 如果你的LoRA对生成内容过于严格,我们就称其为“过拟合”。你的数据集可能太小、标签不佳,或轻微“煮过头”。

如果你获得了可用的结果,那就完成了!现在将其上传至Civitai,让全世界看到吧。别害羞。干杯!

查看我的新网站,一个让经验丰富的AI艺术家和模型创作者分享作品的舒适空间:https://arcenciel.io

此模型生成的图像

未找到图像。