diff --git a/_images/image12.png b/_images/image12.png
new file mode 100644
index 00000000..3f3f59e1
Binary files /dev/null and b/_images/image12.png differ
diff --git a/_images/image13.png b/_images/image13.png
new file mode 100644
index 00000000..2cce7fdc
Binary files /dev/null and b/_images/image13.png differ
diff --git a/_images/image18.png b/_images/image18.png
new file mode 100644
index 00000000..b0e62138
Binary files /dev/null and b/_images/image18.png differ
diff --git a/_images/image19.png b/_images/image19.png
new file mode 100644
index 00000000..732417ee
Binary files /dev/null and b/_images/image19.png differ
diff --git a/_images/image4.png b/_images/image4.png
new file mode 100644
index 00000000..edf7e12e
Binary files /dev/null and b/_images/image4.png differ
diff --git a/_images/image6.png b/_images/image6.png
new file mode 100644
index 00000000..2b349a1f
Binary files /dev/null and b/_images/image6.png differ
diff --git a/_images/image7.png b/_images/image7.png
new file mode 100644
index 00000000..31c2531e
Binary files /dev/null and b/_images/image7.png differ
diff --git a/_images/image8.png b/_images/image8.png
new file mode 100644
index 00000000..2be6d503
Binary files /dev/null and b/_images/image8.png differ
diff --git a/_sources/docs/review/3DGS.md b/_sources/docs/review/3DGS.md
index 172b5823..69cef7be 100755
--- a/_sources/docs/review/3DGS.md
+++ b/_sources/docs/review/3DGS.md
@@ -49,7 +49,7 @@ Peusdo Algorithm of 3D Gaussian Splatting
:::{figure-md}
-3D Gaussian Splatting image2
+3D Gaussian Splatting Equation 4
:::
3D Gaussian은 포인트(mean) μ를 중심으로 하고, 3D 공분산 행렬 Σ로 정의한다. 렌더링을 위해 3D Gaussian을 2D로 project해야 하며, 이는 viewing transformation W에 따라 카메라 좌표계에서의 공분산 행렬 Σ'로 나타낼 수 있다. 최적화를 위해, Σ는 positive semi-definite 행렬이어야 하며, 이 때문에 최적화가 어렵다고 한다.
@@ -57,71 +57,76 @@ Peusdo Algorithm of 3D Gaussian Splatting
:::{figure-md}
-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를 명시적으로 유도한다.
-
- :::{figure-md}
-
- :::
+scaling은 3D vector s로, rotation은 quaternion q로 표현하며, 이들은 각각의 행렬로 변환될 수 있다. 학습 동안 Auto grad(자동 미분)의 오버헤드를 피하기 위해 모든 파라미터에 대한 gradient를 명시적으로 유도한다.
- 최적화에 적합한 anisotropic covariance representation은 장면의 다양한 geometry에 적응하도록 3D Gaussian을 최적화한다.
+:::{figure-md}
+
+
+3D Gaussian Splatting Equation 6
+:::
+
+최적화에 적합한 anisotropic covariance representation은 장면의 다양한 geometry에 적응하도록 3D Gaussian을 최적화한다.
+## Optimization with Adaptive Density Control of 3D Gaussians
-
- ## 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까지 포함된다.
-
- ## 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은 이미지의 밝기, 대조, 구조를 고려하여 두 이미지 간의 유사성을 측정하는 메트릭이다.
-
- :::{figure-md}
-
- :::
-
- :::{figure-md}
-
- :::
+:::{figure-md}
+
-
- ## 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}
+
- 최적화 과정에서 입력 카메라에 가까운 Gaussian density의 부적절한 증가를 방지하기 위해, 3000번의 반복마다 투명도 α를 0에 가깝게 설정한다.
-
- :::{figure-md}
-
- :::
+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}
+
+
+Adaptive Control of Gaussians
+:::
## Fast Diffenrentiable Rasterization for Gaussians
@@ -140,36 +145,40 @@ tile-based rasterization은 아래와 같은 흐름으로 진행된다.
- 이를 GPU Radix sort를 이용해 정렬
- 각 타일마다 front-to-back으로 color와 α값을 accumulate해서 픽셀 값을 구함
-
- ## Results and Evaluation
-
- - Results and Evaluation
- 데이터셋에 따라 결과는 다르지만 SOTA이상의 퀄리티를 내면서 좋은 Training time과 FPS를 보인다.
-
- :::{figure-md}
-
- :::
-
-
-
- :::{figure-md}
-
- :::
-
- - Ablations
-
- :::{figure-md}
-
- :::
-
- :::{figure-md}
-
- :::
-
-
- ## Limitations
- - 이전의 방식들과 유사하게 잘 관측되지 않은 장면은 artifact들이 존재
- - 이전의 방식들과 유사하게 늘어지고 얼룩진 artifact를 생성할 수 있음
- - 최적화에서 거대한 Gaussian이 만들어지면 popping artifacts 가끔 발생
- - 최적화에서 regularization을 적용하지 않음
- - NeRF-based 기법들보다 memory consumption이 상당히 높음
\ No newline at end of file
+## Results and Evaluation
+- Results and Evaluation
+ 데이터셋에 따라 결과는 다르지만 SOTA이상의 퀄리티를 내면서 좋은 Training time과 FPS를 보인다.
+
+:::{figure-md}
+
+
+3D Gaussian Splatting experiments table
+:::
+
+
+:::{figure-md}
+
+
+3D Gaussian Splatting experiments result
+:::
+
+
+- Ablations
+:::{figure-md}
+
+
+3D Gaussian Splatting ablation test image
+:::
+
+:::{figure-md}
+
+
+3D Gaussian Splatting result image
+:::
+
+## Limitations
+- 이전의 방식들과 유사하게 잘 관측되지 않은 장면은 artifact들이 존재
+- 이전의 방식들과 유사하게 늘어지고 얼룩진 artifact를 생성할 수 있음
+- 최적화에서 거대한 Gaussian이 만들어지면 popping artifacts 가끔 발생
+- 최적화에서 regularization을 적용하지 않음
+- NeRF-based 기법들보다 memory consumption이 상당히 높음
\ No newline at end of file
diff --git a/docs/experiments/js_exp.html b/docs/experiments/js_exp.html
index b9e58d7d..0b9f9c8c 100644
--- a/docs/experiments/js_exp.html
+++ b/docs/experiments/js_exp.html
@@ -508,7 +508,7 @@
Fig. 607 4 classes of leaves#
+Fig. 615 4 classes of leaves#
Fig. 608 4 classes of leaves#
+Fig. 616 4 classes of leaves#
Fig. 609 prompt: “a photo of leaves with multiple diseases#
+Fig. 617 prompt: “a photo of leaves with multiple diseases#
Fig. 610 prompt: “a photo of a <diseaes-leaf> leaf”#
+Fig. 618 prompt: “a photo of a <diseaes-leaf> leaf”#
Fig. 611 fine tuning 전#
+Fig. 619 fine tuning 전#
Fig. 612 fine tuning 후#
+Fig. 620 fine tuning 후#
Fig. 613 fine tuning 전#
+Fig. 621 fine tuning 전#
Fig. 614 fine tuning 후#
+Fig. 622 fine tuning 후#
Fig. 615 multiple diseases class 이미지 생성 결과, prompt: “<diseaes-leaf> leaf”#
+Fig. 623 multiple diseases class 이미지 생성 결과, prompt: “<diseaes-leaf> leaf”#
Fig. 616 leaf 생성 결과, prompt: “leaf”#
+Fig. 624 leaf 생성 결과, prompt: “leaf”#
Fig. 617 photo 생성 결과, prompt: “photo”#
+Fig. 625 photo 생성 결과, prompt: “photo”#
Fig. 618 result_base#
+Fig. 626 result_base#
생성한 이미지를 추가 데이터로 활용한 경우
@@ -641,7 +641,7 @@Fig. 619 result_now#
+Fig. 627 result_now#
Fig. 620 cat 생성 결과, prompt: “cat”#
+Fig. 628 cat 생성 결과, prompt: “cat”#
Fig. 621 sea 생성 결과, prompt: “sea”#
+Fig. 629 sea 생성 결과, prompt: “sea”#
Fig. 622 pirate 생성 결과, prompt: “pirate”#
+Fig. 630 pirate 생성 결과, prompt: “pirate”#
Fig. 623 illustration 생성 결과, prompt: “illustration”#
+Fig. 631 illustration 생성 결과, prompt: “illustration”#
Fig. 624 animation 생성 결과, prompt: “animation”#
+Fig. 632 animation 생성 결과, prompt: “animation”#
Fig. 625 wallpaper 생성 결과, prompt: “wallpaper”#
+Fig. 633 wallpaper 생성 결과, prompt: “wallpaper”#
Fig. 626 Training Data#
+Fig. 634 Training Data#
DreamBooth 를 실험하면서 대표적으로 instance prompt, guidance scale, negative prompt, 그리고 마지막으로 prior preservation loss 를 반영하는 정도를 조절하는 prior_loss_weight 를 바꿔가면서 학습해보았습니다. 사전학습된 text-to-image 모델로 처음에는 hakurei/waifu-diffusion 모델을 시도해봤지만 결과가 만족스럽지 못해 runwayml/stable-diffusion-v1-5 모델로 fine-tuning 작업을 진행했습니다.
@@ -582,7 +582,7 @@Fig. 627 With Prior Preservation Loss#
+Fig. 635 With Prior Preservation Loss#
Fig. 628 Without Prior Preservation Loss#
+Fig. 636 Without Prior Preservation Loss#
Fig. 629 Without Negative Prompt#
+Fig. 637 Without Negative Prompt#
Fig. 630 With Negative Prompt#
+Fig. 638 With Negative Prompt#
Fig. 631 Instance Prompt#
+Fig. 639 Instance Prompt#
Inference step 을 늘려가면서 추론된 인물 이미지의 퀄리티가 상승하는 부분도 확인할 수 있었습니다. 또한, guidance scale 에 대한 실험도 진행했는데 guidance scale 이 작을수록 prompt 와 무관한 random 한 이미지들을 생성하게 됩니다. 최종적으로 num_inference steps 와 guidance scale 의 값은 각각 100 과 7.5 로 설정하였습니다.
@@ -699,7 +699,7 @@Fig. 632 Increasing Number of Inference Steps#
+Fig. 640 Increasing Number of Inference Steps#
Fig. 633 Increasing Number of Inference Steps / Negative Prompt#
+Fig. 641 Increasing Number of Inference Steps / Negative Prompt#
Fig. 634 Guidance Scale#
+Fig. 642 Guidance Scale#
동일한 inference prompt 로 prior-preservation loss 를 제외해본 결과, 생성된 남자의 머리카락이 더 길어지고 더 여성스러운 생김새를 가지는 놀라운 사실도 발견했습니다.
@@ -734,7 +734,7 @@Fig. 635 Without Prior Preservation Loss#
+Fig. 643 Without Prior Preservation Loss#
Fig. 636 Appendix 1#
+Fig. 644 Appendix 1#
Fig. 637 Appendix 2#
+Fig. 645 Appendix 2#
Fig. 638 Appendix 3#
+Fig. 646 Appendix 3#
마지막으로 하단의 좌측과 우측 사진은 각각 “A photo of sks girl” 그리고 “A photo of a girl in the style of sks” 이라는 prompt 로 DreamBooth 모델을 각각 학습한 후, 나비를 생성하라는 동일한 prompt 로 추론해본 결과입니다. sks 가 수식하는 명사가 girl 이 아닌 style 이도록 prompt 를 수정함으로써, butterfly 사진을 생성할때 조금이나마 더 프리드로우 웹툰의 그림체를 반영할 수 있었던 부분도 확인할 수 있었습니다.
@@ -782,7 +782,7 @@Fig. 639 Appendix 4#
+Fig. 647 Appendix 4#
Fig. 585 3D Gaussian Splatting image2#
+Fig. 585 3D Gaussian Splatting Equation 4#
3D Gaussian은 포인트(mean) μ를 중심으로 하고, 3D 공분산 행렬 Σ로 정의한다. 렌더링을 위해 3D Gaussian을 2D로 project해야 하며, 이는 viewing transformation W에 따라 카메라 좌표계에서의 공분산 행렬 Σ’로 나타낼 수 있다. 최적화를 위해, Σ는 positive semi-definite 행렬이어야 하며, 이 때문에 최적화가 어렵다고 한다.
Fig. 586 3D Gaussian Splatting image3#
+Fig. 586 3D Gaussian Splatting Equation 5#
따라서 논문에서는 더 직관적이고 최적화에 적합한 representation을 선택한다. 3D Gaussian의 공분산 행렬 Σ는 타원체의 구성을 설명하는 것과 유사하며, 이를 위해 scaling matrix S와 rotation matrix R을 사용한다.
-scaling은 3D vector s로, rotation은 quaternion q로 표현하며, 이들은 각각의 행렬로 변환될 수 있다. 학습 동안 Auto grad(자동 미분)의 오버헤드를 피하기 위해 모든 파라미터에 대한 gradient를 명시적으로 유도한다.
-
-:::{figure-md}
-
-:::
scaling은 3D vector s로, rotation은 quaternion q로 표현하며, 이들은 각각의 행렬로 변환될 수 있다. 학습 동안 Auto grad(자동 미분)의 오버헤드를 피하기 위해 모든 파라미터에 대한 gradient를 명시적으로 유도한다.
+Fig. 587 3D Gaussian Splatting Equation 6#
+최적화에 적합한 anisotropic covariance representation은 장면의 다양한 geometry에 적응하도록 3D Gaussian을 최적화한다.
-Optimization
Adaptive Control of Gaussians
이 논문의 핵심 접근법은 free-view synthesis를 위해 장면을 정확하게 표현하는 3D Gaussian의 밀집된 세트를 만드는 최적화 단계다. 여기에는 position 𝑝, 투명도 𝛼, 공분산 Σ뿐만 아니라, scene의 view-dependent appearance를 정확하게 위한 각 Gaussian의 색상 c를 표현하는 SH coefficients까지 포함된다.
-3D를 2D로 project할 때 발생할 수 있는 모호함을 피하기 위해, optimization 과정에서 geometry가 더 생성되거나, 삭제되거나 혹은 이동할 수 있어야 함
+공분산 파라미터의 퀄리티는 큰 homogeneous area들을 적은 수의 큰 anisotropic Gaussian들로 캡처될 수 있기 때문에 representation의 compactness에 중요
논문은 SGD를 사용하고 일부 연산은 CUDA 커널을 사용합니다. 특히 빠른 rasterization은 최적화의 효율성에 중요합니다.
이는 최적화의 주요 computation bottleneck이기 때문
Fig. 588 D-SSIM equation#
+Fig. 589 SSIM equation#
+또한 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}
-
-:::
최적화 과정에서 입력 카메라에 가까운 Gaussian density의 부적절한 증가를 방지하기 위해, 3000번의 반복마다 투명도 α를 0에 가깝게 설정한다.
+Fig. 590 Adaptive Control of Gaussians#
+Results and Evaluation +데이터셋에 따라 결과는 다르지만 SOTA이상의 퀄리티를 내면서 좋은 Training time과 FPS를 보인다.
Fig. 591 3D Gaussian Splatting experiments table#
+Fig. 592 3D Gaussian Splatting experiments result#
+Ablations
Fig. 593 3D Gaussian Splatting ablation test image#
+Fig. 594 3D Gaussian Splatting result image#
+이전의 방식들과 유사하게 잘 관측되지 않은 장면은 artifact들이 존재
이전의 방식들과 유사하게 늘어지고 얼룩진 artifact를 생성할 수 있음
최적화에서 거대한 Gaussian이 만들어지면 popping artifacts 가끔 발생
최적화에서 regularization을 적용하지 않음
NeRF-based 기법들보다 memory consumption이 상당히 높음