fixed some translation errors

This commit is contained in:
DingSiuyo
2023-07-19 04:30:37 +00:00
parent 0cfcb5a49c
commit e6d1f509a0

View File

@@ -28,7 +28,7 @@ __由于文档正在更新中描述可能有错误。__
在任意文件夹(也可以是多个文件夹)中准备好训练数据的图像文件。支持 `.png`, `.jpg`, `.jpeg`, `.webp`, `.bmp` 格式的文件。通常不需要进行任何预处理,如调整大小等。 在任意文件夹(也可以是多个文件夹)中准备好训练数据的图像文件。支持 `.png`, `.jpg`, `.jpeg`, `.webp`, `.bmp` 格式的文件。通常不需要进行任何预处理,如调整大小等。
但是请勿使用极小的图像其尺寸比训练分辨率稍后将提到还小建议事先使用超分辨率AI等进行放大。另外请注意不要使用过大的图像约为3000 x 3000像素以上因为这可能会导致错误建议事先缩小。 但是请勿使用极小的图像,其尺寸比训练分辨率稍后将提到还小建议事先使用超分辨率AI等进行放大。另外请注意不要使用过大的图像约为3000 x 3000像素以上因为这可能会导致错误建议事先缩小。
在训练时,需要整理要用于训练模型的图像数据,并将其指定给脚本。根据训练数据的数量、训练目标和说明(图像描述)是否可用等因素,可以使用几种方法指定训练数据。以下是其中的一些方法(每个名称都不是通用的,而是该存储库自定义的定义)。有关正则化图像的信息将在稍后提供。 在训练时,需要整理要用于训练模型的图像数据,并将其指定给脚本。根据训练数据的数量、训练目标和说明(图像描述)是否可用等因素,可以使用几种方法指定训练数据。以下是其中的一些方法(每个名称都不是通用的,而是该存储库自定义的定义)。有关正则化图像的信息将在稍后提供。
@@ -54,9 +54,9 @@ __由于文档正在更新中描述可能有错误。__
## 选择哪一个 ## 选择哪一个
如果您想要学习LoRA、Textual Inversion而不需要准备简介文件则建议使用DreamBooth class+identifier。如果您能够准备则DreamBooth Captions方法更好。如果您有大量的训练数据并且不使用规则化图像则请考虑使用fine-tuning方法。 如果您想要学习LoRA、Textual Inversion而不需要准备标题文件则建议使用DreamBooth class+identifier。如果您能够准备标题文件则DreamBooth Captions方法更好。如果您有大量的训练数据并且不使用规则化图像则请考虑使用fine-tuning方法。
对于DreamBooth也是一样的但不能使用fine-tuning方法。对于fine-tuning方法只能使用fine-tuning方式。 对于DreamBooth也是一样的但不能使用fine-tuning方法。若要进行微调只能使用fine-tuning方式。
# 每种方法的指定方式 # 每种方法的指定方式
@@ -86,7 +86,7 @@ identifier是用于识别学习目标并进行学习的单词。可以使用任
作为identifier我最近使用的一些参考是“shs sts scs cpc coc cic msm usu ici lvl cic dii muk ori hru rik koo yos wny”等。最好是不包含在Danbooru标签中的单词。 作为identifier我最近使用的一些参考是“shs sts scs cpc coc cic msm usu ici lvl cic dii muk ori hru rik koo yos wny”等。最好是不包含在Danbooru标签中的单词。
## step 2. 决定是否使用正则化图像,并生成正则化图像 ## step 2. 决定是否使用正则化图像,并在使用时生成正则化图像
正则化图像是为防止前面提到的语言漂移,即整个类别被拉扯成为学习目标而生成的图像。如果不使用正则化图像,例如在 `shs 1girl` 中学习特定角色时,即使在简单的 `1girl` 提示下生成,也会越来越像该角色。这是因为 `1girl` 在训练时的标题中包含了该角色的信息。 正则化图像是为防止前面提到的语言漂移,即整个类别被拉扯成为学习目标而生成的图像。如果不使用正则化图像,例如在 `shs 1girl` 中学习特定角色时,即使在简单的 `1girl` 提示下生成,也会越来越像该角色。这是因为 `1girl` 在训练时的标题中包含了该角色的信息。
@@ -100,15 +100,17 @@ identifier是用于识别学习目标并进行学习的单词。可以使用任
(由于正则化图像也被训练,因此其质量会影响模型。) (由于正则化图像也被训练,因此其质量会影响模型。)
通常,准备数百张图像是理想的(图像数量太少会导致类别图像无法推广并学习它们的特征)。 通常,准备数百张图像是理想的(图像数量太少会导致类别图像无法被归纳,特征也不会被学习)。
如果要使用生成的图像生成图像的大小通常应与训练分辨率更准确地说是bucket的分辨率见下文相匹配。
如果要使用生成的图像请将其大小通常与训练分辨率更准确地说是bucket的分辨率相适应。
## step 2. 设置文件的描述 ## step 2. 设置文件的描述
创建一个文本文件,并将其扩展名更改为`.toml`。例如,您可以按以下方式进行描述: 创建一个文本文件,并将其扩展名更改为`.toml`。例如,您可以按以下方式进行描述:
(以``开头的部分是注释,因此您可以直接复制粘贴,或者将其删除,都没有问题。) (以``开头的部分是注释,因此您可以直接复制粘贴,或者将其删除。)
```toml ```toml
[general] [general]
@@ -116,30 +118,30 @@ enable_bucket = true # 是否使用Aspect Ratio Bucketing
[[datasets]] [[datasets]]
resolution = 512 # 学习分辨率 resolution = 512 # 学习分辨率
batch_size = 4 # 批大小 batch_size = 4 # 批大小
[[datasets.subsets]] [[datasets.subsets]]
image_dir = 'C:\hoge' # 指定包含训练图像的文件夹 image_dir = 'C:\hoge' # 指定包含训练图像的文件夹
class_tokens = 'hoge girl' # 指定标识符类 class_tokens = 'hoge girl' # 指定标识符类
num_repeats = 10 # 训练图像的迭代次数 num_repeats = 10 # 训练图像的重复次数
# 以下仅在使用正则化图像时进行描述。不使用则删除 # 以下仅在使用正则化图像时进行描述。不使用则删除
[[datasets.subsets]] [[datasets.subsets]]
is_reg = true is_reg = true
image_dir = 'C:\reg' # 指定包含正则化图像的文件夹 image_dir = 'C:\reg' # 指定包含正则化图像的文件夹
class_tokens = 'girl' # 指定类别 class_tokens = 'girl' # 指定class
num_repeats = 1 # 正则化图像的迭代次数基本上1就可以了 num_repeats = 1 # 正则化图像的重复次数基本上1就可以了
``` ```
基本上只需更改以下位置即可进行学习。 基本上只需更改以下几个地方即可进行学习。
1. 学习分辨率 1. 学习分辨率
指定一个数字表示正方形(如果是 `512`,则为 512x512如果使用方括号和逗号分隔的两个数字则表示横向×纵向如果是`[512,768]`,则为 512x768。在SD1.x系列中原始学习分辨率为512。指定较大的分辨率`[512,768]` 可能会减少纵向和横向图像生成时的错误。在SD2.x 768系列中分辨率为 `768` 指定一个数字表示正方形(如果是 `512`,则为 512x512如果使用方括号和逗号分隔的两个数字则表示横向×纵向如果是`[512,768]`,则为 512x768。在SD1.x系列中原始学习分辨率为512。指定较大的分辨率`[512,768]` 可能会减少纵向和横向图像生成时的错误。在SD2.x 768系列中分辨率为 `768`
1.大小 1.大小
指定同时学习多少个数据。这取决于GPU的VRAM大小和学习分辨率。详细信息将在后面说明。此外fine tuning/DreamBooth/LoRA等也会影响批大小,请查看各个脚本的说明。 指定同时学习多少个数据。这取决于GPU的VRAM大小和学习分辨率。详细信息将在后面说明。此外fine tuning/DreamBooth/LoRA等也会影响批大小,请查看各个脚本的说明。
1. 文件夹指定 1. 文件夹指定
@@ -149,7 +151,7 @@ batch_size = 4 # 批量大小
如前所述,与示例相同。 如前所述,与示例相同。
1. 迭代次数 1. 重复次数
将在后面说明。 将在后面说明。
@@ -163,9 +165,9 @@ batch_size = 4 # 批量大小
## 步骤 3. 学习 ## 步骤 3. 学习
请根据每个文档的参考进行学习。 详情请参考相关文档进行学习。
# DreamBooth标题方式可使用规范化图像) # DreamBooth标题方式可使用正则化图像)
在此方式中,每个图像都将通过标题进行学习。 在此方式中,每个图像都将通过标题进行学习。
@@ -173,40 +175,39 @@ batch_size = 4 # 批量大小
请将与图像具有相同文件名且扩展名为 `.caption`(可以在设置中更改)的文件放置在用于训练图像的文件夹中。每个文件应该只有一行。编码为 `UTF-8` 请将与图像具有相同文件名且扩展名为 `.caption`(可以在设置中更改)的文件放置在用于训练图像的文件夹中。每个文件应该只有一行。编码为 `UTF-8`
## 步骤 2. 决定是否使用规范化图像,并在使用时生成规范化图像 ## 步骤 2. 决定是否使用正则化图像,并在使用时生成正则化图像
与class+identifier格式相同。可以在规范化图像上附加标题但通常不需要。 与class+identifier格式相同。可以在规范化图像上附加标题但通常不需要。
## 步骤 2. 编写设置文件 ## 步骤 2. 编写设置文件
创建一个文本文件并将扩展名更改为 `.toml`。例如,可以按以下方式进行记录。 创建一个文本文件并将扩展名更改为 `.toml`。例如,可以按以下方式进行描述:
```toml ```toml
[general] [general]
enable_bucket = true # Aspect Ratio Bucketingを使うか否か enable_bucket = true # 是否使用Aspect Ratio Bucketing
[[datasets]] [[datasets]]
resolution = 512 # 学習解像度 resolution = 512 # 学习分辨率
batch_size = 4 # 批大小 batch_size = 4 # 批大小
[[datasets.subsets]] [[datasets.subsets]]
image_dir = 'C:\hoge' # 指定包含训练图像的文件夹 image_dir = 'C:\hoge' # 指定包含训练图像的文件夹
caption_extension = '.caption' # 使用字幕文件扩展名 .txt 时重写 caption_extension = '.caption' # 使用txt文件,更改此项
num_repeats = 10 # 训练图像的迭代次数 num_repeats = 10 # 训练图像的重复次数
# 以下仅在使用正则化图像时进行描述。不使用则删除 # 以下仅在使用正则化图像时进行描述。不使用则删除
[[datasets.subsets]] [[datasets.subsets]]
is_reg = true is_reg = true
image_dir = 'C:\reg' #指定包含正则化图像的文件夹 image_dir = 'C:\reg' # 指定包含正则化图像的文件夹
class_tokens = 'girl' # class を指定 class_tokens = 'girl' # 指定class
num_repeats = 1 # num_repeats = 1 # 正则化图像的重复次数基本上1就可以了
1
``` ```
基本上,您可以通过仅重写以下位置来学习。除非另有说明,否则与类+标识符方法相同。 基本上只需更改以下几个地方来学习。除非另有说明,否则与class+identifier方法相同。
1. 学习分辨率 1. 学习分辨率
2.大小 2.大小
3. 文件夹指定 3. 文件夹指定
4. 标题文件的扩展名 4. 标题文件的扩展名
@@ -215,13 +216,13 @@ batch_size = 4 # 批量大小
## 步骤 3. 学习 ## 步骤 3. 学习
请参考每个文档进行学习。 详情请参考相关文档进行学习。
# 微调方法 # 微调方法(fine tuning)
## 步骤 1. 准备元数据 ## 步骤 1. 准备元数据
将标题和标签整合到管理文件中称为元数据。它的扩展名为 `.json`格式为json。由于创建方法较长因此在本文档的末尾进行描述。 将标题和标签整合到管理文件中称为元数据。它的扩展名为 `.json`格式为json。由于创建方法较长因此在本文档的末尾进行描述。
## 步骤 2. 编写设置文件 ## 步骤 2. 编写设置文件
@@ -233,16 +234,16 @@ keep_tokens = 1
[[datasets]] [[datasets]]
resolution = 512 # 图像分辨率 resolution = 512 # 图像分辨率
batch_size = 4 # 批大小 batch_size = 4 # 批大小
[[datasets.subsets]] [[datasets.subsets]]
image_dir = 'C:\piyo' # 指定包含训练图像的文件夹 image_dir = 'C:\piyo' # 指定包含训练图像的文件夹
metadata_file = 'C:\piyo\piyo_md.json' # 元数据文件名 metadata_file = 'C:\piyo\piyo_md.json' # 元数据文件名
``` ```
基本上,您可以通过仅重写以下位置来学习。如无特别说明与DreamBooth相同,类+标识符方式 基本上只需更改以下几个地方来学习。除非另有说明,否则与DreamBooth, class+identifier方法相同。
1. 学习解像度 1. 学习分辨率
2. 批次大小 2. 批次大小
3. 指定文件夹 3. 指定文件夹
4. 元数据文件名 4. 元数据文件名
@@ -252,7 +253,7 @@ batch_size = 4 # 批量大小
## 第三步:学习 ## 第三步:学习
请参考各个文档进行学习。 详情请参考相关文档进行学习。
# 学习中使用的术语简单解释 # 学习中使用的术语简单解释
@@ -268,7 +269,7 @@ batch_size = 4 # 批量大小
## 批次大小batch size ## 批次大小batch size
批次大小指定每个步骤要计算多少数据。批计算可以提高速度。一般来说,批次大小越大,精度也越高。 批次大小指定每个步骤要计算多少数据。批计算可以提高速度。一般来说,批次大小越大,精度也越高。
“批次大小×步数”是用于训练的数据数量。因此,建议减少步数以增加批次大小。 “批次大小×步数”是用于训练的数据数量。因此,建议减少步数以增加批次大小。
@@ -276,33 +277,33 @@ batch_size = 4 # 批量大小
批次大小越大GPU 内存消耗就越大。如果内存不足,将导致错误,或者在边缘时将导致训练速度降低。建议在任务管理器或 `nvidia-smi` 命令中检查使用的内存量进行调整。 批次大小越大GPU 内存消耗就越大。如果内存不足,将导致错误,或者在边缘时将导致训练速度降低。建议在任务管理器或 `nvidia-smi` 命令中检查使用的内存量进行调整。
另外,批次是指“一数据”的意思 注意,一个批次是指“一数据单位”。
## 学习率 ## 学习率
学习率指的是每个步骤中改变的程度。如果指定一个大的值,学习速度就会加快,但是可能会出现变化太大导致模型崩溃或无法达到最佳状态的情况。如果指定一个小的值,学习速度会变慢,可能无法达到最佳状态。 学习率指的是每个步骤中改变的程度。如果指定一个大的值,学习速度就会加快,但是可能会出现变化太大导致模型崩溃或无法达到最佳状态的情况。如果指定一个小的值,学习速度会变慢,同时可能无法达到最佳状态。
在fine tuning、DreamBooth、LoRA等过程中学习率会有很大的差异并且也会受到训练数据、所需训练的模型、批大小和步骤数等因素的影响。建议从一般的值开始,观察训练状态并逐渐调整。 在fine tuning、DreamBooth、LoRA等过程中学习率会有很大的差异并且也会受到训练数据、所需训练的模型、批大小和步骤数等因素的影响。建议从通常值开始,观察训练状态并逐渐调整。
默认情况下,整个训练过程中学习率是固定的。但是可以通过调度程序指定学习率如何变化,因此结果也会有所不同。 默认情况下,整个训练过程中学习率是固定的。但是可以通过调度程序指定学习率如何变化,因此结果也会有所不同。
## 时epoch ## 时epoch
Epoch指的是训练数据被完整训练一遍即数据一周)的情况。如果指定了重复次数,则在重复后的数据一周后,就是1个epoch。 Epoch指的是训练数据被完整训练一遍即数据已经迭代一轮)。如果指定了重复次数,则在重复后的数据迭代一轮后,为1个epoch。
1个epoch的步骤数通常为“数据量÷批大小”但如果使用Aspect Ratio Bucketing则略微增加由于不同bucket的数据不能在同一个批次中因此步骤数会增加 1个epoch的步骤数通常为“数据量÷批大小”但如果使用Aspect Ratio Bucketing则略微增加由于不同bucket的数据不能在同一个批次中因此步骤数会增加
## 纵横比分桶Aspect Ratio Bucketing) ## 长宽比分桶Aspect Ratio Bucketing
Stable Diffusion 的 v1 是以 512\*512 的分辨率进行训练的,但同时也可以在其他分辨率下进行训练,例如 256\*1024 和 384\*640。这样可以减少裁剪的部分望更准确地学习图像和标题之间的关系。 Stable Diffusion 的 v1 是以 512\*512 的分辨率进行训练的,但同时也可以在其他分辨率下进行训练,例如 256\*1024 和 384\*640。这样可以减少裁剪的部分望更准确地学习图像和标题之间的关系。
此外,由于可以在任意分辨率下进行训练,因此不再需要事先统一图像数据的纵横比。 此外,由于可以在任意分辨率下进行训练,因此不再需要事先统一图像数据的长宽比。
该设置在配置中有效,可以切换,但在此之前的配置文件示例中已启用(设置为 `true`)。 此值可以被设定,其在此之前的配置文件示例中已启用(设置为 `true`)。
学习分辨率将根据参数所提供的分辨率面积(即内存使用量)进行调整,以64像素为单位(默认值,可更改)在纵横方向上进行调整和创建。 只要不超过作为参数给出的分辨率区域(= 内存使用量),就可以按 64 像素的增量(默认值,可更改)在垂直和水平方向上调整和创建训练分辨率
在机器学习中,通常需要将所有输入大小统一,但实际上只要在同一批次中统一即可。 NovelAI 所说的分桶(bucketing) 指的是,预先将训练数据按照纵横比分类到每个学习分辨率下,并通过使用每个 bucket 内的图像创建批次来统一批次图像大小。 在机器学习中,通常需要将所有输入大小统一,但实际上只要在同一批次中统一即可。 NovelAI 所说的分桶(bucketing) 指的是,预先将训练数据按照长宽比分类到每个学习分辨率下,并通过使用每个 bucket 内的图像创建批次来统一批次图像大小。
# 以前的指定格式(不使用 .toml 文件,而是使用命令行选项指定) # 以前的指定格式(不使用 .toml 文件,而是使用命令行选项指定)
@@ -450,9 +451,9 @@ masterpiece, best quality, 1boy, in business suit, standing at street, looking b
在RTX30系列以后也可以指定`bf16`,请配合您在搭建环境时做的加速设置)。 在RTX30系列以后也可以指定`bf16`,请配合您在搭建环境时做的加速设置)。
- `--gradient_checkpointing` - `--gradient_checkpointing`
通过逐步计算权重而不是在训练期间一次计算所有权重来减少训练所需的 GPU 内存量。关闭它不会影响准确性,但打开它允许更大的批大小,所以那里有影响。 通过逐步计算权重而不是在训练期间一次计算所有权重来减少训练所需的 GPU 内存量。关闭它不会影响准确性,但打开它允许更大的批大小,所以那里有影响。
另外,打开它通常会减慢速度,但可以增加批大小,因此总的学习时间实际上可能会更快。 另外,打开它通常会减慢速度,但可以增加批大小,因此总的学习时间实际上可能会更快。
- `--xformers` / `--mem_eff_attn` - `--xformers` / `--mem_eff_attn`
@@ -862,7 +863,7 @@ python clean_captions_and_tags.py meta_cap_dd.json meta_clean.json
python prepare_buckets_latents.py --full_path <教师资料夹> python prepare_buckets_latents.py --full_path <教师资料夹>
<要读取的元数据文件名> <要写入的元数据文件名> <要读取的元数据文件名> <要写入的元数据文件名>
<要微调的模型名称或检查点> <要微调的模型名称或检查点>
--batch_size <批大小> --batch_size <批大小>
--max_resolution <分辨率宽、高> --max_resolution <分辨率宽、高>
--mixed_precision <准确性> --mixed_precision <准确性>
``` ```
@@ -882,7 +883,7 @@ python prepare_buckets_latents.py --full_path
对于翻转的图像也会获取latents并保存名为\ *_flip.npz的文件这是一个简单的实现。在fline_tune.py中不需要特定的选项。如果有带有\_flip的文件则会随机加载带有和不带有flip的文件。 对于翻转的图像也会获取latents并保存名为\ *_flip.npz的文件这是一个简单的实现。在fline_tune.py中不需要特定的选项。如果有带有\_flip的文件则会随机加载带有和不带有flip的文件。
即使VRAM为12GB大小也可以稍微增加。分辨率以“宽度高度”的形式指定必须是64的倍数。分辨率直接影响fine tuning时的内存大小。在12GB VRAM中512,512似乎是极限*。如果有16GB则可以将其提高到512,704或512,768。即使分辨率为256,256等VRAM 8GB也很难承受因为参数、优化器等与分辨率无关需要一定的内存 即使VRAM为12GB大小也可以稍微增加。分辨率以“宽度高度”的形式指定必须是64的倍数。分辨率直接影响fine tuning时的内存大小。在12GB VRAM中512,512似乎是极限*。如果有16GB则可以将其提高到512,704或512,768。即使分辨率为256,256等VRAM 8GB也很难承受因为参数、优化器等与分辨率无关需要一定的内存
*有报道称在batch size为1的训练中使用12GB VRAM和640,640的分辨率。 *有报道称在batch size为1的训练中使用12GB VRAM和640,640的分辨率。