В этом репозитории есть набор инструментов для загрузки, обработки и визуализации данных Panoptic Studio (Panoptic).
14 мая 2024 г.: Мы построили зеркальный сервер в SNU. Вы по-прежнему можете использовать исходный сервер CMU, и если сервер CMU не отвечает, вы можете использовать конечную точку SNU, просто добавив параметр --snu-endpoint
в сценарии getData.sh
и getData_kinoptic
.
Выполните следующие шаги, чтобы создать простой пример:
git clone https://github.com/CMU-Perceptual-Computing-Lab/panoptic-toolbox cd panoptic-toolbox
Чтобы загрузить набор данных с именем «171204_pose1_sample» в этом примере, запустите следующий скрипт.
./scripts/getData.sh 171204_pose1_sample
Для этого сценария bash требуется curl или wget.
Этот сценарий создаст папку «./171204_pose1_sample» и загрузит следующие файлы.
171204_pose1_sample/hdVideos/hd_00_XX.mp4 #синхронизированные HD-видеофайлы (31 просмотр)
171204_pose1_sample/vgaVideos/KINECTNODE%d/vga_XX_XX.mp4 #синхронизированные видеофайлы VGA (480 просмотров)
171204_pose1_sample/калибровка_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:. Вы также можете указать количество видеоpanopticHDnt для загрузки.
./scripts/getData.sh (sequenceName) (VGA_Video_Number) (HD_Video_Number)
Например, следующая команда загрузит 240 видео VGA и 10 видео.
./scripts/getData.sh 171204_pose1_sample 240 10
Обратите внимание: мы отсортировали камеры VGA в порядке, чтобы вы могли загружать равномерно распределенные изображения.
Список доступных на данный момент последовательностей вы можете найти по следующей ссылке:
Список выпущенных последовательностей (версия 1.2)
Загрузка всех из них (включая видео) может занять много времени, но загрузка 3D-файлов ключевых точек (тело+лицо+рука, если они доступны) должна быть «относительно» быстрой.
Вы можете использовать следующий скрипт для загрузки доступных на данный момент последовательностей (версия 1.2):
./scripts/getDB_panopticHD_ver1_2.sh
По умолчанию видео не загружается. Не стесняйтесь менять «vgaVideoNum» и «hdVideoNum» в скрипте на другие числа, если вы также хотите загружать видео.
Вы можете увидеть примеры видеороликов и другую информацию о каждой последовательности: на нашем веб-сайте: Просмотр набора данных.
Проверьте средство 3D-просмотра в каждой последовательности: страница, на которой вы можете визуализировать 3D-скелетоны в своем веб-браузере. Например: http://domedb.perception.cs.cmu.edu/panopticHDpose1.html.
Для этого шага требуется 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
— это простой скрипт, который сочетает в себе следующий набор команд (вам не нужно запускать их еще раз):
компакт-диск 171204_pose1_sample ../scripts/vgaImgsExtractor.sh # PNG-файлы из видео VGA (25 кадров в секунду)../scripts/hdImgsExtractor.sh # PNG-файлы из HD-видео (29,97 кадров в секунду)tar -xf vgaPose3d_stage1.tar # Извлечь скелеты с частотой кадров VGAtar -xf hdPose3d_stage1.tar # Извлекаем скелеты для HDcd..
Для этих кодов требуются numpy, matplotlib.
Визуализация ключевых точек 3D (тело, лицо, рука):
cd python jupyter notebook demo_3Dkeypoints_3dview.ipynb
Результат должен выглядеть следующим образом.
Перепроецирование ключевых точек 3D (тело, лицо, рука) на выбранном виде HD:
cd python jupyter notebook demo_3Dkeypoints_reprojection_hd.ipynb
Результат должен выглядеть следующим образом.
Для этих кодов требуются numpy, matplotlib.
Визуализация ключевых точек 3D (тело, лицо, рука):
cd python jupyter notebook demo_3Dkeypoints_3dview.ipynb
Результат должен выглядеть следующим образом.
Перепроецирование ключевых точек 3D (тело, лицо, рука) на выбранном виде HD:
cd python jupyter notebook demo_3Dkeypoints_reprojection_hd.ipynb
Результат должен выглядеть следующим образом.
Для этих кодов требуется pyopengl.
Визуализация ключевых точек 3D (тело, лицо, рука):
python glViewer.py
Примечание. Код Matlab устарел и не обрабатывает выходные данные ключевых точек 3D (тело coco19, лицо, рука). Пожалуйста, смотрите этот код только для справки. Мы обновим это позже.
Пример Matlab (устаревший):
>> компакт-диск Matlab>>> демо
Мы реконструируем 3D-скелет человека по методу Джу и др. 2018.
Вывод каждого кадра записывается в файл json. Например,
{ "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] } ] }
Здесь каждый предмет имеет следующие значения.
id : уникальный предметный индекс в последовательности:. Скелеты с одинаковым идентификатором во времени представляют собой связанные во времени движущиеся скелеты (человека). Однако у одного и того же человека может быть несколько идентификаторов суставов19 : 19 трехмерных местоположений суставов, отформатированных как [x1,y1,z1,c1,x2,y2,z2,c2,...], где каждый c является показателем достоверности панорамоптического HD-сустава.
3D-скелетоны имеют следующий порядок ключевых точек:
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
Обратите внимание, что это отличается от порядка вывода OpenPose, хотя наш метод основан на нем.
Обратите внимание, что раньше мы использовали старый формат (названный mpi15, как описано в нашем устаревшем документе), но больше не используем этот формат.
Kinoptic Studio — это подсистема Panoptic Studio, состоящая из 10 сенсоров Kinect2. См.: README_kinoptic.
Вы можете загрузить все последовательности, включенные в нашу базу данных 3D PointCloud версии 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} }