3DPW 데이터셋 분석
https://virtualhumans.mpi-inf.mpg.de/3DPW/evaluation.html
3DPW 데이터를 받으면 아래와 같이 구성되어있는 것을 알 수 있다.
일단 readme를 먼저 읽어본다.
3DPW데이터셋은 여러 모션 시퀀스를 담고 있고, 두개의 폴더로 구조화 되어있다.
1. 이미지 파일: 매 시퀀스에 대한 RGB 이미지를 담고있다
2. 시퀀스 파일: 동기화된 모션 데이터와 .pkl 타입의 SMPL 모델 파라미터를 담고 있다. 매 시퀀스에 대해, .pkl 파일은 하단 필드를 담고 있다.
- sequence: String containing the sequence name - betas: SMPL shape parameters for each actor which has been used for tracking (List of 10x1 SMPL beta parameters) - poses: SMPL body poses for each actor aligned with image data (List of Nx72 SMPL joint angles, N = #frames) - trans: tranlations for each actor aligned with image data (List of Nx3 root translations) - poses_60Hz: SMPL body poses for each actor at 60Hz (List of Nx72 SMPL joint angles, N = #frames) - trans_60Hz: tranlations for each actor at 60Hz (List of Nx3 root translations) - betas_clothed: SMPL shape parameters for each clothed actor (List of 10x1 SMPL beta parameters) - v_template_clothed: - gender: actor genders (List of strings, either 'm' or 'f') - texture_maps: texture maps for each actor - poses2D: 2D joint detections in Coco-Format for each actor (only provided if at least 6 joints were detected correctly) - jointPositions: 3D joint positions of each actor (List of Nx(24*3) XYZ coordinates of each SMPL joint) - img_frame_ids: an index-array to down-sample 60 Hz 3D poses to corresponding image frame ids - cam_poses: camera extrinsics for each image frame (Ix4x4 array, I frames times 4x4 homegenous rigid body motion matrices) - campose_valid: a boolean index array indicating which camera pose has been aligned to the image - cam_intrinsics: camera intrinsics (K = [f_x 0 c_x;0 f_y c_y; 0 0 1]) |
각 시퀀스는 하나 혹은 두 모델을 가지며, 이는 모델의 특정 필드의 길이에 영향을 준다.
SMPL 포즈와 translation은 30Hz로 표현되며, 이미지 종속 데이터(2d 포즈, 카메라 포즈)에 정렬되어있다. 추가로 우리는 IMU에서 취득한 60Hz 데이터도 제공한다. 사용자는 img_frame_ids를 이용하여 다운샘플링을 할 수 있을 것이다.
demo.py 파일을 통해서 어떻게 시퀀스를 로드하고, smpl모델과 카메라를 세팅하고 가시화 하는지 알 수 있을 것이다.
이제 데모를 돌려보자.
Try 1.
opendr 등의 설치가 파이썬 2.7버젼에서 잘 되는 것 같아서 낮은 버전에서 진행해봤다.
conda create -n 3DPW-Env python=2.7
pip install numpy
pip install opendr
음 여기서 에러가 난다.
위 에러가 나서 해당 링크로 들어갔더니
조졌다.
다른 방법을 찾아본다.
try 2.
그냥 파이썬 3.7 버전으로 간다.
conda create -n 3DPW-Env python=3.7
pip install numpy
pip install opendr
음 위 에러가 난다. 그냥 리눅스에서 해봐야겠다.
try 3.
2.8로 했더니, mesa 라이브러리 관련 에러가 났고
3.9로 했더니 tp_print 관련 에러가 나더라...
3.8로 하면? 잘 된다. mesa 라이브러리 관련 에러만 해결했더니 넘어가 진거라 2.8로 해도 될 것 같다.
https://github.com/mattloper/opendr/issues/30
위 내용을 보고 진행했다.
아무튼 이제 demo.py를 돌려본다.
자 일단 설치할걸 다시 정리해서 작성해보면
numpy 는 1.23.1버전을 써야 한다. 더 높은 버전은 에러가 생긴다.
python -m pip install numpy==1.23.1
pip install opendr
pip install opencv-python
pip install smpl
smpl 설치 과정이 좀 복잡해서(smpl.webuser관련해서 좀)... 그냥 smpl 받은 후 path 세팅만해서 써줬다.
또 파이썬 버전 2에서 피클링한걸 로드할 때 에러가 나서.......
try 4.
다시 파이썬 2.7 버전으로 돌아간다...
pip install numpy
pip install opendr (이거 위에서 한번 조치를 해서 그런가 이번에는 넘어가짐)
pip install opencv-python==4.2.0.32 (이게 파이썬 2.7에서 돌아가는 마지막 버전이다)
smpl은 폴더를 미리 다 맞춰두어서 에러 안나게 했다.
그 뒤에는 demp.py 내의 폴더랑 파라미터를 일부 수정해서 해결했다.
이제 내가 3DPW 파일 포맷을 만들어 볼 차례다.
기념으로 로드한 사진을 올리며 이번 포스팅을 마친다.