应用:
视频换人。给参考图和视频,替换视频中的人物。
核心:将人与环境分离,使得人和环境更好的交互。
基础框架:diffusion model
方法
3.1 Framework(框架设计)
3.1.1 系统设置
- 训练阶段:给定一个参考视频 I,其中 N 是帧数。将角色和环境分离,得到角色序列 I_c和环境序列 I_e。与角色交互的对象序列 I_o 和运动序列 I_m 作为驱动信号。
- 输入与输出:模型的输入包括上述4个序列。模型的目标是重建参考视频 I。
- 推理阶段:给定一个目标角色图像和一个驱动视频,模型能够生成与驱动视频一致的动作和环境关系的角色动画。
3.1.2 扩散模型
-
基于LDM:Latent Diffusion Model (LDM)开发。使用预训练的VAE将图像从像素空间转换到潜在空间:z = E(x)。
-
训练目标:在训练过程中,随机高斯噪声 被逐步添加到不同时间步的图像潜在变量 z_t 中。训练目标是最小化以下损失函数:
在这里插入图片描述
-
推理过程:在推理过程中,噪声潜在变量通过迭代去噪并经过VAE解码器重建为图像
3.1.3 条件生成
- 角色特征提取:使用ReferenceNet架构提取角色图像 (I_c) 的外观特征。这些特征通过空间注意力机制合并到DenoisingNet解码器的中间块和上采样块中。
- 条件嵌入:从源视频中提取三种条件嵌入:
- 环境序列 I_e:通过VAE编码器编码嵌入,并与噪声潜在变量合并。
- 运动序列 I_m:通过姿态调制策略,处理pose运动信息,并将其合并到噪声潜在变量中。
- 对象序列 I_o:通过VAE编码器编码后,使用对象引导器提取多尺度特征,并通过空间混合机制注入到DenoisingNet中。
3.2 Environment Formulation(环境表示)
3.2.1 动机
- 环境定义:将环境定义为排除角色的区域。在训练过程中,模型需要生成角色以填充这些区域,同时与环境上下文保持一致。
- 边界关系:角色与环境之间的边界关系至关重要。适当的边界引导可以帮助模型更有效地学习角色与环境的整合,同时保持角色形状的一致性和环境信息的完整性。
3.2.2 形状不可知掩码
-
掩码策略:为了打破掩码区域与角色轮廓之间的对应关系,提出了一种形状不可知掩码策略。具体方法是将角色掩码 划分为 h, w个非重叠块,然后生成一个粗略的mask。比bbox 精细,比mask粗。
-
随机尺度增强:由于重新定义的掩码通常比原始掩码大,这可能会限制生成的角色必须小于给定的掩码。为了缓解这一偏差,对源视频进行随机尺度增强。具体方法是提取角色和交互对象,并根据其掩码进行随机缩放操作,然后将缩放后的内容重新组合回源视频。在推理阶段,模型能够灵活地动画化角色,而不受掩码大小的限制。
3.3 Object Injection(对象注入)
3.3.1 对象引导器
- 对象特征提取:
环境的mask损失了交互对象的精细度,所以专门提取object进行增强。可以通过以下方法提取坐标:- 利用视觉语言模型(VLM)获取坐标bbox。
- 人工手动标注进行确认。
然后使用SAM2提取对象掩码,并通过VAE编码器编码为对象潜在变量。
对象引导器采用轻量级全卷积架构。对象潜在变量通过3×3的Conv2D下采样四次,获得多尺度特征。这些特征的通道维度与DenoisingNet的中间块和上采样块对齐,便于后续的特征融合。
3.3.2 空间混合
-
混合过程:对于噪声潜在变量 和对象潜在变量将它们的特征连接起来,并通过一个Conv2D-Sigmoid层计算alpha权重。空间混合过程可以表示为:
其中,F表示Conv2D-Sigmoid层,z_blend表示空间混合后的新的噪声潜在变量。只在DenoisingNet upsacle的每个阶段,使用空间混合。
3.4 Pose Modulation(姿态调制)
3.4.2 深度姿态调制
- 深度信息处理:使用Sapien从源视频中提取骨骼和深度信息。
- 特征融合:首先将骨架图像二值化以获得骨架掩码,然后提取掩码区域内的深度结果。接着,使用与姿态引导器相同架构的Conv2D处理骨架图和结构化深度图。通过交叉注意力机制将结构化深度信息合并到骨架特征中。最后使用Conv3D建模时间运动信息,增强帧间连接,并减少错误信号对单帧的影响。
训练细节:
- 100,000个角色视频的数据集
- 8个NVIDIA A100 GPU上进行,训练了100k步,每批8个样本,视频长度为16帧
- 参考图会中心裁剪,并随机添加背景。(推理不需要对参考图再做分割了)
- 长视频会先剪为多个clips,再用Emo中的motion frame technique技术进行拼接
结果
可视化
定量
比较可惜的是没有开源代码。