# xrmogen **Repository Path**: OpenXRLab/xrmogen ## Basic Information - **Project Name**: xrmogen - **Description**: OpenXRLab Human Motion Generation Codebase - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 0 - **Created**: 2022-12-18 - **Last Updated**: 2025-09-05 ## Categories & Tags **Categories**: vrar **Tags**: None ## README

## 介绍 https://user-images.githubusercontent.com/81355712/187817864-37c984a5-032d-492b-8314-493a23c27e5e.mp4 XRMoGen 是一个开源的动作生成代码库。 目前,XRMoGen中包含以下两种舞蹈生成的方法: - Bailando: Siyao *et al.*, Bailando: 3D Dance Generation by Actor-Critic GPT with Choreographic Memory, CVPR 2022 - DanceRevolution: Huang *et al.*, Dance Revolution: Long-Term Dance Generation with Music via Curriculum Learning, ICLR 2021 关于安装部分的介绍,参见[installation.md](docs/zh_cn/installation.md)。 - [上手指南](#上手指南) - [数据集](#数据集) - [构建模型](#构建模型) - [如何构建新的模型](#如何构建新的模型) - [模型训练](#模型训练) - [Epoch 控制](#epoch-控制) - [训练](#训练) - [测试](#测试) - [可视化](#可视化) - [教程](#教程) ## 数据集 我们推荐使用预提取特征的音乐和动作数据,参见[dataset_preparation.md](docs/zh_cn/dataset_preparation.md)。 下载后解压至$PROJECT/data。为了方便在生成舞蹈后合成有音乐的视频,建议将原始音乐(.mov)下载到同一目录的的musics文件夹下: ``` xrmogen ├── mogen ├── docs ├── configs ├── data │ ├── aistpp_train_wav │ ├── aistpp_test_full_wav │ ├── aistpp_music_feat_7.5fps │ ├── aist_features_zero_start │ ├── musics ├── ... ``` ## 构建模型 模型结构由配置文件(config)来控制。 ### 如何构建新的模型 要实现新的方法,模型需要包含以下的函数/方法以适应当前的训练/测试流程: - `train_step()`: 模型训练的正向过程; - `val_step()`: 模型测试的正向过程; - 将模型注册为一个DANCE_MODELS 具体来说,如果我们想实现一个新模型,有几件事要做: 1. 在`mogen/models/dance_models/`下创建一个新模型`my_model.py`: ```python from ..builder import NETWORKS from ...builder import DANCE_MODELS @DANCE_MODELS.register_module() class MyDanceModel(nn.Module): def __init__(self, model_config): super().__init__() def forward(self, ...): .... def train_step(self, data, optimizer, **kwargs): .... def val_step(self, data, optimizer=None, **kwargs): .... ``` 2. 在`mogen/models/__init__.py`中导入新模型: ```python from .my_model import MyDanceModel ``` 3. 将新模型的构建参数写进需要的config文件: ```python model = dict( type='MyDanceModel', .... ``` ## 模型训练 ### Epoch 控制 XRMoGen 使用 `mmcv.runner.EpochBasedRunner` (以epoch为单位)去训练和测试模型. 在训练模式下, config文件中的 `max_epochs` 参数决定了模型被训练多少epoch。 在测试模式下, `max_epochs` 被强制设置为1,即将测试数据测试一遍。 训练、测试交替的频率在config文件中的 `workflow` 设定: ```python workflow = [('train', 20), ('val', 1)] ``` ### 训练 比如,为了训练DanceRevolution模型,运行以下命令 ```shell python main.py --config configs/dance_rev.py ``` 参数: - `--config`: config 文件路径 ### 测试 测试相应的模型,只需要在config路径后添加 `--test_only`。 我们提供一些与训练的模型权重进行测试(参见[pretrained_model_list.md](docs/zh_cn/pretrained_model_list.md)。将预训练模型下载至文件夹`./example`中,运行 ```shell python main.py --config configs/bailando_test.py --test_only ``` 来生成舞蹈动作。所生成的舞蹈将以.pkl格式存于config文件中所设置的`workdir`下(在本例中是"./bailando_test")。 对生成的舞蹈动作计算量化指标: ```python python tools/eval_quantitative_scores.py --pkl_root ./bailando_test/test/epoch0 --gt_root data/aist_features_zero_start --music_feature_root data/aistpp_test_full_wav ``` 测试结果应和[benchmark.md](docs/zh_cn/benchmark.md)相吻合。 ### 可视化 ```python python tools/visualize_dance_from_pkl.py --pkl_root ./bailando_test/test/epoch0 --audio_path data/musics/ ``` ## 教程 目前我们提供以下教程 * [configs](tutorials/config.md) * [data pipeline](tutorials/data_pipeline.md) * [model](tutorials/model.md) ## 许可 我们代码库的许可证是Apache-2.0。请注意,此许可仅适用于我们库中的代码,其依赖项是单独许可的。我们向我们所依赖的开源实现致敬。请注意,使用依赖项的内容可能会影响我们代码库的许可。请参阅[许可证](LICENSE)以查看完整许可证。 ## 引用 ```bibtex @misc{xrmogen, title={OpenXRLab Motion Generation Codebase}, author={XRMoGen Contributors}, howpublished = {\url{https://github.com/openxrlab/xrmogen}}, year={2022} } ``` ## 参与贡献 我们非常欢迎用户对于 XRMoGen 做出的任何贡献,可以参考 [CONTRIBUTION.md](.github/CONTRIBUTING.md) 文件了解更多细节。 ## 致谢 XRMoGen 是一款由学校和公司共同贡献的开源项目。我们感谢所有为项目提供算法复现和新功能支持的贡献者,以及提供宝贵反馈的用户。 我们希望该工具箱和基准测试可以为社区提供灵活的代码工具,供用户复现现有算法并开发自己的新模型,从而不断为开源社区提供贡献。 ## OpenXRLab中的其他项目 - [XRPrimer](https://github.com/openxrlab/xrprimer): OpenXRLab foundational library for XR-related algorithms. - [XRSLAM](https://github.com/openxrlab/xrslam): OpenXRLab Visual-inertial SLAM Toolbox and Benchmark. - [XRSfM](https://github.com/openxrlab/xrsfm): OpenXRLab Structure-from-Motion Toolbox and Benchmark. - [XRLocalization](https://github.com/openxrlab/xrlocalization): OpenXRLab Visual Localization Toolbox and Server. - [XRMoCap](https://github.com/openxrlab/xrmocap): OpenXRLab Multi-view Motion Capture Toolbox and Benchmark. - [XRMoGen](https://github.com/openxrlab/xrmogen): OpenXRLab Human Motion Generation Toolbox and Benchmark. - [XRNeRF](https://github.com/openxrlab/xrnerf): OpenXRLab Neural Radiance Field (NeRF) Toolbox and Benchmark.