Guide: 1to2: Training Multiple-Subject Models using only Single-Subject Data (Experimental)
详情
下载文件
模型描述
更新将同时在 Hugging Face 和 Civitai 上同步。
简介
已有研究表明,可以在同一模型中训练多个角色。更具挑战性的任务是创建一个能够在不修改生成流程的前提下,同时生成多个角色的模型。本文描述了一种简单有效的技术,已被验证能帮助在单张图像中生成多个角色。
方法
需求:单个角色图像的集合
步骤:
1. 使用原始数据集训练一个多概念模型
2. 从原始数据集中生成图像对的增强数据集(合成图像)
3. 在增强数据集上进行训练
实验
设置
实验选取了来自《Cinderella Girls》游戏中的 3 个角色。基础模型为 anime-final-pruned。已确认该基础模型对所训练角色几乎无先验知识。已移除包含多个角色的图像(注:训练后发现部分无关背景角色未被清除)。
对于合成图像的标注,采用模板格式:CharLeft/CharRight/COMPOSITE, TagsLeft, TagsRight。
使用以下配置文件训练了一个 LoRA(Hadamard 乘积):
[model_arguments]
v2 = false
v_parameterization = false
pretrained_model_name_or_path = "Animefull-final-pruned.ckpt"
[additional_network_arguments]
no_metadata = false
unet_lr = 0.0005
text_encoder_lr = 0.0005
network_module = "lycoris.kohya"
network_dim = 8
network_alpha = 1
network_args = [ "conv_dim=0", "conv_alpha=16", "algo=loha",]
network_train_unet_only = false
network_train_text_encoder_only = false
[optimizer_arguments]
optimizer_type = "AdamW8bit"
learning_rate = 0.0005
max_grad_norm = 1.0
lr_scheduler = "cosine"
lr_warmup_steps = 0
[dataset_arguments]
debug_dataset = false
# 保留 token 1
# 分辨率 640*640
[training_arguments]
output_name = "cg3comp"
save_precision = "fp16"
save_every_n_epochs = 1
train_batch_size = 4
max_token_length = 225
mem_eff_attn = false
xformers = true
max_train_epochs = 40
max_data_loader_n_workers = 8
persistent_data_loader_workers = true
gradient_checkpointing = false
gradient_accumulation_steps = 1
mixed_precision = "fp16"
clip_skip = 2
lowram = true
[sample_prompt_arguments]
sample_every_n_epochs = 1
sample_sampler = "k_euler_a"
[saving_arguments]
save_model_as = "safetensors"
在第二阶段训练中,批量大小减小为 2,分辨率设置为 768 × 768,其余设置保持不变。在 T4 GPU 上训练耗时不到 2 小时。
结果
(见预览图像)
局限性
该技术使内存/计算需求翻倍
即便使用负面提示,仍可能生成合成图像
克隆角色似乎取代混合角色,成为主要的失败模式
可生成两个角色,但无法生成三个角色(原因尚不清楚)
相关工作
基于动漫剧集数据集训练的模型已展示出多主体生成能力。仅使用语义差异较大的概念,如 1girl, 1boy,也被证明有效。
未来工作
以下是一些尚待探索的方向:
合成数据集
非等比宽高比
正则化方法
联合训练而非顺序训练



