ITADN
PeizhuoLi/walk-the-dog
PeizhuoLi/walk-the-dog · 文件 下载 ZIP
文件最后提交记录最后更新时间
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

WalkTheDog:基于相位流形的跨形态运动对齐

Python Pytorch

本仓库提供了我们向量量化周期自编码器的实现。它学习一个不连续的 1D 相位流形,该流形能够在不依赖形态的情况下对齐运动,且无需配对数据或任何关节对应关系。它基于我们在 SIGGRAPH 2024 上发表的工作 WalkTheDog: Cross-Morphology Motion Alignment via Phase Manifolds

用于可视化的 Unity 项目,提供了一个单独的仓库,见 此处

前置条件

本代码已在 Ubuntu 20.04 下测试。在开始之前,请配置您的 Anaconda 环境

conda env create -f environment.yml
conda activate walk-the-dog

或者,您可以手动安装以下软件包(及其依赖项):

  • pytorch == 2.1.1
  • onnx == 1.16.0
  • numpy == 1.26.4
  • scikit-learn == 1.4.2
  • matplotlib == 3.8.4
  • tqdm

快速开始

我们为 Human-Loco 数据集和 Dog 数据集提供了预训练模型。要运行演示,请下载预处理后的数据集 here 并将其解压到仓库根目录下的 ./Datasets 目录中。此外,请下载预训练模型 here 并将其直接放置在仓库的根目录下。

要运行演示,请执行以下命令:

python test_vq.py --save=./pre-trained/human-dog

学习到的相位流形、平均姿态预测神经网络和码本将分别导出为 Manifold_*_final.npz 文件、.onnx 文件和 VQ.npz

从头开始训练

要了解如何使用 Unity 处理数据,请参阅我们的 Unity 仓库 here

在获取预处理数据后,您可以通过执行以下命令来训练模型:

python train_vq.py --load=dataset1path,dataset2path,dataset3path --save=./path-to-save

数据集应以逗号分隔,并存储在 ./Datasets 文件夹中。请注意,命令中的路径应排除 ./Datasets 前缀。您可以放入任意数量的数据集。训练好的模型将保存在 ./path-to-save 文件夹中。

训练完成后,您可以使用 test_vq.py 脚本生成 Unity 端所需的文件。

Motion Matching

我们在 Python 模块中提供了频率缩放运动匹配的离线实现。要复现论文中的结果,请在运行 test_vq.py 脚本后执行以下命令:

python offline_motion_matching.py --preset_name=human2dog --target_id=3

The target_id 参数指定了数据集中动作序列的索引,这与我们在 Unity 模块中的 Motion Editor 中的索引相同。

动作匹配结果将保存至 ./results/motion_matching/replay_sequence.npz

若要可视化动作匹配结果,请参阅 此处 的 Unity 仓库。

致谢

代码改编自 @sebastianstarkeAI4Animation 下的 DeepPhase 项目。

VectorQuantizer 的代码改编自 @lyndonzhengCVQ-VAE