Este repositório possui uma caixa de ferramentas para baixar, processar e visualizar os dados do Panoptic Studio (Panoptic).
14 de maio de 2024: Construímos um servidor espelho no SNU. Você ainda pode usar o servidor CMU original e, se o servidor CMU não responder, você pode usar o endpoint SNU simplesmente adicionando a opção --snu-endpoint
nos scripts getData.sh
e getData_kinoptic
.
Siga estas etapas para configurar um exemplo simples:
git clone https://github.com/CMU-Perceptual-Computing-Lab/panoptic-toolbox cd panoptic-toolbox
Para fazer download de um conjunto de dados denominado "171204_pose1_sample" neste exemplo, execute o script a seguir.
./scripts/getData.sh 171204_pose1_sample
Este script bash requer curl ou wget.
Este script criará uma pasta "./171204_pose1_sample" e baixará os seguintes arquivos.
171204_pose1_sample/hdVideos/hd_00_XX.mp4 #arquivos de vídeo HD sincronizados (31 visualizações)
171204_pose1_sample/vgaVideos/KINECTNODE%d/vga_XX_XX.mp4 #arquivos de vídeo VGA sincronizados (480 visualizações)
171204_pose1_sample/calibration_171204_pose1_sample.json #arquivos de calibração
171204_pose1_sample/hdPose3d_stage1_coco19.tar # Dados do ponto-chave do corpo 3D (definição do ponto-chave coco19)
171204_pose1_sample/hdFace3d.tar #Dados de ponto-chave da face 3D
171204_pose1_sample/hdHand3d.tar #Dados do ponto-chave da mão 3D
Observe que este exemplo atualmente não possui vídeos VGA.
Você também pode baixar qualquer outra sequência por meio deste script. Basta usar o nome da sequência alvo: em vez de "171204_pose1panopticHD". por exemplo,
./scripts/getData.sh 171204_pose1
para a versão completa da sequência 171204_pose1:. Você também pode especificar o número de videospanopticHDnt para download.
./scripts/getData.sh (sequenceName) (VGA_Video_Number) (HD_Video_Number)
Por exemplo, o comando a seguir baixará 240 vídeos VGA e 10 vídeos.
./scripts/getData.sh 171204_pose1_sample 240 10
Observe que classificamos a ordem das câmeras VGA para que você baixe a visualização distribuída uniformemente.
Você pode encontrar a lista de sequências atualmente disponíveis no seguinte link:
Lista de sequências lançadas (ver1.2)
O download de todos eles (incluindo vídeos) pode demorar muito, mas o download de arquivos de pontos-chave 3D (corpo + rosto + mão conforme disponibilidade) deve ser "relativamente" rápido.
Você pode usar o seguinte script para baixar as sequências disponíveis atualmente (versão 1.2):
./scripts/getDB_panopticHD_ver1_2.sh
A configuração padrão não é baixar nenhum vídeo. Sinta-se à vontade para alterar “vgaVideoNum” e “hdVideoNum” no script para outros números se também quiser baixar vídeos.
Você pode ver os vídeos de exemplo e outras informações de cada sequência: em nosso site: Navegando no conjunto de dados.
Confira o visualizador 3D em cada sequência: página onde você pode visualizar esqueletos 3D em seu navegador. Por exemplo: http://domedb.perception.cs.cmu.edu/panopticHDpose1.html
Esta etapa requer ffmpeg.
./scripts/extractAll.sh 171204_pose1_sample
Isso extrairá imagens, por exemplo 171204_pose1_sample/hdImgs/00_00/00_00_00000000.jpg
, e os dados de esqueleto 3D correspondentes, por exemplo 171204_pose1_sample/hdPose3d_stage1_coco19/body3DScene_00000000.json
.
extractAll.sh
é um script simples que combina o seguinte conjunto de comandos (você não precisará executá-los novamente):
cd 171204_pose1_sample ../scripts/vgaImgsExtractor.sh # Arquivos PNG de vídeo VGA (25 fps)../scripts/hdImgsExtractor.sh # Arquivos PNG de vídeo HD (29,97 fps)tar -xf vgaPose3d_stage1.tar # Extraia esqueletos em taxa de quadros VGAtar -xf hdPose3d_stage1.tar # Extrai esqueletos para HDcd..
Esses códigos requerem numpy, matplotlib.
Visualizando pontos-chave 3D (corpo, rosto, mão):
cd python jupyter notebook demo_3Dkeypoints_3dview.ipynb
O resultado deve ser assim.
Reprojetando pontos-chave 3D (corpo, rosto, mão) em uma visualização HD selecionada:
cd python jupyter notebook demo_3Dkeypoints_reprojection_hd.ipynb
O resultado deve ser assim.
Esses códigos requerem numpy, matplotlib.
Visualizando pontos-chave 3D (corpo, rosto, mão):
cd python jupyter notebook demo_3Dkeypoints_3dview.ipynb
O resultado deve ser assim.
Reprojetando pontos-chave 3D (corpo, rosto, mão) em uma visualização HD selecionada:
cd python jupyter notebook demo_3Dkeypoints_reprojection_hd.ipynb
O resultado deve ser assim.
Esses códigos requerem pyopengl.
Visualizando pontos-chave 3D (corpo, rosto, mão):
python glViewer.py
Nota: o código Matlab está desatualizado e não suporta saídas de pontos-chave 3D (corpo coco19, rosto, mão). Por favor, veja este código apenas para referência. Atualizaremos isso mais tarde.
Exemplo Matlab (desatualizado):
>>> cd matlab >>> demonstração
Reconstruímos esqueletos 3D de pessoas usando o método de Joo et al. 2018.
A saída de cada quadro é gravada em um arquivo json. Por exemplo,
{ "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] } ] }
Aqui, cada assunto tem os seguintes valores.
id : um índice de assunto exclusivo dentro de uma sequência:. Esqueletos com o mesmo id ao longo do tempo representam esqueletos móveis associados temporalmente (um indivíduo). No entanto, a mesma pessoa pode ter múltiplas articulações ids19: 19 localizações de articulações 3D, formatadas como [x1,y1,z1,c1,x2,y2,z2,c2,...] onde cada c é uma pontuação de confiança da articulação HDpanóptica.
Os esqueletos 3D têm a seguinte ordem de pontos-chave:
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
Observe que isso é diferente da ordem de saída do OpenPose, embora nosso método seja baseado nela.
Observe que costumávamos usar um formato antigo (chamado mpi15 conforme descrito em nosso documento desatualizado), mas não usamos mais esse formato.
Kinoptic Studio é um subsistema do Panoptic Studio, composto por 10 sensores Kinect2. Por favor, veja: README_kinoptic
Você pode baixar todas as sequências incluídas em nosso 3D PointCloud DB ver.1 usando o seguinte script:
./scripts/getDB_ptCloud_ver1.sh
Liberamos os dados processados para a sequência de pechincha. Consulte o repositório de processamento de sinais sociais.
O Panoptic Studio Dataset está disponível gratuitamente apenas para fins não comerciais e de pesquisa.
Ao usar o conjunto de dados, você concorda em citar pelo menos um dos seguintes artigos.
@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} }