Animate-X: Universal Character Image Animation with Enhanced Motion Representation
当前的animate image方法局限在人类领域, 对拟人的非人类生成不佳, 分析原因是对motion建模不佳, 提出Animate-X. 提出了Pose Indicator, 通过CLIP提取隐式的信息(运动的大致模式, 时间关联性), 通过提前模拟可能的输入增加模型泛化能力. 提出了Animated Anthropomorphic Benchmark.
介绍
介绍character image animate 任务, GAN和Diffusion的利用下取得成功, 非人"charactor"生成能力不足, 分析原因1)数据集多以人类为中心, 2)当前的motion表示限制了生成能力.
当前的模型对拟人态生成不佳, 他们提出原因是在复制给定的pose时, diffusion倾向于引入了与参考图片不相关的人类特征, 在身份保持和动作一致性的平衡方面, 通常是运动一致性占主导.
解决这个问题很容易想到的方法就是使用更灵活的pose表示, 他们发现这种方法的两种限制: 1)通过稀疏关键点连接的简单2Dpose缺乏图片级别的详细信息, 2) 自驱动的重建策略通过身体形状对齐, 忽略了不同身体的形状差异.
介绍Pose Indicator, Implicit Pose Indicator提取不能直接被pose骨骼图表示的信息, Explicit Pose Indicator模拟参考图片和驱动pose之间的错位, 驱动pose.
方法
LATENT DIFFUSION MODEL预备知识
VAE压缩图片, 逐步加噪的过程, 去噪的过程, 时间模块, L2损失.
Pose Indicator
主流使用DWPose提取motion表示, 1) 缺乏图片级别的详细信息, 2) 身体形状完全对齐, 忽略了身体形状的差异.
Implicit Pose Indicator: 设计了一个Transformer, CLIP提取的特征作为K和V, DWPose提取的关键点信息通过编码器得到, 初始化一个可学习的查询向量补充稀疏的关键点,
Explicit Pose Indicator: 关键是模拟参考图片和pose的一个错位, 1)Pose Realignment, 从训练集建立了一个pose池, 具体怎么对齐的不理解, 反正他就是从pose池中选择一张作为对齐的锚点, 2)Pose Rescale, 在Rescale Pool中有一系列的关键点操作, 每次随机选择得到转换后的pose.
框架和实现细节
是对前人工作的改进, 因为我对animate anyone比较熟悉, 就用这个说明了, 核心还是一个3D-UNet, 几个提取器, 我觉得它是觉得referenceNet中提取的信息天然的包含位置信息(过拟合了), 他们希望输入的pose更"模糊"(原文没有提到, 我自己的理解), 改进1)把ReferenceNet换成了 Implicit Pose Indicator, 注入motion attention层, 2)输入pose经过Explicit Pose Indicator就相当于做了泛化, 接着和noise在channel维度拼接, 和在时间维度拼接, 这是取代了poseGuider
训练和推理. 为了提高模型的应对参考图片和驱动视频不对齐的能力, 1)EPI设置高的转换率(98%), 2)对输入条件进行随机dropout(we apply random dropout to the input conditions at a predefined rate)
BENCH
制作这个数据集就是烧钱, 让GPT-4生成500个卡通人物的提示词, 让KLing AI生成对应的图片, 接着生成4个视频选最好的. 下一步让DWpose做pose提取, 选出100个pose提取正确的
实验
训练用数据集有从互联网收集的9000张人类视频, TikTok数据集, 和Fashion数据集, BENCH只用于验证. 评估指标PSNR, SSIM, L1, LPIPS, FID, FID-VID 和 FVD.
定量结果: 在 A2 Bench 和人类数据集上优于现有方法; 定性结果: 展示 Animate-X 在身份保持和运动一致性方面的优势; 用户研究: 参与者认为 Animate-X 在视觉质量, 身份保持和运动一致性方面优于其他方法.
消融实验验证 IPI 和 EPI 的有效性.
感受
感受是缝合了很多前人的方法提升模型的效果, 创新性体现在敏锐的观察到了ReferenceNet的局限性, 过度提取信息(原文是为了增强motion一致性), 投稿好像有篇幅限制, 把局限性都放附录了.
这篇论文代码有开源, 后面会跑一下.