X-Portrait:RGB 驱动的表达力肖像动画
给你一张肖像照片和一段驱动视频,让照片里的人动起来——头部跟随视频中的姿态转动,表情跟随视频中的肌肉变化——这就是 portrait animation(肖像动画)任务。听起来简单,但当你真正尝试时,会发现一个核心矛盾:驱动信号越精确,身份信息就越容易被污染。
这个矛盾在传统方法中表现得尤为明显。以 Face Vid2Vid #Wang et al., 2021 为代表的 GAN 方法采用两步范式:先用关键点估计运动场,再对源图像进行 warping 和 inpainting。这种范式在说话人场景下表现尚可,但面对大幅度头部运动和丰富面部表情时,warping 失效导致合成画面模糊、僵硬 #Siarohin et al., 2019。而最近基于 Diffusion 的方法 #Hu et al., 2024 虽然借助 Stable Diffusion 的强大生成能力获得了更好的画质,但它们的运动控制仍然依赖第三方检测器提取的 landmarks 或 skeleton,精度受限且存在 identity leakage(外观泄漏)问题。
X-Portrait #Xie et al., 2024 来自 ByteDance,发表于 SIGGRAPH 2024,它提出了一个反直觉但优雅的思路:直接用驱动视频的 RGB 帧作为 ControlNet 的条件输入,而非从中提取 landmarks。这样做的关键挑战是——如果直接用同一身份的视频做 self-driven 训练,网络会走捷径直接拷贝驱动帧的外观。X-Portrait 通过 cross-identity 训练方案解决了这个问题,同时引入局部 ControlNet 增强对微表情的捕捉。
已有方法的技术路线
在 X-Portrait 之前,portrait animation 方法大致分为两大类:
| 范式 | 代表方法 | 运动表示 | 核心问题 |
|---|---|---|---|
| GAN-based | FOMM, Face Vid2Vid, DaGAN, TPS, MCNet | Neural keypoints / 3D keypoints / TPS | 分辨率受限,warping 失效,表情僵硬 |
| Diffusion-based | Animate Anyone, MagicDance, MagicAnimate, FADM | Landmarks / Skeleton / Dense Pose | 依赖检测器精度,外观泄漏 |
Landmark 控制的三大缺陷
X-Portrait 指出,基于 landmarks 的控制方案存在三个关键问题 #Xie et al., 2024:
1. 检测器依赖。 控制信号的精度完全取决于 OpenPose 等第三方检测器的准确性。当面部被遮挡或表情极端时,检测器输出会抖动甚至完全失效,导致动画崩溃。 2. 表达力损失。 面部关键点(如常用的 68 点方案)只能粗略描述面部结构,而牙齿细节、眼球位置、眉毛微动、眉心等细微表情信息在 landmark 表示中被完全丢弃。这些细节恰恰是传达情感的关键。 3. 外观泄漏。 在传统的 self-driven 训练中,源图像 $I_S$ 和驱动帧 $I_D$ 来自同一身份,landmarks 与 $I_D$ 的面部结构(脸型、比例)绑定。网络会走捷径直接拷贝驱动帧的结构信息,导致跨身份推理时出现 identity drift。X-Portrait 的突破口
直接用 RGB 驱动帧作为 ControlNet 输入的想法很自然,但面临一个训练数据难题:我们需要同一身份的 $I_S$ 和 $I_D$ 作为训练对,但推理时 $I_S$ 和驱动视频的身份不同。如果训练时直接用不同身份的 RGB 帧对,网络会学到错误的映射。
X-Portrait 的解决方案是:利用预训练的 Face Vid2Vid 网络 $\mathcal{F}$ 生成 cross-identity 训练对。具体而言,对于同身份的训练帧 $I_S$ 和 $I_D$,用 $\mathcal{F}$ 将 $I_D$ 的运动迁移到一个不同身份的 $I_{S'}$ 上,生成控制图像 $I_C = \mathcal{F}(I_{S'} \rightarrow I_D)$。这样 $I_C$ 保留了 $I_D$ 的运动信息但身份不同于 $I_S$,完美解决了训练数据问题。
X-Portrait 的整体架构建立在 Latent Diffusion Model(LDM)框架之上,核心是三个可训练的辅助模块与一个冻结的 SD 1.5 骨干网络协同工作。
预训练骨干:SD 1.5(冻结)
X-Portrait 选择 Stable Diffusion 1.5 作为生成骨干,其权重在整个训练过程中保持冻结。LDM 在低维潜空间中执行去噪过程,目标函数为:
其中 $\epsilon_\theta$ 是 UNet,$z_t$ 是加噪后的潜变量。值得注意的是,X-Portrait 排除了文本控制——场景上下文和运动约束完全由 $I_S$ 和 $I_D$ 提供,不使用文本描述。
Appearance Reference Module $\mathcal{R}$
外观参考模块从源图像 $I_S$ 中提取身份属性和背景上下文。它初始化自 SD 1.5 的权重,提取的外观特征通过 self-attention 层的 cross-query 机制注入骨干 UNet。这个设计参考了 Animate Anyone #Hu et al., 2024 的 ReferenceNet 思路,但 X-Portrait 将其作为可插拔模块而非独立网络。
Motion Control Module $\mathcal{C}$(主 ControlNet)
这是 X-Portrait 最核心的创新模块。与已有方法使用 landmarks 不同,$\mathcal{C}$ 直接接收 RGB 图像 $I_C$ 作为条件输入。
Cross-Identity 控制信号
给定同身份训练帧 $I_S$ 和 $I_D$,以及不同身份的 $I_{S'}$,控制信号为:
其中 $\mathcal{F}$ 是预训练的 Face Vid2Vid。$I_C$ 保留了 $I_D$ 的运动信息(表情、姿态),但身份与 $I_S$ 不同,从而防止网络走捷径拷贝驱动帧的外观。
$\mathcal{C}$ 以 ControlNet #Zhang et al., 2023 的形式实现:初始化自 SD 1.5 权重,通过 zero-convolution 层与骨干 UNet 连接,产生 additive conditional attention 指导去噪过程。关键在于,$\mathcal{C}$ 在全局图像空间中操作——对每个像素的运动赋予等权重注意力。这意味着细微的局部运动(如眼球微动)可能被全局上下文淹没。
Local Control Module(辅助 ControlNet)
为了增强对细微面部运动的捕捉,X-Portrait 引入了第二个辅助 ControlNet,专门关注眼周和嘴部区域。
具体实现:检测控制图像 $I_C$ 中的眼睛和嘴部 landmarks,以它们为中心裁剪 $128 \times 128$ 的 patch 作为局部控制信号 $I_C^l$。这个辅助 ControlNet 的结构与主 $\mathcal{C}$ 相同,但只接收局部 patch 输入,通过额外的 additive attention 为 UNet 去噪提供局部结构指导。
Temporal Module $\mathcal{M}$
时序模块使用 AnimateDiff #Guo et al., 2024 的权重初始化,通过 temporal transformer 在 UNet block 之间建立跨帧对应关系,确保生成视频的时序一致性。这是 controlled I2V 框架的标准组件。
Identity Preservation:随机异构缩放
尽管 cross-identity 训练已经大幅缓解了外观泄漏,但 $\mathcal{F}$ 本身并未完全摆脱外观纠缠——$I_C$ 中的脸型和眼/嘴尺寸仍受 $I_D$ 影响。为彻底消除这种残留泄漏,X-Portrait 在训练时对 $I_C$ 和 $I_C^l$ 施加随机异构缩放:
宽和高使用不同的缩放因子,故意在条件图像和目标 $I_D$ 之间引入轻微的结构错位。这迫使网络不能依赖 $I_C$ 的结构信息来推断身份,只能从 $I_S$ 获取身份特征。
缩放范围的经验选择
论文通过实验发现,缩放范围 [0.9, 1.1] 是一个关键平衡点。过大会破坏条件图像的结构信息导致控制精度下降;过小则不足以防止外观泄漏。消融实验显示,去掉缩放后 ID Similarity 从 0.689 下降到 0.658。
flowchart TD IS["源图像 IS
外观参考"] --> R["Appearance Reference R"] ID["驱动帧 ID
运动来源"] --> F["Face Vid2Vid F"] IS2["不同身份 IS'"] --> F F --> IC["控制图像 IC
cross-identity"] IC --> Scale["随机缩放 0.9-1.1"] Scale --> C["主 ControlNet C"] IC --> Crop["裁剪 128x128 patch"] Crop --> ICl["局部控制 ICl"] ICl --> Cl["局部 ControlNet Cl"] R --> UNet["SD 1.5 UNet 冻结"] C --> UNet Cl --> UNet M["Temporal Module M
AnimateDiff"] --> UNet UNet --> Out["输出动画帧"]
训练数据
X-Portrait 使用 ByteDance 内部数据集训练,包含 550 个被试的单目摄像头录制,每人包含 42 种表情和 20 分钟说话内容,室内外场景均有覆盖。所有数据裁剪为 $512 \times 512$ 分辨率,低质量序列使用 Hosu et al. 的方法过滤。训练数据仅包含真实人物——但模型在推理时展现出了对卡通、动漫、油画等风格肖像的出色泛化能力。
Face Vid2Vid Plus:增强的跨身份数据生成器
标准 Face Vid2Vid 在极端表情和大幅头部运动时质量下降明显,影响了训练对的质量。X-Portrait 对 $\mathcal{F}$ 进行了增强(称为 Face Vid2Vid Plus),主要改进包括:
- 扩展训练数据集以覆盖更丰富的表情
- 对局部 patch(眼周、嘴部)增加 L1 和 VGG 感知重建损失
- 使局部运动精度显著提升
值得注意的是,Face Vid2Vid Plus 仅用于训练阶段生成跨身份控制图像 $I_C$,推理时完全不需要 $\mathcal{F}$——直接用驱动视频的原始帧作为条件输入。
分阶段渐进式训练
X-Portrait 采用四阶段渐进式训练策略,依次引入并训练各模块:
| 阶段 | 训练模块 | 冻结部分 | 步数 | 帧数/步 |
|---|---|---|---|---|
| Stage 1 | $\mathcal{R}$(外观参考) | SD 1.5 | 30K | 16 |
| Stage 2 | $\mathcal{C}$(主 ControlNet) | SD 1.5, $\mathcal{R}$ | 30K | 16 |
| Stage 3 | $\mathcal{C}_l$(局部 ControlNet) | SD 1.5, $\mathcal{R}$, $\mathcal{C}$ | 30K | 16 |
| Stage 4 | $\mathcal{M}$(时序模块) | SD 1.5, $\mathcal{R}$, $\mathcal{C}$, $\mathcal{C}_l$ | 30K | 16 |
训练配置披露
| 配置项 | 披露状态 | 值 / 说明 |
|---|---|---|
| 训练数据 | 已披露 | 550 被试 x 42 表情 x 20min 说话, 512x512 |
| 训练硬件 | 未披露 | 原文未明确给出(LaTeX 草稿注释提及 8xA100) |
| 优化器 | 已披露 | AdamW, lr=1e-5 |
| 学习率 | 已披露 | 1e-5, 无 schedule 描述 |
| Batch size | 未披露 | 原文未明确给出 |
| 训练步数 | 已披露 | 30K steps/模块, 16 frames/step |
| 训练时长 | 未披露 | 原文未明确给出 |
| 模型参数量 | 未披露 | SD 1.5 骨干 + 4 个辅助模块(未给出具体参数量) |
| 精度格式 | 未披露 | 原文未明确给出 |
| Checkpoint 策略 | 未披露 | 原文未明确给出 |
| 初始化来源 | 已披露 | R, C, Cl <- SD 1.5; M <- AnimateDiff |
| 随机缩放范围 | 已披露 | [0.9, 1.1](宽高独立) |
| Local patch 大小 | 已披露 | 128x128 |
推理流程
X-Portrait 的推理过程简洁而高效,不需要 Face Vid2Vid 或任何第三方检测器参与:
Step 1:噪声初始化。 与从随机高斯噪声开始去噪不同,X-Portrait 对源图像 $I_S$ 施加 forward diffusion 过程生成初始噪声。这个噪声保留了 $I_S$ 的微妙结构引导,在早期去噪步骤中提供一致性信号,减少 popping artifacts。 Step 2:直接使用驱动帧。 推理时直接用驱动视频的原始帧 $I_D$ 作为 ControlNet $\mathcal{C}$ 的输入(无需 $\mathcal{F}$ 生成 $I_C$),并从 $I_D$ 中裁剪眼周和嘴部 patch 作为局部控制 $I_C^l$。 Step 3:头部对齐。 对整个驱动序列施加仿射变换(平移 + 缩放),将驱动帧的头部 bounding box 与源图像对齐,减少脸型差异带来的影响。 Step 4:去噪生成。 冻结的 SD UNet 在 $\mathcal{R}$、$\mathcal{C}$、$\mathcal{C}_l$、$\mathcal{M}$ 四个模块的指导下执行去噪。Prompt Traveling 与 LCM 加速
时序平滑通过 prompt traveling 策略 #Tseng et al., 2023 增强。更重要的是,X-Portrait 展现出与 Latent Consistency Model(LCM)#Luo et al., 2023 的天然兼容性——由于 SD UNet 保持冻结,可以直接用 LCM 替换标准去噪采样器。
多参考图像扩展
由于外观特征通过 cross-attention 注入而非拼接,X-Portrait 可以自然扩展到多参考图像场景:将多张 $I_S$ 提取的外观特征拼接后注入 UNet,无需修改网络结构。这在头部旋转等大角度运动时特别有用——单张参考只能看到正面,多张参考能提供侧面信息。
评测设置
评测收集了 100 张 in-the-wild 肖像(2D/3D 卡通、动漫、赛博朋克、油画、雕塑等风格)和 200 个测试视频(不同情绪、头部姿态和表情)。所有定量指标在 $256 \times 256$ 分辨率下计算,以公平对比分辨率受限的 baseline。
实验配置
| 配置项 | 披露状态 | 值 / 说明 |
|---|---|---|
| 评测数据集 | 已披露 | 100 张 in-the-wild 肖像(2D/3D 卡通、动漫、赛博朋克、油画、雕塑)+ 200 个测试视频 |
| 评测指标 | 已披露 | L1↓ / SSIM↑ / LPIPS↓ / FID↓ / ID Sim↑ / Img Quality↑ / Expr/Pose↓ |
| Baseline 方法 | 已披露 | Face Vid2Vid, DaGAN, TPS, MCNet, FADM, MagicDance, Face Vid2Vid Plus |
| 推理硬件 | 已披露 | A10 GPU(LCM 模式); 其他模式未明确 |
| 推理分辨率 | 已披露 | 256×256(定量评测); 512×512(训练) |
| 推理环境 | 未披露 | 原文未给出框架/版本 |
主实验:定量对比
| 方法 | L1 ↓ | SSIM ↑ | LPIPS ↓ | FID ↓ | ID Sim ↑ | Img Quality ↑ | Expr/Pose ↓ |
|---|---|---|---|---|---|---|---|
| Face Vid2Vid | 0.042 | 0.770 | 0.203 | 52.071 | 0.615 | 36.222 | 0.100/4.72 |
| DaGAN | 0.054 | 0.732 | 0.234 | 64.297 | 0.280 | 35.537 | 0.111/5.10 |
| TPS | 0.038 | 0.801 | 0.179 | 50.636 | 0.508 | 34.904 | 0.079/3.94 |
| MCNet | 0.035 | 0.811 | 0.176 | 51.091 | 0.343 | 34.624 | 0.094/3.82 |
| FADM | 0.049 | 0.727 | 0.231 | 51.091 | 0.635 | 34.640 | 0.103/4.62 |
| MagicDance | 0.045 | 0.766 | 0.172 | 30.383 | 0.643 | 67.241 | 0.099/7.04 |
| Face Vid2Vid Plus | 0.034 | 0.825 | 0.144 | 26.386 | 0.625 | 42.478 | 0.071/3.44 |
| X-Portrait | 0.033 | 0.829 | 0.133 | 14.553 | 0.689 | 67.569 | 0.070/3.37 |
指标覆盖度提醒
X-Portrait 的评测覆盖了画质(FID/LPIPS)、身份保持(ID Similarity)和表情/姿态精度(Expression/Pose),但未报告口型同步(LSE-C/LSE-D)和长时稳定性指标。虽然论文任务不是 audio-driven talking head,但如果用于视频会议等场景,仍需补充音画同步评估。
定性对比
消融实验
| 配置 | ID Similarity ↑ | Expression/Pose ↓ |
|---|---|---|
| (a) w/o cross-id training | 0.015 | 0.037/1.58 |
| (b) w/o local control | 0.731 | 0.077/3.69 |
| (c) w/o scaling | 0.658 | 0.070/3.26 |
| full model | 0.689 | 0.070/3.37 |
三个消融发现值得深入分析:
(a) Cross-identity 训练是最关键的创新。 去掉后 ID Similarity 暴跌至 0.015——这意味着网络几乎完全拷贝了驱动帧的外观。虽然 Expression/Pose 指标看似很好(0.037/1.58),但这只是因为网络直接复制了驱动帧,运动自然完全一致。这是一个典型的"指标好但结果完全错误"的陷阱。 (b) 局部控制模块贡献了细微表情精度。 去掉后 Expression/Pose 从 0.070/3.37 恶化到 0.077/3.69。有趣的是,ID Similarity 反而略升(0.731 vs 0.689),因为失去局部注意力后面部运动更僵硬,反而更容易保持身份特征。 (c) 随机缩放防止身份漂移。 去掉后 ID Similarity 从 0.689 降至 0.658。缩放通过破坏 $I_C$ 与 $I_D$ 之间的结构对应关系,迫使网络从 $I_S$ 而非 $I_C$ 推断身份。用户研究
31 名参与者完成了 5 道选择题(共 155 份回复),在 X-Portrait 和 Face Vid2Vid Plus 之间选择更接近驱动视频表情的结果。83.23% 的回复选择了 X-Portrait,验证了定量指标反映的优势在人类感知中同样成立。
技术对比:X-Portrait 在数字人技术谱系中的位置
| 维度 | X-Portrait | Animate Anyone | MagicDance | Face Vid2Vid |
|---|---|---|---|---|
| 骨干网络 | SD 1.5 (frozen) | SD 1.5 (frozen) | SD 1.5 (frozen) | GAN |
| 运动表示 | RGB image (implicit) | Skeleton | Landmarks | Neural keypoints |
| 训练方案 | Cross-identity | Self-driven | Self-driven | Self-driven |
| 推理预处理 | 无需 | 需 skeleton 检测 | 需 landmark 检测 | 需关键点检测 |
| 局部控制 | 有(128x128 patch) | 无 | 无 | 无 |
| FID ↓ | 14.553 | — | 30.383 | 52.071 |
X-Portrait 的核心贡献不在于引入新的网络架构——它的模块组合(SD + ControlNet + ReferenceNet + AnimateDiff)在 controlled I2V 领域已趋标准化。真正的创新在于 重新定义了运动控制的信号粒度和训练范式:从显式的 coarse landmarks 转向隐式的全信息 RGB,从 self-driven 转向 cross-identity。
局限性
后续影响
X-Portrait 开源了代码和模型 #Xie et al., 2024,在 GitHub 上获得了显著关注,社区已有 ComfyUI 插件。同一团队后续推出了 X-NeMo、X-Dyna 和 OmniHuman 等工作,形成了一条从肖像动画到全身数字人的研究线。Semantic Scholar 显示论文已被引用 98 次(截至 2026 年 7 月),在 portrait animation 领域产生了实质影响。
可操作启发
参考来源
- Xie, Y. et al. (2024). X-Portrait: Expressive Portrait Animation with Hierarchical Motion Attention. SIGGRAPH 2024. arXiv:2403.15931
- Wang, T. et al. (2021). One-Shot Free-View Neural Talking-Head Synthesis for Video Conferencing. CVPR 2021. arXiv:2011.15126
- Siarohin, A. et al. (2019). First Order Motion Model for Image Animation. NeurIPS 2019. arXiv:2003.00196
- Hu, L. et al. (2024). Animate Anyone: Consistent and Controllable Image-to-Video Synthesis for Character Animation. CVPR 2024. arXiv:2311.17117
- Zhang, L. et al. (2023). Adding Conditional Control to Text-to-Image Diffusion Models. ICCV 2023. arXiv:2302.05543 · 精读 →
- Guo, Y. et al. (2024). AnimateDiff: Animate Your Personalized Text-to-Image Diffusion Models without Specific Tuning. ICLR 2024. arXiv:2307.04725 · 精读 →
- Luo, S. et al. (2023). Latent Consistency Models: Synthesizing High-Resolution Images with Few-Step Inference. arXiv:2310.04378
- Tseng, H. et al. (2023). Consistent View Synthesis with Pose-Guided Diffusion Models. arXiv:2303.17598
- Chang, Z. et al. (2024). MagicDance: Realistic Human Dance Video Generation with Motions & Facial Expressions. ICML 2024. arXiv:2310.04252