多人视频换脸:如何在本地一次替换多张脸
多人视频同时带来两个问题:决定谁换成哪张脸,以及在人物交错、侧身、进出画面时把这个决定稳住。

结论: 本地桌面应用处理多人视频有两种方式:用同一张源脸替换画面里检测到的所有人脸,或者给每个人分别指定源脸。大多数人说的“多人换脸”指的是后者,而它必须在渲染之前确认映射关系,而不是渲染之后再看结果。
单人视频相对宽容:只有一张脸要找、一个身份要跟、一组融合参数要调。多人画面把这三件事都改变了。检测器每帧会返回多张脸,应用需要判断哪张脸对应哪个身份,而这个判断还要扛住遮挡、侧脸和镜头切换。
所以实际最常见的抱怨不是“融合得难看”,而是“有几帧脸换错人了”。
人数增加,授权要求也随之增加
多人片段需要画面中每一个可识别人物的许可,而不只是拍摄者或主角的许可。开始之前先决定成片如何标注为已被修改,并且不要用于冒充、诈骗、绕过身份验证、骚扰或未经同意的私密影像。请阅读负责任使用说明。
1. 被同时称作“多人换脸”的两件事
在动任何设置之前,先明确你要的是哪种结果。Deep Face Cam 把它们放在 Advanced options → Faces 里作为两个独立选项,并且在设计上互斥。
| 选项 | 实际行为 | 适用场景 |
|---|---|---|
| Swap all faces | 用同一张默认源脸处理画面中检测到的每一张脸。 | 想把一个身份套到一群人身上,或做快速试验。 |
| Map faces manually | 为每一张检测到的目标脸分别指定源脸。映射界面会在生成前打开,并自动关闭 Swap all faces。 | 两个及以上的人各需要不同的脸,也就是真正的多人场景。 |
这是最常见的设置错误:打开“swap all faces”却期待逐人不同的结果。该模式只有一张源脸,并把它用在所有人身上。如果 A 要换成一张脸、B 要换成另一张,就必须用手动映射。
2. 每个身份准备一张源照片
每个被映射的身份都需要自己的源图,而且都要达到与单人换脸相同的标准:清晰、光线均匀、接近正脸,首轮测试避开墨镜、头发遮挡、夸张表情和强磨皮滤镜。质量差的源照片不会在人群里被“平均掉”,只会让视频里的某一个人明显比别人更糟。
尽量让几张源照片在外观上有明显区别。如果两张源图在构图、裁切和光线上都很接近,映射错了在成片检查时也很难发现。
目标素材请选一段短的测试片段,而不是最终成片。合格的测试片段至少包含一次人物重叠或交错、每个人一次侧脸转身,以及一次镜头切换。
3. 渲染前确认映射关系
启用手动映射后,应用会先分析目标素材,并在开始生成之前打开映射步骤。这是最省时间的一道检查。请在这里确认每一张你关心的目标脸都指定了源脸,并且配对确实是你想要的——不是“屏幕上有脸出现”就算通过。
对于图片和视频目标,映射是基于目标素材中检测到的人脸建立的;视频还会记录哪些脸出现在哪一帧。这也是为什么值得在一段有代表性的片段上确认映射:映射的可靠程度不会超过检测的可靠程度。
实时摄像头不同。没有可以预先分析的目标文件,实时会话会用人脸嵌入向量逐帧匹配,为每个已映射身份挑选最接近的候选。这是持续进行的相似度判断,也正是实时多人映射比已映射视频文件更容易出错的原因。如果逐人结果必须可靠,请走文件流程,把实时当作预览。细节见本地实时换脸指南。
4. 身份错位:脸为什么会换到别人身上
多人处理里被反馈最多的失败,是某张脸在几帧内落到了错误的人身上。这不是随机的。指派依赖检测和相似度,因此会在可预测的场景中变弱:
- 交错:两人重叠、一张脸被部分遮挡,检测短暂返回更少或偏移的人脸。
- 侧脸:偏离正脸较多的一张脸,匹配强度会弱于旁边的人。
- 重新入画:有人走出画面再回来,没有任何机制保证他拿到和之前一样的指派。
- 长相接近:年龄、发型、眼镜或光线相近,会缩小两个身份之间的差距。
- 镜头切换:切镜换掉了整个场景,新镜头会被独立匹配。
- 距离:背景里的小脸能提供的匹配细节远少于前景特写。
按值得尝试的顺序,实用的缓解办法是:按镜头边界切分片段并分镜处理;不去映射那些其实不需要替换的背景人脸;有人重新入画后重新确认映射;以及使用外观差别明显的源照片,让错误一眼就能看出来。
5. 多人渲染更贵,大致按人脸数量计算
一帧里有四张被映射的脸,和一帧里只有一张脸并不是同等工作量。每一组源—目标配对都会单独通过换脸模型,然后依次合成回该帧,所以单帧处理时间会随该帧要替换的人脸数量增长,而不只取决于视频分辨率。
画质增强会把这个影响放大,因为增强同样是按人脸执行的。在四个人的镜头里启用 HD repair,意味着每帧在四次换脸之上再叠加四次增强。如果多人渲染慢得离谱,通常先要检查的是增强设置,而不是换脸本身。
| 因素 | 对多人渲染的影响 | 应对 |
|---|---|---|
| 每帧人脸数 | 换脸工作量大致线性增长。 | 只映射真正需要替换的人。 |
| 画质增强 | 在换脸之外,按每张脸各执行一次。 | 先关闭增强测试,再逐步加回。 |
| Execution provider | CPU 是最慢路径,GPU 后端因平台而异。 | 让安装包匹配机器,见画质增强指南。 |
| 片段长度 | 发现得晚的错误会浪费整段渲染。 | 始终先在短片段上验证。 |
| 临时帧 | 视频处理会把帧展开到磁盘上。 | 预留磁盘空间,并使用独立的输出目录。 |
渲染开销与人脸数量的关系
检测每帧只跑一次,换脸和增强则按每张脸各跑一次。算术很简单,而多人渲染耗时的主要来源正是这个算术,而不是分辨率。
| 帧内映射人脸数 | 检测 | 换脸次数 | 增强次数(若开启) | 每帧模型推理次数 | 换脸+修复工作量 |
|---|---|---|---|---|---|
| 1 | 1× | 1 | 1 | 3 | 1.0× |
| 2 | 1× | 2 | 2 | 5 | 2.0× |
| 3 | 1× | 3 | 3 | 7 | 3.0× |
| 4 | 1× | 4 | 4 | 9 | 4.0× |
| 6 | 1× | 6 | 6 | 13 | 6.0× |
最后一列只统计换脸和增强,因为检测是按帧计费而不是按脸计费。在此之上的实际耗时还取决于 execution provider、采集或源素材分辨率,以及选用的增强档位。
6. 检查成片时看“指派”,不只看画质
单人检查问的是“这看起来对吗”。多人检查问的是“每一个镜头里,正确的脸是否落在正确的人身上”。这是两遍不同的检查。
请专门在人物交错处、每次镜头切换处,以及有人进出画面的位置检查成片。先用正常速度播放:持续一秒左右的身份错位在逐帧检查时经常看不出来,正常播放时却很明显。之后再单独评估融合质量。
把测试成片、所用的映射关系、应用版本和模型版本一起记在项目笔记里。之后需要返工时,这份记录能把猜测变成复现。
多人换脸常见错误
- 每个人需要不同源脸时却用了“swap all faces”。
- 在测试片段上确认映射之前就渲染整段视频。
- 把检测到的所有脸都映射上,包括根本不需要替换的背景群演。
- 使用两张几乎一样的源照片,掩盖了指派错误。
- 把多镜头剪辑当成一个文件处理,而不是分镜处理。
- 只逐帧检查,漏掉了短暂的身份错位。
- 只取得多人片段中一个人的授权,就默认覆盖了所有人。
常见问题
同一段视频里能换两张不同的脸吗?
可以,这正是手动映射的作用:每一张目标脸都与各自的源照片配对,因此同一镜头里的两个人可以拿到两张不同的脸。“swap all faces”做不到,因为它只会把一张默认源脸用到所有人身上。
一次最多能换多少张脸?
映射是由检测器在目标素材里找到的人脸建立的,所以实际上限取决于检测质量和处理时间,而不是某个固定数字。小脸、远景人脸和被大面积遮挡的脸最先变得不可靠。
为什么脸会换到错误的人身上?
因为指派依赖检测和相似度,而两者在交错、侧脸、重新入画和切镜时都会变弱。按镜头切分片段、减少映射的人脸数量,并使用差别明显的源照片。
多人换脸需要 GPU 吗?
CPU 路径可以跑,但多人正是差距最明显的场景,因为成本会随每帧人脸数量成倍增加。请按你实际拥有的硬件选择安装包和 execution provider。
实时摄像头能做多人换脸吗?
实时会话可以处理多个人,但它是按相似度持续匹配,而不是基于预先分析好的文件,指派稳定性弱于已映射的视频渲染。建议当作预览使用。