Z-Image 角色一致性 LoRA 训练:跨场景保持人物特征

May 9, 2026

Z-Image 角色一致性 LoRA 训练:跨场景保持人物特征

训练一个 LoRA,让你的人物在任何提示词、任何场景下都保持面部和风格一致。


为什么需要角色一致性?

问题场景

AI 图像生成的最大痛点之一:每次生成同一个人,长得都不一样

场景 问题 LoRA 方案解决
漫画/条漫创作 主角在不同分镜中面部不一致 ✅ 固定面部特征
社交媒体账号 AI 网红需要统一的形象 ✅ 跨场景一致性
游戏角色设计 角色三视图需要同一张脸 ✅ 多角度一致
小说封面 主角在不同封面中保持统一 ✅ 风格锁定

Z-Image Turbo 的优势

Z-Image Turbo 是一个6B 参数蒸馏模型,相比全尺寸模型:

  • 训练速度更快:LoRA 训练时间减少 60-70%
  • 显存需求更低:8GB 显存即可训练
  • 推理速度更快:亚秒级生成
  • 质量不妥协:蒸馏后保留 95%+ 的原模型质量

数据准备

最低要求

指标 最低 推荐 高质量
图片数量 5 张 15-20 张 30+ 张
图片分辨率 512×512 1024×1024 1024×1024+
面部清晰度 可辨认 清晰无遮挡 多角度清晰
背景多样性 有变化 多种场景 丰富场景

图片采集要点

  1. 正面照为主:至少 50% 的正面/半正面
  2. 多角度:包含侧面 3-4 张
  3. 不同表情:微笑、中性、惊讶等
  4. 不同服装:减少服装对训练的干扰
  5. 不同背景:避免背景特征被学习到角色中
  6. 光照变化:自然光、室内光、侧光等

图片预处理

# 使用 Python 预处理图片
python prepare_training_data.py /
  --input ./raw_images/ /
  --output ./training_data/ /
  --size 1024 /
  --face-detect /
  --crop-face-ratio 0.6

关键步骤

  1. 统一分辨率到 1024×1024
  2. 面部检测与居中裁剪
  3. 去除水印和无关元素
  4. 生成 caption 文件(可选)

LoRA 训练配置

使用 Kohya_ss WebUI

基础参数

参数 推荐值 说明
模型 z_image_turbo_bf16.safetensors Z-Image Turbo
优化器 Prodigy 专为 Z-Image 优化
学习率 自动(Prodigy) Prodigy 自动调整
网络维度 (dim) 32-64 角色复杂度决定
网络阿尔法 (alpha) 16-32 通常为 dim/2
训练轮数 (epochs) 10-20 图片少则多轮
Batch size 1-2 根据显存调整
分辨率 1024×1024 Z-Image 原生分辨率

Prodigy 优化器参数

Prodigy 是专门为 Z-Image Turbo 设计的优化器:

optimizer: prodigy
lr: 1.0  # Prodigy 会自动缩放
d0: 0.05  # 初始步长尺度
weight_decay: 0.01

为什么用 Prodigy?

  • 传统 AdamW 需要手动调学习率
  • Prodigy 自动根据梯度缩放学习率
  • 训练更稳定,过拟合风险更低
  • 特别适合蒸馏模型(如 Z-Image Turbo)

使用命令行训练

accelerate launch train_text_to_image.py /
  --pretrained_model_name_or_path=./z_image_turbo /
  --train_data_dir=./training_data /
  --resolution=1024 /
  --train_batch_size=1 /
  --num_train_epochs=15 /
  --learning_rate=1.0 /
  --optimizer=prodigy /
  --optimizer_args="d0=0.05,weight_decay=0.01" /
  --lora_rank=32 /
  --lora_alpha=16 /
  --output_dir=./lora_output /
  --checkpointing_steps=500 /
  --mixed_precision=bf16

训练过程监控

关键指标

指标 正常范围 异常信号
Loss 0.01-0.1 逐渐下降 不下降或剧烈波动
训练时间 ~2-5 小时(15 张图,8GB) 超过 8 小时
显存使用 < 7GB(batch=1) OOM 错误

训练样本验证

每 5 轮训练后,用以下提示词验证:

# 测试 1:基础一致性
character_name, portrait photo, white background, studio lighting

# 测试 2:不同场景
character_name, walking in a park, sunny day

# 测试 3:不同风格
character_name, anime style, watercolor painting

# 测试 4:极端测试
character_name, in a sci-fi spaceship, dramatic lighting

过拟合检测

症状 原因 解决
只有训练集背景出现 背景被学习 增加背景多样性
服装固定不变 服装被学习 使用不同服装训练
面部模糊 训练过度 减少 epoch 或 alpha
完全不变 欠拟合 增加 epoch 或 alpha

推理使用

ComfyUI 加载 LoRA

Load Checkpoint → z_image_turbo_bf16.safetensors
    ↓
Load LoRA → character_lora.safetensors
    ↓
[设置 LoRA 强度]
    ↓
KSampler

LoRA 强度调优

强度 效果 适用场景
0.3-0.5 轻微特征 风格参考,不强求一致
0.6-0.8 中等特征 日常使用推荐范围
0.9-1.0 强特征 需要高度一致时
1.0-1.2 过强 可能出现过度拟合痕迹

多 LoRA 组合

可以同时加载多个 LoRA:

LoRA 1 (角色面部) — 强度 0.8
LoRA 2 (艺术风格) — 强度 0.6
LoRA 3 (服装风格) — 强度 0.5

注意:总强度建议不超过 2.0,否则可能出现伪影。


高级技巧

多角色训练

如果需要在同一作品中保持多个角色一致:

  1. 方案 A:分别为每个角色训练独立 LoRA
  2. 方案 B:训练一个包含多角色的 LoRA(需要 token 区分)

方案 A 推荐:更灵活,可以独立调整每个角色强度。

面部增强

训练 LoRA 后,可以叠加面部修复节点:

KSampler → LoRA 生成 → Face Restore 节点 → 输出

提示词模板

# 角色一致性提示词模板
[角色触发词], [年龄描述], [服装描述],
[场景描述], [动作描述],
[风格修饰词], [质量词]

# 示例
character_name, 25-year-old woman, red dress,
walking through a garden at sunset,
cinematic lighting, photorealistic, 8k, sharp focus

常见问题

Q: 训练几张图片就够了?

  • 5 张:最低限度,仅适合简单场景
  • 10-15 张:推荐起步,基本一致性
  • 20+ 张:高质量,跨场景稳定
  • 30+ 张:专业级,多角度多表情多服装

Q: LoRA 训练要多久?

图片数 显存 优化器 预计时间
10 张 8GB Prodigy ~2 小时
15 张 8GB Prodigy ~3 小时
20 张 12GB Prodigy ~4 小时
30 张 16GB Prodigy ~6 小时

Q: 训练完 LoRA 后角色还是不一致?

  1. 增加 LoRA 强度到 0.8-1.0
  2. 检查训练图片质量(面部是否清晰)
  3. 增加训练轮数
  4. 确保触发词在提示词开头
  5. 尝试减少提示词中其他描述对角色特征的影响

Q: Z-Image Turbo 和 Z-Image Base 训练的 LoRA 通用吗?

不通用。Turbo 和 Base 是不同的模型,训练参数不兼容。Turbo 训练的 LoRA 只能在 Turbo 上使用。


总结

Z-Image Turbo 角色一致性 LoRA 训练流程:

  1. 数据准备:15-20 张清晰人脸照,多角度多场景
  2. 模型选择:Z-Image Turbo + Prodigy 优化器
  3. 训练配置:dim=32, alpha=16, epochs=15
  4. 过程监控:每 5 轮验证,检测过拟合
  5. 推理使用:LoRA 强度 0.6-0.8,配合模板提示词

核心优势

  • 训练快(8GB 显存 2-3 小时)
  • 质量高(蒸馏模型保留 95%+ 质量)
  • 一致性好(跨场景跨风格保持特征)

本文基于 ComfyUI + Z-Image Turbo + Prodigy 优化器。

Z-Image Team