2024.08.12
Gaussian Surfels은 3D GS가 shortest axis를 기반으로 normal estimation을 하던 것을 비틀어 아예 flat한 2D Gaussian을 활용하고자 한다. 이에 대한 학습 방식은 사실 기존과 크게 다르지 않지만, 이를 기반으로 하는 surface mesh extraction은 흥미로웠다. 그러나 high quality scene recon. dataset에서 할 실험들이 없는게 아쉬운 점이고, 2DGS같은 work들과의 차별성이 크게 두더러지지 않는 것 같다. 우선 2DGS 논문도 읽어봐야할듯 하다.
Motivation
•
3D Gaussian으로부터 정확한 normal을 예측하기 어렵고, 이는 부정확한 surface optimization으로 이어짐
•
최근 연구들은 z-axis (i.e., shortest axis)를 normal로 두기도 하는데, 어느 방향으로든 두께를 가지고 있는 3D Gaussian의 특성상 ambiguity가 존재할 수 밖에 없음
•
이를 보완하기 위해 아예 flat한 Gaussian (i.e., Gaussian surfels)를 도입하고 해당 Gaussian의 normal 을 통해 surface를 정확하게 optimize하고자 함.
Challenges
•
Gaussian surfel을 optimize하면서 z-axis를 무조건 0으로 수정할 것이기에, photometric loss기반 학습 시 z-axis관련 derivative들이 0이 되어버림. 이를 보완하며 적절한 geometric guidance를 줄 수 있는 학습이 필요
•
Gaussian surfel의 분포가 몹시 복잡하여 mesh extraction 단계에서 의미 없는 Gaussian 들을 쳐내기가 힘듦.
Method
1. Gaussian Surfels
•
앞서 말했듯이, 다른 3D Gaussian들과 같은 parametrization을 가져가되, z-axix의 scaling factor을 0으로 만들어서 flat하게 만든다.
•
이때 normal의 경우에는 아래와 같이 쉽게 얻을 수 있다.
•
Differentiation 은 기존 Gaussian splatting을 따라가면 되는 듯 하다. 큰 변화점 없음.
•
다만, depth와 normal을 렌더링하면서는 transmittance를 기반으로 한 normalization term을 사용한다.
•
특히, Gaussian center의 normal을 값을 사용해도 됐던 normal map과는 달리, depth의 경우에는 Gaussian center의 값을 사용할 경우 부정확한 값이 되어버림. 이를 보정하기 위해 depth는 ray casting과정에서 Gaussian surfel과의 intersection point의 값을 이용하도록 함. 어떻게 보면, 기존의 ambiguous한 3D Gaussian의 depth보다 훨씬 make sense한 depth를 활용하는 듯
2. Training
총 5개의 Loss를 사용함
•
Photometric loss: 특별하지 않아 넘어감
•
Depth-normal consistency loss
◦
앞서 말했듯이, z-axis의 scale을 0으로 만드는 바람에 해당 derivative가 0으로 되어 photometric loss만으로 normal에 대한 explicit guidance를 주기 어렵게 됨. 이를 보완하기 위해 만든 첫번째 loss.
◦
아이디어는 간단한데, estimated normal과 estimated depth로부터 얻은 normal의 값이 consistent하도록 regularize한다. 이는 normal과 depth가 학습 과정에서 서로 complementary하게 학습될 수 있도록 도와준다고 설명한다. 다만, 둘 다 틀린 경우는 다른 loss function들이 해결해준다는데, 이는 정확한 분석은 없다.
•
Normal-prior loss
◦
Specular surface와 같이 photometric loss만으로 normal을 예측하기 어려운 경우 를 보완하기 위해 estimated normal과 pretrained monocular depth estimation model의 normal값이 비슷해지도록 학습한다.
◦
앞에서는 photometric loss로는 학습이 안된다고 했던 것 같은데 왜 갑자기 specular surface 이야기가 나오는지 모르겠다. 아마 specular surface가 결국에는 depth map에도 영향을 끼칠 것이고, 이는 앞선 depth-normal consistency loss로 인해서 normal에도 영향을 준다고 생각했을 수도 있겠다. 실제로 G-buffer의 경우 의도적으로 depth-map을 first non-specular bounce까지 계산하기도 한다.
•
Opacity loss : Gaussian surfel들의 opacity가 0혹은 1에 가까운 값을 가지게 하는 regularization.
•
Mask loss: Alpha blending 중의 transmittance map이 binary segmentation mask와 비슷해지도록 하는 regularization.
3. Gaussian Point Cutting and Meshing
•
우선은, 바로 3D Gaussian center들을 통한 Poisson reconstruction이 아닌, rendered depth & normal을 통한 screened Poisson reconstruction을 진행하여 mesh 뽑음.
•
다만, 여전히 noisy할 수도 있는 Gaussian surfel들로 인해서 outlier들이 생긴다. 그리고 해당 outlier들을 rasterization시에 매 ray마다 걸러내는 것은 너무 costly하다.
•
그래서 제안하는 volumetric cutting
◦
Voxel grid () 마다 intersecting하는 Gaussian surfel들의 weighted opacitiy를 계산
◦
특정 threshold () 이하의 voxel은 foreground와 background간의 거리가 크다고 인지, 이에 해당되는 Gaussian surfel들은 계산에서 제외함.-
그 외 학습 디테일들
•
제일 눈여겨본 디테일은 x-, y- axis 방향의 gradient를 10배 곱해줘 z-axis에 대한 indirect한 rotation optimization이 되도록 했다는 점.
Results
•
DTU datset에서는 다른 method들 대비 뛰어난 성능 향상을 보이지는 않았음. 다만 3DGS 기반 work들과 비교해서는 제일 나았다는 점이 눈여겨볼만 하고, NeuS기반 work들의 성능이 해당 세팅에서 여전히 좋은 것을 볼 수 있음
다만, test image의 sparsity를 줄일 때 Gaussian surfel의 성능이 더 좋아짐을 확인할 수 있음. 추후에 sparse view recon. 연구들이 눈여겨볼만할듯.
•
BlendedMVS dataset에서는 비교적 높은 성능을 보임.
•
Visualization을 보면 기타 3DGS 연구들 대비 압도적으로 clean 한 surface mesh를 보여준다. NeuS와 NeuS2와의 comparison은 large MLP혹은 Hash table기반 work들과 comparable함을 보여주기 위함인 것 같다.
•
DeepBlending같은 real scene의 recon.도 잘하는 것 같다.