ESC
输入关键词搜索文章
目录

X-Portrait:RGB 驱动的表达力肖像动画

SIGGRAPH 2024 · ByteDance
论文精读(三十七)· Cross-Identity Training · Hierarchical Motion Attention · SD 1.5 Backbone
14.5FID ↓
0.689ID Sim ↑
30s24帧推理
83%用户胜率
Part 1
引言:Portrait Animation 的表达力瓶颈

给你一张肖像照片和一段驱动视频,让照片里的人动起来——头部跟随视频中的姿态转动,表情跟随视频中的肌肉变化——这就是 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 增强对微表情的捕捉。

核心 Insight:与其先用检测器提取 coarse 的 landmarks 再控制生成,不如让网络直接从 RGB 帧中隐式学习运动——前提是你能用 cross-identity 训练数据防止外观泄漏。
X-Portrait teaser
图 1:X-Portrait 给定单张参考肖像(左列),能够合成富有表现力的动画(右列),覆盖大幅头部姿态变化和精细面部表情。来源:X-Portrait, Fig. 1 (Teaser)
Part 2
问题剖析:Landmark 控制的三大缺陷

已有方法的技术路线

在 X-Portrait 之前,portrait animation 方法大致分为两大类:

范式代表方法运动表示核心问题
GAN-basedFOMM, Face Vid2Vid, DaGAN, TPS, MCNetNeural keypoints / 3D keypoints / TPS分辨率受限,warping 失效,表情僵硬
Diffusion-basedAnimate Anyone, MagicDance, MagicAnimate, FADMLandmarks / 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。
关键观察:这三个缺陷的共同根源是——landmarks 是一种有损的中间表示。如果我们能跳过这个提取步骤,直接用 RGB 帧作为条件输入,理论上可以保留全部运动信息。

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$,完美解决了训练数据问题。

Part 3
模型结构:Hierarchical Motion Attention 架构详解

X-Portrait 的整体架构建立在 Latent Diffusion Model(LDM)框架之上,核心是三个可训练的辅助模块与一个冻结的 SD 1.5 骨干网络协同工作。

X-Portrait 架构总览
图 2:X-Portrait 架构总览。冻结的预训练 LDM 作为渲染骨干,三个辅助模块分别控制外观 $\mathcal{R}$、运动 $\mathcal{C}$ 和时序平滑 $\mathcal{M}$。来源:X-Portrait, Fig. 2

预训练骨干:SD 1.5(冻结)

X-Portrait 选择 Stable Diffusion 1.5 作为生成骨干,其权重在整个训练过程中保持冻结。LDM 在低维潜空间中执行去噪过程,目标函数为:

$$L_{ldm} = \mathbb{E}_{z_0, t, \epsilon \sim \mathcal{N}(0,1)} \Bigl[ \left\lVert \epsilon - \epsilon_\theta(z_t, t) \right\rVert_2^2 \Bigr]$$

其中 $\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 将其作为可插拔模块而非独立网络。

设计直觉:外观信息通过 cross-attention 注入而非拼接,是因为 cross-attention 能建立输入与输出之间的局部空间对应关系——比如"源图像中的左眼应该出现在输出的左眼位置"。

Motion Control Module $\mathcal{C}$(主 ControlNet)

这是 X-Portrait 最核心的创新模块。与已有方法使用 landmarks 不同,$\mathcal{C}$ 直接接收 RGB 图像 $I_C$ 作为条件输入。

Cross-Identity 控制信号

给定同身份训练帧 $I_S$$I_D$,以及不同身份的 $I_{S'}$,控制信号为:

$$I_C = \mathcal{F}(I_{S'} \rightarrow I_D)$$

其中 $\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 去噪提供局部结构指导。

为什么需要局部控制?主 ControlNet 在全局空间操作,对每个像素一视同仁。但表情传达的关键信息集中在眼周和嘴部——皱鼻、单眼眨眼、嘴角微动。局部 ControlNet 让网络"放大"这些区域,好比用放大镜看细节。

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_C^{aug} = \text{Scale}(I_C, s_w, s_h), \quad s_w, s_h \sim \text{Uniform}(0.9, 1.1)$$

宽和高使用不同的缩放因子,故意在条件图像和目标 $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["输出动画帧"]
Part 4
Training Pipeline:分阶段训练与 Cross-Identity 数据生成

训练数据

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.530K16
Stage 2$\mathcal{C}$(主 ControlNet)SD 1.5, $\mathcal{R}$30K16
Stage 3$\mathcal{C}_l$(局部 ControlNet)SD 1.5, $\mathcal{R}$, $\mathcal{C}$30K16
Stage 4$\mathcal{M}$(时序模块)SD 1.5, $\mathcal{R}$, $\mathcal{C}$, $\mathcal{C}_l$30K16

训练配置披露

配置项披露状态值 / 说明
训练数据已披露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
Part 5
Inference Pipeline:噪声初始化与 LCM 加速

推理流程

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 替换标准去噪采样器。

推理效率:使用 LCM 后,X-Portrait 能在 A10 GPU 上以仅 10 步去噪生成 24 帧动画,耗时约 30 秒。相比标准 DDIM 50 步,推理速度提升约 5 倍。

多参考图像扩展

由于外观特征通过 cross-attention 注入而非拼接,X-Portrait 可以自然扩展到多参考图像场景:将多张 $I_S$ 提取的外观特征拼接后注入 UNet,无需修改网络结构。这在头部旋转等大角度运动时特别有用——单张参考只能看到正面,多张参考能提供侧面信息。

Part 6
实验配置与验证

评测设置

评测收集了 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 Vid2Vid0.0420.7700.20352.0710.61536.2220.100/4.72
DaGAN0.0540.7320.23464.2970.28035.5370.111/5.10
TPS0.0380.8010.17950.6360.50834.9040.079/3.94
MCNet0.0350.8110.17651.0910.34334.6240.094/3.82
FADM0.0490.7270.23151.0910.63534.6400.103/4.62
MagicDance0.0450.7660.17230.3830.64367.2410.099/7.04
Face Vid2Vid Plus0.0340.8250.14426.3860.62542.4780.071/3.44
X-Portrait0.0330.8290.13314.5530.68967.5690.070/3.37
关键发现:X-Portrait 在全部 7 个指标上取得最优。最亮眼的提升是 FID 从 MagicDance 的 30.383 降至 14.553(52% 降幅),说明生成图像的分布距离显著缩小。ID Similarity 0.689 比 MagicDance 的 0.643 高出 4.6 个百分点,验证了 cross-identity 训练和缩放增强对身份保持的有效性。

指标覆盖度提醒

X-Portrait 的评测覆盖了画质(FID/LPIPS)、身份保持(ID Similarity)和表情/姿态精度(Expression/Pose),但未报告口型同步(LSE-C/LSE-D)和长时稳定性指标。虽然论文任务不是 audio-driven talking head,但如果用于视频会议等场景,仍需补充音画同步评估。

定性对比

定性对比
图 3:与 SOTA 方法的定性对比。X-Portrait 在极端表情(如嘟嘴、单眼眨眼)和大幅度头部运动下保持最佳的运动精度和身份相似性。来源:X-Portrait, Fig. 4

消融实验

配置ID Similarity ↑Expression/Pose ↓
(a) w/o cross-id training0.0150.037/1.58
(b) w/o local control0.7310.077/3.69
(c) w/o scaling0.6580.070/3.26
full model0.6890.070/3.37
消融实验可视化
图 4:消融实验可视化。(a) 无 cross-id 训练导致严重外观泄漏;(b) 无局部控制导致细微表情丢失;(c) 无随机缩放导致身份漂移。来源:X-Portrait, Fig. 3

三个消融发现值得深入分析:

(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,验证了定量指标反映的优势在人类感知中同样成立。

Part 7
讨论与启发

技术对比:X-Portrait 在数字人技术谱系中的位置

维度X-PortraitAnimate AnyoneMagicDanceFace Vid2Vid
骨干网络SD 1.5 (frozen)SD 1.5 (frozen)SD 1.5 (frozen)GAN
运动表示RGB image (implicit)SkeletonLandmarksNeural keypoints
训练方案Cross-identitySelf-drivenSelf-drivenSelf-driven
推理预处理无需需 skeleton 检测需 landmark 检测需关键点检测
局部控制有(128x128 patch)
FID ↓14.55330.38352.071

X-Portrait 的核心贡献不在于引入新的网络架构——它的模块组合(SD + ControlNet + ReferenceNet + AnimateDiff)在 controlled I2V 领域已趋标准化。真正的创新在于 重新定义了运动控制的信号粒度和训练范式:从显式的 coarse landmarks 转向隐式的全信息 RGB,从 self-driven 转向 cross-identity。

局限性

失败案例
图 5:X-Portrait 的失败案例。当 Face Vid2Vid 完全无法生成有效运动线索时(如嘴唇内翻、鼓腮),X-Portrait 也无法正确迁移这些极端表情。来源:X-Portrait, Fig. 6
$\mathcal{F}$ 的继承性依赖。 尽管推理时不需要 Face Vid2Vid,但训练阶段依赖 $\mathcal{F}$ 生成 cross-identity 控制图像。当 $\mathcal{F}$ 对某些极端表情(如嘴唇内翻、鼓腮)完全失效时,这些表情在训练数据中被过滤掉,导致 X-Portrait 无法学习对应的分布。 未披露的训练成本。 论文未给出训练硬件配置和训练时长,四个模块各 30K steps 的总训练量不明确。推理速度仅在 A10 上报告,缺乏对消费级 GPU 的基准测试。

后续影响

X-Portrait 开源了代码和模型 #Xie et al., 2024,在 GitHub 上获得了显著关注,社区已有 ComfyUI 插件。同一团队后续推出了 X-NeMo、X-Dyna 和 OmniHuman 等工作,形成了一条从肖像动画到全身数字人的研究线。Semantic Scholar 显示论文已被引用 98 次(截至 2026 年 7 月),在 portrait animation 领域产生了实质影响。

可操作启发

启发 1:当你发现中间表示(如 landmarks)是有损的瓶颈时,考虑跳过它直接用原始信号——但需要设计训练方案防止捷径学习。
启发 2:Cross-identity 训练范式可推广到任何需要 disentangle 控制信号和身份特征的生成任务,不限于人脸动画。
启发 3:分层控制(global + local)是解决"全局注意力淹没局部细节"的有效策略,适用于任何需要多尺度控制的生成任务。

参考来源

  • Xie, Y. et al. (2024). X-Portrait: Expressive Portrait Animation with Hierarchical Motion Attention. SIGGRAPH 2024. arXiv:2403.15931

    · GitHub: bytedance/X-Portrait

  • 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