본문 바로가기
3D-GS

[논문 리뷰] VastGaussian (CVPR 2024) : Large Scene

by xoft 2024. 6. 17.

VastGaussian: Vast 3D Gaussians for Large Scene Reconstruction, Jiaqi Lin, CVPR2024

 

 

드론으로 항공샷으로 촬영한 이미지들을 3D Gaussian Splatting으로 만드는 Large Scene Reconstruction 연구입니다.

 

 

 

 

Overviews

1) Divid-and-conquer 방식으로 scene을 여러개의 cell로 분할하고 합치는 전략을 사용합니다.

(a) scene을 격자 모양의 cell로 나눕니다.

(b) cell에 여백을 줍니다. 여백 내 카메라(view point)들을 선택합니다.

(c) cell 밖에 위치하지만 cell영역을 촬영한 view point들을 추가 선택합니다.

(d) cell 마다 cell밖에 위치하지만 관측되는 point cloud들을 추가 선택합니다.

본문의 Progressive Data Partitioning파트에서 다룹니다.

 

2) cell마다 3DGS(=3D Gaussian Splatting)를 학습하며, CNN을 학습시에 floater를 없애기 위해 사용합니다.

CNN으로 이미지의 밝기값을 보정해서 3DGS training시에 수렴이 잘되도록 사용하고, rendering 과정 땐 CNN부분을 제거하여 rendering 속도를 향상시킵니다.

본문의 Decoupled Appearance Modeling파트에서 다룹니다.

 

3) cell마다 3DGS학습한 모델을 merge합니다.

본문의 Seamless Merging파트에서 다룹니다.

 

 

 

Related Works

Related works는 읽지 않아도 본문을 이해하는데 큰 문제가 되지 않습니다. 선택적으로 읽으시길 바랍니다.

Large Scene Reconstruction

Block-NeRF : 하나의 city를 여러개의 block으로 나누고 위치마다 training view를 나누어 학습시킨 연구입니다.

Mega-NeRF : scene을 gird로 나누고 하나의 pixel를 ray로 그렸을 때, 거쳐지는 각 grid들로 assign시킨 연구입니다.

Switch-NeRF : scene을 나누는 decomposition 방식을 학습시키는 연구입니다.

Grid-NeRF : scene decomposition을 하지 않고 NeRF기반 방법과 grid기반 방법을 통합해서 사용했습니다. 

→ 이 연구들은 랜더링 퀄리티는 향상됬지만 detail이 떨어졌고, 랜더링 속도도 느렸습니다.

 

3DGS(이전글) : 1080p해상도에서도 높은 퀄리티와 real-time 랜더링을 보여주는 연구입니다.

→ large scene을 구성하기 어렵습니다.

 

Varying Appearance Modeling

NRW : data기반 contrastive loss로 appearance encoder을 학습하여, appearance embedding(AE)을 형성했습니다.

NeRF-W(이전글) : AE로 point-based featrue를 구성하고 MLP를 통과시켜 color를 inference했습니다.

Ha-NeRF : 여러 view로부터 AE를 global representation으로 만들었고, 이를 view-consistent loss로 학습했습니다. 

→ 본 논문에서는 여러 view의 AE들을 rendered image로 concatenation하고 CNN으로 transformation map을 만든 후에,  3D GS 학습에 사용했습니다.

 

 

 

 

Problems

기본적으로 3DGS는 작은 scale의 scene 또는 object-centric scene을 다루고 있기 때문에,  Large Scene을 처리하는데 몇가지 문제가 있습니다.

 

1) 커다란 Scene을 만들게 되면 많은 갯수의 가우시안이 만들어져야 하고, 가우시안 갯수가 많아지면 VRAM이 부족합니다. 또한 rendering quality도 감소합니다. 구체적으로 32GB VRAM GPU로는 11M개의 Gaussians을 가진 scene을 학습 할 수 있지만, MipNeRF360데이터셋에서 Garden scene은 100$m^2$ 정도의 영역이지만 5.8M개의 Gaussian으로 구성된다고 합니다. 항공샷 같은 Large Scene은 구성 할 수가 없습니다.

 

2) scene이 크기 때문에 수렴 속도가 늦어지게 되고, 안정적이지 않게 수렴하게 됩니다.

 

3) 카메라 촬영할 때마다 카메라 노출량이 바뀌면서, 균등하지 않은 조명 값을 갖게 됩니다. 3DGS에서는 이를 커버하기 위해 low-opacity를 가진 많은 갯수의 3D Gaussian을 만드는 특성을 갖고 있습니다. 일상 생활에서 카메라로 촬영하면 밝은 피사체가 많은 경우 자동으로 이미지 전체가 어둡게 만들어지고, 어두운 피사체가 많은 경우 이미지 전체가 밝아지는 경험을 해보셨을 겁니다. 이런 증상 때문에 같은 피사체일지라도 다른 밝기를 갖게되며, floater들이 발생하게 됩니다.

문제1), 2)는 본 논문 Progressive Data Partitioning파트에서 해결하고 있고, 문제3)은 Decoupled Appearance Modeling 파트에서 해결하고 있습니다.

 

 

 

 

Progressive Data Partitioning

 

(a) Camera-position-based region division

camera(=view point) position 기준으로 나누고, 각 cell은 비슷한 갯수의 카메라를 포함시키도록 합니다. SfM이 완료된 Scene에 대해 하나의 축으로 m등분 한뒤에, 다른 축으로 n등분합니다. scene은 3차원인데 2차원으로 셀을 나누는 것으로 봐선, 지면에서 수직은 방향은 나누지 않는 것으로 보입니다. 때문에 하나의 cell마다 view point 갯수는 대략적으로 전체 view point 갯수 / (m x n) 가 됩니다.

 

(b) Position-based data selection

각 cell마다 cell영역의 width, height를 크기 기준으로 20%의 여백을 더 포함시킵니다. 셀마다 view points와 SfM으로 추출된 point cloud를 선택합니다.

 

(c) Visibility-based camera selection

(b)에서 선택한 view point로는 detail한 scene을 만들지 못하고 floater와 artifact를 만들어낸다고 합니다. 때문에 추가적으로 각 셀마다 해당 셀을 바라보는 view point 중에서 랜더링 하였을 때, 일정 비율 이상 해당 셀을 포함하고 있다면 추가적으로 해당 셀의 view point로 추가합니다. 

이 때 (e)처럼 point cloud가 있는 면적(=주황색)을 기준으로 랜더링 이미지(=I)에 포함된 셀의 비율을 계산하게 된다면, 랜더링한 view에 셀 내에 위치한 물체가 있음에도 불구하고, 이미지에 나타난 면적이 적으므로 선택되지 않는 문제가 발생합니다. 이렇게 될 경우 하늘영역을 충분히 커버하지 못해 floater도 발생할 수 있습니다.

때문에 (f)방식과 같이 하늘 영역을 포함한 면적을 기준으로, 해당 view point가 셀에 포함되는지를 계산하게 됩니다. 이를 통해 하늘을 충분한 갯수의 view point들로 학습 할 수 있게 합니다.

 

(d) Converge-based point selection

앞서 선택한 view-point들이 커버하고 있는 point cloud들 중, 각  cell 밖에 위치한 point cloud 일지라도 해당 cell의 3DGS를 학습시키기 위한 initial point 값으로 사용합니다. 

이렇게 하지 않는다면, (g)에서 보이는 것 같이 cell밖에 있는 물체임에도 depth ambiguity때문에 cell안에 위치하게 학습되고, 이는 floater형태로써 만들어지 됩니다. cell밖에 3DGS 초기point들로 사용해주면서, cell밖에 있는 물체가 cell 밖에서 생성되도록 해줍니다.

 

 

 

 

Decoupled Appearance Modeling

3DGS는 view point들의 variation을 줄이기 위해 floater가 발생합니다.

NeRF계열 연구에서는, 여러view point들의 pixel을 ray-marching한 후, embedding vector로 만들고 MLP를 사용해서 color를 생성하면서 floater를 줄이지만, 3DGS에서는 MLP가 없고 ray-marching방식이 아니기 때문에 적용 할 수 없습니다. 때문에 decoupled appearance modeling을 학습 process에 도입하게 됩니다. training image들의 apearance variation를 맞추기 위해 transformation map을 생성해서 사용합니다.

 

0) 3DGS로 랜더링된 이미지를 입력으로 합니다.

 

1) high-frequency(=디테일)하게 학습되는 것을 막으면서, 사용 메모리를 줄여 연산량을 줄이기 위해 downsample하여 이미지의 크기를 줄입니다.

 

2) 줄여진 이미지를 appearance encoder에 통과시켜 m길이의 appearance embedding(=feature vector)을 획득합니다(=이 한줄은 논문에 언급되지 않았습니다).

 

3) pixel마다 rgb채널 3와 m vector를 concatnation한 후 이를 CNN에 넣고, 원본 해상도 크기의 이미지 $M$을 만듭니다.

 

4) 입력 랜더링 이미지$I^r$와 생성이미지 $M$으로 pixel-wise transformation $T$를 수행하여, appearance-variant image $I^a$를 만듭니다. 이 pixel-wise transformation은 단순히 pixel-wise multiplication으로 이뤄집니다.

 

5) appearance encoder와 CNN은 아래 loss함수로 학습됩니다. 

 

GT 이미지 $I$와 3DGS로 랜더링한 이미지 $I^r$은 D-SSIM Loss로 사용하고, GT 이미지 $I$와 CNN으로 생성한 이미지 $I^a$는 L1 Loss를 사용합니다. D-SSIM를 사용함으로써, 랜더링 이미지에 대한 구조적 불일치성을 penalize하게 되고, L1를 사용함으로써, pixel단위의 appearance 불일치를 penalize하게 됩니다.

view-point마다 서로 다른 색상톤을 맞춰주게 된다고 보면 될 것 같습니다. 이렇게 학습함으로써, geometry를 잘파악하게만들면서, 이미지마다 일관된 appearance를 가지도록 만들게 됩니다.

 

이렇게 CNN기반으로 학습을 하고 난 후에, rendering시에는 CNN(=appearance modeling)부분을 빼고 수행하게 되며, 3DGS의 장점인 실시간 랜더링을 할 수 있게 됩니다.

 

 

 

 

Seamless Merging

각 cell마다 독립적으로 3DGS 모델을 학습한 후에, (a)에서 나누었던 cell기준으로 밖에 위치한 gaussian을 제거합니다. 그리고 이어 붙입니다. cell마다 여백을 줘서 학습했기 때문에, cell 경계영역에서 artifact없이 seamless하게 만들어지게 된다고 합니다. 논문에서는 전체 3D 갯수가 증가하면서, 퀄리티를 향상하게 된다고 설명되어 있습니다. (이러면 메모리를 많이 사용하게 될텐데 단점은 빠져있네요.)

 

 

 

 

Experiments

8개의 cell을 사용하였고, (c)에서 사용된 visibility threshold를 25%로 지정하였고, downsample은 32배 축소하였으며, appearance embedding의 길이는 64로 사용했고, 각 cell은 60K iteration을 수행하였습니다. densification은 1k~30K iteration까지 200iteration 마다 수행했습니다. 다른 세부 설정값은 3DGS와 동일하게 했습니다. 

 

데이터셋은 Mill-19데이터셋에서 Rubble, Building scene을 사용했고, UrbanScene3D 데이터셋에서 Campus, Residence, Sci-Art를 사용했습니다. 각 이미지는 수천장 이상의 고해상도 이미지를 포함하고 있으며, 이미지를 4배 줄였다고 합니다.

 

성능지표는 PSNR, SSIM, LPIPS글 참조바랍니다.

 

평가시에도 view point마다 color variation이 만들어 질 수 있으므로, Mip-NeRF 360에서 사용한 color correction을 수행한후에 평가했다고 합니다.

 

퀄리티 평가

 

추가 결과는 link 참조바랍니다.

 

 

 

학습시간 / 메모리 / 랜더링 속도 평가

 

 

 

Ablation Study

 

 

 

댓글