My App
Paper/dance

DiffDance: Cascaded Human Motion Diffusion Model for Dance Generation

任务是舞蹈生成, 介绍问题1)自回归的方法有累计误差, 2)难以捕捉长距离依赖关系, 引入DiffDance, 用了新颖的音频表示, 对比损失对齐motion, 几何损失保证物理合理性, 动态损失权重促进采样多样化.

DiffDance-intro

介绍

音乐和舞蹈形影不离. 创作满意的舞蹈有困难, 要求风格和节奏的同步, 深度学习社区关注.

现有方法使用序列到序列的自回归方法生成, 存在累计误差, 不适合生成长序列. 传统提取音频的方法可能无法深度理解音乐的音乐和舞蹈的关系.

当前的SOTA是Motion Diffusion Model, 存在帧率低, 长度短的问题.

DiffDance是一个两阶段方法, 第一阶段生成低分辨率(时间维度)序列, 第二阶段在低分辨率间扩充. 音乐用Wav2CLIP提取, 通过冻结MotionCLIP微调Wav2CLIP的编码器使audio的嵌入空间和motion相同. 一系列关于关节点位置, 旋转角度的损失防止不自然的瑕疵, 动态损失权重鼓励在大的时间步采样, 在小的时间步纠正不自然的动作.

方法

DiffDance-overview

Diffusion Model的基础知识

马尔科夫链, 加噪去噪, 神经网络预测噪声.

联级的Motion Diffusion Model

框架. 低维序列生成好理解, 只是和传统的Diffusion不同, 它不是预测噪声, 它是直接预测x. 在Sequence Super-Resolution(SSR)中, 输入增加了xlowx_{low}和时间步s, xlowx_{low}通过线性插值上采样, 再通过"Conditioning Augmentation"不知道经历了什么反正得到高分辨率序列.

训练对象. 文章指出只取传统的loss不足以完成该任务, 借鉴MDM添加一系列几何损失的方法, 对loss又做了补充. 另外它们指出diffusion在大的时间步生成, 在小的时间步去噪, 在所有时间步使用相同的loss显然不合适, 设计了一个时间步越小权重越大的公式.

条件生成

音乐表示. 传统使用人工提取的方式不足以表达音乐高层次的语义信息, 它们使用了Wav2CLIP, 特点是和文字, 图片共享一个向量空间, motion他们也找了一个相同维度的编码器, 同时冰冻两个编码器, 只训练adapter layers, 使用InfoNCE loss.

Classifier-free Guidance. 可能是指有条件和无条件生成这个过程(从这个名字很难猜到啊), 在animate anyone中见过了.

实验

数据集用的AIST++, 音乐通过Librosa加载, 6秒一组; motion用6d旋转格式表示(应该是SMPL换了种说法吧), 6秒一组.

联级diffusion的设置包括loss中提到的λ1,λ2,λ3,α\lambda_1, \lambda_2, \lambda_3, \alpha的取值, 低维数据15FPS, 高维60FPS, 20秒的dance序列, transformer 12层, 768的隐藏维度6个头, batch大小32, 4张V100上训了一天.

评估指标FID, Div, BAS, 消融实验验证了两阶段生成策略, loss函数和条件对齐层.

感受

这片文章虽然用得Diffusion, 因为把loss换了直接预测x, 思路更接近Bailando, 通过自定义loss去增加预设规则, 让模型向预期的方向生成. Bailando通过Actor-Critic训练使loss可微, 这片通过Diffusion的方式.

On this page