FLAME: 基于自由形式语言的动作合成与编辑
《FLAME: 基于自由形式语言的动作合成与编辑》(AAAI'23)论文的官方实现
生成样本
环境
本项目在以下环境中测试通过。请在您的运行环境中安装它们。
前提条件
软件包
您可能需要以下软件包来运行此仓库。
apt install libboost-dev libglfw3-dev libgles2-mesa-dev freeglut3-dev libosmesa6-dev libgl1-mesa-glx
数据集
:exclamation: 为遵守许可协议,我们不能直接提供原始数据文件。
AMASS 数据集
访问 https://amass.is.tue.mpg.de/ 下载 AMASS 数据集。我们使用了 AMASS 中以下数据集的 SMPL+H G:
- ACCAD
- BMLhandball
- BMLmovi
- BMLrub
- CMU
- DanceDB
- DFaust
- EKUT
- EyesJapanDataset
- HDM05
- Human4D
- HumanEva
- KIT
- Mosh
- PosePrior
- SFU
- SSM
- TCDHands
- TotalCapture
- Transitions
下载的数据以 bz2
格式压缩。所有下载的文件需要放在 data/amass_download_smplhg
目录下。
BABEL
访问 https://babel.is.tue.mpg.de/ 下载 BABEL 数据集。在实验时,我们使用了 babel_v1.0_release
。
BABEL 数据集应位于 data/babel_v1.0_release
目录下。data/babel_v1.0_release
下的文件结构如下:
.
├── extra_train.json
├── extra_val.json
├── test.json
├── train.json
└── val.json
HumanML3D
您可以在 HumanML3D 获取完整的 HumanML3D 数据集。但是,我们使用了原始的 AMASS SMPL 数据,而不是自定义的骨骼。运行此仓库需要准备的内容如下:
./data/HumanML3D/
├── humanact12
├── HumanML3D.csv
├── test.txt
├── texts.zip
├── train.txt
└── val.txt
请注意,上述文件位于:data/HumanML3D/
。请下载 humanact12
和 HumanML3D.csv
。您可以从原始仓库下载其他文件。
SMPL 和 DMPL 模型
您可能需要 SMPL 和 DMPL 来预处理动作数据。请参考 AMASS 获取这些模型。smpl_model
和 dmpl_model
应位于项目根目录中。
SMPL
smpl_model/
├── female
│ └── model.npz
├── info.txt
├── LICENSE.txt
├── male
│ └── model.npz
└── neutral
└── model.npz
DMPL
dmpl_model/
├── female
│ └── model.npz
├── LICENSE.txt
├── male
│ └── model.npz
└── neutral
└── model.npz
外部源
为了可视化,您可能需要以下软件包。
安装
- 创建虚拟环境并激活。
conda create -n flame python=3.8
conda activate flame
- 安装所需包。建议先安装相应版本的PyTorch和PyTorch3D。
pip install "git+https://github.com/facebookresearch/pytorch3d.git@stable" # PyTorch3D
-
按照安装指南安装VPoser和PyOpenGL及PyOpenGL_Accelerate。
-
安装其他所需包。
pip install -r requirements.txt
预处理
- 预处理AMASS数据集。
./scripts/unzip_dataset.sh
这将把下载的AMASS数据解压到data/amass_smplhg。你也可以手动解压数据。
- 准备HumanML3D数据集。
python scripts/prepare_humanml3d.py
- 准备BABEL数据集。
python scripts/prepare_babel_dataset.py
训练
你可以通过运行以下命令来训练自己的模型。
训练配置可以通过configs/
中的配置文件或命令行参数(hydra格式)设置。
python train.py
测试
测试需要很长时间,因为它需要生成测试集中的所有样本。 你需要使用configs/test.yaml
中的适当配置设置运行test.py
。然后,你可以运行eval_util.py
来评估结果。
采样
文本到动作生成
在configs/t2m_sample.yaml
中设置你的采样配置。采样结果将保存在outputs/
中。你可以导出json
输出以在Unity引擎中可视化。导出的json
包括根关节的位置和所有其他关节的四元数格式旋转。
python t2m_sample.py
文本到动作编辑
在configs/edit_motion.yaml
中设置你的文本到动作编辑配置。你可以选择要编辑的动作、编辑关节和文本提示。采样结果将保存在outputs/
中。
python edit_motion.py
关节索引
- 00: 骨盆
- 01: 左髋
- 02: 右髋
- 03: 脊柱1
- 04: 左膝
- 05: 右膝
- 06: 脊柱2
- 07: 左踝
- 08: 右踝
- 09: 脊柱3
- 10: 左脚
- 11: 右脚
- 12: 颈部
- 13: 左锁骨
- 14: 右锁骨
- 15: 头部
- 16: 左肩
- 17: 右肩
- 18: 左肘
- 19: 右肘
- 20: 左腕
- 21: 右腕
- 22: 左手
- 23: 右手
预训练权重
HumanML3D
BABEL
引用
@article{kim2022flame,
title={Flame: Free-form language-based motion synthesis \& editing},
author={Kim, Jihoon and Kim, Jiseob and Choi, Sungjoon},
journal={arXiv preprint arXiv:2209.00349},
year={2022}
}
许可证
版权所有 (c) 2022 高丽大学和Kakao Brain公司。保留所有权利。根据Apache许可证2.0版授权。(详见LICENSE)