My App
Paper/dance

Lodge: A Coarse to Fine Diffusion Network for Long Dance Generation Guided by the Characteristic Dance Primitives

提出Lodge, 特点是生成超长舞蹈, 由粗到细两阶段生成, 角色舞蹈原语作为两diffusion模型的中间表达, 足部优化模块.

Lodge-intro

介绍

电影和游戏行业渴望给一段长音乐, 就能生成高保真和多样的3D舞蹈.

现有的方法只能生成几秒的视频, 但是真实世界的舞蹈持续几分钟甚至几小时(剧院).

当前基于自回归的方法处理这个问题, 造成累计误差, 使用Latent space的方式又牺牲了多样性, 容易过拟合. EDGE使用diffusion方法, 但是缺乏舞蹈的整体结构, 衔接处不自然.

总结了一下上述方法失败的原因, 把舞蹈生成看作序列到序列的问题, 忽视了粗糙水平的全局编舞模式. 编舞过程应该是关键动作->考虑衔接的思路.

讲思路, 先是设计了角色舞蹈原语(Characteristic Dance Primitives), 由8帧关键动作组成, 稀疏, 语义信息丰富.

然后设计了粗到细两阶段生成流程, 分别叫local diffusion和global diffusion. global diffusion 从长视频生成原语, local diffusion填充和增强生成的片段与音乐节奏对齐.

另外就是设计了足部优化策略, 发现因为SMPL格式是非线性的旋转角数据, 没法直接用foot相关的损失, 重新计算脚步接触信息, 用脚步细化模块解决脚步漂移.

方法

Lodge-overview

预备知识

音乐和舞蹈表示. 音乐使用Librosa库提取, motion保持和EDGE一致的SMPL结构, 注意一点表示中专门有关于foot-ground的信息.

Diffusion Model. 就一点, 不是预测噪声, 直接预测的真实值.

编舞规则. 音乐和舞蹈的1)风格和情绪一致, 2)节奏一致, 3)结构一致(例如, 音乐短语中的相同节拍通常对应对称的动作.)

两阶段舞蹈生成

这里只需要明白, 一段长视频kN, 被分成k份, 每一份就几秒时长, 通过Global Diffusion生成很多原语被分类为dhd_hdsd_s, dhd_h被当成首尾帧, dsd_s被镜像复制并和节奏对齐(对应编舞规则的2和3), 注意这里几秒时长的音频又通过dhd_h切分了, Local Diffusion只需要关注切分后的motion, 对dsd_s做填充和增强.

再值得一提的是他们的数据集提前标注了原语段, 根据加速度小的蕴含更丰富的语义信息这一理论, 在推理阶段它们是替换dt(dhd_h)和节奏点(dsd_s)上的motion.

Global Diffusion

就是把音乐和舞蹈等距离切片了, global diffusion生成稀疏原语, 然后用local diffusion并行的填充.

这里生成原语的方式, 是基于改进的EDGE, 现在EDGE给定输入的music, 只输出多个稀疏的8帧原语, 这些原语又被分类为dhd_hdsd_s.

上述表述有一个关键问题, 原语怎么来的 -- 人工从数据集中分离出来的. 到这里其实有一个疑问, dhd_hdsd_s又是怎么分类的, 似乎没有解答, 只说了dhd_h在local diffuin中保持不变, 进一步增强dsd_s, 看流程图可以明白dhd_h被当作了首尾帧.

Local Diffusion

Lodge-local-diffusion

先讲了一下模型结构, 参考EDGE, 有自注意力, 交叉注意力, 多层感知层, feature-wise linear modulation, 看图很清楚. global diffusion相当于确定了一个短序列的首尾帧和中间一些关键帧, local diffusion只需要关注这个短序列生成就行了.

在loss这块, 增加了速度, 加速度相关的损失.

再就是专门处理foot的模块, 他们总结主要问题是: 足部与地面的状态是基于关节位置在线性空间中测量的, 而SMPL格式的运动存在于非线性旋转空间中. 处理方法是动力学正向转换算位置, 速度, 加速度, 在交叉注意力处优化foot移动.

多题材分类器和平行推理没什么好讲的.

实验

数据集是FineDance和AIST++, 参数设置上N是34.13秒, n是8.53秒, Golbal Diffusion中dhd_h是5个, dsd_s是8个, 使用DDPM和DDIM. 指标就FID, DiV, BAS, 在FineDance上达到SOTA效果, 在AIST++数据集上还是Bailando更强.

感受

特点是长视频生成在平均长度只有13.3秒的AIST++上表现不佳也正常, 有一点没想清楚, 他到底是怎么改进EDGE让他只生成原语的. 还有一个问题kN->N的过程, 就算是Global Diffusion也只感知了长度为N的音乐上下文, 不能够算全局感知吧(如果这里我没理解错的话).

On this page