上个月我试着用AI做一本12页的儿童绘本。主角是个红头发、有雀斑、穿黄色雨衣的小女孩。第1页效果很棒。到了第3页,雀斑没了。第7页头发变成了棕色。到最后一页,连脸型都变了——下巴更圆了,鼻子也不一样了,看起来像是她表姐而不是同一个人。
我花在重新生成图片上的时间比写故事还多。如果你用AI做过漫画、绘本或者任何系列图片,大概率体验过这种痛苦。角色一致性——让你的角色在多张图片里看起来是同一个人——是当前AI绘画领域最让人头疼的问题,没有之一。
这篇指南讲的都是实际管用的方法。不讲理论,不画大饼。全是我过去三年在 Midjourney、ComfyUI、Leonardo AI 和各种一致性工具上反复测试后总结出来的具体技巧、参数值和工作流。
为什么AI角色在多次生成之间会变样
简单来说:AI图片生成器没有记忆。
你每次生成图片,都是从随机噪声开始的。扩散模型在你的文本提示词引导下,一步步去除噪声,最终形成一张图。但每次的起始噪声都不同,所以即使用完全相同的提示词,每次生成的图片也不一样。
你写的"一个棕色头发的女孩"会被概率性地解读。这次生成把"棕色"理解成栗色,下次是巧克力色,再下次是红棕色。模型并没有偷懒或出错——它做的正是它被设计来做的事:创造多样性。
更糟的是,哪怕你只改了一个词。把"站在公园里"换成"坐在公园里",改变的不仅是姿势。整张图会从头开始重新生成。脸型、发质、肤色——一切都重新来过。
这不是bug,这是扩散模型的底层运作方式。一致性不会自动发生,你必须用刻意的技巧去强制实现它。
主要有三种方法,组合使用效果最好。
方法一:参考图与角色锚定
这是单独使用时最靠谱的技巧。思路很简单:先创建一张角色的标准定义图,然后每次生成新图都以它为参考。
创建你的锚点图
在生成任何场景之前,先做好一张参考图作为你的"真相来源"。这张锚点图应该满足以下条件:
- 全身或半身照 ——展示足够多的角色细节来体现体型比例
- 正面朝向 ——正对镜头,没有夸张的透视
- 纯色背景 ——白色或纯色,不要有任何干扰元素
- 自然表情 ——微笑或自然状态,不要极端的表情
- 光线均匀 ——均匀打光,没有遮挡面部特征的硬阴影
花点时间把这一张图做好。需要重新生成20次甚至50次都没关系。这张图会成为后续所有生成的锚点,在这里花的功夫能帮你之后省下好几个小时。
最重要的原则:永远参考最初的锚点图,绝对不要参考上一次的生成结果。如果你用第5张图做第6张的参考,再用第6张做第7张的参考,误差会不断累积。到第20张的时候,你的角色已经面目全非了。永远回到源头去参考。
各工具的具体操作
Midjourney:使用 --cref(character reference,角色参考)参数。上传你的锚点图,然后在每个提示词中加上 --cref [image_url]。搭配 --cw(character weight,角色权重)来控制匹配强度——取值范围0到100,100是最强匹配。我通常以 --cw 80 作为起点,再根据实际效果调整。
Leonardo AI:使用 Character Reference 功能。上传你的锚点图,强度设为 Low、Mid 或 High。建议从 Mid 开始。Low 给模型太多自由发挥的空间,容易走样。High 可能让输出显得僵硬或过拟合。Mid 对大多数场景来说是最佳平衡点。
ComfyUI + IP-Adapter:这是最灵活但也最考验技术功底的方案。IP-Adapter 内部的 CLIP 视觉模型会把你的参考图缩放到 224×224 像素。这意味着人脸必须居中且占据画面主体——方形裁剪效果最好。关键参数设置:
- IP-Adapter 权重设为 0.8 或更低。权重太高会产生伪影,并降低提示词的控制力
- 增加采样步数(用40-50步替代默认的20-30步),给模型更多时间来协调参考图和提示词之间的关系
- 如果你主要关心面部一致性,使用 IPAdapter FaceID Plus 变体。它专门针对面部特征优化,而不是整体构图
通用建议:如果你的工具支持多张参考图,提供2-3个角度——正面、四分之三侧面和侧面。多角度参考能帮助模型更好地理解你角色的三维面部结构。
方法二:提示词工程实现角色一致性
光靠参考图还不够,如果你的提示词写得马虎,结果照样会翻车。文本描述的部分同样重要。
构建 Character DNA 描述块
写一段完整的文本来描述角色的每一个视觉细节。这就是你的 Character DNA——一份完整的角色规格说明,每次写提示词都要原封不动地复制粘贴进去。
举个例子:
[Character: Mira] 25-year-old woman, oval face, warm brown skin,
dark brown almond-shaped eyes, black wavy shoulder-length hair with
side part, small nose, full lips, thin eyebrows. Wearing a navy blue
bomber jacket over white crew-neck t-shirt, dark indigo slim jeans,
white low-top sneakers. Athletic build, approximately 5'6" height.关键词是原封不动。不要换说法,不要缩写,不要换近义词。如果你的锚点提示词写的是"navy blue bomber jacket",后面就不要简写成"blue jacket"。"Navy blue bomber jacket"和"blue jacket"生成出来的结果会有明显差异。
我见过很多人精心打磨第一张图的描述,后面就开始偷懒。漂移就是从这里开始的。
锁定你的画风关键词
画风关键词在每个提示词里都必须完全一致。如果你第一张图用的是"digital illustration, soft lighting, Studio Ghibli inspired, muted color palette"——就把这些词原样粘贴到每个提示词里。不要三页之后突然换成"anime style, bright colors"。哪怕是微小的风格变化,都会连锁反应式地影响角色外观。
善用反向提示词
反向提示词不仅仅是用来避免畸形的。它也是一致性工具。找出容易漂移的特征,主动屏蔽掉:
- 角色是短发?加上:"no long hair, no ponytail"
- 棕色眼睛?加上:"no blue eyes, no green eyes"
- 没有胡子?加上:"no beard, no stubble, no facial hair"
我为每个角色项目都维护一份"漂移观察清单"——记录我发现模型最爱擅自改动的特征。发色和眼睛颜色是最常见的"惯犯"。配饰(眼镜、耳环、帽子)是第二容易在多次生成中消失的。
保持描述顺序一致
这听起来有点吹毛求疵,但确实有用。如果你在一个提示词里写"brown hair, blue eyes, tall",在下一个里写"tall, blue eyes, brown hair",你就引入了不必要的变量。模型会根据词语位置分配权重——出现在提示词前面的词通常获得更多注意力。选定一个顺序,然后一直保持。
方法三:专用一致性工具
上面的手动方法确实有效,但也需要花精力和具备一定技术基础。如果你不想折腾 ComfyUI 节点或者维护提示词表格,现在有越来越多专门为角色一致性设计的工具。
以下是各种方案的优劣对比:
| 方案 | 优势 | 劣势 |
|---|---|---|
| 手动提示词 + seed | 免费,适用于任何工具 | 耗时,结果不稳定,需要技术经验 |
| ComfyUI + IP-Adapter | 控制力和灵活性最强 | 需要技术配置、GPU硬件,学习曲线陡峭 |
| Midjourney --cref | 简单易用,原生集成 | 控制有限,封闭生态,需要付费订阅 |
| 专用平台 | 技术门槛低,内置一致性功能 | 比手动工作流的微调选项少 |
如果是做社交媒体内容或营销素材,用专用工具或 Midjourney 的 --cref 通常是最合理的选择。如果是做50页的专业漫画、需要像素级的精确控制,ComfyUI 工作流能给你最大的灵活度。如果想快速测试角色原型和创意,一个角色创建工具能自动处理一致性问题,让你迭代得更快。
正确答案取决于你的项目规模、技术水平,以及你愿意在配置上花多少时间。我在不同项目中使用不同的方案——没有唯一最优解。
像 Consistent Character AI 这样的工具把参考图方案做了自动化封装。你上传一次角色参考图,之后就可以在不同姿势、服装和场景中生成这个角色,不需要手动管理提示词、seed 或适配器权重。代价是少了一些精细控制,但对大多数创作者来说这个取舍是值得的。
Seed值:被忽视的一致性要素
大多数教程都跳过了这个话题,但 seed 控制真的很重要。
每次AI生成都会用到一个 seed 值——一个决定初始随机噪声模式的数字。相同的 seed + 相同的提示词 + 相同的模型 = 几乎一样的输出。
记录下你最满意的那些生成的 seed 值。当你想创建同一角色的变体时,从相同的 seed 开始。这不能保证面部完全一致(提示词的变化仍然会影响输出),但它会让生成结果偏向相似的面部特征。
有些创作者会使用系统性的 seed 递增——场景1用 seed 42,场景2用 seed 43,场景3用 seed 44。输出不会完全一样,但它们共享底层的模式,这对一致性有帮助。
需要注意的是:单靠 seed 是不够的。在相同 seed 下改一个词,依然可能生成一张完全不同的脸。Seed 最适合作为多技巧组合中的一层——把它和参考图、一致性提示词结合起来使用,效果最好。
进阶:多角色场景与视频
多角色场景
保持一个角色一致已经很难了。在同一张图里保持两个或更多角色各自不同且各自一致,难度更上一层楼。
我见过最常见的错误是:分别生成各个角色,然后试着合成在一起。光照、比例和透视永远不可能完美匹配。尽可能在一次生成中就把所有角色放在一起。
如果你的工具支持,可以使用标签化的位置结构:
@Milo: 10-year-old boy, brown skin, short curly black hair, red hoodie
@Luna: white rabbit with floppy ears, pink nose, gray spots on back
Scene: Forest clearing, afternoon light.
@Milo stands on the left, pointing upward at a bird.
@Luna sits at his feet on the right, looking up at @Milo.三段式公式:(1)定义每个角色,(2)设定他们的位置,(3)描述他们的动作。这样能给模型清晰的空间关系,而不是寄希望于它自己猜谁站哪儿。
视频角色一致性
视频又增加了一整个新的难度维度,因为每一帧都可能引入漂移。面部可能变形,特征可能在运动中偏移,本来流畅的动画变成了"变脸现场"。
以下是有助于改善一致性的关键参数:
- 运动强度:保持在 0.3-0.5 之间。更高的值会产生更夸张的动作,但面部变形的风险也显著增加
- 时长:3-5秒的片段一致性表现最好。越长的片段累积的漂移越多
- 分辨率:更高的分辨率在运动中能更好地保持面部细节
- 运动隔离:使用 Motion Brush 或类似工具将运动限制在特定区域。让脸部保持相对静止,身体动就好
如果你要生成角色动画,先准备一张你满意的静态图,然后从这张图开始做动画,而不是纯文本生成视频。图片转视频比文本转视频能保留多得多的角色细节。
会破坏一致性的常见错误
这些错误我全都犯过。希望你能避免这些坑:
-
跳过锚点图。 没有参考图就直接开始生成场景。解决办法:永远先做锚点图,哪怕要花一个小时。
-
链式引用。 用第5张的结果做第6张的参考,再用第6张做第7张的参考。漂移会不断累积。解决办法:每次生成都参考最初的锚点图。
-
改写描述。 把"auburn wavy hair past shoulders"改成"reddish wavy hair"。解决办法:直接复制粘贴 Character DNA 描述块。每一次都是。
-
忽略 seed。 每次都让工具随机选一个 seed。解决办法:记录你的 seed 值,同一角色复用它们。
-
不检查漂移。 生成了30张图,到第31张才发现角色在第12张就已经变样了。解决办法:每生成5-10张,就和锚点图做一次对比。
-
视频动作太复杂。 提示词写"角色一边旋转一边风吹过头发"。解决办法:让动作保持简单。"角色微微向右转头"才是你的好朋友。
-
长视频不做测试。 直接生成10秒的片段然后祈祷它能用。解决办法:先生成3秒的测试片段。确认一致性没问题。然后再加长。
快速上手:5步一致性工作流
如果你只想赶紧开始,这是最精简的工作流:
第1步:写好 Character DNA。 在打开任何工具之前,在纸上或文档里写下角色的每一个外貌细节、服装配件和风格关键词。越具体越好。比如"苍白皮肤,鼻梁和脸颊上有淡淡的雀斑,铜红色直发齐下巴并留有齐刘海。"
第2步:生成一张锚点图。 用你的 Character DNA 作为提示词。正面朝向,纯色背景,良好光线。反复生成直到你得到一张真正满意的。把这张图永久保存。
第3步:锁定你的设置。 记录下生成锚点图时使用的模型版本、seed 值、风格关键词和反向提示词。这些就是你后续所有生成的基线。
第4步:用一致的输入生成场景。 每次生成新场景时,粘贴同样的 Character DNA,上传同一张参考图,使用同样的风格关键词。只改场景描述和姿势。
第5步:定期和锚点图对比。 每隔5-10次生成,把新图和锚点图放在一起看。如果你发现了漂移——头发变暗了、雀斑消失了、脸型变了——丢掉那张图,从锚点图重新生成。不要从已经漂移的图开始。
这五个步骤不能保证你每次生成都完美。但它们能把你的重新生成率降低80%以上,而且从第一张到最后一张,你的角色看起来都明显是同一个人。
从这里开始就好。等你需要的时候再逐步加入进阶技巧。每多加一个技巧,其他的也会跟着变得更好用。
对角色一致性有疑问,或者想分享你的工作流?欢迎联系我们:support@consistentcharacterai.org

