이 저장소에는 Panoptic Studio(Panoptic) 데이터를 다운로드, 처리 및 시각화하는 도구 상자가 있습니다.
2024년 5월 14일: 서울대학교에 미러 서버를 구축했습니다. 기존 CMU 서버를 그대로 사용해도 되며, CMU 서버가 응답하지 않는 경우에는 getData.sh
및 getData_kinoptic
스크립트에 --snu-endpoint
옵션만 추가하면 SNU 엔드포인트를 사용할 수 있습니다.
간단한 예를 설정하려면 다음 단계를 따르세요.
git clone https://github.com/CMU-Perceptual-Computing-Lab/panoptic-toolbox cd panoptic-toolbox
이 예시에서 "171204_pose1_sample"이라는 데이터세트를 다운로드하려면 다음 스크립트를 실행하세요.
./scripts/getData.sh 171204_pose1_sample
이 bash 스크립트에는 컬 또는 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/calibration_171204_pose1_sample.json #보정 파일
171204_pose1_sample/hdPose3d_stage1_coco19.tar #3D Body Keypoint Data (coco19 키포인트 정의)
171204_pose1_sample/hdFace3d.tar #3D 얼굴 키포인트 데이터
171204_pose1_sample/hdHand3d.tar #3D 손 키포인트 데이터
이 샘플 예에는 현재 VGA 비디오가 없습니다.
이 스크립트를 통해 다른 시퀀스를 다운로드할 수도 있습니다. "171204_pose1panopticHD" 대신 대상 시퀀스의 이름을 사용하세요. 예를 들어,
./scripts/getData.sh 171204_pose1
171204_pose1 시퀀스의 전체 버전:. 다운로드할 videospanopticHDnt 수를 지정할 수도 있습니다.
./scripts/getData.sh (sequenceName) (VGA_Video_Number) (HD_Video_Number)
예를 들어 다음 명령은 vga 비디오 240개와 비디오 10개를 다운로드합니다.
./scripts/getData.sh 171204_pose1_sample 240 10
균일하게 분포된 보기를 다운로드할 수 있도록 VGA 카메라 순서를 정렬했습니다.
다음 링크에서 현재 사용 가능한 시퀀스 목록을 찾을 수 있습니다.
공개된 시퀀스 목록 (ver1.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
는 다음 명령 세트를 결합하는 간단한 스크립트입니다(이 명령을 다시 실행할 필요는 없습니다).
CD 171204_pose1_sample ../scripts/vgaImgsExtractor.sh # VGA 비디오(25fps)의 PNG 파일../scripts/hdImgsExtractor.sh # HD 비디오(29.97fps)의 PNG 파일tar -xf vgaPose3d_stage1.tar # VGA 프레임 속도에서 스켈레톤 추출tar -xf hdPose3d_stage1.tar # HDcd용 뼈대 추출 ..
이 코드에는 numpy, matplotlib가 필요합니다.
3D 키포인트 시각화(신체, 얼굴, 손):
cd python jupyter notebook demo_3Dkeypoints_3dview.ipynb
결과는 다음과 같습니다.
선택한 HD 보기에서 3D 키포인트(신체, 얼굴, 손) 재투영:
cd python jupyter notebook demo_3Dkeypoints_reprojection_hd.ipynb
결과는 다음과 같습니다.
이 코드에는 numpy, matplotlib가 필요합니다.
3D 키포인트 시각화(신체, 얼굴, 손):
cd python jupyter notebook demo_3Dkeypoints_3dview.ipynb
결과는 다음과 같습니다.
선택한 HD 보기에서 3D 키포인트(신체, 얼굴, 손) 재투영:
cd python jupyter notebook demo_3Dkeypoints_reprojection_hd.ipynb
결과는 다음과 같습니다.
이 코드에는 pyopengl이 필요합니다.
3D 키포인트 시각화(신체, 얼굴, 손):
python glViewer.py
참고: Matlab 코드는 오래되었으며 3D 키포인트 출력(coco19 몸체, 얼굴, 손)을 처리하지 않습니다. 이 코드는 참고용으로만 참조하세요. 나중에 업데이트하겠습니다.
Matlab 예(오래됨):
>>> CD MATLAB>>> 데모
Joo et al.의 방법을 사용하여 사람의 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 : 시퀀스 내의 고유한 주제 색인:. 시간에 따라 동일한 ID를 갖는 스켈레톤은 시간적으로 연관되어 움직이는 스켈레톤(개인)을 나타냅니다. 그러나 동일한 사람이 여러 ID 관절을 가질 수 있습니다19 : 19개의 3D 관절 위치([x1,y1,z1,c1,x2,y2,z2,c2,...] 형식). 여기서 각 c는panopticHDjoint 신뢰도 점수입니다.
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 출력 순서를 기반으로 하지만 이는 OpenPose 출력 순서와 다릅니다.
우리는 이전 형식(이전 문서에 설명된 대로 mpi15라는 이름)을 사용했지만 더 이상 이 형식을 사용하지 않습니다.
Kinoptic Studio는 10개의 Kinect2 센서로 구성된 Panoptic Studio의 하위 시스템입니다. 참조하세요: README_kinoptic
다음 스크립트를 사용하여 3D PointCloud DB ver.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} }