kohya-ss/sd-scripts项目中的Textual Inversion训练指南

kohya-ss/sd-scripts项目中的Textual Inversion训练指南

sd-scripts sd-scripts 项目地址: https://gitcode.com/gh_mirrors/sd/sd-scripts

Textual Inversion是一种在Stable Diffusion模型中进行概念学习的技术,它允许用户通过少量图像样本将新概念注入到预训练模型中。本文将详细介绍如何使用kohya-ss/sd-scripts项目中的工具进行Textual Inversion训练。

技术原理概述

Textual Inversion的核心思想是通过学习一组新的嵌入向量(embeddings)来表示新概念,而不是修改整个模型。这些嵌入向量会映射到模型词汇表中未使用的特殊标记上。当在生成时使用这些特殊标记时,模型就会应用学习到的新概念。

环境准备

在开始训练前,请确保已完成以下准备工作:

  1. 安装Python 3.8或更高版本
  2. 配置PyTorch环境(建议使用CUDA版本)
  3. 安装必要的依赖库

数据准备

训练数据准备是Textual Inversion成功的关键。建议遵循以下准则:

  • 收集5-20张高质量图像,最好能多角度展示要学习的概念
  • 图像分辨率建议512x512像素
  • 为每张图像编写准确描述性的标注文本
  • 使用.toml配置文件组织训练数据

训练执行步骤

使用train_textual_inversion.py脚本进行训练,以下是关键参数说明:

基础参数配置

accelerate launch --num_cpu_threads_per_process 1 train_textual_inversion.py \
    --dataset_config=<数据配置文件.toml> \
    --output_dir=<输出目录> \
    --output_name=<模型输出名称> \
    --save_model_as=safetensors \
    --prior_loss_weight=1.0 \
    --max_train_steps=1600 \
    --learning_rate=1e-6 \
    --optimizer_type="AdamW8bit" \
    --xformers \
    --mixed_precision="fp16" \
    --cache_latents \
    --gradient_checkpointing

Textual Inversion特有参数

  • --token_string: 指定训练时使用的标记字符串(如"mychar4")
  • --init_word: 嵌入向量初始化使用的源词(如"cute")
  • --num_vectors_per_token: 每个概念使用的token数量(通常4-8)

性能优化参数

  • --mixed_precision: 混合精度训练(fp16或bf16)
  • --gradient_checkpointing: 梯度检查点技术减少内存使用
  • --xformers: 使用xformers优化注意力机制

训练技巧与注意事项

  1. 标记字符串使用:确保训练数据标注中包含指定的token_string
  2. 初始化词选择:选择与目标概念语义相近的词作为init_word
  3. token数量:num_vectors_per_token值越大表现力越强,但会占用更多token位置
  4. 学习率:通常1e-6到5e-6之间效果较好
  5. 训练步数:1600-3000步通常足够,可根据结果调整

高级选项

  1. 预训练嵌入:使用--weights参数加载已有嵌入进行增量训练
  2. 模板模式
    • --use_object_template:使用物体模板("a photo of a {}")
    • --use_style_template:使用风格模板("a painting in the style of {}")

训练后使用

训练完成后,可以在生成脚本中使用--textual_inversion_embeddings参数加载训练好的嵌入文件。在提示词中使用嵌入文件名(不含扩展名)即可应用学到的概念。

常见问题解决

  1. 内存不足:减小批次大小或启用梯度检查点
  2. 学习效果不佳:尝试调整学习率、增加训练步数或更换初始化词
  3. 标记冲突:确保token_string不是常用词汇

通过合理配置这些参数,您可以有效地将新概念注入到Stable Diffusion模型中,而无需修改整个模型架构。这种方法特别适合需要保留原始模型大部分能力同时添加少量新概念的场景。

sd-scripts sd-scripts 项目地址: https://gitcode.com/gh_mirrors/sd/sd-scripts

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水鲁焘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值