← 返回 2026-01-14

MoCha:无需结构引导的端到端视频角色替换 End-to-End Video Character Replacement without Structural Guidance

Zhengbo Xu, Jie Ma, Ziheng Wang, Zhan Peng, Jun Liang, Jing Li 📅 2026-01-13 👍 8 2026-07-13 08:35
上下文学习 强化学习后训练 扩散模型 视频编辑 角色替换 计算机视觉

首个仅需单帧掩码的端到端视频角色替换框架

前置知识

视频扩散模型(Video Diffusion Model)

视频扩散模型是一类基于去噪扩散概率模型(DDPM)的生成模型,专门用于视频生成任务。它通过在潜空间(latent space)中逐步添加高斯噪声,然后学习反向去噪过程来生成视频。现代视频扩散模型通常采用 Transformer 架构(如 DiT,Diffusion Transformer),将视频编码为时空 token 序列进行处理。在本文中,基础模型为 Wan-2.1-T2V-14B,拥有 140 亿参数,能够生成高质量的文本到视频内容。

本文的核心架构建立在视频扩散模型之上,理解其工作原理是理解 MoCha 如何利用扩散模型的时序感知和追踪能力来实现角色替换的基础。

Rectified Flow 框架

Rectified Flow 是一种用于训练扩散模型的流匹配(Flow Matching)框架。与传统的噪声预测不同,它让模型学习从噪声到干净数据的速度场(velocity field)。给定干净潜变量 $z_0$ 和噪声 $\epsilon$,在时间步 $t$ 构造带噪潜变量 $z_t = (1-t)z_0 + t\epsilon$,模型预测该点的速度 $v_\Theta(z_t, t)$。训练损失为 $\mathcal{L}_{FM} = \mathbb{E}_{z_0,t,\epsilon} \| v_\Theta(z_t, t) - u_t(z_0|\epsilon) \|^2$,其中 $u_t(z_0|\epsilon)$ 是从 $z_0$ 到 $\epsilon$ 的割线斜率。推理时从纯噪声 $z_1$ 出发,通过 $z_{t_{i+1}} = z_{t_i} + v_\Theta(z_{t_i}, t_i) \cdot (t_{i+1} - t_i)$ 迭代生成。

MoCha 使用 Rectified Flow 作为训练和推理框架,理解这一框架有助于理解模型的训练损失函数和采样过程。

条件感知旋转位置编码(Condition-aware RoPE)

RoPE(Rotational Position Embedding,旋转位置编码)是一种通过旋转矩阵将位置信息编码到 Transformer token 中的方法。3D RoPE 在时间、高度、宽度三个维度上分别应用旋转编码。MoCha 提出的 Condition-aware RoPE 是对 3D RoPE 的扩展:它将源视频 token 和目标视频 token 分配相同的帧索引(从 0 到 $f-1$),参考图像 token 固定为帧索引 -1,不同参考图像通过高度和宽度维度的偏移来区分。掩码 token 的帧索引为 $f_M = (F-1)//4 + 1$,支持任意帧的掩码选择。这使得模型能灵活处理不同长度的输入和多参考图像。

这是 MoCha 的核心技术创新之一,使得模型能够以端到端方式处理多种模态输入(源视频、掩码、参考图像),无需固定输出长度。

上下文学习(In-Context Learning)

在视频生成领域,上下文学习是指将条件输入(如参考图像、掩码等)与目标视频在时间维度上拼接,然后用全自注意力机制统一处理的方法。这种方式让模型通过注意力机制自动学习条件与生成之间的对应关系,而无需显式的结构引导。本文中,输入序列为 $x = [x_t, x_s, x_m, x_{I_1}, x_{I_2}, ...]$,其中 $x_t$ 为目标视频 token,$x_s$ 为源视频 token,$x_m$ 为掩码 token,$x_{I_i}$ 为参考图像 token。

上下文学习是 MoCha 实现端到端替换的核心范式,取代了传统方法中需要逐帧掩码和结构先验的重建范式。

ArcFace 面部嵌入与奖励函数

ArcFace 是一种用于人脸识别的深度学习方法,通过加性角度裕度损失(Additive Angular Margin Loss)学习高区分度的面部特征嵌入。在 MoCha 的后训练阶段,使用 ArcFace 提取生成视频帧和参考图像的面部特征嵌入,计算余弦相似度作为面部一致性奖励 $R_{face}$。为了防止模型简单地将参考图像粘贴到生成视频中(奖励黑客问题),还加入像素级均方误差(MSE)损失作为密集监督信号。总损失为 $\mathcal{L}_{RL} = (1 - R_{face}) + \| V_t - \hat{V}_t \|^2$。

理解 ArcFace 奖励机制是理解 MoCha 后训练阶段如何增强面部身份保持能力的关键。

LoRA(Low-Rank Adaptation)

LoRA 是一种参数高效微调方法,通过在原始权重矩阵旁添加低秩分解矩阵 $W = W_0 + BA$ 来实现模型适配,其中 $B \in \mathbb{R}^{d \times r}$,$A \in \mathbb{R}^{r \times d}$,$r \ll d$ 为秩参数。在 MoCha 中,后训练阶段使用秩为 64 的 LoRA 应用于 DiT 架构中的所有线性层,仅训练 500 步。相比全参数微调,LoRA 能在保持基础模型生成能力的同时,高效地注入面部一致性优化信号。

MoCha 的后训练策略采用 LoRA 而非全参数微调,这直接关系到后训练阶段如何在增强面部一致性的同时不损害基础模型的生成质量。

研究动机

视频角色替换(Video Character Replacement)是一项在影视后期制作、个性化广告、虚拟试穿和动态数字头像等领域具有重要实际价值的任务。然而,当前主流方法主要采用重建范式(reconstruction-based paradigm),这些方法存在三个根本性问题。首先,它们需要逐帧的密集分割掩码来标注角色位置,这不仅获取成本高,而且在复杂场景中容易出错。其次,它们依赖显式的结构引导信号,如姿态骨架(pose skeleton)或深度图(depth map),从源视频中提取。这些结构信息的不准确会在生成过程中被传播和放大,导致严重的视觉伪影和时序不一致。第三,在涉及遮挡、异常姿势(如杂技动作)、多角色交互涉及身体接触、以及复杂光照条件的场景中,逐帧掩码和结构信息的准确性急剧下降,导致渲染视频中出现明显的视觉瑕疵、运动不连续和时序不一致。此外,对密集显式引导的依赖不仅限制了算法的灵活性和鲁棒性,还带来了大量的计算开销。这些限制使得现有方法在真实世界复杂场景中的应用受到严重制约。

本文的目标是本文的目标是提出首个端到端的视频角色替换框架 MoCha,彻底摆脱对逐帧掩码和结构引导的依赖。具体而言,MoCha 仅需要从任意源视频帧中获取单帧掩码来标识目标角色,无需任何额外的结构信息(如骨架、深度图等)。MoCha 旨在利用视频扩散模型固有的时序感知和隐式推理能力,特别是其视频追踪能力,来实现高质量、时序一致的角色替换。此外,MoCha 还需要解决训练数据稀缺的问题,因为端到端视频角色替换需要严格对齐的配对视频数据,即同一场景中不同角色执行完全相同动作的视频对。

与已有工作不同的是,本文的独特切入角度在于三个方面。第一,范式转换:从传统的重建范式转向非重建范式,如 Figure 2 所示。传统方法将角色替换视为视频重建问题,需要密集的结构引导来逐帧重建;而 MoCha 将其视为条件视频生成问题,通过上下文学习让模型自动学习角色替换的映射关系。第二,利用扩散模型的追踪能力:通过可视化注意力分数图,论文展示了视频扩散模型能够自动追踪被掩码标注的角色,即使只提供单帧掩码,模型也能在后续帧中持续关注同一角色区域。第三,综合数据构建策略:为解决配对训练数据的稀缺问题,论文提出了三种互补的数据来源(UE5 渲染、表情驱动人脸动画、增强视频掩码数据),分别解决了数据对齐精度、面部表情保真度和数据多样性的问题。

核心方法

MoCha 的方法可以分为三个核心阶段。首先是整体思路:MoCha 利用预训练的文本到视频潜扩散模型(Wan-2.1-T2V-14B)作为基础架构,采用 Rectified Flow 框架进行训练。给定源视频 $V_s \in \mathbb{R}^{f \times c \times h \times w}$、单帧掩码 $M_s \in \mathbb{R}^{1 \times 1 \times h \times w}$ 和参考角色图像 $\{I_i \in \mathbb{R}^{1 \times 1 \times h \times w}\}$,MoCha 通过上下文学习的方式将这些多模态输入统一处理。具体而言,所有输入首先通过 3D VAE 编码为潜变量,然后被分割成视觉 token,在时间维度上拼接后送入 DiT 主干网络进行全自注意力处理。通过这种设计,MoCha 能够隐式地学习从源视频中提取角色的运动和表情信息,并将其转移到参考角色上,同时保留原始的背景、场景动态和光照条件。整个过程无需任何显式的结构引导,完全依赖模型的端到端学习能力。

MoCha 的核心创新在于三个相互协同的设计。第一个创新是条件感知 RoPE(Condition-aware RoPE),这是对标准 3D 旋转位置编码的扩展。传统方法对每个条件分配不同的时间索引会导致生成长度不灵活;而 Condition-aware RoPE 为源视频和目标视频 token 分配相同的帧索引(0 到 $f-1$),参考图像固定为帧索引 -1,掩码的帧索引由 $f_M = (F-1)//4 + 1$ 确定,支持任意帧的掩码选择。这种设计使得 MoCha 能够灵活处理可变生成长度、多参考图像和任意帧掩码选择。第二个创新是利用视频扩散模型的追踪能力:论文发现扩散模型本身具有强大的时序感知能力,通过注意力图可视化确认模型能够自动追踪被掩码标注的角色,因此只需单帧掩码而非逐帧掩码。第三个创新是基于 RL 的后训练阶段:使用 ArcFace 面部嵌入计算余弦相似度作为面部一致性奖励 $R_{face}$,结合像素级 MSE 损失 $\mathcal{L}_{RL} = (1 - R_{face}) + \| V_t - \hat{V}_t \|^2$,通过 LoRA 微调进一步增强面部身份保持。这些创新共同使得 MoCha 与现有方法形成本质区别:不依赖显式结构引导,实现真正的端到端角色替换。

方法步骤详情

MoCha 的方法包含以下具体步骤。第一步,数据准备:将源视频 $V_s$、掩码 $M$ 和参考图像 $\{I_i\}$ 输入 3D VAE 编码器 $\mathcal{E}$ 进行时空压缩,得到潜变量 $z_t = \mathcal{E}(V_t)$,$z_s = \mathcal{E}(V_s)$,$z_m = \mathcal{E}(M)$,$z_{I_i} = \mathcal{E}(I_i)$。第二步,Token 化:将潜变量分割成视觉 token $x_t, x_s, x_m, x_{I_i}$,每个 token 的维度为 $\mathbb{R}^{b \times f \times c \times h \times w}$。第三步,序列拼接:沿帧维度将所有 token 拼接为统一序列 $x = [x_t, x_s, x_m, x_{I_1}, x_{I_2}, ...]$,其中 $x \in \mathbb{R}^{b \times (2f+1+j) \times c \times h \times w}$,$j$ 为参考图像数量。第四步,Condition-aware RoPE:为不同类型的 token 分配特殊的位置编码——源视频和目标视频共享相同的帧索引,参考图像固定为 -1,掩码的帧索引根据指定帧号计算。第五步,DiT 处理:将拼接后的序列送入 DiT 主干网络,通过全自注意力机制进行处理,模型自动学习从源视频提取运动和表情信息并转移到参考角色。第六步,推理:从纯噪声 $z_1$ 出发,通过迭代采样 $z_{t_{i+1}} = z_{t_i} + v_\Theta(z_{t_i}, t_i) \cdot (t_{i+1} - t_i)$ 生成目标视频潜变量 $z_0$,最后通过 VAE 解码器得到最终视频。

技术新颖性

MoCha 的技术新颖性体现在多个层面。首先,在范式层面,这是首个真正端到端的视频角色替换框架,完全摒弃了传统方法对逐帧掩码和结构引导(骨架、深度图)的依赖。这种范式转换从根本上简化了视频角色替换的流程,降低了对预处理工具的依赖。其次,在位置编码设计上,Condition-aware RoPE 是对 3D RoPE 的巧妙扩展,通过共享帧索引和灵活的掩码帧索引计算,解决了多模态输入条件下生成长度不灵活的问题。第三,在训练策略上,两阶段训练设计(上下文学习 + RL 后训练)既保证了基础的替换能力,又针对性地增强了面部身份保持。特别是 RL 后训练阶段,同时使用面部嵌入奖励和像素级 MSE 损失,有效避免了奖励黑客问题(即模型简单粘贴参考图像)。第四,在数据构建上,三种互补的数据来源(UE5 渲染、表情驱动动画、增强视频掩码数据)分别解决对齐精度、面部保真度和数据多样性问题,其中 UE5 渲染提供严格对齐的配对视频,表情驱动数据增强面部表情多样性,增强数据补充真实世界视觉效果。

MoCha 整体架构概览
Figure 3: MoCha 整体架构概览
数据构建流程概览
Figure 4: 数据构建流程概览

实验结果

MoCha 在合成基准和真实世界基准上均取得了最优性能。在合成基准上(Table 1),MoCha 的 SSIM 达到 0.746(对比 Wan-Animate 的 0.692)、LPIPS 降至 0.152(对比 0.213)、PSNR 提升至 23.09 dB(对比 19.20 dB),全面超越所有基线方法。特别是与最强基线 Wan-Animate 相比,SSIM 提升 0.054,LPIPS 降低 0.061,PSNR 提升 3.89 dB,展现出显著的结构保真度和感知质量优势。在真实世界基准的 VBench 评估中(Table 2),MoCha 在所有六个维度上均取得最优:Subject Consistency 92.25(对比 HunyuanCustom 的 90.03)、Background Consistency 94.40(对比 93.68)、Aesthetic Quality 60.24(对比 56.77)、Imaging Quality 59.58(对比 58.92)、Temporal Flickering 97.98(与 HunyuanCustom 持平)、Motion Smoothness 98.79(对比 98.62)。消融实验表明,真实人类数据的加入显著提升了面部外观的真实感和表情准确性(Figure 6),消除了渲染数据带来的合成伪影(如过度光滑或光泽的纹理)。RL 后训练策略(LoRA 奖励微调)对增强面部身份一致性至关重要(Figure 7),同时不损害基础生成质量。注意力图可视化(Figure 8)验证了扩散模型的追踪能力,确认模型能够仅凭单帧掩码在不同帧中持续追踪目标角色。此外,MoCha 在复杂光照效果、物体交互和多角色交互场景中均展现出稳健的性能(Figure 9)。

合成基准上的定量对比
Table 1: 合成基准上的定量对比
真实世界基准上的 VBench 指标对比
Table 2: 真实世界基准上的 VBench 指标对比
MoCha 生成的角色替换示例
Figure 1: MoCha 生成的角色替换示例
与最先进方法的定性对比
Figure 5: 与最先进方法的定性对比
真实人类数据的消融实验
Figure 6: 真实人类数据的消融实验
身份增强后训练的消融实验
Figure 7: 身份增强后训练的消融实验
查看结构化数据
任务指标本文基线提升
视频角色替换(合成基准) SSIM ↑ 0.746 Wan-Animate 0.692 / HunyuanCustom 0.644 / VACE 0.572 比最强基线 Wan-Animate 提升 0.054(+7.8%)
视频角色替换(合成基准) LPIPS ↓ 0.152 Wan-Animate 0.213 / HunyuanCustom 0.257 / VACE 0.253 比最强基线 Wan-Animate 降低 0.061(-28.6%)
视频角色替换(合成基准) PSNR ↑ 23.09 Wan-Animate 19.20 / HunyuanCustom 17.70 / VACE 17.10 比最强基线 Wan-Animate 提升 3.89 dB(+20.3%)
视频角色替换(真实世界基准) Subject Consistency ↑ 92.25 Wan-Animate 91.25 / HunyuanCustom 90.03 / VACE 71.19 比最强基线 Wan-Animate 提升 1.00
视频角色替换(真实世界基准) Background Consistency ↑ 94.40 Wan-Animate 93.42 / HunyuanCustom 93.68 / VACE 77.89 比最强基线 HunyuanCustom 提升 0.72
视频角色替换(真实世界基准) Aesthetic Quality ↑ 60.24 Wan-Animate 54.60 / HunyuanCustom 56.77 / VACE 56.76 比最强基线 HunyuanCustom 提升 3.47(+6.1%)
视频角色替换(真实世界基准) Temporal Flickering ↑ 97.98 Wan-Animate 97.27 / HunyuanCustom 97.98 / VACE 97.04 与 HunyuanCustom 持平,优于 Wan-Animate 0.71
视频角色替换(真实世界基准) Motion Smoothness ↑ 98.79 Wan-Animate 98.25 / HunyuanCustom 98.62 / VACE 97.87 比最强基线 HunyuanCustom 提升 0.17

局限与改进

论文中存在若干局限性值得深入分析。首先,在分辨率方面,所有训练和评估均在 480×832 分辨率下进行,未涉及高分辨率场景的验证,这限制了方法在需要高分辨率输出的专业影视制作场景中的应用。其次,在评估基准方面,真实世界基准的具体构成和规模未在论文中详细说明,仅描述为 diverse set of videos collected to encompass challenging scenarios,缺乏对基准多样性和代表性的量化分析。第三,在基线方法对比中,由于 Kling 是商业产品,无法进行大规模自动化批量测试而被排除在定量比较之外,这使得与商业系统的全面对比缺失。第四,论文展示了 MoCha 在复杂场景(复杂光照、物体交互、多角色交互)中的定性结果(Figure 9),但缺乏对这些复杂场景的定量评估指标。第五,虽然论文展示了注意力图可视化来验证追踪能力,但未提供在极端场景(如快速运动、严重遮挡、角色外观剧烈变化)下追踪能力的量化评估。此外,论文未讨论推理速度和计算成本,这对于实际部署场景至关重要。最后,单帧掩码的选择(由 SAM2 生成)对最终结果的影响未被深入分析。

独立分析的弱点

基于对论文的深入分析,MoCha 存在以下几个值得关注的弱点。第一,分辨率限制:训练和推理均在 480×832 分辨率下进行,这在当前高分辨率视频内容需求日益增长的背景下是一个显著短板。改进方向包括采用渐进式分辨率训练策略或使用超分辨率后处理模块。第二,掩码生成依赖:虽然 MoCha 只需单帧掩码,但该掩码仍需由 SAM2 等分割模型生成,掩码质量直接影响替换效果。可以考虑将掩码生成整合到端到端流程中,或训练模型对不完美掩码具有更强的鲁棒性。第三,参考图像选择:论文提到训练时使用随机丢弃参考图像的策略来增强鲁棒性,但未深入分析参考图像质量、角度、光照条件对最终结果的影响机制。第四,后训练阶段的奖励函数设计:仅使用 ArcFace 余弦相似度作为面部一致性奖励,可能无法充分捕捉细微的表情差异。可以考虑引入更细粒度的面部动作单元(AU)检测或 3D 面部重建损失。第五,缺乏对视频长度泛化能力的评估:论文提到从短片段(21帧)训练开始,逐步增加到长片段(81帧),但未评估在更长视频(数百帧)上的表现和时序一致性衰减情况。

未来方向

基于 MoCha 的技术基础,未来研究可以从以下几个方向展开。第一,多模态条件融合:当前 MoCha 仅使用参考图像作为角色身份条件,未来可以探索将文本描述、语音、姿态序列等多种条件融入,实现更灵活的角色定制。第二,实时推理优化:当前的扩散模型推理需要多步迭代,计算成本较高。可以探索一致性模型(Consistency Model)或蒸馏技术来加速推理,使其适用于实时视频编辑场景。第三,高分辨率支持:开发级联式或分块式的处理策略,支持 1080p 甚至 4K 分辨率的视频角色替换。第四,交互式编辑界面:结合视频编辑软件,开发支持用户交互式选择替换角色、调整替换参数的工具链。第五,跨域泛化:当前训练数据主要包含渲染数据和有限的真实数据,可以探索更多样化的数据来源(如大规模网络视频数据集)来提升模型在不同视觉风格、文化背景下的泛化能力。第六,视频修复与替换的统一框架:将角色替换与视频修复、物体移除等任务统一建模,构建通用的视频编辑基础模型。第七,论文提到 MoCha 展示了超越角色替换的应用潜力,如换脸和虚拟试穿,这些应用场景值得进一步深入探索。

复现评估

从复现角度来看,MoCha 的复现具有中等难度。有利因素包括:基础模型 Wan-2.1-T2V-14B 是公开可用的;论文使用了多个开源工具(Flux inpainting 模型、LivePortrait、YOLOv12、SAM2);训练超参数详细公开(学习率 $2 \times 10^{-5}$、batch size 8、LoRA rank 64、30K+500 步训练)。挑战因素包括:UE5 渲染数据的构建需要专业的 3D 资产和渲染环境,这对大多数研究团队而言门槛较高;训练需要 8 块 NVIDIA H20 GPU,算力需求较大;论文提到将发布代码但尚未明确发布时间表;100K 样本的混合数据集(60K 渲染 + 20K 表情驱动 + 20K 增强数据)的具体构建流程需要仔细复现。此外,后训练阶段需要先完成上下文学习阶段的训练,整体训练流程较长。建议复现时可以先从较小规模的实验开始,验证核心算法的有效性,再逐步扩展到完整规模。