根身分离的秘密深入Kimodo两阶段Transformer去噪器动作生成架构【免费下载链接】kimodoOfficial implementation of Kimodo, a kinematic motion diffusion model for high-quality human(oid) motion generation.项目地址: https://gitcode.com/gh_mirrors/ki/kimodoKimodo是官方开源的运动学动作扩散模型kinematic motion diffusion model用于高质量人(类人)动作生成——从一句文字描述就能合成行走、跳跃、交互等逼真人体动作。其核心正是两阶段 Transformer 去噪器先把角色的根轨迹与身体姿态解耦先生成根、再生成身。本文将深入拆解这一根身分离设计背后的原理与实现。为什么根身分离动作生成的核心痛点直接让模型一次性预测整段人体动作所有关节旋转 根节点位移往往面临两个难题全局位移难学根轨迹角色在场景中走了多远、朝哪个方向是长程、低频信号和身体局部运动混在一起会让扩散去噪过程顾此失彼坐标系耦合身体姿态相对于根节点是局部信号若与全局坐标一起生成模型必须同时处理绝对位置与相对姿态学习难度倍增。Kimodo 的解法非常干脆把动作特征在数据结构层面拆成根与身两部分用两个 Transformer 分阶段生成。这个设计就写在动作表示里特征块维度归属smooth_root_pos平滑根位置 global_root_heading全局朝向3 2 5全局根Global Rootlocal_joints_positions、global_rot_data、velocities、foot_contacts其余身体Body特征布局定义在 kimodo_motionrep.py根/身的切片划分root_slice/body_slice在 base.py 中统一计算。平滑根轨迹把走位从晃动中分离根并不是直接拿骨盆位置而是先经过平滑处理smooth_root.py 中的TrajectorySmoother基于 ADMM 求解最小化加速度、并支持软约束如关键帧定点。效果如下图所示——上方是行走角色下方红色曲线中**Projected Pelvis骨盆投影**上下起伏而Smoothed Root平滑根是一条几乎笔直的路径。这意味着平滑根只负责角色大致去哪而身体的上下颠簸、摆动全部由局部关节偏移承担。根与身在信息上彻底解耦这正是根身分离的精髓。两阶段 Transformer 去噪器动作生成的两步流水线核心实现位于 twostage_denoiser.py。官方架构图完整展示了两阶段流程第一阶段Root Denoiser 先生成全局根轨迹在 forward 流程 中root_model一个独立的TransformerEncoderBlock接收带噪动作特征 文本嵌入 扩散时间步只输出 5 维全局根特征根位置 朝向。关键技巧训练时预测出的局部根信号会detach()断开梯度L129-L130让第二阶段相当于以教师信号为条件推理时则放开梯度以支持 classifier-free guidance 等引导策略L121-L122。Global-to-Local一次巧妙的坐标系转换全局根预测完成后global_root_to_local_root 将其转换为局部根表示4 维local_root_rot_vel朝向角速度1 维local_root_vel平面速度2 维global_root_y根高度1 维这一步把绝对坐标翻译成相对运动与身体特征同处一个局部坐标系第二阶段的学习难度大幅下降。第二阶段Body Denoiser 以根为条件生成身体body_model 的输入是[预测的局部根 带噪身体特征]的拼接输出全部身体特征。最后把两阶段结果拼回完整动作L152输出 concat([ 全局根预测, 身体预测 ])两个阶段共享同一个骨干结构 TransformerEncoderBlock文本 token、扩散时间步及可选的首帧朝向角作为前缀 token拼接在动作序列之前一起进入标准 Transformer Encoder 做自注意力去噪forward 实现。这套架构好在哪分而治之位移低频、全局与姿态高频、局部由各自专精的子网络建模去噪更稳定条件传递而非重新预测第二阶段直接复用第一阶段的根预测结果保证根与身天然一致不出现腿踩空式的错位可扩展的约束注入在concat模式下约束掩码motion_mask与观测动作可拼接进输入L98-L105支撑关键帧、末端执行器约束等高级功能工程清晰整个生成流程由 kimodo_model.py 统一调度扩散采样与后处理推理时可直接复用。关键源码导航想深入源码的朋友可按以下路径阅读两阶段去噪器kimodo/model/twostage_denoiser.pyTransformer 骨干与位置编码kimodo/model/backbone.py动作表示与根/身特征布局kimodo/motion_rep/reps/kimodo_motionrep.py全局根↔局部根转换kimodo/motion_rep/reps/base.pyADMM 轨迹平滑器kimodo/motion_rep/smooth_root.py采样与后处理kimodo/model/kimodo_model.py总结Kimodo 用一次优雅的根身分离回答了一个经典问题动作生成应该一次预测还是分步预测答案是分步——先用 Root Denoiser 在全局坐标里定下角色走位经 Global-to-Local 转换后再由 Body Denoiser 在局部坐标里长出身体。两阶段 Transformer 去噪器 平滑根轨迹共同构成了 Kimodo 高质量动作生成的底层秘密。【免费下载链接】kimodoOfficial implementation of Kimodo, a kinematic motion diffusion model for high-quality human(oid) motion generation.项目地址: https://gitcode.com/gh_mirrors/ki/kimodo创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考