cv.cm

AI · AI绘画

怎样让AI角色在多张图里保持一致?

阅读约 7 分钟

简短回答

先写一段固定的角色描述,逐字复用;再设计一张清晰的角色设定表(正面、侧面、背面、表情),把它作为参考图输入每一次新的生成。种子只在同一套设置内有帮助。长期项目可以用一组经过确认的多样化图片训练一个小型 LoRA。每张新图在使用前,都对照连贯性检查清单检查一遍。

角色为什么会“漂移”

图像模型在两次运行之间没有记忆。每次生成都从新的随机噪声开始,从头读取你的提示词。像 a young woman with short black hair 这样的描述,对应着数百万种可能的脸,模型每次都会挑一张不同的。措辞、姿势或机位上的小改动,会让结果偏得更远。

所以一致性不是靠模型记住,而是靠你每次给模型相同的信息,并且尽可能多地用工具接受的各种形式:相同的文字、相同的参考图,大项目还可以用学过这个角色的小型训练附加模块。下面的方法从成本最低到工作量最大,多数项目会组合使用其中两三种。

第1步:写一段固定的角色描述

把描述写一次,存在文本文件里,原样粘贴到每条提示词中。细节按从最显眼到最不显眼的顺序排列,并且只写观众看得见的东西。

MEI (character block, paste unchanged)
adult woman in her late 20s, East Asian, oval face, straight black hair
in a chin-length bob with blunt bangs, dark brown eyes, small mole under
the left eye, slim build, wearing a mustard-yellow raincoat over a white
T-shirt, dark blue jeans, white sneakers, round silver earrings

然后每条提示词都由角色描述加场景构成,只有场景在变:

[MEI block], standing at a bus stop in the rain, holding a clear umbrella,
night, neon reflections on the wet road, medium shot, 35mm photo
  • 选有辨识度的锚点:一种不寻常的颜色、一件配饰、一处脸上的标记。Mustard raincoat 和 mole under the left eye 比 pretty 更容易核对和复现。
  • 避免含义每次运行都会变的词,比如 stylish outfit 或 cute。
  • 把风格词放在角色描述之外,这样把场景从照片换成插画时,不用改动角色部分。
  • 在你的笔记里给角色起个名字,但提示词里不要依赖这个名字;除非你训练过它,否则编出来的名字对模型没有任何意义。

第2步:做一张角色设定表

角色设定表(character sheet)是一张图,或一小组图,在纯色背景上从多个角度清楚地展示角色。它是之后每个镜头都要回头参照的基准。

  1. 用角色描述在素净的浅灰色背景上生成许多候选图,中性光线,全身。
  2. 挑出你最喜欢的那一张脸。这就是标准脸,不要再继续探索了。
  3. 为这个角色做转面图:正面、四分之三侧面、侧面和背面。以选定的图作为参考图,或者给每个角度配姿势控制。
  4. 再加一排表情(平静、微笑、惊讶、生气),以及脸部和配饰的特写。
  5. 用局部重绘修掉错误,然后以完整分辨率保存设定表,并把角色描述写在旁边。
character turnaround sheet of [MEI block], front view, three-quarter view,
side view and back view, full body, standing in a neutral pose,
plain light gray background, even soft studio light, clean illustration

保持设定表干净。参考图上杂乱的背景或戏剧化的光线,会连同脸一起被复制到后面的图里。

第3步:每次生成都使用参考图

目前大多数工具至少接受一张图片作为参考。在线工具把它叫做角色参考(character reference)、主体参考(subject reference),或者直接叫上传图片;开源工作流则使用 IP-Adapter 这类适配器,把参考图转成特征,与文字一起引导模型。把设定表里的脸部特写和一张全身图交给模型,再用文字描述新场景。

  • 使用与镜头匹配的裁切:特写用脸部参考,远景用全身参考。
  • 如果每张图都复制了参考图的姿势和背景,就调低参考权重;如果脸在漂移,就调高。
  • 不要用上一次生成的图再去串联参考,误差会累积。始终回到确认过的设定表。
  • 需要姿势完全一致时,再加一张姿势控制图。参见图生图指南。

种子:有用,但有局限

种子固定的是随机起始噪声。在相同的模型、参数和提示词下,同一个种子会生成几乎一样的图,所以种子非常适合为同一个镜头做小变化:改表情或光线,其余保持不变。

种子无法让角色跨不同场景保持一致。一旦改变姿势、背景或构图,同一个种子就会生成不同的布局,脸也往往不同。换了模型、工具版本、硬件或采样器之后,它也会失效。把种子当作重现某张图的办法,而不是角色身份。

第4步(长期项目):LoRA 与微调

对于要在几百张图里出场的漫画、系列作品或品牌吉祥物,最强的办法是把角色教给模型。开源工具里常见三种方法:

方法训练什么需要什么说明
Textual inversion(文本反演)只训练一个新的词嵌入;模型保持冻结几张图,通常三到五张文件小,身份还原较弱;适合风格或物体
DreamBooth训练模型本身,并与一个罕见的标识词绑定少量该主体的图片身份还原强;文件大;可能过拟合并遗忘其他内容
LoRA训练小型低秩附加矩阵;基础模型保持冻结通常 15 到 30 张多样化的图片文件小,容易调高调低强度;最受欢迎的选择

训练数据比参数设置更重要。使用设定表和已确认镜头里的同一个角色的图片,角度、表情、光线和背景要有变化,并给每张图写好标注。如果每张训练图都是同一个背景或姿势,LoRA 也会把这些学进去。提供自定义角色的在线服务,在后台做的也是类似的事。

连贯性检查清单

新图放进项目之前,把它和角色设定表并排对比。凡是不合格的地方,修复或重新生成。

检查项对比什么常见失误
脸型下颌、眼形和眼距、鼻子脸变得更圆或更大众脸
头发长度、刘海、颜色、分线刘海消失;长度变了
标记痣、疤痕、雀斑、纹身以及所在的一侧标记跑到另一侧或消失
眼睛颜色和形状有色光下眼睛颜色改变
服装每件衣物、颜色、标志、层次雨衣变成夹克;颜色互换
配饰耳环、眼镜、包、手表配饰缺失或出现在错误的手上
比例相对其他人物和道具的身高角色在镜头之间变高或变矮
手手指数量,以及每只手拿着什么道具在镜头之间换手
风格媒介、线条粗细、调色照片镜头混进了插画系列

为每个镜头做一份简单的记录:提示词、种子、使用的参考图、模型,以及做过的修复。项目后期角色一旦漂移,这份记录会告诉你是哪次改动造成的。视频也适用同样的规则,逐镜头执行;多镜头视频指南介绍了如何让角色在运动中保持一致。

常见问题

只复用种子就能保持同一个角色吗?

只能用于非常相似的图片。新的姿势、背景或构图即使种子相同,结果也会改变,所以要把固定描述词和参考图结合起来。

训练角色 LoRA 需要多少张图?

许多创作者用大约 15 到 30 张优质且多样的图片。质量和多样性比数量更重要,而且每张图都应展示同一个确认过的设计。

为什么我角色的衣服总在变?

可能是服装描述得太笼统,或者提示词之间描述有变化。把每件衣物连同颜色一起写明,措辞保持完全一致,并让服装出现在参考图里。

为真人制作一致的AI角色合法吗?

取决于你所在的地方和用途。许多国家保护个人肖像并要求取得同意,许多平台也禁止这样做。以上仅为一般性信息,不构成法律意见。

角色参考在不同的AI工具之间通用吗?

方法是通用的,但效果不同。每个工具读取参考图的方式各异,所以开始项目之前,先在新工具里测试你的设定表,并调整参考权重。

全部AI教程