
官网有更多的示例, 几乎考虑了所有的不对齐情况.
human image animation定义及用途, diffusion model的成功. 指出问题: 1) 处理显著运动变化的任务面部失真; 2) 参考图与驱动pose间大小和位置的不匹配导致严重扭曲.
针对ID保持问题, 图片生成提出了一些方法, 但是在视频生成任务很少. "因为image-based的ID保持方法依赖stable先验, 引入时间层通常导致糟糕的结果." 一些方法通过后处理改善, 降低了视频质量.
针对pose不对齐问题, 先前的方法通过算法, 主要是缩放和位移, 在身体大小和主体位置存在显著差异下, 这些方法十分不准确. 举了两个例子, Champ拟合3D SMPL shape参数, Animate-X虽然声称可以解决不对齐, 但是实验表明牺牲了视频质量.(xx方法虽然声称解决了, 但是实验表明xx问题, 这种叙述很棒啊.)
具体方法相关章节再看.

具体流程看上图, 关注pose条件是怎么注入的, 参考图条件是怎么注入的, 怎么对面部ID进行增强的.
传统方法使用算法, 当pose和参考图差异过大会导致视频质量下降, 本文训练了一个小网络(learnable layers).
这个引用是与GPT多轮对话后自己的理解, 然后让GPT润色后的回答
Pose对齐方法总结
训练时,对driven pose人为施加随机的缩放、旋转、平移来模拟misalignment。这样我们有三组数据:
- 原始pose序列 Pdgt∈R2×N×T(ground truth)
- 转换后的pose序列 Pd∈R2×N×T(模拟misalignment后的)
- 参考图pose Pr∈R2×N(从reference image提取)
其中 N=18 是关键点数量,T 是帧数。
目标:学习一个网络,预测 (R,S,t),将 Pd 变换回 Pdgt。
条件输入方式(看图右侧主路径):
- 将 Pr repeat到 T 帧后与 Pd 在channel维度拼接,得到 (T,N,4)
- 送入 Transformer Encoder 建模两者的相对位置关系
- 经过4层 Pose Fusion Block(Cross Attention + FFN + 残差),进一步融合特征
- 最终MLP输出 Translation、Scaling、Rotation
图左侧的SVD分支是给输入一个更好的"起点":先用SVD对 Pr 和 Pd 做一次粗对齐(SVD求解刚体变换),缩小它们之间的差异,再送入Transformer Encoder。这样MLP只需要学习残差修正,而不是从头预测完整的变换,训练更稳定。
Loss:对齐结果与 Pdgt 之间的平均欧氏距离。
问题: 直接把face embedding注入U-Net, 只关注脸部细节, 丢失了reference image的全局上下文(布局, 背景), 导致ID无关的噪声干扰face modeling.
解决: 让face embedding通过一系列cross-attention与完整reference image交互, 得到"知道全局上下文"的refined face embedding.
问题: 图像域的ID保持方法依赖diffusion latent的稳定空间分布, 但视频模型的temporal layers会改变这个分布, 导致ID信息在时序建模时被破坏(表现为脸糊, 背景退化).
解决: 通过让face特征和image特征处于同一分布域, 即使temporal layers改变了空间分布, 对齐后的face特征仍能保持与image特征一致, 从而减少对不稳定分布的依赖.
具体做法:
- zi 分别与 embimg 和 embface 做cross-attention, 得到 ziimg 和 ziface
- 把 ziface 的分布对齐到 ziimg 的分布:
zˉiface=σfaceziface−μface×σimg+μimg
- 最终输出: zˉi=zˉiface+ziimg
这里公式太多了, 求助一下GPT老师
HJB Equation-based Face Optimization
现有方法用FaceFusion等后处理工具做换脸,但第三方工具生成的face与原动画不在同一像素分布域,会破坏整体质量。
不做后处理,而是在denoising过程中引导生成——在每个denoising step优化 xpred,让生成的脸更接近reference。
在特定timestep范围 [Stmin,Stmax] 内:
-
获取预测样本:xpred=Dθ(x^i,t^i)
-
优化循环(10步):
- 用VAE decoder得到预测图像:fpred=Decoder(xop)
- 计算ArcFace相似度loss:loss=1−cos(Arc(fpred),Arc(y))
- 用Adam优化 xop
-
更新denoising方向:用优化后的 xpred 修正下一步的采样方向 di
- 并行而非串行:优化和denoising同时进行,而不是生成完再后处理
- 分布一致:优化的是diffusion latent本身,保持在同一分布域
- 理论支撑:HJB方程本质是最优控制,这里的"reward"就是ID一致性,引导生成轨迹朝着ID保持的方向走
只需要注意他有一个关于面部的重构损失
L=Eε[∥(zt−zε)⋅(1+M)∥22]
数据集是从网络收集的5k条视频, 60到90秒, DWPose提取关键点, 用TikTok数据集和自采集的MisAlign100数据集评估, 8张A100上训练了20轮, batch_size是1, 没说视频帧长度和分辨率.
后面没什么亮点.
感受
相比上一篇工作, 多了一个pose Misalignment的优化.