My App

Animate Anyone: Consistent and Controllable Image-to-Video Synthesis for Character Animation

Character Animation是指从静态图片, 通过驱动信号, 生成人物视频. diffusion成为视觉生成的主流, 但是很难时间上维持任务详细信息的一致性. 为了保持人物IP, 引入ReferenceNet; 为了可控性和连续性, 使用pose guider控制人物动作并使用temporal modeling保持平滑的帧间过渡.

介绍

(没抓住论证逻辑, 总结的很烂, 好像是在讲历史)

Character Animation应用广泛, 基于GAN的方法, 局部变形, 细节模糊, 语义不一致, 时间不稳定(temporal instability)

基于diffusion的方法, 举了两个例子, DreamPose 要求在输入样本上微调; DisCo很难保持人物IP和帧间抖动.

当前关于Character Animation的方法专注于特定的任务和benchmarks, 生成能力有限. text-video和视频编辑任务生成视频质量显著提升, 几个研究把text-video推向image-video, 但是仍然没法处理人物IP和帧间抖动.

Animate Anyone继承了SD, 修改去噪Unet以适应多帧输入. 使用对称Unet结构的ReferenceNet捕获参考图像的空间细节, 并把ReferenceNet中的特征通过spatial-attention集成到去噪Unet(下面有张图很好理解). 为了确保姿势的可控性, 设计了一个轻量的pose guider, 把姿势控制信号集成到去噪过程. 为了时间稳定性, 引入了Temporal-Attention.

在5K大小的数据集上训练, 1)维护了空间和时间的一致性, 2) 没有抖动或闪烁, 3) 能把任何角色图片转变为视频, 不局限于特定领域. 在三个benchmark上测试, 取得最好的结果.

方法

预备知识:Stable Diffusion

SD从Latent Diffusion Model(LDM)发展而来, 为了减小计算复杂度, 有一个编码器一个解码器表示图片. 训练过程的损失函数和普通Diffusion差不多.

在普通SD中, CLIP ViT-L/14文本编码器用于表示文本提示词用于text-image生成, 去噪Unet包含4个上采样, 4个下采样, 一个中间层. 一层中一个典型的block包含二维卷积, 自注意力块和交叉注意力块, 交叉注意力在文本嵌入和相关的网络特征中进行.

推理阶段就DDPM和DDIM, 最后通过解码器重建.

网络结构

animate-anyone-overview

去噪Unet继承自SD, 还另外包含了1)ReferenceNet:提取参考图像特征, 空间注意力层融合; 2)Pose Guider: 轻量级网络, 将姿态信息融入去噪过程; 3)Temporal Layer: 时间注意力层, 确保时间连续性.

ReferenceNet. 先分析了text-video只需要捕获语义信息, 但是image-video需要捕获更低级的信息, 当前的方法使用CLIP, 由于CLIP在低分辨率(224x224)图片上训练且数据实际转换为text编码, 这两个因素导致丢失了大量详细的信息.

因此它们设计了ReferenceNet, ReferenceNet框架和去噪网络框架相同, 不包含时间层, 空间注意力层替换成了自注意力层, 如上图, 特征x1Rt×h×w×cx_1 \in \mathbb{R}^{t \times h \times w \times c}, 参考图像x2Rh×w×cx_2 \in \mathbb{R}^{h \times w \times c}, 先将x2x_2复制t次, 然后和x1x_1在w维度连接. 接着通过空间注意力, 只取左边的作为输出, 如途中虚线框所示. 这种设计有两种优点,1)能够使用原始SD中预训练的模型能力, 2)由于相同的结构和共享原始权重, 去噪Unet可以选择性地从ReferenceNet学习特征, 另外使用了CLIP文本注入, 加速收敛进程.

和ControlNet比较, ControlNet在去噪Unet中引入了额外控制信息, 像深度, 边缘是在空间上对齐的, 而参考图像和目标图像在空间上相关但不对齐. 因此ControlNet没法直接应用.

ReferenceNet虽然引入了和去噪Unet一样多的参数, 但是训练过程和推理过程中, 去噪Unet要计算多次, 但是ReferenceNet只需要提取一次.

Pose Guider. ControlNet展现出比文本更好的条件生成能力, 但是去噪Unet需要, 本论文使用Pose Guider, 包含4个卷积层, 4x4卷积核, 2x2步幅, 使用16, 32, 64, 128通道, 将pose图像与噪声latent对齐为相同分辨率, 接着添加到噪声latent后输入去噪Unet.

时间层. 对于特征xRb×t×h×w×c x \in \mathbb{R}^{b \times t \times h \times w \times c}, 先将它reshape为xR(b×h×w)×t×cx \in \mathbb{R}^{(b \times h \times w) \times t \times c}, 然后在t维度做自注意力, 时间层的特征通过残差连接合并到原特征. 这个设计和下面要讲的两阶段训练方法是对齐的.

训练阶段

第一阶段的目的是让模型用给定的信号生成高质量的图片. 排除了时间层, 只训练ReferenceNet和Pose Guider, 输入是视频的单帧, 参考图片从整个视频切片里随机选择, 去噪Unet和ReferenveNet使用SD的预训练权重初始化, Pose Guifer使用高斯权重初始化, 除了最终的权重使用零卷积, 冰冻VAE和CLIP的权重,

第二阶段的目的是保持时间连续性, 时间层使用AnimateDiff中的预训练权重, 输入为视频24帧切片, 这阶段只训练时间层.

实验

实现细节. 从互联网收集了5k份视频, 使用DWPose提取pose序列视频, 实验在4张A100上进行, 第一阶段图片被处理为768x768, batch大小为64, 30,000步. 第二阶段batch大小为4, 24帧的视频切片, 10,000步. 学习率都是1e-5. 在推理阶段,我们重新调整驱动pose骨骼的长度去估算人物骨胳的长度, DDIM的采样步数为20.

定性结果. 展示各种角色的动画效果.

比较实验. 与 AnimateDiff 和 Gen-2 在时尚视频合成任务上进行比较.

消融实验. 验证 ReferenceNet 的有效性.

讨论和结论

局限. 1)手部运动稳定性不足. 2)生成未见部分存在潜在不稳定. 3)运行效率低于非扩散模型方法.

结论. Animate Anyone 实现了可控的角色图像到视频合成, 具有一致性, 稳定性和通用性, 未来可扩展到更多图像到视频应用.

On this page