본문 바로가기
3D-GS

[논문 리뷰] TRIPS (arXiv2024) : 3D GS 퀄리티 향상

by xoft 2024. 2. 5.

TRIPS: Trilinear Point Splatting for Real-Time Radiance Field Rendering, Linus Franke (arXiv2024)

 

3D Gaussian Splatting(3D GS) 결과물을 보면, blurring하고 artifact(부유물과 같은 노이즈)가 많은 것을 볼 수 있습니다. TRIPS에서는 이런 노이즈들을 없애고 깔끔하게 랜더링하고 있습니다! 

 

알고리즘을 어떻게 설계하였는지 보겠습니다. 본 글은 3DGS 개념을 알고 있다는 전제하에 쓰여졌습니다.

 

 

 

 

Related Works

novel view synthesis 분야의 알고리즘들은 일반적으로 SfM(Structure-from-Motion)으로 추정한 camera parameter과 추정한 point cloud를 사용하게 됩니다. 하지만 값에 대한 정확도를 보장하지 못할 뿐더러 real world 이미지를 사용하게 될 경우엔 큰 오차가 발생하기 때문에, novel view synthesis알고리즘에서 artifact 또는 blur가 만들어 질 수 있습니다.

 

TRIPS에선 2가지 연구의 장단점을 보완하면서 이 문제를 해결합니다.

3D-GS (3D Gaussian Splatting : 이전글)

  • 특징 : 3D Gaussian 분포로 랜더링 되는 point집합을 만드는 전략을 사용해서, point의 shape와 size를 직접적으로 optimization합니다.
  • 장단점 : 빠른 랜더링 속도를 가지며, world space에서 point cloud로부터 발생되는 gap들을 잘 메꿔줍니다. 하지만 blurry하고 cloudy artifacts를 보입니다.

ADOP (Approximate Differentiable One-Pixel Point Rendering)

  • 특징 : multi resolution에서 testing한 depth를 가진 one-pixel point로 radiacne field를 구성합니다. 이미지 좌표계에서 point의 gap을 최소화시키고 texture detail을 향상시키도록 neural network가 설계되었습니다.
  • 장단점 : 주어진 point cloud의 해상도를 능가하도록 texture를 구성하는 장점이 있지만, neural network가 연산량이 많고, 커다란 hole이 생길 경우 채우지 못하는 단점이 있습니다.

 

 

 

 

Overview

전체적인 구조입니다.

  • 3DGS와 동일하게 point cloud와 카메라 포즈를 입력으로 받아, 카메라 pose에 따른 color를 출력하는 모델로 설계됩니다.
  • Feature Pyramid를 구성하고 gated-convolution으로 Shperical Harmoic의 coefficient를 획득하여 color를 계산합니다.
  • 마지막으로 Tone Mapper를 통해 색을 보정을 하게 됩니다.

 

 

 

Algorithm

Trilinear Point Splatting

1. 각 3D Gaussian을 Camera Parameter를 통해 World 좌표계에서 Image 좌표계로 변환합니다. 그리고 3D Gaussian의 크기를 계산합니다. f는 focal lentgth, Sw는 3D Gaussian의 크기, z는 image space에서의 z축거리입니다.

2. 학습되는 이미지마다 해상도가 2배씩 줄어드는 다른 L개의 이미지를 만들고, 3D Gaussian은 크기 s에 따라 서로 다른 2개의 이웃한 layer를 선택합니다.

3. 해당 layer의 2x2 pixel에 1개 3D Gaussian의 값이 써집니다. 논문에서는 2x2x2으로 splat되어진다고 표현되어 있습니다. 

베타는 bilinear weight로써, 각layer에서 3D Gaussian에 대한 pixel의 가중치를 나타냅니다. x,y는 선택된 3D Guassian의 좌표이고, xi, yi는 인접한 pixel의 좌표입니다. l은 layer별 가중치를 의미하며, si는 layer별 pixel의 size를 의미한다고 볼 수 있습니다. 3D Gaussian의 size인 s가 매우 작다면, si가 0인 layer에 속하게되며, 너무 작다면 최소값 ε=0.25이 되도록 설계됩니다.

첫번째 수식을 보면, layer내 pixel에 들어가는 opacity value γ(감마) 값은 3D Gaussian의 opacity α(알파)와 layer당 가중치 l(엘)과 각 layer의 pixel의 weight β(베타)의 곱으로 계산됩니다.

 

이미지마다 L개의 layer로 구성되고, 각 layer마다 pixel값들이 최적화되면서 학습하게 됩니다. 

다음으로 랜더링시에는 어떻게 되는지 보겠습니다.

 

 

 

 

Multi Resolution Alpha Blending

주어진 camera pose에 대해, 3D Gaussian의 size에 따라 인접한 Layer 2개를 선택하고, 해당 layer로 projection합니다. 그리고 기존 3DGS기법과 동일하게 깊이별로 alpha blending을 수행합니다. 아래는 alpha blending수식입니다. CΛ는 alpha blending된 값이고, cm과 α는 3D Gaussian의 각각 color값과 opacity를 의미합니다.

이 때 alpha blending은 기존 3DGS와는 다르게, 16개 elements에 대해서만 수행한다고 합니다. 그리고 각 layer별로 convolution network를 통과해서 최종 랜더링 이미지를 그립니다. 

G-Conv 부분을 확대하면 아래와 같습니다.

3개 타입의 연산에 대해 나눠서 보자면,

  • G-Conv : UNet처럼 차원을 맞춰주기 위해 upsampling하면서 convolution연산을 수행합니다. 이 때 network는 gated convolution을 사용했습니다. gated convolution이 어떤 특성을 가지는지 별도의 설명은 없습니다. 따로 찾아보니 vaild한 feature일 수록 attention하게 만드는 특성을 가진 convolution이라고 합니다. (gated convolution개념 : link)
  • SH → color :  network의 output은 SH의 coefficient로 설계됬습니다. (SH개념 : link) SH로 color를 설계했다면, 카메라 pose가 network 출력값과 별도로 SH의 입력으로 들어가야하는데, 다이어그램상에 표시되어 있지않네요.
  • Tone Mapper : 카메라에 관한 parameter인 models exposure time, white balance, sensor response, vignetting을 모델링하여 색을 보정하게 됩니다. 여기도 자세한 설명은 언급되어 있지 않습니다.

 

 

 

 

Experiment

학습시에는 3D Gaussian의 위치, 크기, feature와 camera model, poses, neural network weight, tone mapper paramter가 optimization되며, 600epoch로 2-4시간 소요됩니다.

Tanks&Temples, MipNeRF360, ADOP의 BOAT/OFFICE 데이셋으로 PSNR, LPIPS, SSIM지표로 평가하였습니다. (ADOP를 제외한 데이터셋 설명 : link), (평가지표 : link)

LPIPS지표로는 전체적으로 높은 성능을 보입니다. 2등대비 20%갭으로 성능이 높습니다.  PSNR,SSIM 관점에선 성능이 좋지 않습니다. TRIPS는 전체적으로 sharpness하고 디테일한 반면, MipNeRF360과 3DGS는 적은 noise를 가지고 깔끔한 것을 볼 수 있다고만 표현되어 있습니다.

 

 

 

Ablation Studies

Point-Size/Position Optimization

scene에서 point size가 optimization되면서 large hole을 채우는 것을 볼 수 있는 실험입니다. 좌상단 이미지는 COLMAP후에 TRIPS의 입력으로 쓰이는 초기 point cloud(=3D Gaussian의 크기가 줄어든 상태)가 표시되어 있습니다. 처음엔 point가 몰려있는 것을 볼 수 있습니다. 이러한 hole은 최종 랜더링시에 artifact를 만드는 것을 볼 수 있습니다.

반면 optimization한 후에는 point cloud의 밀집도가 낮아지고 많이 퍼져 있습니다. 

training후에 random noise를 주고 100 epoch을 학습 했을 때의 결과입니다. ADOP에 비해 랜더링을 잘하는 것을 볼 수 있습니다.

 

Number of Render Layers

layer갯수가 증가하면 성능이 향상되고 속도는 줄어듭니다. feature pyramid를 사용한 다른 연구에선 4 or 5개 layer가 좋은 성능을 보였다고 합니다.

 

View Dependency

카메라 pose에 따라 다르게 랜더링하기 위해 SH(Shperical Harmonics)를 썼습니다. GARDEN scene에서 퀄리티가 향상되었지만, 다른 scene에서는 큰차이가 없었습니다. SH network module (SH-net) or optimized per point (SH-point)라고 적혀있는데 무엇을 의미하는지 정확히 모르겠습니다.

 

Feature Vector Dimensions

point마다 feature descriptor의 갯수를 기본 4개에서 8개로 증가 할 경우 퀄리티가 약간 향상되지만 메모리와 랜더링 시간에 부담을 주게 됩니다. 이 부분도 정확히 어떤 것을 의미하는지 모르겠네요.

 

 

Networks

2번째줄은 TRIPS network에 SH를 붙이지 않았을 경우, 3번째줄은 SH를 network의 마지막layer에 붙일 경우, 4번째줄은 SH를 network의 2번째 레이어에 붙였을 경우를 각각 의미합니다. 논문 원문에 글이 이상하네요.

 

Time Scaling on Number of Points

많은 수의 point를 랜더링하는데 효율성을 가지는 것을 볼 수 있습니다.  가장큰 Office scene의 경우에도 15ms로 랜더링 하는 것을 볼 수 있습니다.

 

Rendering Efficiency

학습시간은 A100에서 측정하였고, rendering은 RTX 4090에서 측정하였습니다. 학습속도가 2~4시간정도로 느리고 3DGS보다 랜더링 속도가 느립니다.

 

Outlier Rubustness

사람이 걸어다니는 scene에 대해서, TRIPS는 깔끔하게 랜더링하는 것을 볼 수 있습니다.

 

Comparision to Prior Work with Number of Points

TRIPS는 3DGS의 blurring을 많이 개선하게 됩니다. LPIPS관점에서 많은 개선을 보였습니다. 3DGS는 일반적으로 SfM을 통해 얻은 적은 수의 point으로 시작합니다. 여기에선 실험적으로 SfM로 point cloud를 생성시에 dense하게 만든 후에 3DGS의 학습을 해보았더니, 12.5M개에서 8M개의 point로 변화하는 것을 관찰했습니다. TRIPS도 동일하게 dense한 point로 시작해서 성능을 측정했습니다. 해당 실험은 PLAYGROUND scene으로 진행하였습니다(위 이미지). dense할 수록 높은 성능을 보이는 것을 볼 수 있습니다. 결과적으로 TRIPS는 dense한 point입력에 대해 3DGS에 비해 더 잘 처리하는 것을 볼 수 있습니다.

 

Limitation

첫번째로, initial dense reconstruction를 만들기 위한 전제조건(?)에 대한 제약을 가집니다.

두번째로, 위 그림을 보면 길쭉하고 가느다란 물체(막대기, 기둥)의 hole을 채우게 될 때, noisy한 artifact가 발생합니다. 이는 3DGS에서도 종종 발생하다고 합니다.

세번째로, 점이 너무 많거나 너무 적은 영역에서는 여전히 약간의 깜박임이 발생할 수 있습니다.

 

 

Closing..

3DGS 결과물을 보면서 noise들이 개선되길 바랬었고 TRIPS 논문을 보자마자 궁금해서 우선순위를 높여서 봤습니다. 하지만 3D GS의 장점이 학습시간이 빠르다는점인데 이러한 장점을 가져가지 못했다는 점이 아쉬운점으로 남습니다. ablation study양을 많이 넣다보니, 설명이 많이 빠진듯한 느낌을 받았습니다. arXiv에 올라온 초안 버전을 읽은 것이라서, 설명 업데이트가 되길 바래봅니다. 

댓글