
[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만 찾아 국소적으로 업데이트하는 방식을 제안한다.
일반적인 3DGS 파이프라인은 여러 장의 이미지를 이용해 하나의 장면을 복원한다. 문제는 실제 환경이 정적이지 않다는 것이다. 예를 들어 다음과 같은 변화가 발생할 수 있다.
이 경우 기존 3DGS는 현재 장면과 맞지 않는 scene이 된다. 이처럼 장면에 변화가 생길 때마다 새로운 이미지로 3DGS를 다시 학습할 수도 있다. 하지만 이 방법에는 2가지 문제가 있다.
3DGS는 각각의 Gaussian이 명시적인 위치, 크기, 색상, 불투명도 등을 가지기 때문에 특정 공간에 속한 Gaussian을 직접 선택하거나 교체할 수 있다. CL-Splats는 이 explicit representation의 장점을 Continual Learning에 활용한다. 기존 NeRF 기반 방법들이 겪는 forgetting과 history 관리 문제를 피하면서 변화된 부분만 국소적으로 최적화하는 것이 핵심이다.
CL-SPlats의 입력은 다음과 같다.
목표는 기존 장면을 버리지 않고 다음 장면을 만드는 것이다.
여기서 중요한 조건은 이전의 모든 학습 이미지를 다시 사용하지 않는다는 것이다. 현재 가지고 있는 3DGS와 새롭게 촬영한 변화 영역의 이미지만 이용한다.
논문의 주요 contribution은 다음과 같다.
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는 크게 네 단계로 구성된다.
각 단계별로 자세하게 보겠다.
새로운 이미지와 기존 3DGS를 비교하려면 두 데이터가 같은 좌표계에 있어야 한다.
논문은 COLMAP을 이용해 새로운 이미지 의 카메라 포즈를 추정하고 이를 기존 reconstruction의 좌표계와 정렬한다.
이후 현재 이미지 와 동일한 카메라 포즈에서 기존 장면 을 렌더링한다.
두 이미지는 동일한 시점에서 바라본 장면이므로 두 이미지의 차이를 이용해 변화가 발생한 영역을 찾을 수 있다.
단순한 RGB 차이를 사용하면 조명, 그림자, 노출, 렌더링 오차에 지나치게 민감할 수 있다. CL-Splats는 픽셀 RGB 대신 DINOv2 feature를 비교한다.
먼저 두 이미지에서 feature map을 추출한다.
여기서 ε는 DINOv2 feature extractor이다.
각 위치에서 두 feature의 cosine similarity를 계산한다.
즉 DINO feature가 유사하면 변화가 없는 것이고 feature가 유사하지 않다면 변화 후보이다. 최종적으로 이진 변화 마스크를 생성한다.
마스크에는 dillation도 적용한다. 변화 영역을 약간 확장해 작은 구멍이나 누락을 방지하기 위해서다. 이 단계에서는 precision보다 recall이 중요하다. 변화되지 않은 영역이 조금 포함되더라도 이후 3D 단계에서 정리할 수 있지만 실제 변화 영역을 놓치면 해당 영역을 최적화되지 못하기 때문이다.
2D change mask를 그대로 최적화에 사용하면 문제가 발생한다. 하나의 2D 픽셀에는 카메라 광선 방향을 따라 서로 다른 깊이의 여러 Gaussian이 투영될 수 있기 때문이다. 즉 2D의 위치 정보와 3D의 위치 정보가 다를 수 있다. 따라서 2D mask만으로는 실제로 어떤 3D Gaussian이 변화한 물체에 속하는지 확실히 알 수 없다. CL-Splats는 여러 시점의 정보를 이용한 Mask Majority Voting으로 문제를 해결한다.
여기서 는 카메라 에 대한 projection 함수다.
투영된 위치 에서 2D change mask의 값이 1이라면 해당 Gaussian은 그 시점에서 한 표를 얻는다.
Gaussian 가 기준 보다 많은 시점에서 change mask 안에 나타나면 변화 Gaussian으로 분류한다.
여기서 는 최종적으로 선택된 3D 변화 마스크 즉 변화 Gaussian들의 집합이다. 논문 본문은 임계값을 로 표현하며 본문 내에서 하나의 고정 숫자를 제시하지는 않는다.
다수결로 판단을 해야 한 이미지에서만 변화 마스크 안에 들어간 Gaussian은 렌더링 오차나 잘못된 마스크 때문에 우연히 선택되는 것을 방지할 수 있다.
Mask Majority Voting은 기존 장면 에 이미 존재하는 Gaussian 중 변화된 Gaussian을 선택하는 방식이다. 이 방법은 물체 제거에는 잘 작동하지만 새 뭋레가 추가된 경우에 문제가 발생한다. 왜냐하면 Voting은 기존 Gaussian 중에서 변화된 Gaussian을 찾는 과정으로 존재하지 않는 컵 Gaussian을 선택할 수 없다. 그래서 CL-Splats는 변화 영역에 새로운 Gaussian을 sampling한다.
다음과 같이 Gaussian sampling을 작동한다.
변화 Gaussian 집합 를 찾은 후에 최적화 과정을 진행한다. 최적화 과정에서는 Gaussian의 위치가 이동하고 densification으로 새로운 Gaussian이 생성될 수 있다. 이 과정에서 변화 Gaussian이 원래 변화 영역 밖으로 퍼지면 변하지 않은 배경까지 손상시킬 수 있기 때문에 CL-Splats는 이를 막기 위해 두 가지 장치를 사용한다.
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은 변화 영역만 계산하는 작은 최적화 엔진이다.
변화 Gaussian을 현재 이미지에 다시 투영
이를 이용해 현재 iteration에서 변화 Gaussian이 영향을 주는 영역의 dynamic render mask를 만든다.
Render mask 내부만 계산
전체 이미지가 아니라 변화 Gaussian이 투영된 pixel·tile만 렌더링한다.
해당 픽셀에 기여한 Gaussian만 역전파
Backpropagation에서는 render mask 내부 픽셀에 실제로 기여한 Gaussian만 업데이트 한다. 중요한 점은 단순히 2D mask를 loss에 곱하는 것이 아니다.
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
위 실험을 통해서 다음과 같은 내용을 알 수 있다.