Introduction & 그걸 읽었을 때 드는 의문들
•
장점
◦
Unbounded and complete scenes
◦
1080p resolution rendering
Evaluation
•
기법
1.
3차원 scene을 3D 가우시안으로 표현
a.
생성: 카메라 캘리브레이션 및 sparse point cloud 복원 과정 중 생성
b.
특징: scene 최적화에 좋음
i.
Continuous volumetric radiance field의 장점들은 가져오면서
ii.
~의 단점은 보완 = 비어있는 공간은 연산 X
2.
Interleaved optimization/density control of the 3D Gaussians
a.
Optimizing anisotropic covariance
b.
Achieve an accurate representation of the scene
3.
더 빠른 렌더링 알고리즘
a.
Visibility-aware
b.
Anisotropic splatting
c.
학습 시간 단축
d.
빠른 렌더링
용어 정의
Splat
•
= “철퍼덕”, “찰싹”
•
덩어리 진 무언가가 표면에 철썩 달라붙으면서 퍼지는 것을 묘사하는 의태어
◦
e.g. 눈덩이를 뭉쳐서 창문에 철썩 던짐, 진흙을 뭉쳐서 벽에다 던짐 ⇒ “Splat!”
Splatting
•
볼륨 렌더링 관점에서
◦
3차원 공간에 떠 있는 가우시안 덩어리가 관찰자 시점 2차원 평면으로 날아와 철썩 달라붙으며 퍼지는 걸 묘사
▪
타격점?에 제일 많이 뭍고, 타격점에서 멀어질 수록 옅어짐
▪
그 분포가 가우시안 분포로 퍼져서 가우시안
◦
3분 설명
◦
Westover, Lee Alan (July 1991). "SPLATTING: A Parallel, Feed-Forward Volume Rendering Algorithm”
Texture splatting
Surface splatting
Anisotropic splatting
•
가우시안 덩어리가 방향성이 있음
Continuous volumetric radiance field
•
NeRF는 연속적인 볼륨으로 구성 (=Continuous volumetric radiance field)
•
NeRF의 장점은 가져오면서, 단점은 개선했다고 비교하기 위해 언급한 단어
•
실제 3D Gaussian splatting은 discontinuous하고 sparse한 가우시안들로 scene을 표현
Anisotropic covariance
•
방향에 따라 가우시안의 스케일이 다르기 때문에 anisotropic
거인의 어깨들
1. Gaussian Splatting is pretty cool! (그래픽스 관점)
•
Gaussian Splats
◦
3차원 공간을 입자들로 표현 (메시, 복셀, distance field)
◦
입자 = 3D Gaussian
◦
파라미터
▪
3차원 위치
▪
3차원 방향
▪
3차원 non-uniform scale
▪
불투명도
▪
색 = 3rd order Spherical Harmonics coefficients : 보는 방향에 따라 달라지는 색상
•
16개 파라미터
•
이 사람이 생각하는 논문의 contribution
1.
3차원 공간을 수 백만 개의 덩어리(=3D 가우시안)으로 만들어내는 방법을 찾아냄
•
제일 핵심이라고 생각하는 부분
•
경사하강법, differentiable rendering 하는 부분은 이 사람도 잘 이해 못 함 (AI 하는 사람이 아니라서…)
•
불연속적인 3차원 덩어리들을 어떻게 경사하강법으로 최적화를 했을까?
◦
원래는 연속적인 것들만 잘 되지 않나?
2.
수 백만 개의 덩어리들을 빠르게 렌더링하는 방법을 찾아냄
•
그런데 이 사람은 이건 기존 GPU rasterizer로도 충분히 빠르게 할 수 있다고 생각
3.
기존 기법들을 적당히 잘 섞음
a.
Gaussian splatting, spherical harmonics
4.
AI가 아님
•
녹여진 기존 그래픽스 연구들에 대한 짧은 설명
Gaussian Splatting
Spherical Harmonics
Point-Based Rendering
Representing images or scenes with a bunch of “primitive shapes”
Tiled Rasterization
2. Gaussian Splatting explorations (CLIP loss로 style transfer까지)
•
앞 부분 설명만으로도 논문 쉽게 요약
•
살짝 코드를 변경하여, 복원한 scene을 style transfer도 가능함 보여줌
◦
원래 L1 + SSIM 을 loss로 GT 이미지랑 비교하며 복원 최적화
◦
복원 후, 내가 바꾸기로 원하는 스타일의 prompt에 대한 CLIP loss 로 변경해서 다시 최적화
▪
e.g. ”반 고흐 스타일의 사과 그림”
▪
⇒ 3차원 style transfer!!
Code 검증
환경 설치
논문 주요 내용 확인
3D Gaussians
gaussians 안에 하나의 gaussian 마다 이 만큼 파라미터가 들어있음
(아래 예시에서는 공간 전체를 1313415 개의 가우시안으로 표현)
•
xyz
◦
파라미터 개수: 3
◦
3차원 공간 상의 좌표
•
feature_dc
◦
파라미터 개수: [1, 3]
◦
DC : 전자공학에서 DC(direct current)의 약자가 맞음
▪
상수 전압 + 교류 전압의 관점에서 상수 전압
▪
⇒ 상수, 기본 색상 RGB 값
▪
⇒ SH(Spherical Harmonics) 급수의 0차 항
◦
feature_rest 와 형태 맞추려고 [1,3]으로 늘림
•
feature_rest
◦
파라미터 개수: [15, 3]
▪
SH(Spherical Harmonics) 급수의 1~3차 항
•
self.max_sh_degree 가 3이고, 에서 DC 빼고 나면 15개 필요
▪
⇒ 결과적으로 가우시안마다 16개의 RGB 값 필요
▪
⇒ RGB 값은 3개의 float으로 표현하니까, 16 *3 = 48개의 float 필요
방향에 따른 색상 변화 표현 가능!
e.g. 이쪽에서 볼 때는 반사되어 비치는 붉은 색 때문에 살짝 붉게,
저쪽에서 볼 때는 비치는 게 없어서 그냥 무채색으로
← 기존 Photogrammetry 나 Nerf 약점 보완!!
반사되는 색상까지는 반영할 수 있으나, 빛 반사에 의해 밝게 빛나는, cd 값이 올라가는 것까지 제대로 표현하려면 HDR로 해야하지 않나?
•
scaling
◦
파라미터 개수: 3
•
rotation
◦
파라미터 개수: 4
너프처럼 2개 라디안 값만 있으면 되는 거 아닌가? 왜 4개나 필요하지?
이미 scale 파라미터가 xyz 3축으로 다 있으니 구 형태가 아니라 elongated 된 원형 덩어리일 것이고, 2개 라디안 값으로 방향만 정해주면 anisotropic 하지 않나?
•
opacity
◦
파라미터 개수: 1
직관적으로는 [-1,1] 일 거 같은데, 실제로 값을 보면 최소 -6.xx 부터 최대 19.xx 까지 올라감
음수 opacity는 무슨 뜻이지?
최적화하는 과정에서 거의 투명한 가우시안은 제거한다고 했는데, 그러면 음수인 가우시안들은 왜 남아있지?
0 근처의 opacity인 가우시안만 없애고 아예 음수 opacity면 남겨두나?