AI/컴퓨터비전(CV)

3DGS 학습시켜보기

CSE 2026. 3. 18. 13:00

현재 3DGS를 직접 코딩을 통해 구현해보는 실습을 진행하고 있다.

이 중 SIBR뷰어와 관련된 몇가지 문제가 발생해서 중간에 실습이 막혔다.

github을 통해 제공되는 저자들의 코드를 사용해서 학습을 한번 해본다면 폴더의 구조, 버전 일치 등의 문제에서 막혔던 부분을 해결할 수 있을까하여 시도해보았다.

 

직접 코딩하는 부분은 당연히 없으니 쉬울줄 알았지만,

코드가 제공되었던 시점과 현재의 시점에는 차이가 있어 각종 호환성 문제가 발생하였다.

아마 이 글을 검색해서 보는 사람들도 대부분 코드를 사용해 실습해보려했지만 어디선가 막힌 사람들일 것이다.

 

인터넷 검색, ai등을 활용해도 꽤나 긴 시간의 삽질이 있었다.

블로그 검색을 해봐도 막힌 부분을 개운하게 해결해주는 글이 없어 직접 글을 작성해보았다.

 

 

아래는 작업 환경이다.

많은 사람들의 일반적인 환경과 비슷할 것이다.

 

==================================

환경/스펙

OS : Windows 11

CUDA : v12.1

CPU : i7-8700k

GPU : NVIDIA GeForce RTX 2060 (6GB)

C++ compiler : VS 2022 Professional

가상환경 : miniconda 사용

==================================

 

 

 

먼저 아래의 코드를 통해 clone을 진행한다.

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

 

많은 글들에서 clone되어 나오는 폴더 안의 environment.yml파일을 통해 하위모듈, 필요한 패키지들을 다운받으라고 하지만,

연구자들이 이 코드를 배포했던 그 세팅과 정확히 똑같지 않다면 하지 않기를 강력히 권장한다.

 

추가로 위 스펙부분에 VS는 왜 써놓았지라는 의문이 들 수도 있다.

VS는 C++컴파일러를 위해 필요하다.

VS전체를 VS installer를 통해 C++컴파일러만 따로 다운을 받는 방식으로도 시도했었는데,

이 방법은 비추천이다.

그냥 VS를 깔기 위한 저장공간 몇 GB를 감수하고 정신건강을 챙기자.

 

 

해당 실습을 진행할 가상환경을 만들어준다.

conda create -n gs python=3.10 -y

conda activate gs

 

이후 environment.yml파일을 사용하지 않고 각 필요요소들을 따로따로 깔아줘야한다.

스펙에서도 명시했듯, 나의 cuda버전은 12.1이기 때문에 아래와 같은 코드를 사용했다.

아래의 마지막 명령어를 사용해보고 꼭 True가 나오는지 확인하자.

set DISTUTILS_USE_SDK=1

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

python -c "import torch; print(torch.cuda.is_available())"

 

필요한 파일들을 이어서 다운받는다.

아래 코드를 보면 두 개의 install 명령어가 보이는데, 이는 각각 diff-gaussian-rasterization과 simple-knn라는 서브모듈을 다운받는 명령이다.

아마 environment.yml파일을 통해 한번에 다 설치하는 사람들은 cudatoolkit 버전 문제를 해결했다면, 이 서브모듈들을 다운받는데서 또 많이들 문제가 발생했을 것이다.

pip install ninja plyfile tqdm opencv-python scipy

cd C:\Users\CVLAB\Desktop\gaussian-splatting\submodules\diff-gaussian-rasterization
set NVCC_APPEND_FLAGS=-allow-unsupported-compiler
set TORCH_CUDA_ARCH_LIST=7.5

call "C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Auxiliary\Build\vcvars64.bat"

set NVCC_APPEND_FLAGS=-allow-unsupported-compiler -D_ALLOW_COMPILER_AND_STL_VERSION_MISMATCH

pip install . --no-build-isolation



cd ../simple-knn

pip install . --no-build-isolation

설치는 이걸로 끝이다.

사실 과정이 길게 느껴지진 않는데, 오징어 게임의 유리다리처럼 맞는 동작들만 골라가면서 진행했기 때문에 그렇다.

뭔가 잘못되면 환경을 다 지우고 다시해야한다.

 

 

어찌되었든 이제 드디어 학습을 시켜볼 수 있다.

아래 코드를 통해 학습을 시작한다.

python train.py -s C:\Users\CVLAB\Desktop\3DGS\360_v2\bicycle -m C:\Users\CVLAB\Desktop\3DGS\bicycle_output

 

경로는 당연히 본인의 환경에 맞게끔 수정하면 된다.

또 학습을 시키기 위해서는 이미지셋이 필요하다.

이미지셋을 다운받는 방법은 아래 글에 작성되어있으니 필요하면 참고바란다.

 

[3DGS 구현] 2. Kaggle에서 데이터셋 다운받기

↓ ↓ 이전 글 ↓ ↓ [PyTorch] 3DGS 구현 1 - 환경 세팅이전 글 중 3DGS라는 3D분야의 혁신적인 논문을 리뷰한 글이 있다.2026.02.24 - [AI/컴퓨터비전(CV)] - [CV 논문] 3D Gaussian Splatting for Real-Time Radiance Field Re

april2901.tistory.com

위 코드를 입력하면 아래처럼 진행바와 함께 학습이 시작된다.

 

GPU도 정상적으로 돌고 있음을 확인할 수 있다.

 

2060그래픽 카드를 사용해서 7000 iteration까지 학습 시켜보았다.

기본적으로 코드에서는 7000, 30000일 때 체크포인트를 찍는다.

즉 이때 ply파일이 만들어진다.

나는 7000까지 학습하는데도 26시간 정도가 걸렸기 때문에 7000에 해당하는 파일이 생성되고나서 학습을 종료시켰다.

따라서 나와 비슷한 스펙의 GPU를 가지고 학습을 시킬 것이라면 이미지셋에서 주어지는 여러 해상도 중 낮은 버전을 골라 학습시키는 것이 좋을 것이다.

7000까지의 학습

이제 터미널에 아래 코드를 입력해 시각적으로 확인해보자.

당연히 경로는 본인의 상황에 맞게 수정해줘야한다.

"C:\Users\CVLAB\Desktop\viewers\bin\SIBR_gaussianViewer_app.exe" -m C:\Users\CVLAB\Desktop\3DGS\bicycle_output --iteration 7000

 

코드를 실행하면 SIBR뷰어가 뜰 것이다.

혹시나 켰는데 검정 화면만 있다면 Space를 한 번 눌러주자.

기본 화면

 

옆에 조그만 창들이 3개가 떠있을 것이다.

Metrics이라고 적힌 가장 작은 창은 현재 얼마나 효율적으로 시각화가 되고 있는지를 나타낸다.

즉 FPS를 얘기한다.

 

이동 방법은 WASDQE가 기본이고, Space를 누르면 각도 고정이 된다.

이게 꺼져있으면 같은 각도를 유지하면서 카메라가 이동하고, 켜져있으며 각도를 바꾸면서 이동한다.

 

3D Gaussians이라고 써있는 창은 몇가지 설정을 할 수 있다.

기본적으로 render mode가 Splats로 되어있을 것인데 이게 시작하자마자 보이는 원본이미지와 비슷한 방식으로 보이는 방법이다.

또 Ellipsoids라는 render mode는 GS들을 직접 타원체 모양으로 하나하나 볼 수 있다.

다만 이 모드는 FPS가 크게 떨어진다.

Ellipsoid 모드

 

또 3d Gaussians 박스의 scaling modifier라는 수치는 가우시안의 scale을 조정한다.

scale 조절

 

학습을 중간에 끊었으므로 아직 주변부는 잘 학습되지 않아 뿌옇게 보이는 모습이 있다.

주변부

 

직접 해보면 입력으로 주어지지 않았던 원하는 어떤 각도에서라도 물체를 바라볼 수 있는게 꽤 흥미롭다.