HumanML3D 是一个 3D 人体运动语言数据集,源自 HumanAct12 和 Amass 数据集的组合。它涵盖了广泛的人类行为,例如日常活动(例如“行走”、“跳跃”)、体育运动(例如“游泳”、“打高尔夫球”)、杂技(例如“侧手翻”)和艺术表演(例如、“跳舞”)。
HumanML3D 中的每个动作剪辑都附带 3-4 个单句描述,并在 Amazon Mechanical Turk 上注释。动作被降采样为 20 fps,每个剪辑持续 2 到 10 秒。
总体而言,HumanML3D 数据集包含14,616 个动作和44,970 个描述,由5,371 个不同单词组成。动议总时长达28.59小时。平均动作长度为7.1秒,平均描述长度为12 个单词。
我们通过镜像所有运动并正确替换描述中的某些关键字(例如,“左”->“右”、“顺时针”->“逆时针”),将 HumanML3D 数据集的大小加倍。
KIT 运动语言数据集 (KIT-ML) 也是一个相关数据集,包含 3,911 个动作和 6,278 个描述。我们按照与 HumanML3D 数据集相同的过程处理 KIT-ML 数据集,并提供在此存储库中的访问。但是,如果您想使用 KIT-ML 数据集,请记住引用原始论文。
如果此数据集对您的项目有用,我们将感谢您在此代码库上的星星。 ??
?♀️ T2M - HumanML3D 的第一个工作,它学习使用时间 VAE从文本描述生成 3D 运动。
? TM2T - 通过离散动作标记学习文本和动作之间的相互映射。
? TM2D - 通过文本指令生成舞蹈动作。
? MoMask - 使用残差 VQ 和生成屏蔽建模的新级别 text2motion 生成。
对于KIT-ML数据集,您可以直接下载[这里]。由于AMASS数据集的分发政策,我们不允许直接分发数据。我们提供了一系列脚本,可以从 AMASS 数据集重现 HumanML3D 数据集。
您需要克隆此存储库并安装虚拟环境。
[2022/12/15] 更新:安装 matplotlib=3.3.4 可以防止生成的数据与参考数据出现微小偏差。查看问题
conda env create -f 环境.yaml conda 激活 torch_render
如果安装失败,您可以选择安装以下内容:
-Python==3.7.10 - 麻木 - Scipy - PyTorch - 全面质量管理 - 熊猫 - Matplotlib==3.3.4 // 仅用于动画 - ffmpeg==4.3.1 // 仅用于动画 - Spacy==2.3.4 // 仅适用于文本处理
从 SMPL+H 下载 SMPL+H 模式(选择 AMASS 项目中使用的扩展 SMPL+H 模型),从 DMPL 下载 DMPL 模型(选择与 SMPL 兼容的 DMPL)。然后将所有模型放在“./body_model/”下。
您需要运行以下脚本才能获取HumanML3D数据集:
raw_pose_processing.ipynb
运动表示.ipynb
cal_mean_variance.ipynb
这可以是可选的。如果您需要动画,请运行它。
动画.ipynb
请记住完成双重检查步骤。这些旨在检查您是否在获取 HumanML3D 数据集的正确轨道上。
毕竟,文件夹“./HumanML3D”下的数据就是您最终需要的。
<DATA-DIR>./animations.rar //所有运动剪辑的动画,mp4 格式。 ./new_joint_vecs.rar //从3d运动位置提取旋转不变特征和旋转特征向量。 ./new_joints.rar //3d 运动位置。 ./texts.rar //运动数据的描述。 ./Mean.npy //new_joint_vecs中所有数据的均值 ./Std.npy //new_joint_vecs中所有数据的标准差 ./all.txt //所有数据名称列表 ./train.txt //训练数据名称列表 ./test.txt //测试数据名称列表 ./train_val.txt //训练和验证数据名称列表 ./val.txt //验证数据名称列表 ./all.txt //所有数据名称列表
HumanML3D 数据遵循具有 22 个关节的 SMPL 骨架结构。 KIT-ML 有 21 个骨骼关节。有关详细的运动链,请参阅 paraUtils。
“MXXXXXX.*”(例如“M000000.npy”)中命名的文件是从相应名称“XXXXXX.*”(例如“000000.npy”)的文件镜像而来的。文本文件和运动文件遵循相同的命名协议,这意味着“./texts/XXXXXX.txt”中的文本(例如,'000000.txt')准确地描述了“./new_joints(或new_joint_vecs)/XXXXXX.npy”中的人体动作“(例如,'000000.npy')
每个文本文件如下所示:
一个人用左腿踢某物或某人。#a/DET man/名词踢/动词某物/PRON 或/CCONJ 某人/PRON with/ADP 他/DET 左/ADJ 腿/NOUN#0.0#0.0站立的人踢回到原来的姿势之前用左脚。#the/DET 站立/动词人/名词踢/动词与/ADP 他们/DET 左/ADJ 脚/名词之前/ADP go/动词返回/ADV到/ADP他们/DET原始/ADJ立场/名词#0.0#0.0一个男人用左腿踢某物或某人。#a/DET男人/名词踢/动词与/ADP某物/PRON或/CCONJ某人/PRON与/ADP他/DET左/ADJ腿/NOUN#0.0#0.0他用左腿飞踢#他/PRON是/AUX飞/动词踢/名词与/ADP他的/DET左/ADJ腿/名词#0.0#0.0
每行都有一个不同的文本注释,由四部分组成:原始描述(小写) 、处理后的句子、开始时间、结束时间,用#分隔。
由于某些动作太复杂而无法描述,因此如果需要,我们允许注释者描述给定动作的子部分。在这些情况下,开始时间和结束时间表示所注释的运动片段。尽管如此,我们观察到这些只占 HumanML3D 的一小部分。默认情况下,开始时间和结束时间设置为 0,这意味着文本正在为相应运动的整个序列添加字幕。
如果您无法安装 ffmpeg,您可以使用“.gif”而不是“.mp4”制作视频动画。然而,生成 GIF 通常需要较长的时间和内存占用。
如果您使用 KIT-ML 数据集,请考虑引用以下论文:
@article{Plappert2016, author = {Matthias Plappert and Christian Mandery and Tamim Asfour}, title = {The {KIT} Motion-Language Dataset}, journal = {Big Data} publisher = {Mary Ann Liebert Inc}, year = 2016, month = {dec}, volume = {4}, number = {4}, pages = {236--252}, url = {http://dx.doi.org/10.1089/big.2016.0028}, doi = {10.1089/big.2016.0028}, }
如果您使用 HumanML3D 数据集,请考虑引用以下论文:
@InProceedings{Guo_2022_CVPR, author = {Guo, Chuan and Zou, Shihao and Zuo, Xinxin and Wang, Sen and Ji, Wei and Li, Xingyu and Cheng, Li}, title = {Generating Diverse and Natural 3D Human Motions From Text}, booktitle = {Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)}, month = {June}, year = {2022}, pages = {5152-5161} }
如有任何问题或意见,请通过[email protected]联系郭川。