본문 바로가기
3D-GS

[논문 리뷰] 4D Gaussian Splatting (CVPR 2024) : Dynamic Scene 랜더링

by xoft 2023. 10. 23.

4D Gaussian Splatting for Real-Time Dynamic Scene Rendering, Guanjun Wu, CVPR 2024

 

움직이는 영상에 대해 Scene을 랜더링하는 연구입니다. 논문 제목에 4D라고 되어 있는데, 3D모델에 추가적인 1 Dimension은 time축입니다. Static(고정된)한 Scene을 모델링하는 모델에서는 Scene이 움직이게 되면 blur가 생기게 됩니다. Dynamic Scene을 모델링하는 연구의 경우 피사체가 움직여도 시간의 변화에 따라 랜더링하게 되므로 자연스럽게 랜더링 됩니다. Dynamic Scene을 모델링하면서 Gaussian Splatting 기법을 사용한 연구를 소개하겠습니다.

 

 

본 글을 읽기 위해서는 3D Gaussian Splatting(이전 포스트 link)에 대한 선행 지식이 필요로 합니다.

 

 

Related Works

NeRF분야에서 Fast Rendering 기술로 이슈가 되었던 3D Gaussian Splatting(이전 포스트 link)이 8월에 arXiv에 발표되었는데, 2달도 되지 않아 dynamic한 scene 랜더링하는 후속 연구들이 발표되었습니다.

  • Dynamic 3DGS (link)는 3D Gaussian의 갯수를 고정하고, 시간의 변화에 따라 3D Gaussian의 position과 variance를 trakcing하여 Dynamic Scene을 모델링했습니다. 문제점은 dense한 multi-view 입력 이미지가 필요로 했고, 이전 프레임의 모델링 결과가 부적절하면 전체적인 성능이 좋지 않았고, 시간의 변화에 따라 Gaussian들이 존재하므로 time t의 크기만큼 메모리 사용량이 증가하였습니다.
  • Deformable 3DGS (link)에서는 dynamic scene의 motion을 MLP 기반의 deformation network를 사용했습니다. 소개 할 4D Gaussian Splatting에서는 이와 유사하지만 training 를 효율적으로 만들었다고 합니다.

 

Overview

4D Gaussian의 핵심Static한 3D Gaussian을 만든 후, 시간에 따른 각 3D Gaussian들의 Position, Rotation, Scaling변화량을 모델링한다는 것입니다. 이 변화량을 Deformation Field로 표현하며, 위 그림에서 input과 output를 먼저 보면, 3D Gaussian을 입력으로 얼마나 변형 되었는지에 대해 position(x',y',z'), Covariance(r',s')으로 출력합니다. 이제 안쪽을 보면, 1차적으로 6가지의 matrix으로 변형되고, 2차적으로 파란색으로 표시된 feature vector로 합쳐지며, MLP를 통과하여 최종 결과 값을 획득함을 볼 수 있습니다.

 

이전 NeRF기반의 Dynamic Model (왼쪽그림) 에서는 ray위에 point들을 deformation했기에, 각 point의 서로 다른 속도를 잘 모델링하지 못하여 퀄리티 하락이 있었지만, 4D Gaussian Splatting에서는 각 Gaussian이 ray에 의존하지 않고 서로 다른 속도로 이동이 가능하기 때문에,  t시간에 따라 Gaussian의 위치가 이동하였을지라도, 다른 ray를 통해 이동된 Gaussian을 rendering할 수 있게 됩니다.

 

 

3D Gaussian Neural Voxel Encoding

Overview에서 6종류의 matrix로 구성된 부분이며, MLP의 입력 값을 생성해주기 때문에 encoder로 표현한 것으로 보입니다. 이 부분은 실제적으로 TensoRF(이전 포스트 link, ECCV2022) 개념이 들어간 HexPlane(link, CVPR2023)이라는 연구가 참조되었습니다. 

위 그림은 TensoRF의 알고리즘을 도식화한 그림이며, 3차원(3개의 선)을 2차원(1개의 평면과 1개의 선)으로 dimension reduction이 이루어진 것을 볼 수 있습니다. 6개 그림중 위에 첫번째줄은 Color, 두번째 줄은 density에 대한 모델링이며, 실제적으로 XY평면-Z선, XZ평면-Y선, ZY평면-X선 총 3개의 타입의 Rank로 모델링되었습니다.

위 그림은 HexPlane에서 가져온 그림이며, 3차원에 time t가 추가되어 4개 차원을 모델링하였으며, 4차원(4개의 선)을 2차원(2개의 평면)인 XY평면-ZT평면, XZ평면-YT평면, YZ평면-XT평면총 3개 타입의 Rank로 모델링됩니다. 이 값들은 Outer Products의 Sum이 되고 density는 network없이 표현되고, color는 MLP를 통과하여 Color를 계산하게 됩니다.

 

다시 4D Gaussian Splatting을 보겠습니다. 이제 큰 윤곽이 보이실 겁니다.

논문상에서는 Encoding에 대한 자세한 설명은 없고 단순히 Multi-resolution HexPlane으로 3D Gaussian의 spatial, temporal 값을 encoding하였다고 되어 있습니다. 여기서 Multi-resolution라는 키워드에 대해 설명하자면, TensoRF에서 Grid Resolution이라는 개념이 들어가는데, Grid Resolution이 커질수록, 선 또는 면이 더 촘촘해지면서 3D 좌표에 대한 high frequency feature를 더 잘 잡아내게 됩니다. 때문에 TensoRF에서는 iteration이 진행됨에 따라, Grid Resolution을 점점 증가시키게 됩니다. 4D Gaussian Splatting에서는 Grid Resolution을 증가시키지 않고, 여러개(multi)의 Resolution으로 Rank를 구성하고 이를 MLP의 input의 feature로 사용하게 됩니다.

위는 논문 수식이며, i,j에 대한 것은 각 평면의 차원을 의미하고, R은 그 차원으로 구성된 Rank를 의미합니다. interpolation은 타겟 좌표의 주변의 Tensor 값들로 보간(interpolation)한다는 의미를 갖고 있으며, 기초 개념에 대해선 TensoRF(이전 포스트 link) 의 Tensor Decomposition이란? 파트를 참고 바랍니다. 각 차원에 대해 interpolation한 값을 concat하여 voxel에 대한 feature값으로 만들게 됩니다.

해당 feature들이 MLP를 통과하면 Gaussian의 변화량을 출력한다고 했었습니다. 위와 같이 모델링하게 되면, 공간상의(x,y평면) 인접한 voxel은 유사한 feature들을 나타내고, 시간상(xt평면)으로 인접한 voxel들은 유사한 feature들을 나타냅니다. 이 특징으로 인해 optimization이 진행됨에 따라, Gaussian의 covariance가 줄어들면서  3D Gaussian들이 dense해지게 됩니다.

 

이제 MLP 부분을 보겠습니다.

overview그림엔 MLP의 결과 값으로 position, rotation, scale로 되어 있는데, 실제적으로 covariance value인 size와 rotation 변화량이 추가되게 될 경우 training속도 rendering 속도 둘다 증가하게 되어서 생략하고 position만 집중해서 optimization 했다고 합니다. (이전 연구인 Dynamic3DGS에서는 size, color, opacity가 고정되고 position과 rotation이 update됬었습니다.)

 

 

Gaussians Deformation Computation

위를 수식으로 표현하면 아래와 같습니다.

concat한 feature f를 입력으로해서 MLP인 g를 통과하면 변화량을 결과값을 얻을 수 있고,

이 feature는 단순히 더해져서, 다음 time을 표현하게 됩니다. (논문 4번째장 마지막 줄에선 "we decide to omit the 3D Gaussian’s rotation and scaling" 라고 해놓고,  논문 5번째 장에선 곧바로 다시 rotation과 scale parameter를 언급해서 혼동스럽네요.)

 

 

 

Optimization

이전 몇몇의 논문에서는 static part와 dynamic part는 독립적으로 학습시켰다고 합니다. 하지만 여기에서는 3D Gaussian Splatting에서 제안했던 방법과 동일하게 static scene을 학습시켜서 퀄리티를 향상시켰고, 그 후에 dynamic scene을 fine-tuning형태로 학습시켰다고 합니다. 

 

Loss는 Color에 대한 L2-Loss와 TV Loss를 사용했다고 합니다.

 

 

Experimental Setting

초기화시 point cloud는 최대 8,000개만 유지하도록 했고 training하는동안 최대 20,000개 되도록 했습니다. multi-resolution의 해상도는 64x64, 128x128, 256x256, 512x512 총 4개 level로 두었습니다. MLP의 hiden layer 64개로 구성됩니다.

 

 

Evaluation

PSNR 설명 : [평가 지표] PSNR / SSIM / LPIPS

RTX 3090 GPU를 사용해서 측정했고, D-NeRF의 Synthetic dataset으로,   800x800 해상도로 평가했습니다.

dynamic scene 데이터셋 이기 때문에 3DGS(3D Gaussian Splatting)의 PSNR은 낮은 것을 볼 수 있으며, 이전 dynamic scene 연구에 비해 퀄리티가 높고, 랜더링 속도가 빠른 것을 볼 수 있습니다. 

아래는 Nerfies의 Real-world 데이터셋으로 평가한 결과이며,

아래는 DyNeRF의 Real-world 데이터셋으로 평가한 결과입니다.

아래는 HyperNeRF데이터셋으로 랜더링한 결과

아래는 DyNeRF 데이터셋으로 랜더링한 결과입니다.

 

 

Ablation Study

Nueral Voxel Encoder (= Ours w/o Voxel Grid)

MLP를 사용하는 Implicit 방법이 아닌 Dynamic 3DGS 기법으로 explicit하게 모델링 할 경우, 랜더링 퀄리티는 떨어지고 render속도가 향상, 메모리 사용량이 감소되었다고 합니다. 

 

Model Capacity (= Ours w/ Larger MLP)

voxel plane resolution을 증가시키거나 MLP의 크기를 64 layer에서 256layer으로 증가 시킬 경우 상당한 퀄리티향상이 있었으나, 랜더링 속도는 감소하였습니다. 

 

Two Stage Training (= Ours w/o static Stage)

D-NeRF, DyNeRF에선 point cloud정보가 주어지지 않아서 좀 더 어려운 task였다고 합니다. static stage, fine-tuning stage 2개로 분할 해서 학습을 진행 할 경우 성능 향상이 있었습니다.

 

Fast Traning (= Ours-7k)

7k까지만 학습시켜도 나쁘지 않은 PSNR을 보였습니다. 그리고 학습속도가 7분으로 줄었습니다.

 

Image-based Loss(=Ours w/ Image Loss)

LPIPS Loss, SSIM Loss와 같은 Image-based Loss를 적용 할 경우, 학습시간이 2배 느려졌습니다. 랜더링 속도도 느려졌고 퀄리티도 낮아졌습니다. 해당 Loss로 motion part(fine-tuning 단계)를 optimization하는 것은 어렵고 복잡하기 때문이라고 합니다. 

 

 

 

Closing..

NeRF가 처음 나오고 나서, 다른 문제들을 푸는 후속 논문들이 쏟아졌는데, 3D Gaussian Splatting도 비슷하게 후속 논문이 쏟아지는 것 처럼 보입니다. Dynamic Scene랜더링, Text to 3D 분야가 가장 먼저 나오는 것 같고, 다른 연구들도 기대해봅니다. Dynamic Scene의 학습 속도가 점점 발전하면, 곧 스마트폰이나 SNS에서 사진을 대체해서 NeRF를 적용한 서비스가 생겨나지 않을까 기대해봅니다.

댓글