FrankenMotion: 部件级人体动作生成与组合 FrankenMotion: Part-level Human Motion Generation and Composition
利用LLM构建部件级动作数据集,实现细粒度时空控制的扩散模型动作生成
前置知识
扩散模型(Diffusion Model)
扩散模型是一类生成模型,通过逐步向数据添加高斯噪声(前向过程)将数据转化为纯噪声,再训练神经网络学习反向去噪过程(逆向过程),从而从噪声中生成高质量样本。在本文中,模型采用 DDPM 框架,使用 100 步余弦噪声调度,以样本预测模式直接预测干净动作 $x_0$ 而非噪声。扩散模型已成为文本到动作生成的主流范式,因为其训练稳定且能生成多样化的高质量输出。
本文的核心生成模型基于扩散框架,理解扩散过程的噪声添加与去噪机制是理解模型训练和推理流程的基础。
SMPL 人体模型
SMPL(Skinned Multi-Person Linear Model)是一种参数化人体网格模型,通过姿态参数 $\theta$ 和形状参数 $\beta$ 可以生成逼真的 3D 人体网格。姿态参数控制关节旋转,形状参数控制体型。本文采用 6D 旋转表示(rotation representation)来编码 SMPL 姿态参数,避免了欧拉角的万向锁问题和四元数的双覆盖歧义,提供了连续且平滑的旋转表示空间。
本文的动作表示空间 $x$ 直接基于 SMPL 的姿态参数、关节位置、速度和角速度构建,理解 SMPL 的参数化方式是理解动作表示的关键。
CLIP 文本编码器
CLIP(Contrastive Language-Image Pre-training)是 OpenAI 提出的多模态预训练模型,通过对比学习在共享嵌入空间中对齐图像和文本表示。本文使用冻结的 CLIP ViT-B/32 文本编码器来提取文本特征,将动作描述(序列级、动作级、部件级文本)映射到统一的特征空间。随后通过 PCA 将嵌入维度降至 $D=50$,以适配模型的输入维度需求。
CLIP 提供了文本到动作对齐的基础语义空间,是模型理解自然语言控制指令的关键组件。
层次化动作生成
层次化动作生成是指在多个粒度级别上控制动作生成的过程。本文定义了三个级别:序列级($L_s$,整段动作的全局描述)、动作级($L_a$,时间窗口内的原子动作标签)、部件级($L_p$,每个时间帧上每个身体部件的具体描述)。这种层次结构使得模型既能理解高层语义(如一个人走路后坐下),又能精确控制细粒度细节(如右臂抬起、头部左转),实现了从粗到细的多粒度控制能力。
这是本文的核心创新框架,理解三层控制的输入定义和作用方式是理解整个方法体系的前提。
R-Precision 与 FID 评估指标
R-Precision(R-Precision@K)衡量生成动作与文本描述的语义对齐程度:给定一个生成的动作和 $K$ 个候选文本(1个正确,$K-1$个随机干扰),看模型能否正确排序。R@1 表示正确文本排第一的比例,R@3 表示排前三的比例。M2T(Motion-to-Text)是动作到文本检索的平均精度。FID(Fréchet Inception Distance)衡量生成分布与真实分布的距离,越低表示生成质量越接近真实数据。Diversity 衡量生成样本的多样性,过高或过低都不理想。
本文所有实验结果都基于这些指标报告,理解指标含义是正确解读实验结果的基础。
研究动机
现有人体动作生成方法在控制粒度上存在根本性局限。以 HumanML3D 和 KIT-ML 为代表的数据集仅提供序列级文本描述(如一个人举起头顶的物体然后放到地上),缺乏对单个身体部件的详细标注。BABEL 虽然包含原子动作标签(如走路、站立、敲击),但这些标签是粗粒度的,且没有结构化地关联到具体的身体部件——例如敲击这个动作中手臂、躯干、腿部各自做了什么完全未标注。FineMoGen 虽然引入了部件级标签,但其基于固定时间段的同步标注方式限制了灵活性——不同身体部件的异步运动无法被准确捕捉。STMC 采用后处理拼接方式组装各部件动作,但缺乏端到端的时空推理能力,导致部件间的过渡不自然。现有数据集(BABEL 43.5h、HumanML3D 28.6h、KIT-ML 11.2h)的标注覆盖了约 91.4k 到 44.9k 个标签,但都没有部件级标注,这直接限制了模型学习精细动作元素的能力。
本文的目标是本文的具体目标是构建一个支持部件级、原子级、时间对齐标注的大规模动作数据集(FrankenStein),并在此基础上训练一个能够接受序列级、动作级、部件级三种粒度文本输入的扩散模型(FrankenMotion),实现对人体动作的精细时空控制。模型需要能够:(1) 接受稀疏的部件级文本输入并生成对应的身体部件动作;(2) 将不同部件的动作组合成协调的整体动作;(3) 在推理时支持灵活的控制粒度——用户可以只提供序列描述,或指定个别部件的动作,或给出完整的层次化控制信号。
与已有工作不同的是,本文的独特切入角度在于利用大语言模型(LLM)的推理能力来自动构建部件级标注。关键洞察是:当一个人坐下时,膝盖大概率在弯曲;当一个人系鞋带时,脊柱在弯曲、手臂在系鞋带——这些部件级动作可以从高层动作描述中推断出来。作者发现 LLM 在这种推理任务上表现出色,因此设计了 FrankenAgent(基于 DeepSeek-R1-0528)来从现有的序列级和动作级标注中自动分解出部件级描述,并对齐到精确的时间窗口。这种方法避免了昂贵的人工标注,同时利用了现有数据集(HumanML3D、BABEL、KIT-ML)的标注信息,构建了迄今最大的部件级动作数据集(39.1h,138.5k 标签,其中 46.1k 为部件级标签,28.8k 为通过推理生成的新标注)。
核心方法
FrankenMotion 的整体思路可以分两个阶段理解。第一阶段是数据构建:利用现有动作数据集(HumanML3D、BABEL、KIT-ML)的高层标注,通过 FrankenAgent(基于 DeepSeek-R1 的 LLM 智能体)自动分解出三层层次化标注——序列级(全局描述)、动作级(时间窗口内的原子动作)、部件级(每个身体部件在每帧的具体动作)。这个过程的核心思想是推理分解:给定一个人做敲门的动作,LLM 可以推断出右手在敲门、左手可能放在身侧、身体前倾、头部看向门等部件级细节。第二阶段是模型训练:设计一个基于 Transformer 的扩散模型,将三种粒度的文本特征与动作特征在联合嵌入空间中融合,通过随机掩码策略训练模型对稀疏输入的鲁棒性,最终实现从任意粒度的文本输入生成高质量、可控的人体动作。
本文的核心创新在于部件级动作组合的范式。与已有方法的本质区别体现在三个方面:第一,与 FineMoGen 的固定时间段同步标注不同,本文的部件级标注是异步的——不同身体部件可以有不同的时间窗口和运动节奏,这更符合真实动作中身体各部分的自然异步性。第二,与 STMC 的后处理拼接不同,本文采用端到端的扩散模型,通过层次化条件注入让模型在生成过程中自然地协调各部件的动作,避免了拼接不自然的问题。第三,与 UniMotion 的帧级文本控制不同,本文显式地建模了身体部件的独立特征空间,通过 PCA 降维后的部件嵌入 $F_p \in \mathbb{R}^{T \times (K \times D)}$ 和动作嵌入 $F_a \in \mathbb{R}^{W \times D}$ 的融合,让模型学习部件间的组合关系。这种设计使得模型可以通过组成性(constitutionality)生成训练时未见过的动作组合——例如训练数据中没有坐着的同时抬起左臂的示例,但模型可以通过组合坐和左臂抬起两个部件级指令生成这个新动作。
方法步骤详情
方法分为数据构建和模型训练两个主要步骤。数据构建步骤:(1) 输入现有的动作序列 $M$ 及其序列级标注 $\hat{A}_s$ 和原子动作标注 $\hat{A}_a$;(2) FrankenAgent 接收这些标注,通过精心设计的提示词分解出 $K$ 个身体部件(骨盆、脊柱、头部、左臂、右臂、左腿、右腿)的逐帧描述,形成部件级标注 $A_p = \{A^k\}_{k=1}^K$,每个部件标注 $A^k = \{(L^k_j, t^s_j, t^e_j)\}_{j=1}^M$ 包含文本标签和对应的时间窗口;(3) 同时优化序列级和动作级标注以保持一致性。模型训练步骤:(1) 动作编码:将每帧动作 $x$ 表示为 $x = [r_z, \dot{r}_x, \dot{r}_y, \dot{\alpha}, \theta, j]$,包含骨盆高度、水平速度、角速度、SMPL 姿态参数和关节位置;(2) 文本编码:使用冻结的 CLIP ViT-B/32 提取文本特征,对部件级和动作级文本应用 PCA 降至 $D=50$ 维;(3) 特征融合:将部件嵌入 $F_p$ 和动作嵌入 $F_a$ 拼接为 $F_{a+p} \in \mathbb{R}^{N \times (K+1)D}$,再与噪声动作 $x_\sigma$ 拼接,经过 MLP 生成动作-文本联合嵌入 $F_{a+p+m} \in \mathbb{R}^{T \times D_{m+t}}$;(4) 序列上下文注入:将序列级特征 $F_s$ 和扩散时间步嵌入作为额外 token 拼接,得到最终输入 $\mathbb{R}^{(T+2) \times D_{m+t}}$;(5) 扩散训练:采用 DDPM 目标 $\mathcal{L} = \mathbb{E}[\|f_\theta(x_\sigma, \sigma, c) - x_0\|^2_2]$,其中 $c = (L_s, L_a, L_p)$ 为层次化条件;(6) 随机掩码:为增强鲁棒性,对部件级标签采用 Beta 分布随机掩码 $p \sim \text{Beta}(5r, 5(1-r))$,以概率 $p$ 将已知标签置零。
技术新颖性
本文的技术新颖性体现在多个层面。首先是数据构建范式的创新:首次提出利用 LLM 推理能力自动构建部件级动作标注的管线,通过精心设计的提示词让 LLM 在不确定时输出 unknown 而非产生幻念,保证了 93.08% 的标注准确率(经三位人类专家评估,Gwet's AC1 一致性系数达到 0.91)。其次是数据集结构的创新:FrankenStein 是首个同时提供序列级、动作级、部件级三层标注的动作数据集,且部件级标注是异步的、时间对齐的,总计 138.5k 个标签,其中 46.1k 为部件级标签。第三是模型架构的创新:通过 PCA 降维的部件嵌入和动作嵌入的拼接融合,以及序列级全局特征作为额外 token 的注入方式,实现了多层次条件的统一编码。第四是训练策略的创新:基于 Beta 分布的随机掩码机制 $\text{Beta}(5r, 5(1-r))$ 解决了部件级标注稀疏性带来的训练不稳定问题,使模型在推理时能够优雅地处理缺失的部件级输入。
实验结果
实验结果从多个维度验证了 FrankenMotion 的有效性。在标注质量评估中,FrankenAgent 生成的标注经三位人类专家评估,整体准确率达到 93.08%,Gwet's AC1 一致性系数为 0.91(属于高度一致性),证明了 LLM 推理构建部件级标注的可靠性。在与基线方法的对比中(Table 2),FrankenMotion 在所有评估维度上均优于基线。在平均部件级语义正确性上,R@1 达到 47.21(vs UniMotion 45.72,提升 1.49 个百分点),R@3 达到 58.97(vs UniMotion 57.36,提升 1.61),M2T 达到 0.69。在逐动作语义正确性上,R@1 达到 48.10(vs UniMotion 47.58),R@3 达到 65.79(vs UniMotion 65.62),M2T 为 0.75。在逐序列语义正确性上,R@1 达到 65.27(vs UniMotion 62.66,提升 2.61),R@3 达到 85.62(vs UniMotion 82.08,提升 3.54),M2T 为 0.76。在真实性指标上,逐动作 FID 为 0.04(vs UniMotion 0.05,vs DART 0.14,vs STMC 0.10),逐序列 FID 为 0.06(vs UniMotion 0.08,vs DART 0.28,vs STMC 0.20),均显著优于基线。在消融实验中(Table 3),仅使用部件级输入时模型已具有竞争力(R@3=56.34,M2T=0.69),加入动作级输入后 R@3 提升至 57.74,再加入序列级输入后进一步提升至 58.97,证明了层次化条件设计的有效性。值得注意的是,M2M(Motion-to-Motion)指标从 0.72(仅部件)提升到 0.75(全层次),说明高层语义的引入增强了部件间动作的协调性。
查看结构化数据
| 任务 | 指标 | 本文 | 基线 | 提升 |
|---|---|---|---|---|
| 平均部件级语义正确性 | R@1 / R@3 / M2T | 47.21 / 58.97 / 0.69 | UniMotion: 45.72 / 57.36 / 0.69 | R@1 +1.49, R@3 +1.61, M2T 持平 |
| 逐动作语义正确性 | R@1 / R@3 / M2T | 48.10 / 65.79 / 0.75 | UniMotion: 47.58 / 65.62 / 0.75 | R@1 +0.52, R@3 +0.17, M2T 持平 |
| 逐序列语义正确性 | R@1 / R@3 / M2T | 65.27 / 85.62 / 0.76 | UniMotion: 62.66 / 82.08 / 0.74 | R@1 +2.61, R@3 +3.54, M2T +0.02 |
| 逐动作真实性 | FID (越低越好) | 0.04 | UniMotion: 0.05, DART: 0.14, STMC: 0.10 | vs UniMotion -20%, vs DART -71.4%, vs STMC -60% |
| 逐序列真实性 | FID (越低越好) | 0.06 | UniMotion: 0.08, DART: 0.28, STMC: 0.20 | vs UniMotion -25%, vs DART -78.6%, vs STMC -70% |
局限与改进
作者明确承认的主要局限是 FrankenMotion 目前无法在单次推理中生成分钟级的长动作序列,模型的时间建模能力受限于当前的序列长度设计,扩展到长时序结构建模是未来的重要方向。除此之外,还有一些值得观察的局限:(1) 模型训练需要约 47.5 小时的 H100 GPU 时间,评估模型每个需约 16 小时的 A100 GPU 时间,计算成本较高;(2) FrankenAgent 的标注质量虽然达到 93.08% 准确率,但仍有约 7% 的错误率,这些错误可能在训练中被模型学习;(3) 评估指标(R-Precision、M2T)依赖于预训练的评估模型,评估模型本身的质量会影响结果的可靠性;(4) 论文没有报告与最新的一些动作生成方法(如 MotionLCM、MotionMamba 等)的对比,基线方法的选择可能不够全面;(5) 部件级控制虽然灵活,但用户需要知道每个部件的确切描述方式,实际使用中的交互成本未被讨论。
独立分析的弱点
本文存在几个值得关注的弱点。首先,FrankenAgent 的标注虽然整体准确率较高,但其推理过程依赖于 DeepSeek-R1 的内部知识和推理能力,对于不常见或高度复杂的动作组合(如涉及物体交互的动作),LLM 的推理可能产生幻念或不准确的部件描述,尽管有 unknown 机制作为安全阀,但这可能导致某些动作的标注覆盖率不足。改进方向可以引入多轮验证机制或结合视频理解模型进行交叉验证。其次,模型的部件嵌入通过 PCA 降维到 50 维,这种线性降维可能丢失重要的非线性语义信息,可以考虑使用可学习的非线性投影层替代。第三,随机掩码策略虽然提高了鲁棒性,但 Beta 分布的参数 $r$ 是固定的超参数,不能根据训练进度或输入复杂度自适应调整,设计自适应掩码策略可能进一步提升性能。第四,模型在训练时需要完整的层次化标注,但推理时用户通常只提供稀疏输入,训练和推理时的条件分布差异可能导致性能下降,可以通过课程学习(curriculum learning)逐步增加训练时的掩码比例来缓解。
未来方向
作者提出扩展模型到分钟级长序列生成是重要方向。基于现有成果,还有几个值得探索的研究方向:(1) 交互式动作编辑:利用部件级控制的灵活性,开发支持用户实时编辑和调整的动作生成界面,例如拖拽调整某个部件的动作幅度或时间节奏;(2) 物理约束集成:将物理仿真(如刚体碰撞、重力约束)融入扩散过程,生成物理上合理且部件级可控的动作;(3) 跨数据集迁移:探索 FrankenAgent 的标注能力是否可以迁移到其他领域,如手部动作、面部表情、动物动作的部件级标注;(4) 实时生成:借鉴 MotionLCM 等方法的实时生成技术,将 FrankenMotion 的部件级控制能力与快速推理结合;(5) 多人交互:将部件级控制扩展到多人场景,支持对每个参与者各身体部件的独立控制;(6) 视频驱动生成:结合视频理解模型,从视频中自动提取部件级动作描述作为生成条件。
复现评估
本文在复现方面提供了较好的支持。作者承诺代码和数据集将在发表后公开,这包括 FrankenStein 数据集的完整标注、FrankenAgent 的提示词模板(补充材料中提供)、以及 FrankenMotion 模型的训练代码。数据集构建基于公开可用的 HumanML3D、BABEL 和 KIT-ML 数据集,不需要额外的专有数据。模型架构基于标准的 Transformer 扩散模型和 CLIP 文本编码器,没有使用复杂的自定义算子。训练需要单张 H100 GPU(约 47.5 小时)或等效算力,评估模型每个需约 16 小时的 A100 时间,对于学术实验室来说算力需求中等偏高。主要的复现挑战在于:(1) FrankenAgent 依赖 DeepSeek-R1-0528 的 API,需要相应的访问权限和费用;(2) 数据集标注质量可能因 LLM 版本更新而略有差异;(3) 扩散模型的训练结果可能对超参数(如 Beta 分布的参数 $r$、学习率调度等)敏感。总体而言,复现难度中等,具备标准扩散模型训练经验的研究者应该能够复现主要结果。
论文图表