返回博客
官小西

AI 视频重制里的人物一致性:换脸为什么总换不掉,以及我们一周里修掉的六个根因

给一部片子换演员,听起来是图像模型最擅长的事:每个镜头取一帧,告诉模型「把这个人换成参考图里的人」,再交给视频模型动起来。我们照这个思路做了一条 AI 视频重制流水线,第一批结果里,特写镜头的人只换了发色,五官还是原片演员的;两人同框时,改动落到了另一个人身上;就算每张剧照单看都对,连成视频后颜色一帧一跳,像在放幻灯片。

这篇讲人物一致性。2026 年 10 月 26 日到 11 月 2 日这一周,这条流水线的仓库提交了 144 次,人物一致性是其中反复返工最多的部分。下面按失败出现的顺序,把每个根因、修法和实验数字摆出来。上一篇AI 重制视频为什么总是不稳定从赛道层面讲了 Agent 型流水线的不稳定根因,这篇下沉到其中最难的一个零件。

流水线长什么样

重制分四个阶段:拆解原片、按需求做资产、逐镜头生成、合成。人物一致性集中在第三阶段的「剧照」这一步:每个机位镜头取一帧,编辑成重制后的样子,作为视频模型的关键帧。

从原片一帧到镜头视频的八步流水线:清理、读帧、遮脸、Seedream 编辑、调色、校验、Seedance 生成

几个关键设定:

  • 每个角色先做参考图。 一张正面、自然站立的全身「基础形象」,换装时每套衣服再从基础形象编辑出来,保证所有服装都是同一个人。
  • 剧照用 Seedream 做图像编辑,输入是去掉字幕、台标、贴纸后的原帧,加上每个要换的人的参考图。
  • 视频用 Seedance 的参考生视频(R2V),输入是这个镜头的全部剧照,加上原片片段提取出的深度视频,负责还原原片的运动和节奏。
  • 画面里没有要改的东西,就不重画,清理后的原帧直接当剧照。

视频模型对人物的认识几乎全部来自剧照。剧照里换错的脸,视频会忠实地动起来;剧照之间不一致,视频会在关键帧之间硬切。所以下面六个问题全是剧照层的问题。

失败一:在深度图上重画,文字压过了画面

最早的方案(10 月 27 日提交)是让 Seedream 在深度图上重画剧照:深度图保留构图,文字描述站位,参考图给长相。思路是避免原帧里的脸「漏」进来。

10 月 29 日的剧照提示词实验否掉了它。8 轮、约 380 张剧照逐张人工复核,在其中一组 18 张剧照上,深度图方案构图保住 0/18。深度图在模型眼里只是几团灰,真正起作用的是读图文字。有一个镜头的原帧是一道背部的弧线,读图把它说成肩和胸,Seedream 就照文字画成了正面。

改为直接在清理后的原帧上编辑、只写这一帧看得见的部位怎么变之后,同一组镜头构图保住 16/18 到 18/18。后面几轮又加了三条读图规则:只写与原帧不同的部位;颜色按设计稿原话说;整体人设词只给露出全貌的部位。其中一条有个很具体的来历:读图只说某个角色「变成一个 white young man」,模型把他的头发画成了白色。之后发色必须说出颜色本身,含糊的说法直接拒收重读,用前三轮 190 条涉及头发的改动回放,27 条含糊的全部拦下,没有误拦。

失败二:只给文字,脸是另一张脸

同一份实验还有一个反直觉的数字:同一读图、同一提示词,只差有没有参考图,换人到位率无参考 12/18,有参考 8/18。参考图让编辑变保守,于是参考图被关掉了。

关掉之后的问题当天就暴露:只靠文字,每张剧照画出的都是「一张符合描述的脸」,镜头之间不是同一个人;而且原片的脸常常被保留,只是重新上了色。人物一致性的定义是「每个镜头都是参考图里那个人」,文字描述永远做不到这一点。

参考图回来的前提,是先解决失败三。

失败三:图像模型看不见名字

参考图「让编辑变保守」的真正原因,在 10 月 29 日的参考图实验里查清了。当时的编辑指令用剧中名字指人:「把某某变成 Image 2 里的人」。图像模型不知道名字和画面里哪个人对应,只能靠读图文字里偶尔带的位置去猜。有一个镜头的改动行连位置都没写,逐人编辑时就把一个角色的设计套到了站在旁边的另一个人身上。

逐人编辑实验(12 张需要同时换两人以上的剧照)把这个机制看得更清楚:

方案 全对张数(共 12) 主要失败
A 一次编辑,所有改动写在一条指令里 8 漏掉画面里最次要的人(趴着睡的、侧脸的)
B1 逐人叠加,无参考图 7 换错人:只写名字时,模型挑最显眼的那个人改
B2 逐人叠加,带参考图 6 换错人,且参考图会把人套到错误位置

一次编辑时几个人的改动并列在一起,模型能互相对照分清谁是谁;拆开之后每条指令只剩一个名字,模型就挑最显眼的人。

修法是给每个人一句按画面指认的话(我们叫它 find):读帧时由 Grok 为每个人写一句「在画面哪里、原帧里看得见什么」,比如位置、发型、朝向镜头的哪一面、穿什么,不带名字,两个人不能共用一句,代码里检查。编辑指令改成「 变成 Image k 里的人:脸、发型、肤色、体型」。同一组 13 张剧照上,换错人 0 张,脸也明显更像设计稿,第一次出现了设计稿的脸型和雀斑。代价是画面边缘的小侧脸仍会漏改。

这条规则后来又在换装参考图上踩了第二次:一套男装的参考图画成了站在他前面的女人,因为编辑指令用的是原片人物的文字描述,分不清两个背对镜头的男人。改成先读锚帧生成 find 之后,9 套服装 9/9 认对人。现在它是项目里的一条硬规则:任何把带人的画面交给图像模型的编辑,都必须按画面指人,并明说哪些东西(脸、身体、性别)不能从这张图里取。

失败四:特写里原片的脸换不掉

指人问题解决后,特写镜头仍然只换发色,五官留着原片演员的。原帧里那张脸太清晰,「保持构图」和「换成参考图的脸」两个要求冲突时,模型选了保构图。

10 月 30 日的遮脸实验在 6 个镜头上比了四组:

组 Image 1 提示词 结果
B 现行 清理后的原帧 现行 特写只换发色
M1 每张脸盖黑框 同 B 多人镜头黑框原样留在剧照里(指令说「其余一律不变」)
M2 同 M1 加一段:黑框是脸,按参考图画出来 脸换掉了,但大笑、尖叫、低头全变成平静正脸
M3 同 M1 M2 + 每张脸一句表情和视线 + 「框外的头发也换」 6/6 身份、表情、发色都对

人脸遮罩来自一个人脸检测服务,每张脸返回一个从眉到下巴的框。M3 当天上线,每张脸的表情由读帧给出(必填字段)。它也带来一个副作用:遮脸后模型在 3 张纯色 T 恤上凭空印了品牌字样,于是加了一条「没有印花的衣服不加印花」。

失败五:黑框让人移位、变形

M3 上线第二天,两人同框的特写出了问题:整块黑框让模型看不到头的轮廓、朝向和光线,只能自己猜,结果把人挪走、把两人头部的角度和仰角改掉。10 月 31 日的对照实验在 9 个特写上比了三种遮法,用「结果与原帧在 24×42 灰度下的平均差」量漂移:

遮法 平均漂移 最差的一个两人特写 一个低头的单人近景
A 整块黑框 25.4 50.7(一人被拉远,另一人缩小) 43.5
S 缩框黑块(框的 0.7×0.88) 23.5 28.5 27.8
R 原框高斯模糊 19.5 28.4 20.8
B 缩框内模糊 18.0 27.2 19.0

9 个镜头里没有一张留下原片的脸,模糊没有把原脸漏回来,同时保住了头的位置、侧脸角度、搭在肩上的手。漂移只能横向比较:换肤色、换发色本身也会让数字变大。

缩框模糊上线后又暴露了它自己的问题:框缩小了,额头、下颌、脸颊露在模糊区外,原片的脸型轮廓还在。当天第二版改成框上方抬高的大椭圆:宽为框的 1.3 倍、高 1.5 倍、中心上移框高的 0.05。我们用 MediaPipe 的脸部轮廓关键点在 88 张脸上量了覆盖率:

同一个人脸检测框上的三种遮法:整块黑框、缩框模糊、抬高椭圆模糊,以及各自的漂移和覆盖率

  • 框内椭圆(0.8×1.0)覆盖脸部轮廓的 42%;
  • 抬高大椭圆(1.3×1.5,上移 0.05)覆盖 99%,97% 的脸每一个轮廓点都在里面;
  • 按脸的翻滚角旋转椭圆、按偏航角平移(用 YuNet 关键点估计),没有任何增益:检测框本来就落在它看到的脸上。

模糊半径取帧宽的 3.5%。另外两条边界条件来自一个三人镜头:检测服务没框到脸时,流水线照旧按遮脸提示词编辑,模型凭空画了一张脸并抬了头,所以没框到就走不遮脸的路径;统计框时只认服务画的黑块,画面里原有的暗区(窗帘)不算。

失败六:每张剧照一种调色,视频像幻灯片

人换对之后,R2V 的视频在关键帧之间「跳」:每次 Seedream 编辑都会按自己的口味调一次色,同一镜头的几张剧照亮度、色偏各不相同,视频模型就在它们之间硬切。

修法是把每张重画过的剧照的颜色迁回它自己的清理帧:在 Lab 空间按通道对齐均值和标准差(沿用 Reinhard 等人 2001 年颜色迁移的做法,原文在 lαβ 空间,我们换成了 Lab),只对重画过的剧照做,需求本身要求改风格时不做。37 个镜头、145 张剧照(重画 134 张)上的测量:

方案 与原帧色差 ΔE 镜头内亮度离散 镜头内色偏离散
原帧(参照下限) 0.0 10.6 1.3
Seedream 剧照(调色前) 9.9 13.4 1.6
Lab 全量对齐(上线) 0.4 10.6 1.3

镜头内离散回到了原片自己的水平,「PPT 感」主要就来自这一列。单张最夸张的一例,一张剧照亮度从原帧的 89 被编辑拉到 123,ΔE 33.3,对齐后剩 2.0。

最后一道闸:读帧纠偏与剧照校验

六个修法上线后,剩下的错误大多来自读图本身。11 月 1 日加了两件事:

  1. 生成前读帧纠偏。 每个镜头的剧照帧在第三阶段之前统一清理、读图,读图会指出拆解表里关于这一帧明显说错的地方(身体部位认错、哪一面朝镜头、谁在哪)。有一组连续镜头里,拆解表把一个人的背部读成了正面,视频模型被这个词反复提示,把她转了过来。现在发现错误会让 Grok 按首、中、尾三帧重写这个镜头的描述,再读一次,仍然不对就让这个镜头失败。
  2. 剧照校验。 每张重画的剧照交给一个轻量 DeepSeek 视觉模型,和清理帧对照:姿势、朝向镜头的一面、裁切是否保住,是否多出或丢了脸和身体部位,每个重画的人是否像参考图,是否多了字。不过就带着错因重做一次,结论记在剧照上,但不拦下视频生成。

一周里的修法顺序:10-27 提交深度图方案;10-29 实验:改清理帧、按画面指人、参考图、调色;10-30 实验:遮脸与换装指人;10-31 实验:模糊对照,并提交抬高椭圆;11-01 提交读帧纠偏与剧照校验

六个根因一览

现象 根因 修法 证据
构图被重画、背被画成正面 深度图信息太少,文字压过画面 直接编辑清理帧,只写可见且不同的部位 构图 0/18 → 16–18/18
每个镜头一张新脸 只给文字描述 每个重画的人都带参考图 关掉参考图后脸在镜头间漂
改动落到别人身上 图像模型看不见名字 按画面指人的 find 13 张 0 换错;换装 9/9
特写保留原片脸 清晰的原脸压过参考图 遮脸 + 每张脸的表情 6/6 身份、表情、发色正确
人被挪走、变形 黑框遮掉了头的轮廓和光线 抬高大椭圆内模糊 漂移 25.4 → 18.0;覆盖 42% → 99%
视频像幻灯片 每次编辑各自调色 Lab 均值方差对齐 ΔE 9.9 → 0.4

我的判断:这六条里杠杆最大的是第三条。遮罩、调色都是在补图像模型的短板,find 则改的是我们自己对模型的错误假设:我们一直默认「名字」是一个可以传给模型的指针,它从来不是。参考图实验里「有参考反而更差」的结论,也是在这个错误假设下得出的,指人方式一换,结论整个反过来。

关于实验方法的三条教训

一次只动一个变量。 遮脸实验的四组只改 Image 1 和提示词开头,参考图、模型、分辨率全部不变,所以 M1 到 M3 的差别可以直接归因。反例是逐人编辑实验:那一批的读图文字来自好几个版本,较早的不带画面位置,B 组换错人全出在这类文字上,「逐人编辑更差」这个结论因此打了折扣。

每条规则都要能指出它修的那个镜头。 项目文档里每条约束后面都跟着日期和触发它的那个镜头:换错人的那个镜头、没框到脸的那个、被黑框拉远的那个、背被画成正面的那个。说不出它修的是哪个镜头的规则,就没法判断它还该不该留。R2V 提示词的精简也按这个标准做:每删一类内容先在真实镜头上 A/B,最后三个镜头的提示词从 1163/892/927 词降到 833/648/692 词,台词更干净,切点更准。

n=1 只能证明「无害」,证明不了「更好」。 上面几组实验大多每格只生成一次。剧照提示词实验里,同一份代码跑两次,有个镜头一次两张全对、一次两张全错;另一个镜头里同一个男人一次被认成甲、一次被认成乙。每组每镜头 2 张时,组间差异比同组的随机波动还小。所以我们给结论定级:样本少时只说「这样改没有变坏」,换装实验的 9/9 也只是「每组各跑一次」的 9/9。要比细调,每个镜头至少 4 张。

结论

AI 视频重制里的人物一致性,难点几乎都在剧照这一层,而且每个失败背后都是一个对模型的错误假设:深度图能锁住构图,文字能描述一张脸,名字能指向一个人,黑框只遮掉脸,每次编辑的颜色是中性的。这五个假设在 2026 年 10 月底的 Seedream 上都不成立。如果你也在做类似的流水线,我建议优先做两件事:编辑原帧而不是重画,以及按画面里看得见的东西指人。这两件改动最小,换来的却是从「换错人」到「0 换错」。遮罩和调色排在后面,它们修的是特写和连贯性。

想了解这个赛道上其他工具怎么处理人物,可以看2026 开源 AI 视频生成工具全景评测;图像生成工具本身的格局变化,见生图工具三年格局变迁。

参考资料

  1. ByteDance Seed — Seedream 官方页面(访问于 2026-11-02)
  2. ByteDance Seed — Seedance 2.0 官方页面(访问于 2026-11-02)
  3. ByteDance Seed — Seedance 2.5 官方页面(访问于 2026-11-02)
  4. Google — MediaPipe Face Landmarker
  5. OpenCV Zoo — YuNet 人脸检测模型
  6. Erik Reinhard, Michael Ashikhmin, Bruce Gooch, Peter Shirley — Color Transfer between Images,IEEE Computer Graphics and Applications 21(5)(2001-09)
  7. 本站 — AI 重制视频为什么总是不稳定?2026 赛道全景与两种架构的分野(2026-09-19)
  8. 实验数据:作者团队内部实验记录,2026-10-29 至 2026-11-01(剧照提示词 8 轮约 380 张;逐人编辑 12 张;参考图 13 张;遮脸 6 镜头;模糊对照 9 镜头;遮罩覆盖率 88 张脸;调色 145 张剧照;换装 9 套)