Skip to content

Commit

Permalink
initial publishing
Browse files Browse the repository at this point in the history
  • Loading branch information
gustn9609 committed Jul 14, 2024
1 parent edb72bb commit 92182ad
Show file tree
Hide file tree
Showing 14 changed files with 244 additions and 195 deletions.
Binary file added _images/image12.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added _images/image13.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added _images/image18.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added _images/image19.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added _images/image4.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added _images/image6.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added _images/image7.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added _images/image8.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
169 changes: 89 additions & 80 deletions _sources/docs/review/3DGS.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,79 +49,84 @@ Peusdo Algorithm of 3D Gaussian Splatting
:::{figure-md}
<img src="../../pics/3DGS/image2.png" alt="image2" class="bg-primary mb-1" width="800px">

3D Gaussian Splatting image2
3D Gaussian Splatting Equation 4
:::

3D Gaussian은 포인트(mean) μ를 중심으로 하고, 3D 공분산 행렬 Σ로 정의한다. 렌더링을 위해 3D Gaussian을 2D로 project해야 하며, 이는 viewing transformation W에 따라 카메라 좌표계에서의 공분산 행렬 Σ'로 나타낼 수 있다. 최적화를 위해, Σ는 positive semi-definite 행렬이어야 하며, 이 때문에 최적화가 어렵다고 한다.

:::{figure-md}
<img src="../../pics/3DGS/image3.png" alt="image3" class="bg-primary mb-1" width="800px">

3D Gaussian Splatting image3
3D Gaussian Splatting Equation 5
:::

따라서 논문에서는 더 직관적이고 최적화에 적합한 representation을 선택한다. 3D Gaussian의 공분산 행렬 Σ는 타원체의 구성을 설명하는 것과 유사하며, 이를 위해 scaling matrix S와 rotation matrix R을 사용한다.
따라서 논문에서는 더 직관적이고 최적화에 적합한 representation을 선택한다. 3D Gaussian의 공분산 행렬 Σ는 타원체의 구성을 설명하는 것과 유사하며, 이를 위해 scaling matrix S와 rotation matrix R을 사용한다.

scaling은 3D vector s로, rotation은 quaternion q로 표현하며, 이들은 각각의 행렬로 변환될 수 있다. 학습 동안 Auto grad(자동 미분)의 오버헤드를 피하기 위해 모든 파라미터에 대한 gradient를 명시적으로 유도한다.
<br>
:::{figure-md}
<img src="../../pics/3DGS/image4.png" alt="image4" class="bg-primary mb-1" width="800px">
:::
scaling은 3D vector s로, rotation은 quaternion q로 표현하며, 이들은 각각의 행렬로 변환될 수 있다. 학습 동안 Auto grad(자동 미분)의 오버헤드를 피하기 위해 모든 파라미터에 대한 gradient를 명시적으로 유도한다.

최적화에 적합한 anisotropic covariance representation은 장면의 다양한 geometry에 적응하도록 3D Gaussian을 최적화한다.
:::{figure-md}
<img src="../../pics/3DGS/image4.png" alt="image4" class="bg-primary mb-1" width="800px">

3D Gaussian Splatting Equation 6
:::

최적화에 적합한 anisotropic covariance representation은 장면의 다양한 geometry에 적응하도록 3D Gaussian을 최적화한다.


## Optimization with Adaptive Density Control of 3D Gaussians

<br>
## Optimization with Adaptive Density Control of 3D Gaussians
- **Optimization**
- **Adaptive Control of Gaussians**

이 논문의 핵심 접근법은 free-view synthesis를 위해 장면을 정확하게 표현하는 3D Gaussian의 밀집된 세트를 만드는 최적화 단계다. 여기에는 position 𝑝, 투명도 𝛼, 공분산 Σ뿐만 아니라, scene의 view-dependent appearance를 정확하게 위한 각 Gaussian의 색상 c를 표현하는 SH coefficients까지 포함된다.

- **Optimization**
- **Adaptive Control of Gaussians**

이 논문의 핵심 접근법은 free-view synthesis를 위해 장면을 정확하게 표현하는 3D Gaussian의 밀집된 세트를 만드는 최적화 단계다. 여기에는 position 𝑝, 투명도 𝛼, 공분산 Σ뿐만 아니라, scene의 view-dependent appearance를 정확하게 위한 각 Gaussian의 색상 c를 표현하는 SH coefficients까지 포함된다.

<br>
## Optimization
- 3D를 2D로 project할 때 발생할 수 있는 모호함을 피하기 위해, optimization 과정에서 geometry가 더 생성되거나, 삭제되거나 혹은 이동할 수 있어야 함
- 공분산 파라미터의 퀄리티는 큰 homogeneous area들을 적은 수의 큰 anisotropic Gaussian들로 캡처될 수 있기 때문에 representation의 compactness에 중요
## Optimization
- 3D를 2D로 project할 때 발생할 수 있는 모호함을 피하기 위해, optimization 과정에서 geometry가 더 생성되거나, 삭제되거나 혹은 이동할 수 있어야 함
- 공분산 파라미터의 퀄리티는 큰 homogeneous area들을 적은 수의 큰 anisotropic Gaussian들로 캡처될 수 있기 때문에 representation의 compactness에 중요

- 논문은 SGD를 사용하고 일부 연산은 CUDA 커널을 사용합니다. 특히 빠른 rasterization은 최적화의 효율성에 중요합니다.
- 이는 최적화의 주요 computation bottleneck이기 때문
- 논문은 SGD를 사용하고 일부 연산은 CUDA 커널을 사용합니다. 특히 빠른 rasterization은 최적화의 효율성에 중요합니다.
- 이는 최적화의 주요 computation bottleneck이기 때문

- 투명도 𝛼에 대해서는 sigmoid function을, 공분산의 scale에 대해서는 exponential activation 함수를 사용
- initial 공분산 행렬은 가장 가까운 세 점까지의 거리의 평균을 축으로 하는 isotropic Gaussian으로 추정
- position에 대해서만 exponential decay 스케줄링을 사용
- 투명도 𝛼에 대해서는 sigmoid function을, 공분산의 scale에 대해서는 exponential activation 함수를 사용
- initial 공분산 행렬은 가장 가까운 세 점까지의 거리의 평균을 축으로 하는 isotropic Gaussian으로 추정
- position에 대해서만 exponential decay 스케줄링을 사용

Loss function은 D-SSIM과 L1 loss를 사용하며, D-SSIM loss는 이미지의 왜곡(distortion)을 잘 반영하고 미분 가능하여 evaluation metric뿐만 아니라 loss로도 사용 가능.
Loss function은 D-SSIM과 L1 loss를 사용하며, D-SSIM loss는 이미지의 왜곡(distortion)을 잘 반영하고 미분 가능하여 evaluation metric뿐만 아니라 loss로도 사용 가능.

참고로 SSIM은 이미지의 밝기, 대조, 구조를 고려하여 두 이미지 간의 유사성을 측정하는 메트릭이다.
참고로 SSIM은 이미지의 밝기, 대조, 구조를 고려하여 두 이미지 간의 유사성을 측정하는 메트릭이다.

<br>
:::{figure-md}
<img src="../../pics/3DGS/image6.png" alt="image6" class="bg-primary mb-1" width="800px">
:::

<br>
:::{figure-md}
<img src="../../pics/3DGS/image7.png" alt="image7" class="bg-primary mb-1" width="800px">
:::
:::{figure-md}
<img src="../../pics/3DGS/image6.png" alt="image6" class="bg-primary mb-1" width="800px">

<br>
## Adaptive Control of Gaussians
또한 Structure-from-Motion(SfM)으로 얻은 초기 희소 점들을 시작으로, scene을 더 잘 표현하기 위해 unit volume 내 Gaussian들의 수와 밀도를 점진적으로 최적화하는 방식을 제안한다.
- 매 100번의 반복(iter)마다 Gaussian을 추가하고, 투명도 𝛼가 일정 값보다 작은 Gaussian을 제거
D-SSIM equation
:::

Adaptive Control of Gaussians는 빈 공간을 채우고, missing geometric feature이 있는 region과 하나의 Gaussian이 너무 넓은 region을 커버하는 region에 집중합니다.

이러한 지역은 모두 큰 view-space positional gradient를 가지며, 최적화를 통해 Gaussian을 이동시킵니다.
- Under-reconstruction: 동일한 크기의 Gaussian을 복제하고 위치 기울기 방향으로 이동.
- Over-reconstruction: Gaussian을 두 개로 나누고, 위치는 기존 Gaussian의 PDF를 샘플링해서 초기화.
:::{figure-md}
<img src="../../pics/3DGS/image7.png" alt="image7" class="bg-primary mb-1" width="800px">

최적화 과정에서 입력 카메라에 가까운 Gaussian density의 부적절한 증가를 방지하기 위해, 3000번의 반복마다 투명도 α를 0에 가깝게 설정한다.
<br>
:::{figure-md}
<img src="../../pics/3DGS/image8.png" alt="image8" class="bg-primary mb-1" width="800px">
:::
SSIM equation
:::

## Adaptive Control of Gaussians
또한 Structure-from-Motion(SfM)으로 얻은 초기 희소 점들을 시작으로, scene을 더 잘 표현하기 위해 unit volume 내 Gaussian들의 수와 밀도를 점진적으로 최적화하는 방식을 제안한다.
- 매 100번의 반복(iter)마다 Gaussian을 추가하고, 투명도 𝛼가 일정 값보다 작은 Gaussian을 제거

Adaptive Control of Gaussians는 빈 공간을 채우고, missing geometric feature이 있는 region과 하나의 Gaussian이 너무 넓은 region을 커버하는 region에 집중합니다.

이러한 지역은 모두 큰 view-space positional gradient를 가지며, 최적화를 통해 Gaussian을 이동시킵니다.
- Under-reconstruction: 동일한 크기의 Gaussian을 복제하고 위치 기울기 방향으로 이동.
- Over-reconstruction: Gaussian을 두 개로 나누고, 위치는 기존 Gaussian의 PDF를 샘플링해서 초기화.

최적화 과정에서 입력 카메라에 가까운 Gaussian density의 부적절한 증가를 방지하기 위해, 3000번의 반복마다 투명도 α를 0에 가깝게 설정한다.

:::{figure-md}
<img src="../../pics/3DGS/image8.png" alt="image8" class="bg-primary mb-1" width="800px">

Adaptive Control of Gaussians
:::


## Fast Diffenrentiable Rasterization for Gaussians
Expand All @@ -140,36 +145,40 @@ tile-based rasterization은 아래와 같은 흐름으로 진행된다.
- 이를 GPU Radix sort를 이용해 정렬
- 각 타일마다 front-to-back으로 color와 α값을 accumulate해서 픽셀 값을 구함

<br>
## Results and Evaluation
<br>
- Results and Evaluation
데이터셋에 따라 결과는 다르지만 SOTA이상의 퀄리티를 내면서 좋은 Training time과 FPS를 보인다.
<br>
:::{figure-md}
<img src="../../pics/3DGS/image12.png" alt="image12" class="bg-primary mb-1" width="800px">
:::

<br>
<br>
:::{figure-md}
<img src="../../pics/3DGS/image13.png" alt="image13" class="bg-primary mb-1" width="800px">
:::
<br>
- Ablations
<br>
:::{figure-md}
<img src="../../pics/3DGS/image19.png" alt="image19" class="bg-primary mb-1" width="800px">
:::
<br>
:::{figure-md}
<img src="../../pics/3DGS/image18.png" alt="image18" class="bg-primary mb-1" width="800px">
:::

<br>
## Limitations
- 이전의 방식들과 유사하게 잘 관측되지 않은 장면은 artifact들이 존재
- 이전의 방식들과 유사하게 늘어지고 얼룩진 artifact를 생성할 수 있음
- 최적화에서 거대한 Gaussian이 만들어지면 popping artifacts 가끔 발생
- 최적화에서 regularization을 적용하지 않음
- NeRF-based 기법들보다 memory consumption이 상당히 높음
## Results and Evaluation
- Results and Evaluation
데이터셋에 따라 결과는 다르지만 SOTA이상의 퀄리티를 내면서 좋은 Training time과 FPS를 보인다.

:::{figure-md}
<img src="../../pics/3DGS/image12.png" alt="image12" class="bg-primary mb-1" width="800px">

3D Gaussian Splatting experiments table
:::


:::{figure-md}
<img src="../../pics/3DGS/image13.png" alt="image13" class="bg-primary mb-1" width="800px">

3D Gaussian Splatting experiments result
:::


- Ablations
:::{figure-md}
<img src="../../pics/3DGS/image19.png" alt="image19" class="bg-primary mb-1" width="800px">

3D Gaussian Splatting ablation test image
:::

:::{figure-md}
<img src="../../pics/3DGS/image18.png" alt="image18" class="bg-primary mb-1" width="800px">

3D Gaussian Splatting result image
:::

## Limitations
- 이전의 방식들과 유사하게 잘 관측되지 않은 장면은 artifact들이 존재
- 이전의 방식들과 유사하게 늘어지고 얼룩진 artifact를 생성할 수 있음
- 최적화에서 거대한 Gaussian이 만들어지면 popping artifacts 가끔 발생
- 최적화에서 regularization을 적용하지 않음
- NeRF-based 기법들보다 memory consumption이 상당히 높음
Loading

0 comments on commit 92182ad

Please sign in to comment.