딥러닝/Virtual Production

[NeX] 1. NeX코드 설명/설치

brotoo 2021. 9. 15. 12:28

1. NeX 란?

Colmap과 LLFF, Nerf 를 기반으로 하여 실시간으로 가상 배경을 만들어 주는 모델이다. 

영화 산업에서 쓰일 수 있는 좋은 모델로, 사진 여러장을 찍어서 실시간 렌더링으로 배경 영상의 결과물을 만들 수 있다.

 

Demo를 보면 이렇다.

https://www.youtube.com/watch?v=wBOh8Y9HiDs&ab_channel=MachineLearning 

 

2. Demo 설치 및 실행 - 리눅스 환경에서 하는 것을 추천한다. 윈도우 환경에서 해보려고 했는데, 너무 에러 많이 떠서 잘 안되더라....

결과적으로 필자는 Ubuntu-18.04. 환경에서 진행하였다.

https://github.com/nex-mpi/nex-code

 

GitHub - nex-mpi/nex-code: Code release for NeX: Real-time View Synthesis with Neural Basis Expansion

Code release for NeX: Real-time View Synthesis with Neural Basis Expansion - GitHub - nex-mpi/nex-code: Code release for NeX: Real-time View Synthesis with Neural Basis Expansion

github.com

- Github의 - Getting Started를 따라하면 된다.

conda env create -f environment.yml
./download_demo_data.sh
conda activate nex
python train.py -scene data/crest_demo -model_dir crest -http
tensorboard --logdir runs/

이제 뭐.. 클론 뜨고..

콘다 환경에서 가상환경 yml파일로 설치하고, shell 스크립트 돌려서 데모 데이터 받으면 된다.

그리고 콘다 환경 실행하고, training을 돌리면 된다.

 

그런데, 일반 컴퓨터 (2080Ti급 이하) 에서는 웬만하면 안돌아간다. 

역시 VP 분야의 딥러닝은 확실히 엄청난 GPU 메모리를 필요로 하기 때문에... 

 

Note that this code is tested on an Nvidia V100 32GB and 4x RTX 2080Ti GPU.

네.. 그렇대요 V100 32기가짜리에 2080Ti 4대로 돌렸대요.. 

(그리고 V100 32기가와 4대의 2080Ti로 돌린 이유는 다음 글에서 차차 설명드리겠습니다.)

 

여하튼, 일반적인 상황에서 이 코드를 돌릴려면, 이렇게 레이어 서브레이어 hidden layer를 다 낮춰줘야한다.

필자는 1070 2대를 쓰고 있는데, 이렇게 하면 데모는 돌아갔다.

python train.py -scene ${PATH_TO_SCENE} -model_dir ${MODEL_TO_SAVE_CHECKPOINT} -http -layers 12 -sublayers 6 -hidden 256

에를 들어 이런 식으로 쓰면 돌아간다.

python train.py -scene data/crest_demo -model_dir crest -http -layers 12 -sublayers 6 -hidden 256

결과물은 태국 사원같은 곳이 나오는데 Layer를 조정해서인지 밀리는 부분이 조금 발생하긴 한다.

 

다음 글에서 내 데이터 셋으로 돌리는 방법을 알아보겠다.