현재 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를 가지고 학습을 시킬 것이라면 이미지셋에서 주어지는 여러 해상도 중 낮은 버전을 골라 학습시키는 것이 좋을 것이다.

이제 터미널에 아래 코드를 입력해 시각적으로 확인해보자.
당연히 경로는 본인의 상황에 맞게 수정해줘야한다.
"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가 크게 떨어진다.

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

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

직접 해보면 입력으로 주어지지 않았던 원하는 어떤 각도에서라도 물체를 바라볼 수 있는게 꽤 흥미롭다.
'AI > 컴퓨터비전(CV)' 카테고리의 다른 글
| [CV 논문] DrivingGaussian: Composite Gaussian Splatting for SurroundingDynamic Autonomous Driving Scenes (0) | 2026.04.06 |
|---|---|
| [CV 논문] Segment Any 3D Gaussians (0) | 2026.04.02 |
| [CV 논문] Mip-NeRF: A Multiscale Representation for Anti-Aliasing Neural Radiance Fields (0) | 2026.03.17 |
| [CV 논문] Structure-from-Motion Revisited (5) | 2026.03.10 |
| [CV 논문] Auto-Encoding Variational Bayes (2) | 2026.03.05 |