DiffDance: Cascaded Human Motion Diffusion Model for Dance Generation
任务是舞蹈生成, 介绍问题1)自回归的方法有累计误差, 2)难以捕捉长距离依赖关系, 引入DiffDance, 用了新颖的音频表示, 对比损失对齐motion, 几何损失保证物理合理性, 动态损失权重促进采样多样化.
介绍
音乐和舞蹈形影不离. 创作满意的舞蹈有困难, 要求风格和节奏的同步, 深度学习社区关注.
现有方法使用序列到序列的自回归方法生成, 存在累计误差, 不适合生成长序列. 传统提取音频的方法可能无法深度理解音乐的音乐和舞蹈的关系.
当前的SOTA是Motion Diffusion Model, 存在帧率低, 长度短的问题.
DiffDance是一个两阶段方法, 第一阶段生成低分辨率(时间维度)序列, 第二阶段在低分辨率间扩充. 音乐用Wav2CLIP提取, 通过冻结MotionCLIP微调Wav2CLIP的编码器使audio的嵌入空间和motion相同. 一系列关于关节点位置, 旋转角度的损失防止不自然的瑕疵, 动态损失权重鼓励在大的时间步采样, 在小的时间步纠正不自然的动作.
方法
Diffusion Model的基础知识
马尔科夫链, 加噪去噪, 神经网络预测噪声.
联级的Motion Diffusion Model
框架. 低维序列生成好理解, 只是和传统的Diffusion不同, 它不是预测噪声, 它是直接预测x. 在Sequence Super-Resolution(SSR)中, 输入增加了和时间步s, 通过线性插值上采样, 再通过"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中提到的的取值, 低维数据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的方式.