在前几天的内容里,我们已经聊清了 AI 短剧从剧本到成片的整体流水线,也把本地 GPU、云 GPU 和工具选型梳理了一遍。今天开始进入整个系列里最”劝退”、但也最决定成片质感的一环:角色与画风一致性。
如果你用过文生图工具跑短剧素材,一定遇到过这种崩溃瞬间:第一镜的主角是个短发少年,第二镜就变成了长发大叔,第三镜连衣服都换了。分镜之间的割裂感,会让观众一秒出戏。想在 ComfyUI、MiniMax H3、LTX 2.3 这些平台上做出能看的短剧,第一步不是学复杂节点,而是先解决”同一个角色怎么长成同一张脸、同一套画风”这个问题。

一、核心概念:为什么 AI 画不出”同一个人”
要理解一致性,先理解扩散模型的本质。Stable Diffusion 这类文生图模型,是根据提示词在潜空间里”去噪”生成图像。它没有”记忆”上一次生成结果的能力,每次都是从随机噪声出发。所以哪怕你把提示词一字不改,两次生成的人物五官、发型、服装都会有差异。
解决思路有两个方向:
- 约束生成:用 ControlNet、参考图(Reference/IPAdapter)等方式,把人物的姿态、轮廓、五官特征”压”进生成过程。
- 注入知识:用 LoRA 等轻量微调技术,把某个特定角色或画风的特征”烧”进模型权重,让模型在生成时自带这个角色的记忆。
对短剧这种”一个角色要反复出现几十上百次”的场景,LoRA 是性价比最高的方案。它体积小(通常几十到几百 MB)、训练快(几十分钟到几小时)、效果稳定,是角色一致性的主力工具。
二、LoRA 是什么
LoRA(Low-Rank Adaptation,低秩适配)是一种模型微调技术。它不改动原模型的大权重,而是在旁边挂一个”低秩矩阵”补丁,训练时只更新这个小补丁,推理时再把它合并进来。
用配置文件来理解它的加载逻辑(ComfyUI 中通过 LoraLoader 节点挂载):
# LoRA 加载配置示例(ComfyUI workflow JSON 片段)
{
"type": "LoraLoader",
"inputs": {
"model": ["...", 0],
"clip": ["...", 1],
"lora_name": "char_xiaoyu_v2.safetensors",
"strength_model": 0.85,
"strength_clip": 0.85
}
}
strength_model 和 strength_clip 分别控制 LoRA 对图像生成模型和文本编码器的影响强度。强度过高会导致过拟合(角色僵硬、背景也糊),过低则一致性不足,通常 0.6~0.9 之间取平衡。
三、实战步骤:从角色设定到 LoRA 训练
第 1 步:先做角色设定卡
在训练之前,先写一份”角色圣经”。角色设定卡越清晰,训练素材越好挑,后期生成也越稳定。一份合格的角色卡长这样:
角色设定卡(示例)
- 角色名:林小羽(AI短剧《逆光》男主)
- 年龄/性别:22 岁,男
- 发型:黑色短发,三七分,额前碎发
- 五官:剑眉,单眼皮,鼻梁高挺,左眉尾有一颗小痣
- 服装:藏青色连帽卫衣 + 黑色工装裤 + 白色板鞋
- 配色:主色藏青、黑、白,辅色浅灰
- 画风:半写实国漫,光影偏电影感
- 固定道具:银色耳机(常挂脖子)
第 2 步:准备训练集
训练集质量决定 LoRA 上限。一个角色建议准备 15~30 张高质量图,要求:
- 同一角色,多角度(正面、侧面、半侧)、多表情、多景别(特写、半身、全身)
- 背景尽量干净,避免杂物干扰
- 分辨率统一(如 512×768 或 768×1024),格式 JPG/PNG
用 Python 脚本做基础预处理(重命名、检查分辨率):
import os
from PIL import Image
src = "./train_images"
dst = "./dataset/5_char_xiaoyu"
os.makedirs(dst, exist_ok=True)
for i, fname in enumerate(sorted(os.listdir(src))):
if not fname.lower().endswith((".jpg", ".png", ".jpeg")):
continue
img = Image.open(os.path.join(src, fname))
if img.width < 512 or img.height < 512:
print(f"跳过低分辨率: {fname} ({img.width}x{img.height})")
continue
# 统一重命名为 序号_角色名
ext = os.path.splitext(fname)[1]
out = os.path.join(dst, f"{i:03d}_char_xiaoyu{ext}")
img.save(out)
print(f"处理完成: {out}")
第 3 步:打标签(Caption)
打标签就是给每张图写描述。角色一致性训练通常采用”去掉角色特征、保留通用描述”的策略——把人物共性特征写进触发词,把单张图的姿势、背景等变量写进标签,这样模型才能把”触发词 = 这个角色”绑定住。
# 触发词设计(关键!)
触发词:xiayu_character # 一个独一无二的词,训练时反复出现
# 标签示例(单张图)
xiayu_character, 1boy, black short hair, dark blue hoodie,
standing, front view, simple background, looking at viewer
触发词不能和常见词冲突(不要用 “girl”、”boy” 这种),最好是自造词,避免污染模型已有语义。
第 4 步:训练 LoRA
以流行的 Kohya 系列训练脚本(sd-scripts)为例,核心训练命令如下:
#!/bin/bash
accelerate launch ./sd-scripts/train_network.py
--pretrained_model_name_or_path="./models/sd_xl_base_1.0.safetensors"
--train_data_dir="./dataset/5_char_xiaoyu"
--resolution="1024,1024"
--network_module="networks.lora"
--network_dim=64
--network_alpha=32
--learning_rate="1e-4"
--max_train_steps=2000
--save_every_n_steps=500
--output_dir="./output/char_xiaoyu"
--output_name="char_xiaoyu_v2"
--mixed_precision="bf16"
--save_precision="bf16"
几个关键参数解释:
network_dim/network_alpha:LoRA 的秩和缩放,dim=64、alpha=32 是常见起点,角色类任务可以适当提高 dim。learning_rate:1e-4 是安全起点,过高容易过拟合,过低练不动。max_train_steps:训练步数,角色 LoRA 一般 1000~3000 步,配合save_every_n_steps多存几个中间版本,方便挑最优。
第 5 步:在 ComfyUI 中验证
训练完成后,把 .safetensors 放进 ComfyUI 的 models/loras 目录,用最简单的工作流验证触发词是否生效:
{
"prompt": "xiayu_character, 1boy, dark blue hoodie, black short hair, half body, cinematic lighting, high quality",
"negative_prompt": "lowres, bad anatomy, extra fingers, deformed, watermark",
"steps": 28,
"cfg": 7.0,
"sampler": "DPM++ 2M Karras",
"lora": "char_xiaoyu_v2.safetensors",
"lora_strength": 0.85
}
如果不同随机种子下,人物脸型、发型、服装都稳定,说明 LoRA 训练到位;如果还飘,就加大 strength 或增加训练步数重训。
四、常见问题
Q1:角色 LoRA 会不会污染画风?
会。如果你训练时 20 张图全是同一种画风,模型会把”画风”也绑进触发词里。想要角色和画风解耦,就训练两个 LoRA:一个角色 LoRA、一个画风 LoRA,分别用不同数据集训练,生成时按需叠加。
Q2:训练素材可以只用 AI 生成的图吗?
可以,但要注意。用 AI 生成的图当训练集,角色五官容易”平均化”,丢失辨识度。建议真人/手绘素材为主,AI 图为辅,或者用 AI 图做”数据增强”而非主体。
Q3:为什么触发词没生效,出来的是别的人?
大概率是训练集数量不足、触发词没充分绑定,或训练步数不够。检查:触发词是否唯一、每张图标签是否都包含触发词、训练步数是否跑满。
Q4:MiniMax H3 和 LTX 2.3 需要自己训练 LoRA 吗?
不需要。MiniMax H3 内置了全自动导演和角色一致性控制,通过上传参考图或角色设定就能锁定形象;LTX 2.3 更擅长视频运动与镜头,角色一致性可借助首帧参考图实现。本系列后面会分别展开讲。
五、总结
今天我们把”角色与画风一致性”这个短剧制作的核心痛点拆开了:理解了扩散模型为什么天然”失忆”,认识了 LoRA 的原理,并完整走了一遍”角色设定卡 → 训练集准备 → 打标签 → 训练 → ComfyUI 验证”的闭环。
记住一个心法:一致性不是靠提示词”祈祷”出来的,而是靠角色设定 + 触发词 + LoRA 训练体系撑起来的。 工具会变,但这套方法论在任何平台上都通用。
下一期(第 6 天)我们就正式进入 ComfyUI 的世界,从安装、界面到节点式工作流,把这座”自由度高但门槛也不低”的创作工厂彻底摸透,为后续的角色一致性、视频生成打下实操基础。
下期预告:AI短剧系列 | 第 6 天:ComfyUI 入门——安装、界面与节点式工作流基础
















暂无评论内容