SKEL
本仓库是 Siggraph Asia 2023 论文"从皮肤到骨骼:迈向生物力学准确的3D数字人类"的代码发布的一部分。
此仓库包含 PyTorch SKEL 加载器和将其对齐到 SMPL 序列的代码。
SKEL 是一个参数化的身体形状和骨骼模型。其形状参数让你可以改变身体形状,而姿势参数则让你以解剖学上合理的方式调整骨骼姿势。给定形状和姿势参数,SKEL 会返回关节位置、身体网格和骨骼网格。SKEL 是可微分的,可以拟合各种数据,如动作捕捉或 SMPL 序列。
更多详情,请查看我们的 Siggraph 2023 论文:从皮肤到骨骼:迈向生物力学准确的3D数字人类。
目录
快速开始
对于最小化使用,你需要按照设置环境和下载 SKEL中的安装说明进行操作。
要测试 SKEL 模型,你可以运行:
python quickstart.py
这将运行 SKEL 的前向传播,并将输出保存为分离的身体和骨骼网格。
然后你可以尝试更改 SKEL 参数,了解以下内容。SKEL 由两个参数控制:
-
betas
控制身体的形状(高、矮、瘦等)。它是一个大小为 10 的向量。值应该保持在 -2 到 2 之间。向量的第一个值大致控制身高,第二个值控制体重。 -
pose
控制身体姿势。它是一个大小为 46 的向量,大多数值是以弧度表示的角度,可以在 -3.14 到 3.14 之间变化。你可以在这里看到 46 个参数中的哪一个控制哪个身体关节。
SKEL(beta, pose) 产生:
- 一个骨骼 3D 网格
- 一个身体网格
- 解剖学关节位置
本 README 的其余部分将让你设置我们的 SKEL 可视化工具并运行一些演示代码。我们希望你喜欢我们的工作!
安装
设置环境
克隆此仓库
git clone https://github.com/MarilynKeller/SKEL
cd SKEL
创建虚拟环境并安装 SKEL 包
pip install -U pip
python3.8 -m venv skel_venv
source skel_venv/bin/activate
pip install git+https://github.com/mattloper/chumpy
pip install -e .
下载 SKEL
在 https://skel.is.tue.mpg.de/ 创建一个账户(下载必需)。
然后从下载页面使用"下载模型"按钮下载 SKEL 模型。
解压下载的文件夹,并编辑 SKEL/skel/config.py
文件,指定包含下载的 SKEL 模型文件夹的路径:skel_folder = '/path/to/skel_models_v1.0
下面,我们将解释如何为 SKEL 设置可视化工具(仅支持 Linux 和 Mac),并运行一些示例代码。
Aitviewer
如果你想运行演示,还需要我们的 aitviewer 分支用于可视化:
cd ..
git clone https://github.com/MarilynKeller/aitviewer-skel.git
cd aitviewer-skel
pip install -e .
然后编辑 aitviewer/aitviewer/aitvconfig.yaml
文件,指向 SKEL 文件夹:
skel_models: "/path/to/skel_models_v1.0"
SMPL 和 MPI 网格包
!请注意,MPI 网格包仅支持 Linux 系统。如果你不是在 Linux 上,你需要注释掉依赖 psbody.mesh 包的代码,并编写自己的可视化代码。
如果你想运行 SMPL 对齐,你需要下载 SMPL 模型。 首先,在 https://smpl.is.tue.mpg.de/ 创建一个账户。 然后从下载页面下载这个文件:SMPL_python_v.1.1.0.zip。运行:
cd ../SKEL
python scripts/setup_smpl.py /path/to/SMPL_python_v.1.1.0.zip
为了可视化拟合过程,你需要 MPI 网格包,可以用以下命令安装:
pip install git+https://github.com/MPI-IS/mesh.git
请注意,mesh包仅在Linux上支持,但它只在可视化拟合过程中必需。
演示
姿势参数
可视化SKEL姿势参数的效果:
python examples/skel_poses.py --gender male
形状空间
可视化形状空间:
python examples/skel_betas.py --gender female
绑定
可视化皮肤和骨骼到SKEL运动学树的蒙皮权重:
python examples/skel_rigging.py --gender female
可视化SKEL的运动学树和关节位置:
python examples/skel_kintree.py --gender female
你可以在这里看到关节ID的可视化,以及在这里查看它们的名称和自由度列表。
SKEL序列
可视化SKEL序列。你可以在skel_models_v1.0/sample_motion/
中找到一个SKEL运动样本和相应的SMPL运动。
python examples/skel_sequence.py /path/to/skel_models_v1.x/sample_motion/01_01_poses_skel.pkl -z
要同时可视化SMPL序列:
python examples/skel_sequence.py /path/to/skel_models_v1.0/sample_motion/01_01_poses_skel.pkl -z --smpl_seq /path/to/skel_models_v1.0/sample_motion/01_01_poses.npz
将SKEL对齐到SMPL网格
SKEL可以对齐到SMPL网格:
python examples/align_to_SMPL_frame.py --smpl_data 'examples/samples/img_fit/emily-sea-coiWR0gT8Cw-unsplash_0.npz'
将SKEL对齐到SMPL序列
SKEL可以对齐到SMPL序列,以下是一个例子:
python examples/align_to_SMPL_seq.py examples/samples/amass_seq/CMU_01_01.npz -D
你可以使用以下命令可视化结果:
python examples/skel_sequence.py output/CMU_01_01/CMU_01_01_skel.pkl -z
你可以从AMASS下载页面下载更多此类SMPL序列,选择SMPL+H G
序列。
致谢
这项研究部分在斯坦福大学的The Movement Lab和马克斯普朗克智能系统研究所的Perceiving Systems完成。
我们感谢Neelay Shah生成所有必要的SMPL拟合,A. A. Osman在参数化人体模型方面的专业知识,Shashank Tripathi在MOYO方面的帮助,Giorgio Becherini在AMASS和动作捕捉拟合评估方面的专业知识,Peter Kultis、Yao Feng和Yuliang Xu对论文的反馈。 我们还感谢斯坦福大学的TML实验室和NMBL实验室的富有成效的讨论,特别是Jennifer Maier在肩部方面的专业知识。
引用
如果您使用此软件,请引用以下工作和软件:
@inproceedings{keller2023skel,
title = {From Skin to Skeleton: Towards Biomechanically Accurate 3D Digital Humans},
author = {Keller, Marilyn and Werling, Keenon and Shin, Soyong and Delp, Scott and
Pujades, Sergi and Liu, C. Karen and Black, Michael J.},
booktitle = {ACM ToG, Proc.~SIGGRAPH Asia},
volume = {42},
number = {6},
month = dec,
year = {2023},
}
许可证
此代码和模型仅供非商业科研用途使用,详见LICENSE.txt文件中的定义。
联系方式
如有任何关于SKEL加载的问题,请联系skel@tuebingen.mpg.de。
商业许可请联系ps-licensing@tue.mpg.de。