MotionGPT数据格式详解:Bvh与Npy文件的相互转换

【免费下载链接】MotionGPT [NeurIPS 2023] MotionGPT: Human Motion as a Foreign Language, a unified motion-language generation model using LLMs 【免费下载链接】MotionGPT 项目地址: https://gitcode.com/gh_mirrors/mo/MotionGPT

MotionGPT作为NeurIPS 2023的创新成果,是一个统一的动作-语言生成模型,它能够将人类动作视为一种"外语"进行处理和生成。在MotionGPT的应用过程中,理解和处理Bvh与Npy这两种关键数据格式至关重要,本文将详细解析这两种格式的特点以及它们之间的相互转换方法。

数据格式概述:Bvh与Npy的特点

Bvh(Biovision Hierarchy)是一种广泛用于存储生物运动数据的文件格式,它包含骨骼层次结构和关节旋转信息,非常适合表示复杂的人体动作序列。而Npy是NumPy库使用的二进制文件格式,能够高效存储和加载多维数组数据,在MotionGPT中常用于存储经过处理的动作特征向量。

MotionGPT的核心处理流程涉及将原始动作数据转换为模型可理解的特征表示。下面的流程图展示了MotionGPT如何将输入的文本或动作数据通过编码器转换为 tokens,再经过语言模型处理后生成目标动作:

MotionGPT处理流程图 图:MotionGPT的动作-语言处理 pipeline,展示了数据在模型中的流动过程

Npy文件在MotionGPT中的应用

在MotionGPT项目中,Npy格式被广泛用于存储和传输动作数据。通过分析项目代码,我们可以看到Npy文件在多个关键环节发挥作用:

  • 数据存储:在app.py中,生成的动作特征会被保存为Npy文件,如代码所示:

    np.save(output_npy_path, feats)
    
  • 渲染输入render.py中专门处理Npy格式的输入文件,支持两种渲染模式:

    • 网格渲染:处理以_mesh.npy结尾的文件
    • 关节渲染:处理其他普通Npy文件
  • 模型输出:在mGPT/models/base.py中,模型生成的动作结果会被保存为Npy文件,方便后续处理和可视化。

Bvh到Npy的转换方法

虽然MotionGPT项目中没有直接提供Bvh到Npy的转换脚本,但我们可以通过以下步骤实现这一转换:

  1. 解析Bvh文件:使用Python的bvh库或自定义解析器提取骨骼结构和关节旋转数据
  2. 数据预处理:将提取的动作数据转换为模型所需的特征表示,可能涉及:
    • 关节坐标计算
    • 旋转矩阵转换
    • 标准化处理
  3. 保存为Npy格式:使用NumPy库将处理后的特征数据保存为Npy文件

相关的处理逻辑可以参考mGPT/data/transforms/目录下的代码,该目录包含了多种动作数据转换工具,如关节到旋转的转换、旋转到关节的转换等。

Npy到Bvh的转换方法

将Npy格式的动作特征转换回Bvh文件需要更多的步骤,因为需要从特征向量重建骨骼层次结构和运动数据:

  1. 加载Npy文件:使用NumPy加载动作特征数据
  2. 特征解码:通过MotionGPT的解码器将特征向量转换为关节旋转数据
  3. 构建Bvh结构:定义骨骼层次和关节名称
  4. 写入Bvh文件:按照Bvh格式规范,将骨骼结构和运动数据写入文件

项目中的scripts/fbx_output.pyscripts/fbx_output_smplx.py提供了将动作数据转换为FBX格式的参考,可以作为开发Npy到Bvh转换工具的基础。

实际应用示例

在MotionGPT中,Npy文件常用于Web界面的交互。在app.py中,生成的动作结果会以Npy格式提供下载,用户可以通过界面按钮获取:

💡 After generation, you can click the button in the top right of generation human motion result to download the human motion video or feature stored in .npy format.

对于批量处理需求,可以使用fit.py脚本,它支持处理多个Npy文件并生成对应的渲染结果:

print(f"begin to render {len(paths)} npy files!")

总结与最佳实践

Bvh和Npy格式在MotionGPT中各有其应用场景:Bvh适合存储原始动作捕捉数据,而Npy则适合存储模型处理后的特征向量。在实际应用中,建议:

  1. 保留原始Bvh文件作为数据源
  2. 使用Npy格式进行模型训练和推理
  3. 建立清晰的文件命名规范,如使用_mesh.npy标识网格数据
  4. 利用scripts/plys2npy.py等工具进行数据格式转换和预处理

通过合理使用这两种格式,能够高效地进行动作数据的存储、处理和传输,充分发挥MotionGPT模型的能力。

【免费下载链接】MotionGPT [NeurIPS 2023] MotionGPT: Human Motion as a Foreign Language, a unified motion-language generation model using LLMs 【免费下载链接】MotionGPT 项目地址: https://gitcode.com/gh_mirrors/mo/MotionGPT

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐