Semantic-Aware Motion Encoding for Topology-Agnostic Character Animation¶
会议: ICML 2026
arXiv: 2605.27055
代码: https://github.com/zzysteve/SATA
领域: 3D视觉 / 人体运动 / 角色动画 / 表征学习
关键词: 运动表征、拓扑无关、跨物种重定向、语义调制、图自编码器
一句话总结¶
SATA 用 MLLM 生成的关节语义标签做 FiLM 风格的特征调制,配合空间-时间交错的图自编码器,把任意骨架拓扑的 BVH 动作压到一个共享潜空间,实现高保真重建以及无配对数据的零样本跨物种动作重定向。
研究背景与动机¶
领域现状:当前角色动画的运动表征学习几乎都建立在「规范骨架」的假设之上 —— HumanML3D / AMASS 等大规模数据集都先把原始 SMPL 序列映射到固定数量、固定层级的关节集合上,然后用 VAE 或 VQ/RVQ-VAE 把这些固定维度的轨迹压成潜码。这套范式在单一物种内可以做到很高的重建保真度,但本质上是「为某一种骨架定制」的。
现有痛点:现实里数字角色从人类到四足兽再到幻想生物,骨架数和层级差异巨大;甚至同样是「人」,不同数据集对关节定义和命名都不一致。这直接挡住了想统一训练的多物种生成模型。已有的拓扑灵活方案要么走图卷积(如 SAME)只看局部图结构、缺乏跨物种的功能对应;要么走 Transformer + 零填充(Gat 2025、Lee 2025)做生成,引入二次方冗余计算、约束最大关节数,并且学不到紧凑连续的潜流形。
核心矛盾:拓扑差异 vs. 紧凑可生成的运动表征。固定模板能换来紧凑潜空间但牺牲拓扑灵活性;零填充和图结构能换来灵活性但破坏潜空间结构或缺乏语义对齐。需要一个机制把「拓扑」和「语义」解耦开来。
本文目标:构造一个 padding-free 的自编码器,能直接吃任意 BVH 拓扑的原始数据,把动作编进物种共享的连续潜流形,并能在没有配对监督的情况下从这个潜码解码到任意目标骨架。
切入角度:作者的关键观察是 —— 尽管骨骼拓扑五花八门,运动的「语义」却跨物种共享:人类胳膊和动物前肢都在「支撑/运动/抓握」这种功能层面对齐。所以与其去匹配几何或图结构,不如直接给每个关节挂一段语义描述(用 MLLM 生成、T5 编码),让网络在语义空间里建立功能对应。
核心 idea:用 MLLM 生成的关节语义嵌入做 FiLM 风格的特征调制(语义+空间共同生成缩放/平移参数去 reshape 运动特征),配合空间-时间交错的图块结构,把任意骨架的动作编码到一个统一的拓扑无关潜空间。
方法详解¶
整体框架¶
SATA 把一段 \(T\) 帧的动作序列表达成图序列 \(\mathcal{G}=\{G_1,\dots,G_T\}\),每帧的图 \(G_t=(V,E,E_f,F_s,F_{m,t})\) 含节点(关节)、边(骨链)、边特征(拓扑深度/逆深度)以及节点特征。节点特征拆成静态骨架部分 \(F_s=(X_g, X_l, X_t)\)(全局偏移、相对父关节的 rest pose 坐标、关节语义嵌入)和动态运动部分 \(F_m=(q,x,v_q,v_x,r,c)\in\mathbb{R}^{J\times D}\)(6D 旋转、相对位置、角速度/线速度、根运动、足部接触)。整个 pipeline 是:
- 把动态运动 \(F_m\)、空间坐标 \(X_g, X_l\)、语义嵌入 \(X_t\) 投影到三种 token;
- 用 Semantic-Aware Feature Modulation 把空间+语义熔成一组 FiLM 参数去 reshape 运动特征;
- 编码器堆三个 Spatio-Temporal Interleaved 图块,交替做空间图卷积/注意力和时间注意力;
- 一个空间 max-pool 把节点特征聚成帧级潜码 \(z_t\),剥掉源骨架结构信息,形成拓扑无关潜流形;
- 用 VAE(KL 正则)或 RVQ-VAE(commitment loss + 码本)做正则;
- 解码时把 \(z_t\) 广播到目标骨架的所有节点,配合目标的 \((X'_t, X'_g, X'_l)\) 走对称解码器,最终 MLP 输出 \(\hat F_m^{out}=(q,r,c)\in\mathbb{R}^{J\times 11}\),经 FK 得到完整运动。
关键设计¶
-
Semantic-Aware Feature Modulation(语义-空间调制):
- 功能:把 MLLM 生成的关节语义嵌入和空间坐标共同作为「身份条件」,去动态 reshape 每个关节的运动特征,建立跨物种的功能对应。
- 核心思路:用 Gemini 2.5 Pro 给每个关节生成中性化的功能描述(强调功能而非物种命名以便迁移),再用冻结 T5 编码成 \(X_t\)。三路输入分别投影:\(z_m=\phi_m(F_m)\),\(z_s=\phi_s([X_g;X_l])\)(\(\phi_s\) 是正弦编码器,把连续坐标映成高频谱),\(z_t=\phi_t(X_t)\)。把空间+语义拼起来过非线性 \(\Phi\) 得到节点条件 \(c=\Phi([z_s;z_t])\),再投影出 FiLM 参数 \([\gamma,\beta]=\Psi(c)\),对运动特征做 \(\hat x=\mathrm{LN}(z_m)\odot(1+\gamma)+\beta\)。最后用门控残差 \(\widetilde F_m=z_m+g\odot\hat x\)(\(g=\sigma(W_g c)\))防止冲突模态污染。
- 设计动机:相比简单相加,FiLM 让语义-空间条件能动态调制运动特征本身,使得「左手」和「左前爪」即使拓扑位置完全不同,也能被映到潜空间相近区域;门控则给了模型主动抑制噪声语义的能力。
-
Spatio-Temporal Interleaved Graph Block(空间-时间交错图块):
- 功能:在动态图上同时建模帧内生物物理约束(骨长、关节限位)和帧间运动连贯性,避免抖动和结构漂移。
- 核心思路:空间分支借鉴 GPSConv,并行跑两条路 —— 一条 GINEConv 做消息传递(吃边特征里的拓扑深度,强化骨架先验),一条 Spatial Transformer 建模图上不相邻关节的长程协同(如手脚配合);两路输出求和后过 MLP+残差。时间分支借鉴 TimeSformer 的时空交错:用映射算子 \(\mathcal{T}\) 把批图序列 \(\mathcal{G}_{batch}\) 重排成「按关节聚集的时间流」\(\mathcal{X}_{temp}\),加正弦位置编码后过 Temporal Transformer 抓长时依赖,再用 \(\mathcal{T}^{-1}\) 把更新后的特征写回图。整个编码器堆 3 个这样的块,对称的解码器同构。
- 设计动机:单独用图卷积容易丢长时上下文,单独用全注意力会丢拓扑先验;交错的设计相当于「先让骨架保持物理合理,再让时间维度拉直」,两者反复纠缠确保重建既无关节穿模又无时间抖动。
-
拓扑无关的潜流形 + 任意骨架数据流水线:
- 功能:把源骨架的结构信息从潜码里完全剥离,让同一个 \(z_t\) 能解码到任意目标骨架;同时配套数据预处理直接吃原始 BVH,打通多数据集联合训练。
- 核心思路:编码器最后用空间 max-pool 把 \(J\) 个节点特征聚成一个帧级向量 \(z_t\),这个 pooling 是把「源骨架有多少节点、是什么连接」这一信息抹掉的关键 —— 解码时只看潜码 + 目标骨架的 \((X'_t,X'_g,X'_l)\),所以同一个 \(z_t\) 可以广播到任何节点数的目标骨架上。\(z_t\) 用 VAE(128D 对角高斯)做主重建/重定向实验,用 RVQ-VAE(256D,6 个残差量化器,码本 1024)提供离散 token 给 text-to-motion 用。配套的数据流水线把 HumanML3D 和 AniMo4D 转成四元数 BVH,做 canonicalization 和增广,得到 AT-HumanML3D(80,508 段,724.6 分钟)和 AT-AniMo4D(30,097 段、115 种动物、539.3 分钟)两个任意拓扑基准。
- 设计动机:之前的工作要么给每个角色训单独的 AE(WalkTheDog),要么锁死在 SMAL 模板(OmniMotionGPT),都没真正实现「一个潜空间通吃所有物种」。max-pool + 广播 + 目标侧的语义/几何条件,让潜空间承担「这段动作的语义」而不是「这段动作在某骨架上的实现」。
损失函数 / 训练策略¶
端到端优化 \(\mathcal{L}=\mathcal{L}_{rec}+\lambda\mathcal{L}_{reg}\)。重建项沿用 SAME 的配方:旋转/位置/速度 MSE,加上 foot contact、ground penetration 和平滑性的物理正则;潜空间正则 VAE 用 KL,RVQ-VAE 用 commitment loss。Adam,初始 lr 1e-4,30 轮线性 warmup,指数衰减 \(\gamma=0.99\) 训 400 epoch;推理用 64 帧窗口、16 帧重叠的滑窗。基础模型 8.41M 参数 / 29.66 GFLOPs(对比加宽后的 SAME 5.98M / 20.21 GFLOPs)。
实验关键数据¶
主实验¶
单数据集训练的重建/零样本跨数据集评估(灰色为零样本跨集,JR=关节旋转,RT=根轨迹,JP=关节位置,FS=foot skating,GP=ground penetration):
| 训练源 | 方法 | AT-HumanML3D JR↓ | AT-HumanML3D JP↓ | AT-AniMo4D JR↓ | AT-AniMo4D JP↓ |
|---|---|---|---|---|---|
| HumanML3D | SAME | 0.0831 | 2.81 | 0.5721 | 398.1(崩) |
| HumanML3D | Ours | 0.0568 | 1.36 | 0.4855 | 34.6 |
| AniMo4D | SAME | 0.5266 | 122.7(崩) | 0.5227 | 4.30 |
| AniMo4D | Ours | 0.6616 | 80.9 | 0.3901 | 4.51 |
多数据集联合训练(两个基准上同时训):
| 方法 | AT-HumanML3D JR↓ | AT-HumanML3D JP↓ | AT-AniMo4D JR↓ | AT-AniMo4D JP↓ |
|---|---|---|---|---|
| SAME | 0.1060 | 2.34 | 0.2357 | 3.68 |
| Ours | 0.0769 | 1.63 | 0.1971 | 3.27 |
人体动作重定向(global joint position error):
| 方法 | Internal↓ | Cross↓ |
|---|---|---|
| MoMask | 89.42 | 103.72 |
| SAN | 15.96 | 34.82 |
| SAME | 1.48 | 0.96 |
| Ours (RVQ) | 1.12 | 0.97 |
| Ours (VAE) | 0.21 | 0.20 |
消融实验¶
AT-HumanML3D 上的组件消融(节选):
| 配置 | JR↓ | JP↓ | Internal Retarget↓ | Cross Retarget↓ |
|---|---|---|---|---|
| Full | 0.0568 | 1.36 | 0.21 | 0.20 |
| w/o Spatial Transformer | 0.1243 | 10.23 | 1.78 | 1.67 |
| w/o GNN | 0.0747 | 2.38 | 1.10 | 1.06 |
| w/o Temporal Transformer | 0.0584 | 1.78 | 0.32 | 0.29 |
| w/o Fusion Block(语义调制) | 0.1196 | 7.81 | 0.48 | 0.48 |
| w/o Text Fusion(只去文本) | 0.0663 | 1.52 | 0.35 | 0.25 |
| w/o Sliding Window | 0.0630 | 3.45 | 0.75 | 0.65 |
预训练效果(在 AniMo4D 上用不同比例的数据,✗=从头训,✓=从 AT-HumanML3D 预训练后微调):
| 数据量 | PT | JR↓ | JP↓ |
|---|---|---|---|
| 10% | ✗ / ✓ | 0.62 / 0.28 | 14.34 / 7.71 |
| 30% | ✗ / ✓ | 0.52 / 0.22 | 8.72 / 4.06 |
| 100% | ✗ / ✓ | 0.39 / 0.18 | 4.51 / 3.14 |
关键发现¶
- 去掉 Fusion Block 是最致命的:JP 直接从 1.36 涨到 7.81,且 retargeting 误差翻倍。这印证了「语义-空间调制」才是跨物种对齐的关键,光有图结构(如 SAME)不够。
- Spatial Transformer 比 GNN 更重要:去掉前者 JP 涨 7.5 倍,去掉后者只涨 1.7 倍,说明骨架上「远距离关节协同」对动作重建至关重要,单纯的局部消息传递不足以建模整体姿态。
- 联合训练能反向受益:单训 AniMo4D 时本文的 RT 不如 SAME(1.65 vs 1.44),但加入人类数据联合训练后反超(1.23 vs 1.41)。说明本文的语义对齐能让人类动作迁移到动物轨迹建模上。
- 跨物种零样本不崩:SAME 在 Human→Animal 设置下 JP=398(基本崩了),本文保持在 34.6;这种鲁棒性来自「拓扑无关潜空间 + 解码侧目标骨架条件」的解耦设计。
- 预训练在数据稀缺时收益巨大:10% 数据下 JP 从 14.34 降到 7.71(约 46% 提升),暗示这个共享潜流形可以作为动作领域的通用 backbone。
亮点与洞察¶
- 「拓扑解耦 = 语义当桥」的设计哲学很干净:与其在几何/图层面硬拼,不如借 MLLM 给每个关节挂功能标签,让网络在语义空间里隐式建立「人类左手 ↔ 猫左前爪」这种功能对应。这套思路完全可以迁到其他「结构异质但功能同质」的任务,比如不同传感器布局的机器人状态表征、不同物种的解剖学图谱对齐。
- FiLM + 门控残差的 trick 值得记:直接相加会让语义淹没在运动特征里,FiLM 让条件去 reshape 而非污染特征本身,门控又允许网络在条件冲突时关掉。在任何「弱条件需要影响强特征」的场景都能复用。
- max-pool 抹掉源结构 + 解码端注入目标结构:这个非对称设计是实现真正「拓扑无关潜空间」的关键 trick —— 编码器看见的源信息要被压扁,解码器看见的目标信息要被广播。对比 SAN/SAME 那种「图结构端到端绑死」的做法,更彻底。
- 数据流水线本身是贡献:AT-HumanML3D / AT-AniMo4D 两个任意拓扑基准把已有的标准化数据「反规范化」回 BVH,给社区提供了真正能测试拓扑泛化的 testbed,而不是各家自己造小数据集互不可比。
局限与展望¶
- MLLM 生成关节描述的质量不可控:虽然作者用「中性化」描述模板减轻物种 bias,但对于真正怪异的拓扑(如多臂幻想生物、非动物机器人),Gemini 给出的功能描述是否仍然有意义、是否需要人工兜底,文中没充分讨论。
- 依赖 BVH 格式输入:流水线绑死在四元数 BVH,对于纯 mesh 驱动、blendshape 驱动或者软体角色没办法直接用,限制了在游戏/影视工业管线中的覆盖面。
- 跨物种重定向只评了几何指标:FS、GP 这类局部指标在「全局已崩」的情况下反而可能更好(作者自己也承认),缺少更可靠的用户研究或感知指标来评 cross-species motion 的「合理性」与「物种特征保留」。
- 拓扑无关 ≠ 物理无关:解码到目标骨架时只用了骨长几何和语义,没显式考虑目标物种的物理约束(质量分布、关节自由度限制);当把人类「跳跃」迁到小型动物时,可能产生关节超限或失重感的不自然结果。
- 改进方向:把目标骨架的物理参数(质量、惯性、关节限位)也作为解码条件;引入 motion retargeting 评测里的 perceptual metric;将 RVQ codebook 与文本-动作对齐,做更可控的多物种 text-to-motion。
相关工作与启发¶
- vs SAME (Lee 2023):同样做拓扑灵活的图自编码器,但 SAME 只看局部图连接缺乏跨物种语义对齐,因此 Human→Animal 零样本直接崩;本文加了 MLLM 语义调制把功能对应显式建出来,零样本 JP 从 398 降到 34。
- vs 零填充 Transformer (Gat 2025, Lee 2025):他们用 padding 解决任意拓扑做生成,但有二次方冗余计算 + 最大关节数限制 + 缺乏紧凑可生成潜空间;本文 padding-free,且潜流形天然适合下游生成。
- vs MoMask / VQ-VAE 系列:那一类在固定骨架上做得极致,但完全没办法迁到异骨架;本文以略低的单骨架重建保真度换来了拓扑泛化与多数据集联合训练能力。
- vs WalkTheDog / OmniMotionGPT:之前的跨物种工作要么每个角色训独立 AE(不可扩展),要么锁死 SMAL 四足模板(不通用);本文真正做到「一个模型/一个潜空间」吃 115 种动物 + 人类。
- vs Motion2Motion / 规则 retargeter:那一类需要人工关键点对应或规则映射,限制在预定义场景;本文完全无需配对监督和手工对应,靠语义嵌入做隐式对齐。
评分¶
- 新颖性: ⭐⭐⭐⭐ 「MLLM 关节语义 + FiLM 调制 + 拓扑无关潜流形」这一组合在角色动画里是新的,思路干净。
- 实验充分度: ⭐⭐⭐⭐ 单/联合训练、跨数据集零样本、重定向、消融、预训练扩展性都覆盖了;缺少感知评测和工业管线案例。
- 写作质量: ⭐⭐⭐⭐ 动机推理清晰,方法分块讲解到位;表格信息密度高但可读性 OK。
- 价值: ⭐⭐⭐⭐ 第一次把「任意 BVH 拓扑 + 多物种联合训练 + 零样本重定向」打通,给后续多物种 text-to-motion 和动画基础模型铺了路。