[논문 Review] CL-Splats: Continual Learning of Gaussian Splatting with Local Optimization

Roh Tae Gyu·2026년 7월 24일

논문 리뷰

목록 보기
28/28

[Paper] [Page]] [Github]
Jan Ackermann, Jonas Kulhanek, Shengqu Cai, Haofei Xu, Marc Pollefeys, Gordon Wetzstein, Leonidas Guibas, Songyou Peng
ICCV 2025

3DGS는 실시간 렌더링을 제공하지만 한 시점의 정적인 장면을 복원하는 데 초점이 맞춰져 있다. 그렇기 때문에 하나의 scene에서 object가 move/remove/relocation한 경우에는 기존 장면을 처음부터 다시 학습할 수도 있지만 이는 계산 비용이 크고 관측되지 않은 기존 영역을 손상시킬 수 있다. 이 논문은 이 문제를 해결하기 위해 장면 전체가 아니라 변화가 발생한 Gaussian만 찾아 국소적으로 업데이트하는 방식을 제안한다.

Introduction


일반적인 3DGS 파이프라인은 여러 장의 이미지를 이용해 하나의 장면을 복원한다. 문제는 실제 환경이 정적이지 않다는 것이다. 예를 들어 다음과 같은 변화가 발생할 수 있다.

  • 책상 위에 컵이 새로 놓임
  • 의자가 다른 위치로 이동함
  • 책상 위에 컵이 제거됨

이 경우 기존 3DGS는 현재 장면과 맞지 않는 scene이 된다. 이처럼 장면에 변화가 생길 때마다 새로운 이미지로 3DGS를 다시 학습할 수도 있다. 하지만 이 방법에는 2가지 문제가 있다.

  • 전체 장면을 다시 촬영해야 함
  • 불필요한 계산이 너무 많음

3DGS는 각각의 Gaussian이 명시적인 위치, 크기, 색상, 불투명도 등을 가지기 때문에 특정 공간에 속한 Gaussian을 직접 선택하거나 교체할 수 있다. CL-Splats는 이 explicit representation의 장점을 Continual Learning에 활용한다. 기존 NeRF 기반 방법들이 겪는 forgetting과 history 관리 문제를 피하면서 변화된 부분만 국소적으로 최적화하는 것이 핵심이다.

CL-SPlats의 입력은 다음과 같다.

  • 이전 시점 tt−1에 복원된 3DGS 장면 Gt1G^{t−1}
  • 현재 시점 t에서 장면의 변화된 부분을 촬영한 sparse images ItI^t

목표는 기존 장면을 버리지 않고 다음 장면을 만드는 것이다.

Gt1+ItGt\begin{aligned} G^{t−1}+I^t→G^t \end{aligned}

여기서 중요한 조건은 이전의 모든 학습 이미지를 다시 사용하지 않는다는 것이다. 현재 가지고 있는 3DGS와 새롭게 촬영한 변화 영역의 이미지만 이용한다.

논문의 주요 contribution은 다음과 같다.

  • Gaussian Splatting을 위한 continual-localized update 프레임워크 제안
  • 3D 공간에서 Gaussian의 최적화 범위를 제한하는 local optimization 전략
  • Batched update와 scene history recovery 응용
  • Dynamic scene reconstruction 평가를 위한 synthetic-real-world 데이터셋 제공

Method


Figure 2. Overview. Starting from an existing reconstruction, we estimate the changed regions in 2D and then lift that information into 3D.After that we only optimize a local region around the changed parts. Our optimization is faster while obtaining the same gradients as 3DGS.

CL-Splats는 크게 네 단계로 구성된다.

  1. Input
  2. Predicting 2D Change Masks
  3. Lifting Masks to 3D
  4. Local Optimization

각 단계별로 자세하게 보겠다.

Input

새로운 이미지와 기존 3DGS를 비교하려면 두 데이터가 같은 좌표계에 있어야 한다.

논문은 COLMAP을 이용해 새로운 이미지 ItI^t의 카메라 포즈를 추정하고 이를 기존 reconstruction의 좌표계와 정렬한다.

이후 현재 이미지 IitI^t_i와 동일한 카메라 포즈에서 기존 장면 Gt1G^{t-1}을 렌더링한다.

  • 실제 현재 이미지 : IitI_i^t
  • 기존 장면 렌더링 : I^it1Î_i^{t-1}

두 이미지는 동일한 시점에서 바라본 장면이므로 두 이미지의 차이를 이용해 변화가 발생한 영역을 찾을 수 있다.

Predicting 2D Change Masks

단순한 RGB 차이를 사용하면 조명, 그림자, 노출, 렌더링 오차에 지나치게 민감할 수 있다. CL-Splats는 픽셀 RGB 대신 DINOv2 feature를 비교한다.

먼저 두 이미지에서 feature map을 추출한다.

Fit1=E(Iit1)Fit=E(Iit)\begin{aligned} F_i^{t-1} &= \mathcal{E}(I_i^{t-1}) \\ F_i^t &= \mathcal{E}(I_i^t) \end{aligned}

여기서 ε는 DINOv2 feature extractor이다.

각 위치에서 두 feature의 cosine similarity를 계산한다.

Mit(p)={1,if cos(Fit1(p),Fit(p))τ10,otherwiseM_i^t(p) = \begin{cases} 1, & \text{if } \cos\left(F_i^{t-1}(p), F_i^t(p)\right) \le \tau_1 \\ 0, & \text{otherwise} \end{cases}

즉 DINO feature가 유사하면 변화가 없는 것이고 feature가 유사하지 않다면 변화 후보이다. 최종적으로 이진 변화 마스크를 생성한다.

마스크에는 dillation도 적용한다. 변화 영역을 약간 확장해 작은 구멍이나 누락을 방지하기 위해서다. 이 단계에서는 precision보다 recall이 중요하다. 변화되지 않은 영역이 조금 포함되더라도 이후 3D 단계에서 정리할 수 있지만 실제 변화 영역을 놓치면 해당 영역을 최적화되지 못하기 때문이다.

Lifting Masks to 3D

2D change mask를 그대로 최적화에 사용하면 문제가 발생한다. 하나의 2D 픽셀에는 카메라 광선 방향을 따라 서로 다른 깊이의 여러 Gaussian이 투영될 수 있기 때문이다. 즉 2D의 위치 정보와 3D의 위치 정보가 다를 수 있다. 따라서 2D mask만으로는 실제로 어떤 3D Gaussian이 변화한 물체에 속하는지 확실히 알 수 없다. CL-Splats는 여러 시점의 정보를 이용한 Mask Majority Voting으로 문제를 해결한다.

pij=πi(gj)\begin{aligned} p_ij=π_i(g_j) \end{aligned}

여기서 πiπ_i는 카메라 ii에 대한 projection 함수다.
투영된 위치 pijp_ij에서 2D change mask의 값이 1이라면 해당 Gaussian은 그 시점에서 한 표를 얻는다.

  • N : 새로운 입력 view의 개수
  • vjv_j : Gaussian gjg_j가 변화 마스크 안에 들어간 횟수
  • 1[⋅] : 조건이 참이면 1, 아니면 0

Gaussian gjg_j가 기준 KK보다 많은 시점에서 change mask 안에 나타나면 변화 Gaussian으로 분류한다.

gjOtif vj>Kg_j \in O^t \quad \text{if } \quad v_j > K

여기서 OtO^t는 최종적으로 선택된 3D 변화 마스크 즉 변화 Gaussian들의 집합이다. 논문 본문은 임계값을 KK로 표현하며 본문 내에서 하나의 고정 숫자를 제시하지는 않는다.

다수결로 판단을 해야 한 이미지에서만 변화 마스크 안에 들어간 Gaussian은 렌더링 오차나 잘못된 마스크 때문에 우연히 선택되는 것을 방지할 수 있다.

Mask Majority Voting은 기존 장면 Gt1G^{t-1}에 이미 존재하는 Gaussian 중 변화된 Gaussian을 선택하는 방식이다. 이 방법은 물체 제거에는 잘 작동하지만 새 뭋레가 추가된 경우에 문제가 발생한다. 왜냐하면 Voting은 기존 Gaussian 중에서 변화된 Gaussian을 찾는 과정으로 존재하지 않는 컵 Gaussian을 선택할 수 없다. 그래서 CL-Splats는 변화 영역에 새로운 Gaussian을 sampling한다.

다음과 같이 Gaussian sampling을 작동한다.

  • OtO^t에 충분한 Gaussian이 있으면 그대로 사용한다.
  • OtO^t가 비어 있으면 변화 마스크를 기반으로 새로운 seed point를 생성한다.
  • Gaussian이 부족하면 기존 변화 영역 주변에서 추가 샘플링한다.
  • 필요한 수를 만족할 때까지 이 과정을 반복한다.
  • 샘플링 후 나머지 3DGS parameter는 표준 SfM 방식으로 초기화한다.

Local Optimization

변화 Gaussian 집합 OtO^t를 찾은 후에 최적화 과정을 진행한다. 최적화 과정에서는 Gaussian의 위치가 이동하고 densification으로 새로운 Gaussian이 생성될 수 있다. 이 과정에서 변화 Gaussian이 원래 변화 영역 밖으로 퍼지면 변하지 않은 배경까지 손상시킬 수 있기 때문에 CL-Splats는 이를 막기 위해 두 가지 장치를 사용한다.

  • Sphere Pruning
  • Local Optimization Kernel

Sphere Pruning

Figure 3. Sphere Pruning

변화 Gaussian들을 HDBSCAN으로 clustering한다. 하나의 물체에서도 Gaussian 분포가 복잡하면 여러 개의 sphere가 사용될 수 있다. 최적화 중 Gaussian의 중심이 이 sphere들의 합집합 밖으로 이동하면 해당 Gaussian을 제거한다(pruning).

이를 통해 densification이나 position optimization 과정에서 Gaussian이 책상, 벽, 배경 등 엉뚱한 공간으로 퍼지는 것을 방지한다. 논문은 sphere가 fitting하기 쉽고 Euclidean clustering과 잘 맞으며 내부 외부 판별 비용이 낮기 때문에 bounding primitive로 선택했다고 한다.

Local Optimization Kernel

Local Optimization Kernel은 변화 영역만 계산하는 작은 최적화 엔진이다.

  1. 변화 Gaussian을 현재 이미지에 다시 투영

    Otimageplane\begin{matrix} O^t→image plane \end{matrix}

    이를 이용해 현재 iteration에서 변화 Gaussian이 영향을 주는 영역의 dynamic render mask를 만든다.

  2. Render mask 내부만 계산
    전체 이미지가 아니라 변화 Gaussian이 투영된 pixel·tile만 렌더링한다.

  3. 해당 픽셀에 기여한 Gaussian만 역전파
    Backpropagation에서는 render mask 내부 픽셀에 실제로 기여한 Gaussian만 업데이트 한다. 중요한 점은 단순히 2D mask를 loss에 곱하는 것이 아니다.

Experiments


Table 2. Novel View Synthesis Results on Our CL-Splats Dataset

Table 3. Novel View Synthesis Results on the CL-NeRF Dataset

Figure 4. Qualitative Comparison on All Datasets

Table 4. Ablation on the Mask Quality. (a) 2D masks from our 2D change detection module; (b) The 2D masks without dilation (in figure before reprojection); (c) Our reprojected masks from local optimization.

초기 DINOv2 mask는 recall이 0.961로 매우 높지만 precision은 0.370이므로 변화하지 않은 일부 영역도 포함하고 있다고 볼 수 있다. 이후 3D lifiting과 local optimizatioin을 거치면 recall을 0.942로 유지하면서 precision이 0.609로 증가한다. 즉 2D 단계에서는 변화 영역을 넓게 잡고 여러 view의 3D 일관성을 이용해 잘못 포함된 영역을 정리한다.

Table 5. Ablation on Optimization

위 실험을 통해서 다음과 같은 내용을 알 수 있다.

  • 배경을 freeze하지 않으면 성능이 크게 하락한다.
  • 모든 view에서 투표받도록 요구하면 지나치게 엄격하다.
  • local kernel은 품질보다 속도에 기여한다.
  • sphere와 bounding box의 품질은 유사하다.

Limitaions


  1. 기본 3D representation의 품질에 의존한다.
  2. Global illumination 변화에 대응하지 못한다.
  3. Local change를 가정하고 있다. (대규모 어려움)
profile
돌아보니 꽃길이다

0개의 댓글