视频生成-MagicAnimate快读
概况
目标
给定一张参考人物图和运动序列,是视频帧长度。论文目标是合成一个运动连贯的视频,合成视频中人物与参考人物是一样的,且遵循所提供的运动。
现状
- 现在的扩散模型是处理单帧图片的,无法抓住视频帧之间时序关系,无法保证生成视频帧之间的连贯性,导致动画闪跳现象。
- 基于CLIP方法编码的参考图像,其提取的语义级特征较稀疏和极致(笼统与粗糙),难以抓住细节的特征。
方法总览
- 建立视频扩散模型,通过Temporal Transformer建模时间序列
- 引入新的外观编码器编码参考图像为,条件建模论文中模型,实现人物ID和背景保留的动画。
- 引入目标姿态序列,通过ControlNet编码为运动特征序列,条件建模论文中模型,使得目标对象按照这种运动生成视频
整个训练和推理过程参考Fig.1

时序一致性建模
如图Fig.1 所示,随机初始化个隐变量噪音,在视频扩散模型内部数据先由转化为,进入时序模块中,再转换为,从而建模视频帧之间相同空间位置处的依赖关系,跳出时序模块再转换为原来形状。更细节解释可以参考视频生成-AnimateDiffusion快读
外观编码器
参考图片指导下人像动画的生成,关键点在于保留下人物身份信息和背景信息。论文中的方法是,参考ControlNet的设计,复制基础UNet 的一个可训练的副本,计算其在每个时间步下的依赖于参考图像的隐藏层输出,即
其中是UNet模型的中间模块和上采样模块对应输出的归一化注意力隐藏状态。此处与ControlNet将其以残差相加方式不同。参考图Fig.1, 上部的Appearance Encoder结构中,只有中间模块和上采样模块的输出传递给中部扩散网络对应的中间模块和上采样模块。两个模块相对应部分的特征,在空间自注意力层计算过程中,进行特征拼接,公式化表示如下:
其中的就表示按照某个维度的拼接操作,通过这种操作,就可以将视频扩散模型中的空间自注意力机制扩展到混合多种数据源的混合空间自注意力机制。从而实现了服从不同分布的信息的交互融合。用在此处,在生成视频帧过程中,既考虑到用参考图片信息使得生成的图片和参考图片相近,又考虑到运动信息如姿态位置等使得生成的图片在姿态位置上又和建模用的运动数据集中的运动情况相近。总之通过这种方式,把希望呈现的信息都加入了。
运动编码
ControlNet中条件引入OpenPose关键点常用于人类动画生成。虽然这个得到可以解释的结果,但是论文认为关键点很稀疏以及对特定运动如旋转等不鲁棒。因此选择DensPose输出作为运动监督信号。论文使用姿态ControlNet 计算第帧DensPose运动信号产生的UNet隐藏层状态值,即
在后续扩散UNet结构中,将以残差连接方式加入到UNet中间模块和上采样模块的计算中。
其它
问题1: 论文中的公式(1)、(2)和(3)中的变量指的是哪个?与公式(4)中是什么关系?
参考
[1] MagicAnimate: Temporally Consistent Human Image Animation using Diffusion Model
[2] CBAM: Convolutional Block Attention Module
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?