3D Gaussian Splatting의 code

류동훈·2025년 1월 31일
0

3D Gaussian Splatting for Real-Time Radiance Field Rendering 논문 리뷰를 나의 첫 글로 작성하고 다음 글로 어떤 글을 쓰면 좋을까 많은 고민을 해보았다. 관련된(NeRF, Dream Gaussian,Stable Diffusion)등 다른 논문에 대해 리뷰를 할까 고민하였지만, 그 전에 간단하게 코드에 대한 글을 작성해보면 어떨까 싶어 작성하게 되었다.


Gaussian Splatting 튜토리얼: https://www.reshot.ai/3d-gaussian-splatting
Github 코드 가이드: https://github.com/jonstephens85/gaussian-splatting-Windows
유튜브 영상: https://www.youtube.com/watch?v=UXtuigy_wYc

이번 글은 위의 3사이트를 많이 참조하였다.

기본 사양

Github엔 GPU 램 24GB을 이상을 요구하고 있습니다. Scene의 크기가 클 경우에 24GB을 요구하는 것으로 보이며, 구글링해보니 적은 RAM에서도 실행된다고 해서, RTX3090 (램 16GB)에서 작은 Scene에 대해 랜더링 해보았습니다.

저는 mobaxterm을 이용한 외부 서버를 이용해서 진행하였지만, 이후 RTX4060 (램 16GB) 윈도우로도 충분히 잘 돌아갔습니다.

기본 설치 요소

  1. CUDA 11.8 설치 : 링크 ( 2023년 버전이지만 이 버전을 추천합니다!! )

  2. git 설치 : 링크

  3. conda 설치 : 링크

  4. visual studio build tool 설치 : 링크

  5. COLMAP설치 : 링크

  6. ImageMagik 설치 : 링크

  7. FFMPEG 설치 : 링크

5,6,7 관련 설치 영상: 영상링크

Cloning the Repository

$ git clone https://github.com/graphdeco-inria/gaussian-splatting --recursive
**

--recursive까지 넣어야 하**위 서브모듈까지 모두 clone된다고 합니다!

Conda Setup

$ SET DISTUTILS_USE_SDK=1 # Window로 코드 실행 시
$ cd (root폴더)
$ conda env create --file environment.yml
$ conda activate gaussian_splatting

conda prompt에서 위의 명령어 입력하기

Record the Scene

Traing하기 위한 Input 사진을 구해야합니다.

  • 최적의 결과를 위해 100-200개의 이미지를 캡처하세요.
  • 흐릿한 프레임을 피하기 위해 천천히 움직이세요.
  • 일관된 조명을 위해 카메라의 노출을 잠그세요.

예시 파일: 링크
**링크를 누르시면 예시 파일을 다운로드 하실 수 있습니다.

다음과 같이 gaussian-splatting 파일에 FOLDER_PATH 파일 안에 input 파일을 만들어 사진을 넣어주세요.

1. COLMAP을 실행합니다.

$ cd (root폴더/gaussian-splatting/)
$ python convert.py -s root폴더/gaussian-splatting/FOLDER_PATH/

2. 학습을 진행합니다.

$ python train.py -s root폴더/gaussian-splatting/FOLDER_PATH/

저는 RTX3090를 사용해서, 7000 iteration에 첫번째 weight가 학습 시작 약 5분 후에 만들어졌습니다.

최종 weight는 30,000 iteration 후에 나오며, 약25분 소요됬습니다.

(root폴더)/gaussian-splatting/FOLDER_PATH/output폴더에 결과물이 만들어집니다.

3. viewer를 다운로드 받고 실행합니다.

링크 에 들어가서, Pre-built Windows Binaries 탭의 here를 눌러 다운 받습니다.
zip 해제한 후, (root폴더)/viewer폴더로 이동합니다.
conda prompty에서 exe파일을 실행합니다.

viewer의 경우 mobaxterm으로 실행하면 오류가 발생하기 쉬워 Windows에서 viewer를 설치하여 실행하는 것을 추천합니다!
따라서 mobaxterm에서 train을 했을 경우 output 파일을 다운 받으시길 바라겠습니다!

$ cd (root폴더)\viewers\bin
$ SIBR_gaussianViewer_app.exe -m (root폴더)\output

4. viewer로 결과를 확인합니다.

  • 기본모드 : w,a,s,d(카메라 위치 상하좌우 이동), j,l,i,k (카메라 위치 고정 후 로테이션)
    trackball모드(FPS라고 적혀 있는 콤보박스를 클릭) : 마우스 오른쪽 버튼은 회전, 마우스 왼쪽 버튼은 이동, 스크롤은 zoom in/out
  • 상단 Menu->display->V-sync를 클릭해서 v-sync를 끄면, 랜더링 속도가 60FPS 에서 200FPS로 향상되는 것을 볼 수 있습니다.

아래는 위의 예시 파일 다운로드 링크에서 data base를 학습 시킨 예시를 viewer에서 캡쳐해보았습니다.

train 파일 학습


truck 파일 학습

마지막으로

Github와 여러 블로그를 참고하여 진행해보았다. 처음 실행 했을 때, pytorch, conda의 버전 오류가 나서 애를 먹었지만 원하는 결과가 잘 나와서 너무나 다행이었다.

profile
AI를 좋아하고 공부하는 대학생

0개의 댓글