My App

DISCO: Disentangled Control for Realistic Human Dance Generation

讲任务:围绕人类的多场景舞蹈生成. 讲目标:从传统的motion范式出发, 1)对不可见部分的掌握, 2)允许多种不同的条件组合控制生成. 详细见下图. 讲结构: disentangled control改善组合性, human attribute 预训练改善生成未见部分.

DisCo-intro

介绍

讲任务(还是DreamPose总结的最好):给一张参考图, 我们旨在生成一张人类的新的图片, 控制人的姿势, 保持人物的外观不变. 先前是GAN的方法, 但是面对社交媒体视频像TikTok Dance, 需要更精细和多样的视觉内容, GAN面临mode collapse.

最近, 基于diffusion的生成模型改善了多样性和稳定性. ControlNet引入了多样的几何控制信号, 基于它的方法要不需要粗粒度文本提示词, 要不用参考图替代text, 怎样维持丰富的人类语义和背景信息尚未探索. 另外还指出了当前数据集不足的情况.

讲目标: 1)Generalizability, 能根据不寻常的case生成, 如不寻常的人类角度, 不可见的人物, 背景, pose; 2)Compositionality, 多种条件任意组合(参考图, 背景, pose).

再往后介绍了Model Architecture with Disentangled Control和Human Attribute Pre-training两种方法, 到了具体章节再细看.

相关工作

Diffusion用于可控图片/视频生成

第一个用于控制生成的条件是text prompt, 代表模型是SD. 然后ControlNet引入了其他控制条件, 如草图, 人类骨骼, 分割图. video生成比image生成更具挑战性, 由于数据的缺乏和时序建模, 因此现有的可控视频生成方法大多从预训练的text-to-video模型开始, 引入motion前序. 最后讲本工作探讨了更精细的人类外表和pose控制.

人类舞蹈生成

早期工作包含 video-to-video synthesis, still image animation, motion transfer, 这些方法要么需要几分钟长的视频用于微调, 要么需要多级联阶段训练来预测背景, motion, 遮挡图.

后续为人类舞蹈量身定做的diffusion模型, 需要单独的motion预测模块, 而且不能精细的控制人类模块. 最后介绍了很自己工作很像的DreamPose, 指出他的不足.

DisCo

DisCo-overview

声明f, g, p表示foreground, background, pose keypoint. 然后重复了该任务的目的.

预备知识

LDM, CLIP, SD这些. 表述有点特别, LDM是一种在自动编码器的编码潜在空间中操作的扩散模型, 一个典型的LDM是SD, 包含一个VQ-VAE和一个时间条件UNet. CLIP ViT/14 文本编码器用于映射输入text序列到嵌入条件ctextc_{text}, 后面介绍前向反向传播过程.

built upon SD, 插入输入到U-Net的中间层用于可控生成. 创建一个可训练的down/middle block, 添加额外的零卷积层, 每个copy的副本添加到原网络的跳跃连接. 除了文本条件ctextc_{text}之外, ControlNet还使用了一个额外的外部条件向量c进行训练, 该向量可以是多种类型, 如边缘图, 深度图和分割图.

具有 Disentangled 控制的模型结构

ControlNet可以实现几何控制, 但是没有人类图像条件控制. 最近一些探索用图片嵌入代替CLIP文本嵌入可以保留一些高水平的语义信息, 但是几何控制缺失, 简单叠加两种方法不能得到理想效果.

引入disentangled control, 给一个参考图, 先使用抠图技术分离foreground和background, 然后将f, g, p三种条件合并到DisCo.

Foreground通过cross attention. 先使用sd-image-variations-diffusers初始化模型(应该和sd v1.5 差不多吧, 可以将image作为输入条件), 我觉得它这里就是把原本的text嵌入换成了image CLIP嵌入.

Background和Pose通过ControlNet. Pose使用四个卷积层嵌入到和UNet相同的潜空间, 设置ControlNet进行姿态控制. Background使用VQ-VAE编码器嵌入, 设置ControlNet控制背景. 然后text条件也被换成相应的local CLIP嵌入.

时间模块. 引入了1D Temporal Conv./Attn. 零卷积, 通过残差连接, 重复Background n次的方式从image生成转换为video生成.

人类属性预训练

这个对应它的任务中未见部分的生成. 当前训练管道依赖于高质量的人类视频, 他们具有相同的foreground和background, 但是pose不同, 当前的训练数据集很难保证人类多样的情况下保证复杂的姿势.(虽然很怪, 但是原文就是这个意思)

没有Pose ControlNet, 只训练Background ControlNet 和TransBlock, 通过这种方式, 模型能有效学习大规模图像中人物主体与前景之间的区分以及多样化的人物属性.

实验

主训练数据集是TikTok舞蹈数据集, 包含约350个单人舞蹈视频(10-15秒), 使用 Grounded-SAM 分离foreground和background, 使用 OpenPose 提取pose. 训练集335个视频(确保同一人的不同视频不跨集), 测试集额外收集10个不同人的TikTok风格视频(未见过的主体/背景).

预训练数据集为组合数据集: TikTok + COCO + SHHQ + DeepFashion2 + LAION. 通过Grounded-SAM自动生成人体掩码, 保留含有人像的图像(700,000+ 张).

后面是一些训练参数设置, 评估指标有图像: FID, SSIM, LIPIS, PSNR, L1 Lose, 视频: FID-VID, FVD, 基线是DreamPose, 消融实验是控制条件分离, 特征编码方式(CLIP全局 vs 局部), 预训练数据量影响.

感受

任务目标三两句话能解释清楚换了四种表达, 读起来很烦. 最多两遍我就记住你要干什么事情了, 再重复和换了表达, 作为读者我反而抓不住重点了.

在叙述时还是不要出现我的模型"基于ControlNet, 然后改进了这里和那里", 并不是每个人都知道ControlNet.

立足点是社交媒体跳舞视频生成对多样性和质量提出更大的要求, 亮点是一个解耦设计, background, foreground, pose三者一个组合, 数据处理起来还是很麻烦的, 在full training之前对foreground-background对进行一个预训练.

On this page