본문 바로가기

인공지능 공부

3DPW 데이터셋 분석

https://virtualhumans.mpi-inf.mpg.de/3DPW/evaluation.html

 

3DPW | Real Virtual Humans

Evaluation This dataset may be used for different tasks. If you use the dataset to evaluate human pose and shape estimation, please look at the protocols and metrics below. Protocols The data in sequenceFiles.zip contains the sequences separated in three f

virtualhumans.mpi-inf.mpg.de

 

 

 

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

 

Installation failing with -lOSMesa · Issue #30 · mattloper/opendr

It seems today I am unable to install opendr. I've not had trouble with it in the past. When I install with pip, it gives the error /usr/bin/ld: cannot find -lOSMesa collect2: error: ld returned 1 ...

github.com

 

위 내용을 보고 진행했다.

 

아무튼 이제 demo.py를 돌려본다.

 

자 일단 설치할걸 다시 정리해서 작성해보면

numpy 는 1.23.1버전을 써야 한다. 더 높은 버전은 에러가 생긴다. 

https://stackoverflow.com/questions/74893742/how-to-solve-attributeerror-module-numpy-has-no-attribute-bool

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 파일 포맷을 만들어 볼 차례다.

 

 

 

기념으로 로드한 사진을 올리며 이번 포스팅을 마친다.