PanopticStudio 工具箱
这个仓库包含了一个用于下载、处理和可视化 Panoptic Studio(全景)数据的工具箱。
注意:
- 2024年5月14日:我们在首尔国立大学建立了一个镜像服务器。
您仍可以使用原始的 CMU 服务器,如果 CMU 服务器没有响应,您可以在
getData.sh
和getData_kinoptic
脚本中简单地添加--snu-endpoint
选项来使用首尔国立大学的端点。
快速入门指南
按照以下步骤设置一个简单的示例:
1. 检出代码库
git clone https://github.com/CMU-Perceptual-Computing-Lab/panoptic-toolbox
cd panoptic-toolbox
2. 下载示例数据和其他数据
要下载数据集,在本例中名为 "171204_pose1_sample",运行以下脚本。
./scripts/getData.sh 171204_pose1_sample
这个 bash 脚本需要 curl 或 wget。
该脚本将创建一个 "./171204_pose1_sample" 文件夹并下载以下文件。
- 171204_pose1_sample/hdVideos/hd_00_XX.mp4 #同步的高清视频文件(31个视角)
- 171204_pose1_sample/vgaVideos/KINECTNODE%d/vga_XX_XX.mp4 #同步的 VGA 视频文件(480个视角)
- 171204_pose1_sample/calibration_171204_pose1_sample.json #校准文件
- 171204_pose1_sample/hdPose3d_stage1_coco19.tar #3D 身体关键点数据(coco19关键点定义)
- 171204_pose1_sample/hdFace3d.tar #3D 面部关键点数据
- 171204_pose1_sample/hdHand3d.tar #3D 手部关键点数据
注意,这个示例目前不包含 VGA 视频。
您也可以通过这个脚本下载任何其他序列。只需使用目标序列的名称:而不是 "171204_pose1panopticHD"。 例如,
./scripts/getData.sh 171204_pose1
用于 171204_pose1 序列的完整版本。 您还可以指定要下载的视频数量。
./scripts/getData.sh (序列名) (VGA视频数量) (HD视频数量)
例如,以下命令将下载 240 个 VGA 视频和 10 个视频。
./scripts/getData.sh 171204_pose1_sample 240 10
注意,我们已经对 VGA 相机顺序进行了排序,以便您下载均匀分布的视图。
3. 下载所有可用序列
您可以在以下链接中找到当前可用序列的列表:
下载所有序列(包括视频)可能需要很长时间,但下载 3D 关键点文件(身体+面部+手部,如果可用)应该"相对"较快。
您可以使用以下脚本下载当前可用的序列(版本 1.2):
./scripts/getDB_panopticHD_ver1_2.sh
默认设置不下载任何视频。如果您也想下载视频,可以随意更改脚本中的 "vgaVideoNum" 和 "hdVideoNum" 为其他数字。
您可以在我们的网站上查看每个序列的示例视频和其他信息: 浏览数据集。
查看每个序列页面中的 3D 查看器,您可以在网络浏览器中可视化 3D 骨架。例如: http://domedb.perception.cs.cmu.edu/panopticHDpose1.html
4. 提取图像和 3D 关键点数据
这一步需要 ffmpeg。
./scripts/extractAll.sh 171204_pose1_sample
这将提取图像,例如 171204_pose1_sample/hdImgs/00_00/00_00_00000000.jpg
,以及相应的 3D 骨架数据,例如 171204_pose1_sample/hdPose3d_stage1_coco19/body3DScene_00000000.json
。
extractAll.sh
是一个简单的脚本,它组合了以下一组命令(您不需要再次运行这些命令):
cd 171204_pose1_sample
../scripts/vgaImgsExtractor.sh # 从 VGA 视频提取 PNG 文件(25 fps)
../scripts/hdImgsExtractor.sh # 从高清视频提取 PNG 文件(29.97 fps)
tar -xf vgaPose3d_stage1.tar # 提取 VGA 帧率的骨架
tar -xf hdPose3d_stage1.tar # 提取高清视频的骨架
cd ..
5. 运行演示程序
Python
这些代码需要 numpy 和 matplotlib。
可视化 3D 关键点(身体、面部、手部):
cd python
jupyter notebook demo_3Dkeypoints_3dview.ipynb
结果应该类似于 这个。
在选定的高清视图上重投影 3D 关键点(身体、面部、手部):
cd python
jupyter notebook demo_3Dkeypoints_reprojection_hd.ipynb
结果应该类似于 这个。
Python + OpenGL
-
这些代码需要 pyopengl。
-
可视化 3D 关键点(身体、面部、手部):
python glViewer.py
Matlab
注意:Matlab 代码已过时,不处理 3D 关键点输出(coco19 身体、面部、手部)。 请仅将此代码作为参考。我们稍后会更新。
Matlab 示例(已过时):
>>> cd matlab
>>> demo
骨架输出格式
我们使用 Joo et al. 2018 的方法重建人的 3D 骨架。
每一帧的输出都写入一个 json 文件中。例如,
{ "版本": 0.7,
"通用时间" :53541.542,
"帧率类型" :"hd_29_97",
"人体" :
[
{ "id": 0,
"19个关节": [-19.4528, -146.612, 1.46159, 0.724274, -40.4564, -163.091, -0.521563, 0.575897, -14.9749, -91.0176, 4.24329, 0.361725, -19.2473, -146.679, -16.1136, 0.643555, -14.7958, -118.804, -20.6738, 0.619599, -22.611, -93.8793, -17.7834, 0.557953, -12.3267, -91.5465, -6.55368, 0.353241, -12.6556, -47.0963, -4.83599, 0.455566, -10.8069, -8.31645, -4.20936, 0.501312, -20.2358, -147.348, 19.1843, 0.628022, -13.1145, -120.269, 28.0371, 0.63559, -20.1037, -94.3607, 30.0809, 0.625916, -17.623, -90.4888, 15.0403, 0.327759, -17.3973, -46.9311, 15.9659, 0.419586, -13.1719, -7.60601, 13.4749, 0.519653, -38.7164, -166.851, -3.25917, 0.46228, -28.7043, -167.333, -7.15903, 0.523224, -39.0433, -166.677, 2.55916, 0.395965, -30.0718, -167.264, 8.18371, 0.510041]
}
] }
这里,每个对象有以下值。
id:序列中唯一的对象索引。具有相同id的骨架在时间上代表时间相关的移动骨架(一个个体)。然而,同一个人可能有多个id。19个关节:19个3D关节位置,格式为[x1,y1,z1,c1,x2,y2,z2,c2,...]其中每个c是全景HD关节置信度分数。
3D骨架具有以下关键点顺序:
0: 颈部
1: 鼻子
2: 身体中心(臀部中心)
3: 左肩
4: 左肘
5: 左腕
6: 左臀
7: 左膝
8: 左踝
9: 右肩
10: 右肘
11: 右腕
12: 右臀
13: 右膝
14: 右踝
15: 左眼
16: 左耳
17: 右眼
18: 右耳
请注意,这与OpenPose输出顺序不同,尽管我们的方法基于它。
注意我们过去使用一种旧格式(在我们过时的文档中称为mpi15),但我们现在不再使用该格式。
KinopticStudio工具箱
Kinoptic Studio是Panoptic Studio的一个子系统,由10个Kinect2传感器组成。 请参见:README_kinoptic
Panoptic 3D点云数据库版本1
您可以使用以下脚本下载我们3D点云数据库版本1中包含的所有序列:
./scripts/getDB_ptCloud_ver1.sh
讨价还价数据库
我们已发布了讨价还价序列的处理数据。请参见社交信号处理存储库。
许可证
Panoptic Studio数据集可免费用于非商业和研究目的。
参考文献
使用该数据集即表示您同意引用以下至少一篇论文。
@inproceedings{Joo_2015_ICCV,
author = {Joo, Hanbyul and Liu, Hao and Tan, Lei and Gui, Lin and Nabbe, Bart and Matthews, Iain and Kanade, Takeo and Nobuhara, Shohei and Sheikh, Yaser},
title = {Panoptic Studio: A Massively Multiview System for Social Motion Capture},
booktitle = {ICCV},
year = {2015} }
@inproceedings{Joo_2017_TPAMI,
title={Panoptic Studio: A Massively Multiview System for Social Interaction Capture},
author={Joo, Hanbyul and Simon, Tomas and Li, Xulong and Liu, Hao and Tan, Lei and Gui, Lin and Banerjee, Sean and Godisart, Timothy Scott and Nabbe, Bart and Matthews, Iain and Kanade, Takeo and Nobuhara, Shohei and Sheikh, Yaser},
journal={IEEE Transactions on Pattern Analysis and Machine Intelligence},
year={2017} }
@inproceedings{Simon_2017_CVPR,
title={Hand Keypoint Detection in Single Images using Multiview Bootstrapping},
author={Simon, Tomas and Joo, Hanbyul and Sheikh, Yaser},
journal={CVPR},
year={2017} }
@inproceedings{joo2019ssp,
title={Towards Social Artificial Intelligence: Nonverbal Social Signal Prediction in A Triadic Interaction},
author={Joo, Hanbyul and Simon, Tomas and Cikara, Mina and Sheikh, Yaser},
booktitle={CVPR},
year={2019}
}