https://github.com/bmaltais/kohya_ss/blob/master/docs/train_README-zh.md
四种训练方法各有其特点和适用场景,下面详细介绍每种方法及其区别:
1. Fine Tuning 微调
脚本: fine_tune.py
特点:
- 数据准备: 需要为每张训练图像准备对应的描述文件(caption),并将这些描述整合到元数据文件中。
- 正则化图像: 不使用正则化图像。
- 应用场景: 适用于大量训练数据并希望模型学习图像和文本描述之间的精确关系。
- 优势: 可以将角色和其他元素分离,并且训练结果较为准确。
2. DreamBooth 训练
脚本: train_db.py
分为两种方法:
-
Class + Identifier 方式
特点:
- 数据准备: 只需要为每个图像指定一个标识符和类,不需要单独的描述文件。
- 正则化图像: 可使用正则化图像。
- 应用场景: 适用于不希望为每张图像准备描述文件的场景,如学习特定角色。
- 优势: 数据准备简单,但所有训练数据的元素都会与标识符相关联。
-
Caption 方式
特点:
- 数据准备: 为每张训练图像准备一个描述文件(caption)。
- 正则化图像: 可使用正则化图像。
- 应用场景: 希望模型能够区分不同元素,如角色、服装、背景等。
- 优势: 更准确地学习角色和其他元素的关系。
3. LoRA (Low-Rank Adaptation)
脚本: train_network.py
特点:
- 数据准备: 既可以使用 Class + Identifier 方式,也可以使用 Caption 方式。
- 正则化图像: 可使用正则化图像。
- 应用场景: 适用于希望在已有模型的基础上,通过少量新数据微调模型,使其适应新任务。
- 优势: 效率高,适合资源有限的情况。
4. Textual Inversion 文本倒装
脚本: train_textual_inversion.py
特点:
- 数据准备: 既可以使用 Class + Identifier 方式,也可以使用 Caption 方式。
- 正则化图像: 可使用正则化图像。
- 应用场景: 适用于希望通过少量文本描述提升模型在特定任务上的表现。
- 优势: 训练过程简洁,能快速调整模型对特定文本描述的生成效果。
总结表格
训练对象或方法 | 脚本 | DB/class+identifier | DB/caption | fine tuning |
---|---|---|---|---|
微调模型 | fine_tune.py |
X | X | o |
DreamBooth训练模型 | train_db.py |
o | o | X |
LoRA | train_network.py |
o | o | o |
Textual Inversion | train_textual_inversion.py |
o | o | o |
选择指南
-
如果不希望准备图像描述文件:
- 使用 DreamBooth 的 Class + Identifier 方式。
-
如果可以准备描述文件,希望更精确的训练:
- 使用 DreamBooth 的 Caption 方式。
-
如果有大量训练数据且不需要正则化图像:
- 使用 Fine Tuning 方法。
-
如果希望在已有模型基础上进行少量数据微调:
- 使用 LoRA 方式。
-
如果希望通过文本描述提升模型特定任务表现:
- 使用 Textual Inversion 方法。
这些方法根据不同的需求和数据准备方式提供了灵活的训练选项,选择适合自己的方法可以更有效地进行模型微调和训练。