Priceless

LOD 3DGS 렌더링 본문

Review/Project

LOD 3DGS 렌더링

Hyun__ 2025. 1. 15. 14:53

LOD 3DGS

https://github.com/zhaofuq/LOD-3DGS?tab=readme-ov-file

 

LetsGo는 논문 이름인 듯하다

 

 

레포지토리에 명시적으로 나와있지 않은 환경 세팅 값을 미리 설정하여

향후 디버깅하는 것을 최소화하도록 한다

 

Requirements

- CMake >= 3.24

기존의 CMake 버전이 낮거나 새로 설치해야 한다면 아래 링크를 참고한다

https://somjang.tistory.com/entry/Ubuntu-CMake-%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8-%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95

 

[Ubuntu] CMake 업데이트 하는 방법

nipa에서 지원 받은 서버에 카카오에서 딥러닝 기반으로 개발한 Khaiii 형태소 분석기를 설치하려고 하던 중 (PythonHome) ubuntu@nipa2020-0000:~/somjang-utils/khaiii/build$ cmake .. CMake Error at CMakeLists.txt:1 (cmake_min

somjang.tistory.com

 

CUDA

레포지토리에서는 CUDA 11.6을 사용하고 있다

 

CUDA 12 버전을 사용해야 한다면 

environment.yml 을 설치한 이후

호환이 안되는 라이브러리에 대해 추가적으로 세팅한다

 

본인의 경우 simple_knn 과정에서 호환성 문제가 발생하여

가상환경에 들어온 후 다시 설치했다

conda activate lod-3dgs
pip install --no-cache-dir simple_knn

 

 

C++ 

본인은 c++11을 사용하고 있는데 수정해야 할 부분이 많았다

예를 들면 long 과 long long 를 사용할 때 max 함수에서 type error가 발생한다든지

레포지토리에 명시적으로 나와있지는 않았다

c++14부터 23까지 해도 같은 에러는 발생했는데

아직 c/c++에 대한 이해가 부족한 듯 하여 전부 타입을 맞췄다

 

 

설치

# clone repo
git clone https://github.com/zhaofuq/LOD-3DGS.git --recursive

# create a new python environment
conda env create --file environment.yml
conda activate lod-3dgs

# build PotreeConverter for Multi-Resolution Pointcloud, tested on windows
cd PotreeConverter 
cmake . -B build
cmake --build build --config Release

 

cmake build 과정에서 많은 에러가 발생했다

에러를 해결하기 위해 많은 코드들을

디버깅에 따라 수정했다

 

CMakeLists.txt에서도 파일 링킹이 제대로 이루어지지 않아

일부 수정했다

 

unsuck/unsuck.hpp 파일 내에서 선언과 구현이 모두 되어 있어

빌드 마지막 과정에서 cpp 파일로 별도로 구분했다

 

 

제공된 Datasets 학습

기존에 있던 environment.yml 대로 진행한다면

diff-gaussian-rasterization 등등을 설치할 수 없다(저자들은 어떻게 한거지..)

그래서 트러블슈팅한 결과 다음 버전이 호환됐다

conda install python=3.11
conda install pytorch==2.2.0 torchvision==0.17.0 torchaudio==2.2.0 pytorch-cuda=12.1 -c pytorch -c nvidia
pip install plyfile tqdm
cd ~/LOD-3DGS/
pip install submodules/diff-gaussian-rasterization
pip install submodules/simple-knn

 

COLMAP식 데이터 저장

우선은 제공된 GarageWorld dataset을 사용한다

LOD-3DGS 디렉토리에 datasets이라는 폴더를 추가한 후

구글 디렉토리에 있는 zip 파일들을 하나씩 다운로드 받은 후 압축 해제한다

https://drive.google.com/drive/folders/1sO8XHeHum3oiKC0sd7ZIm8LUSYf7JuR9

 

파이썬 버전들을 맞추면 학습을 할 수 있는데

train.py 명령어 입력 과정에서 에러가 발생한다면

cmake 빌드부터 다시 해본다

리눅스에서 진행할 경우 exe 파일을 열 수 없어 에러가 발생하는데

dataset_readers.py에서 .exe를 지우는 등 디버깅을 진행한다

VRAM이 모자란 경우 resolution을 수정하며 시도해본다

본인은 VRAM이 16GB인 환경이라

resolution을 8로 설정해야 VRAM이 모자라지 않게 돌아갔다

python train.py --source_path datasets \
    --use_lod \
    --sh_degree 2 \
    --depths depths \
    --densification_interval 10000 \
    --iterations 300000 \
    --scaling_lr 0.0015 \
    --position_lr_init 0.000016 \
    --opacity_reset_interval 300000 \
    --densify_until_iter 200000 \
    --resolution 8

 

학습에 9시간 정도 소요되었다

이후 datasets/3D-Gaussian-Splatting 디렉토리에 scene별 렌더링 데이터가 형성되어 있다

 

렌더링 툴 설치 및 렌드링

이후 이런 식으로 scene 별 ID를 입력하여 렌더링을 할 수 있다

python render.py -m datasets/3D-Gaussian-Splatting/1d2fbc65-e -iteration 30000

 

렌더링을 하기 전 렌더링 툴을 설치해야 하는데

본인은 Ubuntu 22.04를 사용하므로

우분투 버전에 따른 명령어를 사용한다

# Dependencies
sudo apt install -y libglew-dev libassimp-dev libboost-all-dev libgtk-3-dev libopencv-dev libglfw3-dev libavdevice-dev libavcodec-dev libeigen3-dev libxxf86vm-dev libembree-dev
# Project setup
cd SIBR_viewers
cmake -Bbuild . -DCMAKE_BUILD_TYPE=Release # add -G Ninja to build faster
cmake --build build -j24 --target install

 

빌드 과정에서 OpenGL을 잡지 못하여 

우선은 Web viewer로 수행한다

 

웹 뷰어는 readme에 따라

vscode의 live-server 모듈을 사용하여

쉽게 확인할 수 있다



'Review > Project' 카테고리의 다른 글

360 Gaussian Splatting with PAIR360 dataset  (0) 2024.11.27