Este repositorio tiene una caja de herramientas para descargar, procesar y visualizar los datos de Panoptic Studio (Panoptic).
14 de mayo de 2024: Hemos construido un servidor espejo en SNU. Aún puede usar el servidor CMU original y, si el servidor CMU no responde, puede usar el punto final SNU simplemente agregando la opción --snu-endpoint
en los scripts getData.sh
y getData_kinoptic
.
Siga estos pasos para configurar un ejemplo simple:
git clone https://github.com/CMU-Perceptual-Computing-Lab/panoptic-toolbox cd panoptic-toolbox
Para descargar un conjunto de datos, denominado "171204_pose1_sample" en este ejemplo, ejecute el siguiente script.
./scripts/getData.sh 171204_pose1_sample
Este script bash requiere curl o wget.
Este script creará una carpeta "./171204_pose1_sample" y descargará los siguientes archivos.
171204_pose1_sample/hdVideos/hd_00_XX.mp4 #archivos de vídeo HD sincronizados (31 vistas)
171204_pose1_sample/vgaVideos/KINECTNODE%d/vga_XX_XX.mp4 #archivos de vídeo VGA sincronizados (480 vistas)
171204_pose1_sample/calibration_171204_pose1_sample.json #archivos de calibración
171204_pose1_sample/hdPose3d_stage1_coco19.tar #Datos de puntos clave del cuerpo 3D (definición de puntos clave de coco19)
171204_pose1_sample/hdFace3d.tar #Datos de puntos clave de cara 3D
171204_pose1_sample/hdHand3d.tar #Datos de puntos clave de mano 3D
Tenga en cuenta que este ejemplo de muestra actualmente no tiene videos VGA.
También puedes descargar cualquier otra secuencia a través de este script. Simplemente use el nombre de la secuencia de destino: en lugar de "171204_pose1panopticHD". ejemplo,
./scripts/getData.sh 171204_pose1
para ver la versión completa de la secuencia 171204_pose1:. También puede especificar la cantidad de videospanopticHDnt a descargar.
./scripts/getData.sh (sequenceName) (VGA_Video_Number) (HD_Video_Number)
Por ejemplo, el siguiente comando descargará 240 vídeos vga y 10 vídeos.
./scripts/getData.sh 171204_pose1_sample 240 10
Tenga en cuenta que hemos ordenado el orden de las cámaras VGA para que pueda descargar una vista distribuida uniformemente.
Puedes encontrar la lista de secuencias disponibles actualmente en el siguiente enlace:
Lista de secuencias publicadas (ver1.2)
Descargarlos todos (incluidos los videos) puede llevar mucho tiempo, pero descargar archivos de puntos clave 3D (cuerpo+cara+mano según su disponibilidad) debería ser "relativamente" rápido.
Puede utilizar el siguiente script para descargar secuencias disponibles actualmente (ver 1.2):
./scripts/getDB_panopticHD_ver1_2.sh
La configuración predeterminada es no descargar ningún video. Siéntase libre de cambiar "vgaVideoNum" y "hdVideoNum" en el script por otros números si también desea descargar videos.
Puedes ver los vídeos de ejemplo y otra información de cada secuencia: en nuestra web: Conjunto de datos de navegación.
Consulta el visor 3D en cada secuencia: página donde podrás visualizar esqueletos 3D en tu navegador web. Por ejemplo: http://domedb.perception.cs.cmu.edu/panopticHDpose1.html
Este paso requiere ffmpeg.
./scripts/extractAll.sh 171204_pose1_sample
Esto extraerá imágenes, por ejemplo 171204_pose1_sample/hdImgs/00_00/00_00_00000000.jpg
, y los datos del esqueleto 3D correspondientes, por ejemplo 171204_pose1_sample/hdPose3d_stage1_coco19/body3DScene_00000000.json
.
extractAll.sh
es un script simple que combina el siguiente conjunto de comandos (no debería necesitar ejecutarlos nuevamente):
cd 171204_pose1_muestra ../scripts/vgaImgsExtractor.sh # Archivos PNG de vídeo VGA (25 fps)../scripts/hdImgsExtractor.sh # Archivos PNG de vídeo HD (29,97 fps)tar -xf vgaPose3d_stage1.tar # Extraer esqueletos a velocidad de fotogramas VGAtar -xf hdPose3d_stage1.tar # Extraer esqueletos para HDcd ..
Estos códigos requieren numpy, matplotlib.
Visualización de puntos clave 3D (cuerpo, cara, mano):
cd python jupyter notebook demo_3Dkeypoints_3dview.ipynb
El resultado debería verse así.
Reproyectar puntos clave 3D (cuerpo, cara, mano) en una vista HD seleccionada:
cd python jupyter notebook demo_3Dkeypoints_reprojection_hd.ipynb
El resultado debería verse así.
Estos códigos requieren numpy, matplotlib.
Visualización de puntos clave 3D (cuerpo, cara, mano):
cd python jupyter notebook demo_3Dkeypoints_3dview.ipynb
El resultado debería verse así.
Reproyectar puntos clave 3D (cuerpo, cara, mano) en una vista HD seleccionada:
cd python jupyter notebook demo_3Dkeypoints_reprojection_hd.ipynb
El resultado debería verse así.
Estos códigos requieren pyopengl.
Visualización de puntos clave 3D (cuerpo, cara, mano):
python glViewer.py
Nota: El código de Matlab está desactualizado y no maneja salidas de puntos clave 3D (cuerpo, cara, mano de coco19). Consulte este código solo como referencia. Actualizaremos esto más tarde.
Ejemplo de Matlab (obsoleto):
>>> cd matlab >>> demostración
Reconstruimos esqueletos 3D de personas utilizando el método de Joo et al. 2018.
La salida de cada fotograma se escribe en un archivo json. Por ejemplo,
{ "version": 0.7, "univTime" :53541.542, "fpsType" :"hd_29_97", "bodies" : [ { "id": 0, "joints19": [-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] } ] }
Aquí, cada tema tiene los siguientes valores.
id : un índice de materia único dentro de una secuencia:. Los esqueletos con la misma identificación a lo largo del tiempo representan esqueletos en movimiento asociados temporalmente (un individuo). Sin embargo, la misma persona puede tener múltiples identificadores de articulaciones19 : 19 ubicaciones de articulaciones 3D, formateadas como [x1,y1,z1,c1,x2,y2,z2,c2,...] donde cada c es una puntuación de confianza de articulación HDpanóptica.
Los esqueletos 3D tienen el siguiente orden de puntos clave:
0: Neck 1: Nose 2: BodyCenter (center of hips) 3: lShoulder 4: lElbow 5: lWrist, 6: lHip 7: lKnee 8: lAnkle 9: rShoulder 10: rElbow 11: rWrist 12: rHip 13: rKnee 14: rAnkle 15: lEye 16: lEar 17: rEye 18: rEar
Tenga en cuenta que esto es diferente del orden de salida de OpenPose, aunque nuestro método se basa en él.
Tenga en cuenta que solíamos utilizar un formato antiguo (llamado mpi15 como se describe en nuestro documento obsoleto), pero ya no utilizamos este formato.
Kinoptic Studio es un subsistema de Panoptic Studio, que se compone de 10 sensores Kinect2. Por favor vea: README_kinoptic
Puede descargar todas las secuencias incluidas en nuestra base de datos 3D PointCloud ver.1 utilizando el siguiente script:
./scripts/getDB_ptCloud_ver1.sh
Hemos publicado los datos procesados para la secuencia de regateo. Consulte el repositorio de procesamiento de señales sociales.
Panoptic Studio Dataset está disponible gratuitamente únicamente para fines no comerciales y de investigación.
Al utilizar el conjunto de datos, acepta citar al menos uno de los siguientes artículos.
@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} }