일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 백준
- 3dgs
- 삼성코테기출
- Python
- 시뮬레이션
- mcp사용법
- 그리디
- 최단거리추적
- 토스
- 토스만능문장
- 20006
- 토익스피킹
- 구현
- mcp튜토리얼
- 그리디알고리즘
- 수학
- DP
- 20922
- 미지의 공간탈출
- 그래프탐색
- 토스독학
- 삼성빈출
- 시계토끼제니쌤
- mcp란
- 코테
- BFS
- 너비우선탐색
- 28215
- 그래프
- 토스유튜브
- Today
- Total
Victory in my life
[논문리뷰]3D Gaussian Splatting for Real-Time Radiance Field Rendering(3DGS) 본문
[논문리뷰]3D Gaussian Splatting for Real-Time Radiance Field Rendering(3DGS)
tmdrn9 2025. 2. 25. 09:44NeRF 이후 체감상 작년부터 굉장한 주목을 받고 있는 논문이다. 면접에서도 논문 리부탈에서도 필연적으로 나오는 논문.. 이 말은 즉 NeRF 관련 연구를 해 본 사람이고, 해당 분야로 취업을 희망하는 사람으로서 필히 알아야하는 논문이기에 읽어봤다.
3D computer vision 전공이 아니고, NeRF만을 뜯어본 사람이기에 좀 알아야할 게 많긴했다..
아래 유튜브로 한번 설명 듣고 논문 읽는걸 추천한다. 대략적인 틀을 잡아줘서 아주 좋았다.
https://youtu.be/wvlgjhrrQZU?si=msdh8FbVnHWhAtVW
본격적으로 논문 리뷰에 들어가기에 앞서 간단히 NeRF와의 차이점만 간단히 정리하고 넘어가겠다.
💡 NeRF는 장면을 "연속적인 필드(Field)"로 표현하고 볼륨 렌더링을 통해 이미지를 만듦. 그러나 3D Gaussian Splatting은 장면을 "점들의 집합"으로 표현하되, 각 점을 퍼져 있는 3D 가우시안으로 설정하여 부드럽고 자연스럽게 합성하는 방식.
💡 NeRF는 픽셀을 하나씩 샘플링하는 반면, 3D Gaussian Splatting은 부드러운 3D 점들을 한꺼번에 뿌려서 실시간 렌더링이 가능.
기존 NeRF | 3D Gaussian Splatting | |
장면 표현 방식 | 연속적인 필드(Neural Network) | 개별적인 3D 가우시안 점들의 집합 |
렌더링 방식 | 각 픽셀마다 샘플링 →볼륨 렌더링 | 가우시안을 2D로 변환 후 '스플래팅' |
속도 | 매우 느림 | 실시간 (60FPS 이상 가능) |
목차는 본 논문 순서에서 주요한 순서만을 정리했다.
1. Introduction
3. Overview
4. Differentiable 3D Gaussian Splatting
5. Optimization with Adaptive Density Control of 3D Gaussians
5.1 Optimization
5.2 Adaptive Control of Gaussians
6. Fast Differentiable Rasterizer for Gaussians
7. Implementation, Result and Evaluation
7.4. Limitations
1. Introduction
기존 3D 장면 표현 방식과 한계
- mesh/point) GPU/CUDA 기반 래스터화에 적합하여 가장 일반적인 3D 표현 방식
- NeRF) 연속적인 장면 표현을 기반으로 하며, 뛰어난 시각적 품질을 제공하지만 렌더링 속도가 느리고 최적화 비용이 큼
기존 Radiance Field 기반 방법들은 연속적인 표현(voxel, hash grid, point interpolation)을 활용하여 최적화를 돕지만, 1.확률적 샘플링 비용이 높고 2.노이즈를 초래하는 문제가 있음.
연구목표
본 연구에서는 SoTA(최첨단) 수준의 시각적 품질과 경쟁력 있는 학습 시간을 제공하는 새로운 방법을 제안.
- 타일 기반 Gaussian Splatting을 통해 여러 데이터셋에서 1080p 해상도로 SoTA 품질의 실시간 렌더링을 보장
- 여러 사진으로 캡처한 장면을 실시간으로 렌더링 가능하도록 하며,
- 이전의 최적화된 방법들만큼 빠른 학습 속도를 유지하는 효율적인 3D 표현을 목표로 함.
제안하는 방법의 3가지 핵심 요소
- 3D Gaussian을 활용한 비구조적 방사 필드 표현
- NeRF와 동일한 입력(SfM으로 생성된 sparse point cloud)에서 시작하여 3D Gaussian 세트를 초기화.
- 기존 point-based 솔루션들은 MVS 데이터를 요구하지만, 본 연구에서는 SfM 포인트만으로도 높은 품질을 달성.
- 미분 가능한 볼륨 표현이므로 2D로 투사한 후 𝛼-블렌딩(alpha blending)을 적용하여 NeRF와 동일한 이미지 형성 모델을 사용 → 매우 효율적으로 래스터화
- 3D Gaussian의 특성 최적화(e.x. 3D 위치, 불투명도 𝛼, 비등방 공분산, 구형 함수 계수(SH) )
- 적응형 밀도 제어(adaptive density control)와 교차하며 최적화
- 최적화 과정에서 새로운 3D Gaussian을 추가하거나 불필요한 Gaussian을 제거하여 효율적인 표현 유지.
- 압축된 비정형 구조로 정밀한 장면 표현 가능(1~5백만 개의 Gaussian으로 구성).
- 적응형 밀도 제어(adaptive density control)와 교차하며 최적화
- 빠르고 미분 가능한 GPU 기반 렌더링 기법(타일 기반 래스터화에서 영감)
- 가시성을 고려한 비등방성 스플래팅(anisotropic splatting) 가능.
- 빠른 역전파를 통해 고품질의 새로운 뷰 합성 가능.
- 3D 가우시안 표현 덕에 가시성 순서를 존중하는 비등방성 스플래팅을 수행(정렬과 𝛼 블렌딩 덕분에) → 필요한 만큼 정렬된 스플래트의 traversal을 추적하여 빠르고 정확한 역전파를 가능하게 함
📌 요약
✅ 기존 mesh/point는 빠르지만 연속성이 부족, NeRF는 연속적이지만 느리고 비효율적.
✅ 3D Gaussian을 활용한 새로운 표현 방식을 도입하여 NeRF 수준의 품질을 유지하면서도 실시간 렌더링 가능.
✅타일 기반의 최적화된 Gaussian Splatting 방식으로 빠르고 효율적인 학습 및 렌더링 가능.
3. Overview
- 입력 데이터: 정적 장면의 이미지 세트와 카메라 정보. 카메라는 SfM에 의해 보정.
- 장면 표현: 카메라 보정 과정에서 생성된 sparse point cloud로 위치(평균), 공분산 행렬, 불투명도 𝛼로 정의된 3D Gaussians 생성.
- 최적화 과정: 3D 가우시안의 속성을 최적화하기 위한 과정이 진행되며, 이 과정에서 높고 섬세한 구조를 compact하게 표현할 수 있는 고도로 비대칭적인 볼륨 스플랫을 사용.
- Radiance field의 색상: 구면 조화(Spherical Harmonics, SH)를 사용하여 표현.
- Radiance field representation: 3D 가우시안 매개변수의 순차적 최적화 단계를 통해 생성. 위치, 공분산, 𝛼 및 구형 조화 함수 계수를 포함하며, 가우시안 밀도를 적응적으로 제어하기 위한 작업과 교차 진행.
- 렌더링 효율성: 타일 기반의 레스터화 방법을 사용하여 불투명도를 블렌딩하고, 가시성을 따르는 정렬을 통해 효율적인 렌더링을 수행.
4. Differentiable 3D Gaussian Splatting
3D 장면을 고품질로 최적화하는 기술로, normal(법선 벡터)이 없는 SfM 점군에서도 효과적으로 학습이 가능하도록 설계.
∵SfM의 극단적 희소성으로 인해 normal을 최적화하는 것은 매우 도전적→normal이 없는 SfM로 생성한 point cloud에서 최적화 시작→normal을 필요로 하지 않는 3D 가우시안 집합으로 기하학을 모델링.
3D Gaussian G(x)는 world space에서 정의된 완전한 3D 공분산 행렬과 중심점(평균)으로 정의.
- 평균 μ: 3D공간 상 point
- 분산 ∑: Gaussian의 형상과 크기를 결정(학습 대상)
- decomposition을 통해 scaling matrix와 rotation matrix로 나눠 학습에 사용
직관적이고 표현적인 최적화를 위해, 스케일링 행렬 𝑆와 회전 행렬 𝑅가 주어지면, Σ를 찾을 수 있게 표현 → 크기와 방향을 독립적으로 학습할 수 있게 함.
📌 요약
✅ Gaussian Splatting은 normal이 없는 희소 SfM 점군에서도 3D 장면을 최적화할 수 있도록 설계됨.
✅ 3D Gaussian 분포(평균 μ, 공분산 Σ)를 이용해 점군의 기하학적 정보를 표현.
✅ 공분산 행렬을 스케일링 행렬(S)과 회전 행렬(R)로 분해하여 직관적으로 학습 가능.
5. Optimization with Adaptive Density Control of 3D Gaussians
최적화 목표
장면을 정확하게 나타내는 밀집한 3D 가우시안을 생성
최적화 대상
위치 p, 밀도 , 그리고 공분산 ∑ 외에도, 각 가우시안의 색상 c를 나타내는 구형 조화 함수(Spherical Harmonics) 계수
5.1 Optimization
최적화는 반복적인 렌더링을 통해 생성된 이미지와 훈련 데이터셋의 이미지 간 차이를 최소화하는 방식으로 진행하며, 3D Gaussian의 생성/제거/이동 기능 포함.
- 3D와 2D 사이의 변환에서 발생하는 모호성을 고려하여, 파라미터를 조정함으로써 잘못 배치된 기하학을 수정하는 작업이 필요하기 때문
공간적 효율성 개선
- 공분산(covariance) 파라미터를 최적화하여, 공간적으로 균일한(동질적인) 영역을 더 효율적으로 표현→적절한 분산(크기)과 형태를 학습하여 표현력을 극대화
최적화 방법
- Stochastic Gradient Descent 기반으로 최적화 수행
- GPU 가속 프레임워크와 CUDA 커널(custom CUDA kernels)을 활용해 빠른 렌더링과 최적화를 진행
활성화 함수
- 𝛼(불투명도) → sigmoid (0~1 범위 유지)
- 공분산 스케일 → exponential (양수 값 유지).
초기화
- 초기 공분산 행렬은 주변 3개의 점과의 거리 평균값을 기반으로 설정
손실함수
- L1 Loss와 D-SSIM Loss 사용 ⇒ 픽셀 정밀도와 구조적 유사성을 모두 고려
📌 요약
✅최적화는 반복적인 렌더링과 비교를 통해 진행, 3D Gaussian의 생성/제거/이동 포함.
✅ 공분산 최적화를 통해 공간적 효율성 향상.
✅ SGD와 GPU 가속 CUDA 커널을 활용하여 빠르게 최적화.
✅ 활성화 함수:
𝛼(불투명도) → sigmoid (0~1 범위 유지).
공분산 스케일 → exponential (양수 값 유지).
✅ L1 Loss + D-SSIM Loss를 사용하여 픽셀 정밀도와 구조적 유사성을 모두 고려한 최적화 진행.
5.2 Adaptive Control of Gaussians
목표
가우시안의 수와 밀도를 조절하는 과정으로, 최적화가 진행됨에 따라 불필요한 가우시안을 제거하고, 필요한 곳에 새로운 가우시안을 추가하여 더 정밀하고 효율적인 장면 표현을 생성하는 것
밀도 조정
- optimization warm-up 후 매 100회 반복마다 수행
- 수행마다 밀도를 높이고, 𝛼가 임계값 𝜖𝛼보다 작은 가우시안을 제거 → 불필요한 가우시안은 자연스럽게 삭제
가우시안 조정
장면 내 특정 형상을 표현할 때 가우시안의 크기와 밀도가 적절하지 않으면 재구성 오류(reconstruction error)가 발생
- 형상보다 가우시안이 작은 경우(under-reconstruction) ⇒ 가우시안 복제 후 positional gradient방향으로 이동시켜 밀도 증가
- 형상보다 가우시안이 큰 경우(over-reconstruction) ⇒가우시안 쪼개고 확률밀도함수에 기반해 새 위치 초기화
두 경우 모두 큰 view-space positional gradients 를 가지고 있음
→아직 최적화되지 않았으며, 가우시안이 이동해야 할 가능성이 높은 영역임을 의미
⇒ view-space position gradients가 임계값을 초과하는 경우 밀집화 진행
📌 요약
✅ 최적화 과정에서 100회 반복마다 가우시안 밀도 조절 진행.
✅ 𝛼 값이 낮은 가우시안은 자동 제거하여 불필요한 요소 정리.
✅ Under-Reconstruction (형상이 더 세밀해야 하는 경우) → 가우시안 복제 및 이동.
✅ Over-Reconstruction (형상이 과잉 표현된 경우) → 가우시안 분할 및 재배치.
✅ View-Space Positional Gradient를 활용하여 재구성 오류를 보정하며 밀도를 최적화.
6. Fast Differentiable Rasterizer for Gaussians
목표
빠른 렌더링 및 빠른 정렬을 통해 근사적인 알파블렌딩을 수행. 효율적인 역전파(backpropagation)를 가능하게 하면서도 추가적인 메모리 소비를 최소화.
장점
- 낮은 메모리 오버헤드로 임의 개수의 가우시안을 혼합 가능
- 픽셀당 일정한 연산 오버헤드만 필요하여 높은 효율성 보장
- 완전한 미분가능성(fully differentiable)
과정
- scene을 16x16 tile로 분할
- 각 타일에 이미지를 구성하는 가우시안 덩어리들을 선별하는 작업 수행
- view frastum방식 사용해 시야 밖의 물체를 제외하는 알고리즘
- view frastum과 교차하는 부분이 99% 신뢰 구간을 가진 Gaussian만 유지
- Guard band 사용으로 극단적 위치에 있는 Gaussian을 제거
- view frastum방식 사용해 시야 밖의 물체를 제외하는 알고리즘
- 각 가우시안을 겹치는 타일의 수에 따라 인스턴스화
- 각 인스턴스에 view space depth와 tile ID를 결합한 키를 할당
- 가우시안 덩어리들이 어떻게 배치되어있는지 결정
- GPU Radix sort를 활용해 가우시안을 깊이 순서대로 정렬
- blending은 초기 정렬을 기반으로 수행 → 일부 구성에서 알파블렌딩은 근사적⇒스플랫이 개별 픽셀의 크기에 가까워짐에 따라 무시할 수 있는 수준이라 수렴된 장면에서 가시적인 아티팩트를 생성하지 않고 훈련 및 렌더링 성능을 크게 향상
- 각 타일에서 깊이 순서대로 정렬된 가우시안 리스트 생성
- 각 타일에서 splatting을 수행할 첫 번째 및 마지막 가우시안을 결정하여 목록 구성
- 순서대로 혼합
- 속도를 위해 각 tile을 하나의 thread로 병렬 처리
- 각 블록은 가우시안 패킷을 공유 메모리에 로드한 다음, 주어진 픽셀에 대해 목록을 앞에서 뒤로 탐색하며 색상과 𝛼 값을 누적
- 픽셀에서 𝛼의 목표 포화에 도달하면 해당 스레드는 중지
기존 방식과의 차별점
기울기 업데이트를 받는 Gaussian의 개수를 제한X
→scene에 따른 hyperparameter tuning 없이도, 다양한 깊이 복잡성(depth complexity)을 가진 장면을 다루고 정확하게 학습
7. Implementation, Result and Evaluation
- Mip-NeRF360와 품질은 유사하거나 우수하고, 최적화가 약 48시간이 걸리지만, 본 방법은 35-45분 이내에 최적화.
- InstantNGP와 Plenoxels에 비해 빠른 시간 내에 높은 품질을 달성하였으며, 멀리서도 시각적 세부 사항을 잘 보존.
- Blender 데이터셋으로 훈련 시, 무작위 초기화로도 최신 결과를 신속하게 달성.
7.4 Limitations
- 관찰이 부족한 영역에서의 아티팩트) 장면이 잘 관찰되지 않는 영역에서 아티팩트가 발생 가능. 이는 Mip-NeRF360와 같은 다른 방법에서도 발생하는 문제
- 비대칭 가우시안 모델로 인한 왜곡) 늘어진 아티팩트나 얼룩덜룩한 가우시안 생성 가능
- popping artifact)
- 대형 가우시안이 최적화되는 경우, 갑작스러운 깊이 또는 블렌딩 순서 전환으로 인해 발생 가능. 이는 특정 영역(뷰 의존적 외관)에서 더 자주 발생할 수 있음
- 해결가능성: 안티앨리어싱으로 해결할 수 있을 것으로 보임
- 정규화 미적용) 현재 최적화 과정에 정규화를 적용하지 않아 보이지 않는 영역에서도 아티팩트 및 popping artifact 발생할 가능성 존재.
- 높은 메모리 소비) Point기반에 비해서는 compact할지 몰라도, NeRF 기반 솔루션보다 메모리 소비가 현저히 높은 구조로, 대규모 장면의 GPU 메모리 소비가 20GB를 초과할 가능성 존재
- 해결 가능성: instant-NeRF와 같은 최적화 로직의 low-level implementation을 적용하면 메모리 효율성 개선 가능
참고 블로그 링크
https://dusruddl2.tistory.com/29
[Paper Review] 3D Gaussian Splatting for Real-Time Radiance Field Rendering (SIGGRAPH 2023)
3DGS를 처음 공부하시는 분들이라면 xoft님의 블로그와 유튜브 강의를 먼저 들으시는걸 추천드립니다.전체 알고리즘을 이해하기 쉽게 다뤄주시기 때문에 이해가 쉽습니다 :) 본 글은 논문을 순서
dusruddl2.tistory.com
'ML|DL > 논문리뷰' 카테고리의 다른 글
[논문리뷰]CLIP: Learning Transferable Visual Models From Natural Language Supervision (0) | 2025.04.02 |
---|