<관련 논문 리뷰>
[CV 논문] Street Gaussians: Modeling Dynamic Urban Scenes with Gaussian Splatting
아래 글에서 이 블로그에서 리뷰한 논문들의 흐름과 분야별 분류를 한 눈에 볼 수 있다. 읽은 논문들 정리[목차]지속적으로 업데이트 중, 번호는 모델발전 순서가 아닌 읽은 순서에 따라 정렬.1.
april2901.tistory.com
3DGS환경세팅처럼 이 street-gaussian의 학습환경을 세팅할 때 고통받고 있는 사람이 많을 것이다.
나도 역시나 한번에 세팅이 되지 않았다.
성공한 세팅방법을 공유하려한다.
추가로, 성공한 세팅에서 학습까지 시키는 과정이 글에 나와있다.
<기본 환경>
OS : Ubuntu 22.04 LTS
가상환경 툴 : anaconda
다른 툴들은 모두 다시 깔 것이기 때문에 환경은 저렇게 간단히만 적었다.
1. 세팅
1-1. 환경 설정 & 필수 라이브러리 설치
먼저 conda 환경을 만들어준다.
conda create -n street-gaussian python=3.10 -y
conda activate street-gaussian
필수 라이브러리를 설치한다.
CUDA 버전은 11.8이다.
conda install cuda -c nvidia/label/cuda-11.8.0 -y
pip install torch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 --index-url https://download.pytorch.org/whl/cu118
pip install plyfile tqdm
conda install -c conda-forge ninja -y
1-2. requirements.txt 설치
설치 전에 파일을 열어서 가장 마지막 줄을 주석처리해야한다.
이 부분은 requirements파일을 통해 설치하지 않고 후에 따로 설치할 것이다.
#git+https://github.com/NVlabs/nvdiffrast.git
이때 clone한 srteet_gaussians폴더의 위치에서 아래 명령어를 통해 설치를 진행하자.
pip install -r requirements.txt
1-3. nvdiffrast설치
방금 주석처리한 패키지를 따로 다운받는 과정이다.
git clone https://github.com/NVlabs/nvdiffrast.git
cd nvdiffrast
CPATH=$CONDA_PREFIX/include:$CPATH
LD_LIBRARY_PATH=$CONDA_PREFIX/lib:$LD_LIBRARY_PATH
pip install setuptools==69.5.1 packaging
python setup.py install
1-4. 서브모듈 설치
위에서 cd를 통해 nvdiffrast로 들어갔었는데 다시 'cd ..'을 통해프로젝트 폴더로 나온다.
그 이후 서브모듈을 설치한다.
가우시안 관련 파일들에서 서브모듈 설치가 가장 골때리는 부분인데 위에서 각종 버전들을 명시해서 호환이 되는 버전을 다운받았기 때문에 아래 과정이 정상적으로 수행된다.
pip install submodules/diff-gaussian-rasterization --no-build-isolation
pip install ./submodules/simple-knn --no-build-isolation
pip install ./submodules/simple-waymo-open-dataset-reader --no-build-isolation
그리고 코드를 돌릴 때 필요한 colmap도 설치한다.
conda install -c conda-forge colmap -y
2. 학습시켜보기
2-1. 데이터셋 준비
일단 학습이 잘 돌아가는지, 내 그래픽카드의 범위에서 학습이 가능한지 등을 확인하기 위해 전처리까지 된 상태로 제공되는 데이터를 다운받자.
아래 링크를 들어가면 된다.
street gaussian공식 깃헙에서 제공되는 링크이다.
https://drive.google.com/drive/folders/1ghpE_kBwqXiWgiSWAajByjPsmj1y0l1H

들어가면 두 개의 zip이 있는데 나는 002.zip만 다운받았다.
다운 받은 폴더를 프로젝트 폴더 밑에 넣어놓자.
로컬환경이 아닌 서버를 사용하는 사람은 아래 부분을 참고하면 좋을 것 같다.
+서버를 사용할 때 (해당하는 경우만 참고)
나는 현재 로컬 데스크탑이 아닌 서버를 사용하고 있다.
따라서 이 파일을 서버로 옮겨줬는데, SSD를 여러 개 사용하고 있으므로 저장공간을 나눠놨다.
용량이 큰 SSD는 데이터셋 저장용, 상대적으로 조금 작은 SSD는 코드 등 파일 저장용으로 사용한다.
이럴 경우 데이터셋의 위치와 코드의 위치가 달라지기 때문에 코드가 들어있는 프로젝트 폴더에서
심볼릭 링크를 만들어 데이터셋이 해당 폴더에 있는 것처럼 해줘야 한다.
이 street-gaussian학습에 맞는 심볼릭 링크는 아래처럼 생성할 수 있다.
명령어의 실행 위치는 프로젝트 폴더(street_gaussian폴더)이다.
training폴더까지는 mkdir로 생성하고 실행했다.
ln -s /실제데이터경로 data/waymo/training/002
2-2. 파일 수정
아래 그림의 경로의 train_waymo_example.sh파일을 보면 아래와 같은 줄이 있다.
scenes=("031" "002")
이는 아까 데이터셋에서 봤던 숫자들인데 이 두 데이터셋을 순차적으로 학습을 시킨다는 의미이다.
하지만 우리는 하나의 데이터셋만을 다운 받았기 때문에 아래처럼 코드를 바꿔준다.
scenes=("002")

2-3. 훈련
이제 모든 준비가 끝났다.
최종적으로 훈련은 아래 명령어로 실행시킬 수 있다.
python train.py --config configs/example/waymo_train_002.yaml
저 yaml파일에는 학습에 필요한 여러 값들이 들어있다.
여기서 source_path와 데이터가 저장된 경로가 일치해야한다.

3. 결과
아래 명령어를 통해 볼 수 있는 ply파일을 만들 수 있다.
frame_id 뒤에는 보고싶은 프레임의 번호를 넣으면 된다.
python make_ply.py --config configs/example/waymo_train_002.yaml viewer.frame_id 0 mode evaluate
output폴더 안에 viewer라는 폴더가 새로 생기고, 그 안에 변환 결과가 저장된다.
SIBR뷰어로 본 모습이다.
