본문 바로가기

학부연구 MLVC LAB

3D Gaussian Splatting 논문 리뷰

[ Abstract  &  Introduction ] 

3D Rendeing 분야에서 3D 가우시안 이전에  어떤 방식도 고품질 ( 1080px ) 실시간 ( 100 fps ) 렌더링은 불가능했습니다. 

3D Gaussian Splatting은 3가지 방식을 도입해서 이를 가능하게 했습니다. 

 

1) First, starting from sparse points produced during camera calibration, we represent the scene with 3D Gaussians that preserve desirable properties of continuous volumetric radiance fields for scene optimization while avoiding unnecessary computation in empty space
-> 카메라 칼리브레이션 과정에서 생성된 sparse point에서 시작하여, 공간을 Gaussian들로 표현합니다.

-> 빈 공간(투명 가우시안)들은 제외하여 공간을 색이 있는 가우시안들으로 표현

2) Second, we perform interleaved optimization/density control of the 3D Gaussians, notably optimizing anisotropic covariance to achieve an accurate representation of the scene

->  교차최적화와 밀도제어를 수행합니다.

-> 교차최적화는 3D 가우시안의 다양한 속성들을 순차적으로 개선하는 과정을 나타냅니다. 이때의 핵심은 장면의 정확한 표현을 위해 가우시안을 상황에 맞게 늘리거나 펴는 비등방성 공분산 최적화입니다. 

-> 밀도제어는 공간내에서 가우시안 분포의 밀도를 조절하는 방법입니다. 최적화와 밀도제어를 교차적으로 수행하게 됩니다. 

 

Third, we develop a fast visibility-aware rendering algorithm that supports anisotropic splatting and both accelerates training and allows real-time rendering.
-> 가시성을 인식하는 빠른 렌더링 알고리즘을 만들어서 학습을 가속하고 실시간 렌더리링을 가능하게 합니다.
-> 비등방성 스플래팅을 지원합니다. 
 

< 성능 입증 > 

아래 사진들은 여러 성능 비교 지표들로 가우시안 모델과 다른 모델들을 비교합니다.

 

3D Gaussian splatting만이 100fps 이상의 실시간 렌더링이 가능했으며

PSNR(Peak Signal-to-Noise Ratio)지표 또한 매우 우수하게 나온것을 알 수 있습니다.

또 훈련시간 또한 적은 편에 속하는 것을 확인할 수 있습니다. 

 

 

[ Related Works ] 

 

2.1 Traditional Scene Reconstruction and Rendering

 

1) 빛 필드 방식 

여러 각도에서 쓰인 사진들을 활용하여 데이터를 조밀하게 샘플리하여 새로운 시점을 만드는 방식 

-> 특정한 각도에서 보는 빛의 방향과 세기를 기록하는 방식 

-> 카메라의 여러 시점에서 촬영한 정보를 바탕으로 새로운 시점을 합성하는데 적합 

-> 복잡한 3D 재구성 과정없이 빛의 정보만을 재조합하여 새로운 각도의 사진을 생성

 

2) Structure-from-Motion 

카메라의 위치와 깊이정보를 이용하여 3D 기하적인 장면을 직접 복원하는 방식 

-> 빛 필드 방식에 비해서 연산량이 많다. 

 

-> 최근 신경 렌더링 방법은 이런 전통적인 방식들을 대부분의 면에서 능가한다. 

 

2.2 Neural Rendering and Radiance Fields

 

1) 초기 CNN은 MVS 기반 기하 방식을 활용하여 새로운 시점 합성에 사용됨 

-> 시간에 따른 깜빡임 현상이 자주 발생하는 문제 

 

2) Volumatic 방식과 NeRF 

-> 볼류메트릭 표현 방식은 기하를 표현하기 위해 연속적이고 미분가능한 밀도 필드에 기반을 둔다. 

-> 연산비요이 상당히 크다. 

NeRF 

-> 중요 샘플링과 위치 인코딩을 도입하여 품질을 개선 

-> 단점 : MLP를 사용하여 속도가 느리다. => 정규화전략으로 많은 부분 성능 개선  Mip-NeRF360

-> 렌더링 품질은 뛰어나지만, 학습과 렌더링 시간이 매우 길다. 

 

2.3 Point-Based Rendering and Radiance Fields

 

점 기반 렌더링 : 3D 장면을 개별 점들로 표현하여 렌더링 

-> 문제점 : 점 들 사이에 빈 공간이 생기고 이미지가 깨어보이는 문제 

splatting : 점들을 조 금 더 큰 원형이나 타원형으로 표현하는 방식 -> 더 자연스럽고 고품질의 이미지를 만든다. 

 

미분 가능한 점 기반 렌더링 : 신경망 학습에서 쉽게 점들을 조정할 수 있는 방식 

-> CNN을 활용하여 빠르게 새로운 각도에서 보이는 이미지를 만들어낸다. 

-> 하지만 여전히 MVS에 의존하여, 특징이 없는 영역이나 얇은 구조에서 재구성 오류가 발생할 수 있다. 

 

image formation model : NeRF와 3D Gaussian splatting이 모두 아래 공식을 쓴다. 

 

  • : 최종 색상으로, 모든 샘플의 색상 정보와 투명도(알파 값)를 결합하여 계산됩니다.
  • : 현재 광선(ray)이 지나는 위치의 순번입니다. 예를 들어, i=1i = 1이면 광선의 시작 지점이고, i=Ni = N이면 마지막 지점을 의미합니다.
  • : 광선이 지나가는 총 샘플 지점의 수입니다.
  • : 특정 위치 ii까지 도달한 광선의 전달률(Transmittance), 즉 얼마나 많은 빛이 이전 지점을 통과해 왔는지를 나타냅니다.
  • σi: 위치 ii에서의 밀도(density) 값으로, 해당 지점이 얼마나 불투명한지를 결정합니다. 밀도가 클수록 불투명해집니다.
  • δi: 샘플 간의 간격으로, 광선이 지나는 거리의 차이를 나타냅니다.
  • ci: 위치 ii에서의 색상(color) 값입니다.

 

NeRF 방식과 3D Gaussian splatting 방식은 모두 광선을 따라 색상과 투명도를 누적하여 이미지를 만든다 ( 위 공식 )

 

렌더링을 수행하는 방식은 다르다. 

NeRF는 연속적인 볼륨 표현을 사용 : 계산량 많음

점기반 방식은 비구조적인 점의 집합을 사용 : 계산량을 줄이고 성능과 효율성을 높임 

 

Pulsar [Lassner and Zollhofer 2021] 방식의 빠른 렌더링 속도에 영감을 받아서 

일부 알파 블렌딩등의 변화를 주어서 빠른 렌더링 속도와 높은 시각적 품질을 모두 잡았다. 


본 연구는 MVS 방식에서 벗어나서 

1) 3D  가우시안을 사용해 장면을 유연하게 표현 

2) MVS 기하정보 없이, 타일 기반 렌더링 알고리즘을 통하여 실시간 렌더링 

 

3D 가우시안 활용 -> 인체 포착 및 단일 객체 표현에 사용되고 있다. 

본 연구는 3D 가우시안을 사용하여 복잡한 장면을 표현할 수 있도록 비등방성 공분산, 밀도 제어, 깊이 정렬을 최적화 

-> 이를 통해 배경이 있는 실내외 장면을 포함한 복잡한 구조의 장면을 실시간으로 렌더링 가능 

 

[  Method ]

 

< 전체적인 과정 > 

1. 먼저 sfm 과정에서 생성되는 희소 포인트 클라우드를 사용햐여 3D 가우시안 집합을 생성합니다. 

2. 그 후 최적화와 밀도 조정을 수행합니다.

-> forward 방향으로는 카메라 시점에 맞는 프로젝션을 해주고 미분가능한 타일기반 레스터라이져를 통해 2D 이미지를 생성합니다.

      그리고 생성된 이미지와 원본 이미지의 차이를 픽셀별로 계산합니다.

-> backward 방향으로는 가우시안의 등방성, 위치, 색깔, 투명도등의 특성들에 대해 그라디언트를 구하고 업데이트 해줍니다. 

     또, 가우시안의 개수와 관련이 되는 적응적 밀도 조정과정을 통해 교챠적으로 개수도 업데이트 해줍니다. 

3. 그리고 일단 학습이 되면, 실시간 rendering이 가능해집니다. 

 

이제 각 과정에 대해 자세히 살펴봅시다. 

 

Method 1 :  sfm points & Gaussian initialization

먼저 3D 가우시안 초기화 과정 대해 살펴보겠습니다.

 

[ sfm point clouds ]

 

이 그림은 여러장의 2D 사진으로부터 sfm 포인트들을 생성하는 장면입니다. 

 

이렇게 생성된 각 포인트들에 3D 가우시안을 대응시켜 생성시켜서 가우시안 집합을  초기화합니다.

초기화할때 가우시안의 모양들은 등방성으로 초기화 합니다. ( 길쭉한 타원체보다는 구의 형태로 일단 초기화 합니다. ) 

 

 

3D 가우시안은 미분 가능한 우수한 볼륨 표현입니다. 

그리고 이를 2D로 투영하고 표준 알파 블렌딩을 적용하면, NeRF와 동일한 이미지 형성모델을 사용하여 매우 효율적으로 래스터화할 수 있습니다.  ( 이때 래스터화는 3D를 2D에 투영하여 보여주는 것을 말합니다. )

 

 

Method 2 : OPTIMIZATION WITH ADAPTIVE DENSITY CONTROL OF 3D GAUSSIANS

이제 최적화 과정에 대해서 다루어보겠습니다. 

 

최적화는 각 훈련뷰에 대해서 휸련뷰와 렌더링된 이미지를 반복적으로 비교함으로써 수행됩니다

 

다만 이때 가우시안의 갯수도 조정이 필요하기 때문에 가우시안의 밀도를 조절하는 단계와 교차로 진행됩니다

 

 [ 최적화 과정 ]

 

최적화 해야할 대상인 최적화 변수는

가우시안의 위치 𝑝, 𝛼 투명도, 공분산 Σ, 각 가우시안의 색상을 나타내는 SH 계수등이 있습니다.  

 

< 최적화 변수 > 
* 가우시안의 위치 (p): 3D 좌표

* 불투명도 (α): 0~1 사이의 값

* 공분산 (Σ): 3x3 행렬

* SH(Spherical Harmonics) 계수: 색상 표현

 

< 활성화 함수 >

활성화함수로는 시그모이드 함수와 지수함수를 사용하여 매끄러운 기울기를 보장합니다. 

 

< 손실 함수 > 

손실함수로는 L1 norm 값과 D-SSIM 값을 가중 결합한 함수를 사용합니다

D-SSIM 손실함수는 이미지의 밝기, 대비, 구조등 여러특성을 고려해 두 이미지가 얼마나 비슷한지를 계산해주는 함수입니다. 

람다값은 주로 0.2를 사용한다고 합니다. 

 

[ 적응적 밀도 조정 ] 

가우시안의 수를 조절하는 밀집화는 최적화 매 100회 수행마다 수행해줍니다. 

여기서는 가우시안의 갯수와 밀도를 조정하고, 필요없는 투명 가우시안은 제거하여 효율성은 높입니다. 

 

그림은 각각 밀집화에 대상들로

각각 미재구성되거나 과재구성된 부분입니다. 

 

위쪽은 미재구성된 부분이라 하나의 가우시안을 clone하여 공간을 채웁니다.
아래쪽 과제구성된 부분은 하나였던 가우시안을 두개로 split한뒤 , 공간을 채우는 방식을 사용합니다. 

 

Method 3 :  FAST DIFFERENTIABLE RASTERIZER FOR GAUSSIANS

이제 마지막 단계인 빠른 레스터라이제이션 단계에 대해 다루어보겠습니다. 

 

이 과정의 목표는 전체적인 빠른 렌더링과 빠른 정렬을 통해

비등방성 splats를 포함한 근사 𝛼-블렌딩을 허용하고,

이전 연구에서 존재했던 gradient를 받을 수 있는 splats의 개수 제한을 피하는 것입니다. 

 

Gaussian splats를 위한 타일 기반 래스터라이저를 설계하여,  면을 16x16 타일로 나눈 후, 시야 프러스텀과 각 타일에 대해 3D Gaussian을 제거하는 것으로 시작합니다.

 

위 사진처럼 시야 프러스텀에 포함되는 가우시안들을 제외하고는 모두 제거합니다.

그 다음으로는, GPU Radix 정렬을 사용해서 가우시안들을 정렬한뒤 블렌딩을 수행합니다 .

 

이후 레스터라이징을 위해 각 타일에 대해 하나의 쓰레드 블록을 런치하여 병령화합니다.

각 블록은 공유 메모리에 가우시안들을 로드하고, 각 픽셀에 대해 가우시안 목록을 순회하면서 색상과 알파값(투명도)를 누적합니다.

 

이렇게 2d 이미지를 front - to - back으로 렌더링한 다음

back - to - front로 돌아오면서 gradient를 구해서 업데이트 합니다. 

 

[  implementation ]

이제는 이 기술을 적용한 결과입니다.

 

2번째 열이 3D 가우시안 방법으로  네모 상자 안에 있는 작은 디테일까지 잘 구현된 것을 볼 수 있습니다. 

 

왼쪽 열의 사진들은 학습을 7k 번만 진행한 사진이고 오른쪽은 30k 번 진행한 사진인데 
7k번만 진행해도 뛰어난 품질인것을 볼 수 있습니다. 

 

이것은 초기 가우시안 위치를 초기화할때 랜덤 초기화 방식과 sfm 포인트 방식을 각각 적용하여 비교한 것입니다. 

오른쪽 위쪽 사진과 오른쪽 아래 사진을 보시면 디테일한 배경 부분에서 sfm으로 초기화했을때 고품질인 것을 확인할 수 있습니다.

 

3D 가우시안의 형태를 비등방성을 썼을떄와 등방성으로만 했을때를 비교한 모습입니다.

비등방성을 썼을떄가 더 아티팩트가 없는 더 고품질의 결과가 나온것을 확인할 수 있습니다. 

 

adaptive Gaussian densification에서 각각 clone 방법과 split 방법을 사용하지 않았을때의 비교결과 입니다.

이방법을 쓰지 않으면 자전거 휠 베어링과 같은 주파수가 높은 영역에서 왜곡이 생기는 것을 확인할 수 있습니다. 

 

[  Limitation ]

3D 가우시안 방법에도 몇가지 한계들이 존재합니다. 

 

먼저 위쪽 행의 두개의 사진을 살펴봅시다. 

왼쪽 NeRF를 사용했을때는 floater와 회색 모습이 나타나는것을 확인할 수 있는데

오른쪽 3D 가우시안의 경우는 그런것은 없지만 조금 거칠게 나온다고 합니다. 

 

아래쪽 사진에서는 본 장면과 겹치는 부분이 적은 시점에서는 3D가우시안에서도 아티팩트가 생성됩니다.

이것은 NeRF에서도 마찬가지 입니다. 

 

또 3D 가우시안은 메모리를 NeRF 기반 솔루션보다 상당히 많이 소비합니다.

큰 장면을 훈련하는 동안 GPU 메모리 소비가 최대 20GB를 초과할 수 있습니다. 

최적화논리를 저수준에서 신중하게 구현하면 이 수치를 크게 줄일 수 있다고합니다. 

 

학습된 장면을 렌더링하려면,

전체 모델을 저장하기 위한 수백 메가바이트의 GPU메모리와, 장명 크기 및 이미지 해상도에 따라 

추가로 30~500 메가파이트가 필요합니다. 
저자들은 포인트 클라우드에 대한 압축 기술을 3D가우시안에 적용해 볼 것을 제안합니다. 
 

[ Conculsion ] 

 

이 연구는 최조로 고품질 실시간 randiance field 렌더링을 경쟁력있는 학습시간으로 달성했다는 의의가 있습니다. 

 

또 이 연구는 고품질 방사필드 훈련에 연속적인 표현이 엄격하게 적용될 필요가 없다는 것을 증명했습니다.

 

또한  이 연구는 실시간 렌더링 원칙을 기반으로

GPU의 성능과 소프트웨어 래스터화 파이프라인을 활용하는 것의 중요성을 입증했습니다.

이러한 설계 선택은 학습과 실시간 렌더링 모두에서 성능의 핵심입니다. 

'학부연구 MLVC LAB' 카테고리의 다른 글

Deep Compression 논문 리뷰  (0) 2025.01.24
3D Gaussian Splatting Code Run  (0) 2025.01.06
AIM 2024 Sparse Neural Rendering Challenge:Dataset and Benchmark  (0) 2024.09.29
SIREN 논문 리뷰  (0) 2024.09.25
Distillation - 개념  (0) 2024.09.13