Lab @8 : lr-gotcha - concept of getting caught when being naughty

详情

模型描述

免责声明

本LoRA系列将提供一些中间训练实验性LoRA,用于分享LoRA训练的学习经验。

这些LoRA将以前缀 *BAD* 标记。它们不会专门提供运行后生成的图像。

如果您感兴趣,可以下载并尝试查看其表现,或参考附录中的某些基准内容。

引言

此LoRA的概念为:一个女孩做调皮的事却被男友/丈夫抓到。

切换到正确的模型

更新日志

250427

发现

  1. 数据预处理:单行标题格式至关重要(文档如此说明,结果也确实显示了差异)

  2. 触发词:“inset”标签能有效捕捉目标概念,精准选择很重要(这意味着,挑选更合适的触发词以引导训练是相当重要的)

  3. 正则化:简单且高质量的图像效果最佳;复杂图像会让AI难以理解

  4. 正则化标题:我们确实需要它们(我检查了sd-script的Python脚本,它确实对正则化图像集的标题进行了处理。有趣的是,我发现sd-script文档称我们不需要正则化标题?也许它指的是类别训练LoRA)可使用自动打标签(0.4阈值即可)

  5. 数据集质量:精心筛选的高质量集合(28张图像),这是利用SD自身生成高质量图像的好方法(始终为您的数据集和正则化集启用高分辨率修复和adetailer修复)

  6. 基础模型:janku v3 产生更稳定的输出,且瑕疵更少

通用训练信息

注:基础信息可参考 lab_8_1(几乎相同)

  1. Lab 1 - 初始设置

    • 基础模型:wai v13

    • 数据集:5张图片(24次重复 × 8轮)

    • 触发词:lr-gotcha, split frame

    • 标题:单行

    • 正则化:无

    • 备注:初次尝试

  2. Lab 2 - 扩展数据集并出现错误

    • 基础模型:wai v13

    • 数据集:8张图片(24r × 8ep),新数据集

    • 触发词:lr-gotcha, comic

    • 标题:多行(格式错误)

    • 正则化:无

    • 备注:后来发现标题格式错误

  3. Lab 3 - 带正则化的基础训练

    • 基础模型:wai v13

    • 数据集:8张图片(24r × 8ep)

    • 触发词:lr-gotcha, 1boy in frame

    • 标题:单行(已修正)

    • 正则化:lab_8_3_reg(1girl正常,1girl被抓住)

    • 备注:首次成功实现正则化

  4. Lab 4 - 更换触发词并出现倒退

    • 基础模型:wai v13

    • 数据集:8张图片(24r × 8ep)

    • 触发词:lr-gotcha, one inset boy

    • 标题:多行(倒退)

    • 正则化:同Lab 3

    • 备注:错误地恢复为多行标题格式

  5. Lab 5 - 修正标题格式

    • 基础模型:wai v13

    • 数据集:8张图片(24r × 8ep)

    • 触发词:lr-gotcha, one inset boy

    • 标题:单行(再次修正)

    • 正则化:同Lab 3

    • 备注:重新确立正确的标题格式

  6. Lab 6 - 关键发现(“inset”标签)

    • 基础模型:wai v13

    • 数据集:8张图片(24r × 8ep)

    • 触发词:lr-gotcha, inset

    • 标题:单行

    • 正则化:lab_8_3_reg + 1boy pointing

    • 备注:“inset”标签被证明有效,质量显著提升

  7. Lab 7 - 复杂正则化实验

    • 基础模型:wai v13

    • 数据集:8张图片(24r × 8ep)

    • 触发词:lr-gotcha, inset

    • 标题:单行

    • 正则化:由数据集标签脚本生成

    • 备注:复杂正则化图像导致质量下降

  8. Lab 8 - 移除正则化标题

    • 基础模型:wai v13

    • 数据集:8张图片(24r × 8ep)

    • 触发词:lr-gotcha, inset

    • 标题:单行

    • 正则化:同Lab 7,无标题

    • 备注:结果仍不理想

  9. Lab 9 - 单独打标签尝试

    • 基础模型:wai v13

    • 数据集:8张图片(24r × 8ep)

    • 触发词:lr-gotcha, inset

    • 标题:单行

    • 正则化:同Lab 7,单独打标签

    • 备注:复杂的程序化正则化生成不稳定

  10. Lab 10 - 突破:质量提升

    • 基础模型:wai v13

    • 数据集:28张图片(8r × 8ep),精心筛选

    • 触发词:lr-gotcha, inset

    • 标题:单行

    • 正则化:脚本生成的简单图像(6类)

    • 备注:高质量数据集 + 简单正则化图像 = 成功

  11. Lab 11 - 基础模型验证

    • 基础模型:janku v3

    • 数据集:28张图片(8r × 8ep),同Lab 10

    • 触发词:lr-gotcha, inset

    • 标题:单行

    • 正则化:同Lab 10

    • 备注:janku v3 产生更稳定的结果

训练过程概览

  1. 启动:基本设置

    • 操作:使用 wai illustrious v13 模型进行初始训练,数据集较小(5张图像),特定触发词(lr-gotcha, split frame),正确格式的单行标题,无正则化图像。

    • 发现:提供了起点,但缺乏高质量、可控LoRA所需的复杂性(如正则化)。

  2. 早期步骤:扩展数据集与关键预处理错误

    • 操作:扩大数据集(8张图像),更改触发词(lr-gotcha, comic)。
  3. 基础:引入正则化与正确数据处理

    • 操作:引入第一组正则化图像(lab_8_3_reg)。关键性地修正了Lab 2中的标题格式错误,确保标签以逗号分隔并位于单行。更改触发词(lr-gotcha, 1boy in frame)。
  4. 实验:新触发词,意外倒退

    • 操作:将触发词更改为 lr-gotcha, one inset boy。但错误地恢复为多行标题,而非必需的单行格式。使用与Lab 3相同的正则化。
  5. 纠正:重新确立正确标题格式

    • 操作:修正Lab 4的错误,确保标题正确格式化为单行、逗号分隔。保留触发词(lr-gotcha, one inset boy)和上一步的正则化。

    • 发现:强调了遵循技术要求(如标题格式)对有效训练的重要性。

  6. 关键发现:“inset”触发词

    • 操作:基于观察或假设,将触发词改为 lr-gotcha, inset。略微扩展了正则化集。

    • 发现:“inset”标签被证明对捕捉预期视觉概念有效。这一发现标志着LoRA生成目标风格能力的提升,证明了精确触发词的重要性。正则化集是否合适?质量明显提升。

  7. 实验:自动化、复杂的正则化图像生成

    • 操作:实施一种新颖的正则化策略,使用脚本。脚本通过将数据集图像标签(排除触发词)输入基础模型来生成正则化图像,保留原始标题。

    • 发现:此方法生成的正则化图像过于复杂,导致不稳定和LoRA性能差。

  8. 改进复杂正则化(移除标题)

    • 操作:仍使用Lab 7的复杂正则化图像,移除其所有关联文本标题,假设标题可能引入噪音。

    • 发现:正则化图像的标题确实重要。

  9. 改进复杂正则化(逐项打标签)

    • 操作:继续使用脚本生成的复杂正则化图像(来自Lab 7)。尝试通过为每张正则化图像单独应用自动打标签(阈值0.4)进行改进。
  10. 突破:数据集质量与简化正则化的协同效应

    • 操作:对数据集进行重大升级——扩展至28张图像,通过基础模型生成并人工编辑(Photoshop)精心挑选/生成。同时简化正则化方法,使用脚本创建6类高质量、简单构图图像,并进行后处理(高分辨率修复、adetailer)。

    • 发现:高质量、针对性的训练数据 高质量、相关但简单的正则化图像相结合,是实现期望LoRA质量的关键。

  11. 使用更优基础模型(janku v3)验证

    • 操作:复制Lab 10的成功配置(精选数据集、简化正则化、inset触发词),但改用 janku v3 基础模型。

    • 发现janku v3 模型相比前一基础模型,提升了输出稳定性并减少了图像瑕疵。(但我目前尚不清楚原因)

初始步骤 — Lab 8_1(基础训练参数与目标)

目标与发现

  • 目标

    • 这是首次训练,目标是快速检查SD模型是否能学习到大致概念。

      • 答案是:能,但不如我预期的好。
    • 数据集来源方法:

      • 首先,使用基础模型生成2张图片:1个女孩惊讶 + 1个男孩指向

      • 使用Photoshop合成分屏图像(注意:本版本未处理为 inset,而是将女孩图像对半分割,男孩置于中间)

  • 发现

    • 混乱的布局导致LoRA在使用时产生非逻辑的局部构图。

      • 尽管其他局部区域(若逻辑合理)“质量良好”,但此实验阶段LoRA的整体价值很低。

      • 这证实了我制作的数据集至少具有合理的质量。

    • 如果图像数量较少,尝试使用基础模型已“理解”的标签来引导LoRA训练,而不是使用它不熟悉的标签。

      • 我偶然发现“inset”标签更合适。
    • 在此阶段的数据集中,图像结构为:上(1girl)、中(1boy)、下(1girl)。由于它们完全分离(我的猜测),模型在LoRA训练期间无法很好地关联上下部分,因此在生成分屏图像时,上下部分常看起来像来自两张不同图像。

      • 这也是我专注于“inset”的原因。inset不会完全分离整体图像中的主要背景,使模型能更好地将“背景”作为一个整体学习。

训练参数

# Model & Data
pretrained_model_name_or_path="... /wai_i13.safetensors"
# image count = 5 pics
train_data_dir="... /lora_lab_8_1_gotcha/dataset"
# reg image count = 0
reg_data_dir=""

# Training
max_train_epochs=8
train_batch_size=1
seed=1861
resolution="832,1280"
max_bucket_reso=1280
min_bucket_reso=256
bucket_reso_steps=64
bucket_no_upscale=true
enable_bucket=true
cache_latents_to_disk=true
persistent_data_loader_workers=true
shuffle_caption=true
caption_extension=".txt"
keep_tokens=2
max_token_length=225

# LoRA Network
network_module="networks.lora"
network_dim=16
network_alpha=8

# Optimizer & LR
learning_rate=0.0001
unet_lr=0.0001
text_encoder_lr=0.00001
optimizer_type="AdamW8bit"
lr_scheduler="cosine_with_restarts"
lr_warmup_steps=0
lr_scheduler_num_cycles=1

# Precision & Device
mixed_precision="bf16"
xformers=true
lowram=true

# Saving & Logging
save_model_as="safetensors"
save_precision="fp16"
save_every_n_epochs=2
log_with="tensorboard"
log_prefix="lora_lab_8_1_gotcha--"
output_name="lora_lab_8_1_gotcha"

# Loss
prior_loss_weight=1

此模型生成的图像

未找到图像。