Categorical Codebook Matching for Embodied Character Controllers
Meta; University of Hong Kong
问题背景
在 AR/VR 与元宇宙场景中,需要把真实用户的动作实时映射到虚拟化身(avatar)上,形成”具身化”(embodied)的全身动画。与传统平面屏幕游戏不同,AR/VR 的输入是稀疏但精确的三维信号——头显和两个手柄的 6D 轨迹,即所谓的”三点追踪”(three-point tracking)问题。
这类问题有两个核心挑战:
- 精确性要求高:三点信号必须被精确跟随,而不能仅仅是方向性的近似,否则会破坏具身感。
- 信息高度不完整且有歧义:三点信号几乎不包含下半身信息。例如同一组头 + 双手信号,既可能对应坐下,也可能对应下蹲;但用户仍然期望生成真实合理的全身动作(如与走路同步的迈腿、重心转移时的脚步微调)。
现有方案各有短板:
- 动作匹配(Motion Matching):游戏工业界主流方法,用最近邻在动作数据库里实时挑选下一帧/短序列。受内存与运行时约束限制,无法覆盖任意用户动作,在三点追踪任务上跟踪误差很大。
- 神经网络方法:在导航/目标驱动任务上动作多样性好,但用于三点追踪时,除简单移动外难以生成真实的跳跃、舞蹈、体育动作等。
- 强化学习/物理方法:往往需要两阶段训练(先学动作先验,再学控制策略),或需要消费未来信号导致延迟,对 VR 不友好。
作者认为,三点追踪与目标驱动任务之间的差距在于缺乏未来信息,并据此提出一个端到端的具身角色控制框架。
核心方法
论文提出 Codebook Matching(码本匹配) 技术:同时学习动作流形(motion manifold)以及如何从流形中采样,两者在一个端到端的监督学习框架里联合训练,而非像已有工作那样分开训练动作先验与控制映射。
核心思想可用如下映射结构表述:
\[ \text{Training}: \begin{cases} Y \rightarrow Z_Y \rightarrow Y \\ X \rightarrow Z_X \\ Z_X \sim Z_Y \end{cases} \qquad \text{Inference}: X \rightarrow Z_X \rightarrow Y \]
其中 \(Y\) 是未来动作序列,\(X\) 是当前角色状态与未来控制信号,\(Z_X\) 和 \(Z_Y\) 是分别为输入与输出学习的两个类别概率分布(categorical probability distribution)。
关键设计有三点,区别于常规自回归控制器:
- 潜空间编码的是短序列而非单帧姿态,有助于保持时间连贯性。
- 控制信号走独立的 Input Encoder,而不是作为 condition 拼接进自编码器(否则训练时 \(Y\) 的恒等映射会让 \(X\) 失去作用)。
- 自编码器与 Input Encoder 同时端到端训练,监督损失定义在潜空间的类别概率分布上,让 Input Encoder 的输出去匹配自编码器的潜码,而不是在姿态空间监督。
由于网络预测的是”动作的概率”而非”直接预测动作”,它把歧义从动作生成转移到了动作选择上,从而避免了在潜空间因插值歧义导致的错误混合(blending)伪影。
动作流形作为类别码本
框架用向量量化(VQ)自编码器学习动作流形,每个潜码由 Gumbel-Softmax 方法形成的类别概率向量构成。重建损失为均方误差:
\[ Y \rightarrow Z_y \rightarrow Y' \qquad L_{Rec} = MSE(Y, Y') \]
每个码本向量是 \(C \times D\) 的结构,\(C\) 是通道数(行),\(D\) 是每个通道的维度(列)。这种由多个 one-hot 向量组成的组合式表示,能在码本中建模大范围动作。离散潜空间还能有效缓解自回归推理中的分布漂移问题——连续潜空间可能对未见输入产生错误插值,多步预测后逐渐偏离学到的分布。
通过码本匹配进行动作查询
为在推理时查询码本,作者为输入学习一个类似的 encoder,把当前状态与控制信号 \(X\) 映射到类别概率分布 \(Z_x\),用码本匹配损失让它逼近 \(Z_y\):
\[ X \rightarrow Z_x, \qquad L_{Match} = MSE(Z_x, Z_y) \]
推理时即可用 \(Z_x\) 替代 \(Z_y\)。类别采样还允许在相同输入下采样 \(K\) 个码向量 \(Z_{x_1} \dots Z_{x_K}\),从而提升动作多样性与采样稳定性(增加找到好过渡的概率)。训练时只从 \(Z_Y\) 采一个码重建每个序列,测试时在同一输入 \(X\) 下采样 \(K\) 个码。
总损失
\[ L = L_{Rec} + L_{Match} \]
值得注意的是,该框架不需要像原始 VQ-VAE 那样最小化单独的 VQ 损失。Gumbel-Softmax 对类别分布提供连续退火,配合直通估计器(STE)可直接匹配码本。
技术细节
具身角色控制框架分三个处理阶段,从稀疏输入生成全身化身动作:
-
阶段 1 — 控制预测(Control Prediction):用前馈全连接网络从追踪历史 \(T_P\)(过去 0.5s、31 帧的头显与手柄位置/旋转/速度)预测未来 0.5s 的一组运动轨迹 \(T_F^+\)(含上半身与根轨迹)。同时可把来自摇杆/按键的额外根轨迹 \(R_F\) 通过矩阵相乘以加性方式融合:\(T_F^* = R_F \cdot T_F^+\)。这样无需对不同输入模态做特殊处理即可统一控制。作者强调用”预测的未来”而非”历史”作为控制信号,对输入噪声更鲁棒、过渡更自然、更具前瞻性(proactive 而非 reactive)。
-
阶段 2 — 下半身回归(Lower Body Regression):用码本匹配架构以自回归方式预测下半身动作。输入 \(X = (S_i, C_F)\) 包含当前角色状态(根增量变换、局部姿态、脚接触标签、根锁定标签)与从未来轨迹提取的控制信号(线速度/角速度、髋部位置、上半身中心与朝向)。输出是未来 0.5s、\(N=16\) 帧的运动状态序列。推理时采样 \(K\) 个未来序列,通过计算各关节对到当前姿态的距离找到最佳候选并前进一帧,支持不同渲染帧率与插值。
-
阶段 3 — 全身融合(Full-Body Fusion):纯三点追踪时,把阶段 1 的上半身预测与阶段 2 的下半身混合,并用逆运动学(IK)对齐手腕、头部与髋部;使用摇杆/按键或混合控制时,则从生成的下半身历史与追踪位置预测上半身。用 0.5s 时长在混合与预测之间切换。
训练与推理配置:
- 数据集约 3 小时的非结构化动作捕捉数据(相同身体比例),涵盖多样的移动与交互行为,作为新的 AR/VR 人体动作数据集发布。
- 骨架 27 个关节(上半身 19 + 下半身 9),采用 6D 旋转表示。
- 每个 encoder/decoder 块两层 1024 的全连接隐层;码本大小 1024(128 通道 × 8 维),ELU 激活,dropout 0.25(码本 decoder 除外)。
- AdamW 优化器,150 epochs,学习率与权重衰减均为 \(10^{-4}\),余弦退火,batch size 32。RTX 4090 训练约 1 天。
- 目标帧率 30Hz,每帧推理约 3ms,模型总内存约 25MB,导出为 ONNX 用 Sentis 推理,在 Unity 引擎中实现。作者建议采样 10–20 个类别样本效果较好。
实验结果
移动(Locomotion):跟随预定义路径(含急转弯与变速)时,与动作匹配对比,本方法在响应性与跟踪精度上显著更优、抖动更少:
| 指标 | Motion Matching | Codebook Matching |
|---|---|---|
| 位置误差 (cm) | 16.1 | 2.6 |
| 旋转误差 (deg) | 27.6 | 5.1 |
| 动作细节 (deg/s) | 61.2 | 55.8 |
| 动作抖动 (mm/s) | 2.9 | 1.4 |
三点追踪(Three-Point Tracking):与动作匹配(MM)、基于相位的神经网络(PNN,使用 DeepPhase 特征)、条件变分自编码器(CVAE)对比。MM 动作细节高但跟踪误差严重;PNN/CVAE 跟踪精度好但动作细节下降(易出现下半身被上半身拖拽的漂移伪影)。本方法(CM)在多种动作(走路、手势、下蹲、跳跃、瞄准、拳击、网球、Beatsaber)上同时取得极低跟踪误差与高动作细节。
与专门为三点追踪设计的 SOTA 方法 AvatarPoser、AGRoL 对比(动作细节 deg/s,越接近 GT 越好):
| 动作 | GT | AvatarPoser | AGRoL | CM (Ours) |
|---|---|---|---|---|
| 挥臂走路 | 31.6 | 23.8 | 28.4 | 30.1 |
| 静臂走路 | 28.3 | 7.9 | 8.6 | 25.4 |
| 跑步 | 68.8 | 52.3 | 59.3 | 61.2 |
| 下蹲 | 41.3 | 9.2 | 13.2 | 33.2 |
| 非结构化 | 35.6 | 17.5 | 20.2 | 32.7 |
当手臂较为静止(上半身无明显模式)时,AvatarPoser 与 AGRoL 会出现严重漂移、缺少清晰迈步,而本方法依然能生成有决断力的腿部动作。本方法还能在相同三点历史下通过码本采样生成多样的下半身变体(如打网球时用不同支撑腿)。
混合控制(Hybrid Control):结合三点追踪与摇杆输入,可在真实世界保持站立/坐姿的同时,在虚拟世界执行具身移动行为,适用于空间受限的真实环境。论文给出了不同动作下追踪位置与生成位置的期望偏差(慢速动作偏差低,下蹲/体育动作偏差较高)。
游戏应用:实现了三个 VR 游戏场景——躲避障碍并变换姿态穿过缝隙、光剑切割目标、开放世界射击(混合控制下边站/坐边自由移动)。
碰撞规避(Collision Avoidance):巧妙地”从随机噪声学习”无碰撞姿态——用体素表示角色占据空间,占据体素占用值置零,其余体素随机加噪 \(O_i\),并将关节向最近空体素插值得到目标位置 \(T_j = (1-\alpha)P_j + \alpha V_k\)。无需真实几何数据训练,即可实时规避球体/立方体等图元乃至非凸几何(如椅子)的碰撞,还能为手指添加合理避穿插动作。这也说明该技术擅长在高低维特征空间之间建立映射。
消融实验(平均动作细节 deg/s):
| 消融配置 | 动作细节 |
|---|---|
| 完整方法 | 28.17 |
| 去掉类别采样 | 22.8 |
| 去掉端到端训练 | 19.6 |
| 去掉离散潜空间 | 14.6 |
离散潜空间贡献最大(动作细节几乎翻倍),端到端训练次之,类别采样也带来明显收益。
贡献与局限
主要贡献:
- 提出一个新颖的生成式框架,能学习执行多样动作技能的具身角色控制器。
- 通过匹配潜空间中两个类别概率分布,实现离散动作流形及其采样方式的端到端联合训练。
- 支持三点输入之外的多种传感器模态(摇杆、按键),同时保留用户原始动作语境。
- 发布了一个面向 AR/VR 的多样化人体动作数据集。
作者还给出了与动作匹配的类比:向量量化自编码器 = Database,Input Encoder = Projection,类别采样 = Search,码本 decoder = Decoding,预测的未来序列 = Stepping。相比动作匹配,本方法训练后无需保留数据、无需预先搭建动作匹配系统、搜索更稳定、精度更高、且大幅减少特征工程;同一姿态用同一码编码,表示更紧凑(避免了动作匹配的姿态重复问题)。
局限:
- 稀疏输入的固有歧义:静息或慢速动作下,三点历史几乎不变,下半身歧义大,可能选到看似合理但与用户真实下半身完全不同的姿态。改进方向包括引入头显相机图像或口袋中手机的 IMU 等额外传感器,但这些传感器可靠性受限。
- 化身形态支持有限:训练数据使用固定骨架布局,运行时靠输入缩放适配不同身高,无法直接支持不同体型/比例,也不支持多腿多臂、尾巴翅膀、四足或龙等非人形态。支持多样化身形态是未来重要方向。