고도를 기다리며

[Dataset] HumanML3D 다운로드 본문

공부한것/대학원

[Dataset] HumanML3D 다운로드

MING.G 2023. 6. 30. 10:25
본 글은 HumanML3D Dataset를 다운로드하는 과정을 정리한 글로, 이를 위해 HumanML3D Dataset Github를 참고 하였습니다. 
자세한 내용은 위의 github를 참고하시면 됩니다. 또한, 잘못된 부분이 있다면 언제든 댓글로 남겨주세요.

 

HumanML3D를 다운로드하기 위해 아래와 같은 순서로 진행하였다.

1. HumanML3D conda 환경 구축

2. AMASS 데이터셋 다운

3. body model 다운

4. 코드 실행

 

1. HumanML3D conda 환경 구축

HumanML3D의 저자는 이미 environment.yaml로 conda 환경을 구축할 수 있도록 해 놓았다. 

하지만! 오류가 생겨 이를 이용하여 동작하지 않았다. 

다행히도 저자는 친절히, 설치가 되지 않는 경우도 대비하여 github에 작성해 놓았다.

 

Python==3.7.10
Numpy          
Scipy          
PyTorch        
Tqdm 
Pandas
Matplotlib==3.3.4     // Only for animation
ffmpeg==4.3.1  // Only for animation
Spacy==2.3.4   // Only for text process

 

위의 dependency를 만족하는 conda 환경을 구축하기 위해 아래와 같이 진행하였다.

conda create -n humanml3d python==3.7.10

pip install numpy
pip install scipy
pip install torch
pip install tqdm
pip install pandas
pip install matplotlib==3.3.4
conda install ffmpeg==4.3.1
pip install spacy=2.3.4

 

2. AMASS Dataset 다운로드

HumanML3D 데이터는 HumanAct12와 AMASS 데이터의 combination이다.

따라서 AMASS 데이터셋을 다운로드해야 하는데, 이는 AMASS 홈페이지에서 가능하다.

 

AMASS 데이터셋을 다운로드하기 위해서는 먼저 AMASS 홈페이지에 가입을 신청해야 한다.

(다행히, 이메일로 가입 신청을 한 후, 잠시 기다리면 인증메일이 날아온다. 이메일 인증을 마치면 바로 데이터셋을 사용할 수 있다. 필자는 기관 이메일로 가입을 진행했다.)

 

이후, AMASS 홈페이지에 로그인한 후, 데이터셋 다운로드 페이지로 들어가서 모든 데이터셋을 SMPL+H G 형태로 다운로드한다. (생각보다 시간이 오래 걸린다.)

 

다운로드 한 데이터를 HumanML3D 폴더에 amass_data 폴더를 만들고 해당 폴더에 저장한다.

|-HumanML3D
  |-__pycache__
  |-amass_data (새로생성)

이후, 다운로드 한 모든 .tar.bz2 파일의 압축을 풀어준다.

(이때, LICENSE.txt 파일이 생기는데, 이걸 꼭!!!! 모두 지워줘야 한다.)

 

3. Body Model 다운로드

Body Model을 다운로드해야 하는데, 다시 또! 가입을 해야 한다.

SMPL+H 는 여기에서 DMPL은 여기에서 각각 다운로드한다.

즉, 2곳 모두 가입이 필요하다. 가입하는 방법은 AMASS 데이터셋과 동일하다.

 

SMPL+H의 경우, 로그인한 후 Download 탭에서 Extended SMPL+H model을 다운로드하면 된다.

(크기가 작아 금방 다운로드된다.)

DMPL의 경우, 로그인한 후 Download 탭에서 DMPLs compatible with SMPL을 다운로드하면 된다.

(이것도 크기가 작아 금방 다운로드된다.)

 

이후, 

 

HumanML3D 폴더에 body_models 폴더를 생성하고, 아래에 각각 smplh, dmpls 폴더를 생성한 후, 다운로드 한 파일의 압축을 각각의 폴더에 풀어준다.

(SMPL+H는 smplh폴더에, DMPL은 dmpls 폴더에)

|-HumanML3D
  |-__pycache__
  |-amass_data
  |-body_models (새로생성)
    |-dmpls(새로생성)
    |-smplh(새로생성)

4. 코드 실행

github에 따르면 위까지 준비가 되었다면, 아래 순서로 코드를 실행한다.

  1. raw_pose_processing.ipynb
  2. motion_representation.ipynb
  3. cal_mean_variance.ipynb

이때, raw_pose_processing.ipynb에서 amass_to_pose를 하는 부분이 정말 정말 시간이 오래 걸렸다.

raw_pose_processing.ipynb에서 amass_to_pose를 하는 부분의 실행이 끝나면, joints 폴더를 생성해 준다.

|-HumanML3D
  |-__pycache__
  |-amass_data
  |-body_models
  |-common
  |-human_body_prior
  |-HumanML3D
  |-joints(새로생성)

이후, pose_data 폴더에 미리 저장되어 있던 humanact12.zip 파일의 압축을 풀어준다.

여기까지 되었다면, raw_pose_processing.ipynb의 나머지 부분을 실행한다.

 

다음으로 motion_representation.ipynb 파일을 순서대로 실행한다.

(본 파일에서는 따로 폴더를 생성하거나, 압축을 푸는 등의 작업이 필요하지 않다.)

하지만 main을 실행할 때, 009707.npy, M009707.npy, 011059.npy, M11059.npy 에서 cannot reshape array of size 0 into shape (0, newaxis) 예외가 발생했는데, 다행히 HumanML3D github에 저자가 올려놓은 파일에서도 동일한 예외가 발생했었다. (이에, 그냥 넘어갔다)

 

motion_representation.ipynb 파일의 실행이 끝났다면, cal_mean_variance.ipynb 파일을 실행한다.

(본 파일에서는 따로 폴더를 생성하거나, 압축을 푸는 등의 작업이 필요하지 않다.)

 

motion_representation.ipynb 파일과 cal_mean_variance.ipynb 파일에서 data correct를 체크하는 부분에서 저자의 github에서는 0.0이 나왔는데, 나의 데이터에서는 0.004, 0.01이 나왔다. 이 부분이 이상하긴 했지만, 다시 해보아도 동일한 결과가 나오고, 해결방법을 모르겠어서 현재는 그냥 진행했다.

 

만약, 동작들을 animation으로 보고 싶다면 animation.ipynb 파일을 실행하면 된다.

이 파일을 수행하면 HumanML3D폴더의 HumanML3D 폴더 아래 있는 animations 폴더에 .mp4파일이 생성된다.

|-HumanML3D
  |-__pycache__
  |-amass_data
  |-body_models
  |-common
  |-human_body_prior
  |-HumanML3D
    |-animations
      |-000000.mp4
      |-000001.mp4