AI/컴퓨터비전(CV)

[CV 논문] Street Gaussians: Modeling Dynamic Urban Scenes with Gaussian Splatting

CSE 2026. 4. 8. 10:30

 

 

아래 글에서 이 블로그에서 리뷰한 논문들의 흐름과 분야별 분류를 한 눈에 볼 수 있다.

 

읽은 논문들 정리

[목차]지속적으로 업데이트 중, 번호는 모델발전 순서가 아닌 읽은 순서에 따라 정렬.1. Computer Vision 분야 논문Classification 모델들의 발전Detection 모델들의 발전Segmentation3D 처리2. Natural Language Process

april2901.tistory.com


 

이번 논문도 이전의 Driving Gaussian처럼 주행 뷰를 렌더링하는 방법에 대한 논문이다.

 

기존 방법들보다 엄청나게 빠른 속도와 적은 학습시간만이 소요된다.

또 객체별로 모델링되어 있어 조작이 편하다.

 


Street Gaussians

이전 Driving Gaussian과 마찬가지로 배경 + 객체의 방식을 사용한다.

 

1. 배경 모델

배경은 월드 좌표계에 고정된 점들을 얘기한다.

3DGS 논문의 내용과 동일하다.

 

가우시안은 평균(중심)인 $\mu_b$과 모양을 나타내는 공분산$\Sigma_b$로 나타낼 수 있고 공분산은 아래와 같이 계산된다.

$R,S$는 각각 회전과 scale이다.

$$\Sigma_b = R_b S_b S_b^T R_b^T$$

 

SH함수도 그대로 사용한다.

 

하나 추가되는 것은 semantic logit, $\beta_b$라는 것이다.

이것은 각 가우시안 마다 추가되는 속성이고, 이 점이 어떤 대상인지(도로, 건물)를 표시한다.

$M$차원의 벡터로 $M$은 클래스의 개수를 의미한다.

 


2. 객체 모델

$N$개의 움직이는 객체가 있다고 하자.

각 객체는 자신만의 로컬 좌표계를 가지고 있다.

로컬 좌표계에서의 위치와 회전행렬을 $\mu_o , R_o$라고하면,

시간(프레임) t에서의 물체의 회전,이동 행렬($R_t, T_t$)를 통해 월드좌표계로 변환될 수 있다.

 

$\mu_w = R_t \mu_o + T_t$

$R_w = R_t R_o$

 

이때 월드좌표계에서의 공분산, $\Sigma_w$는 배경모델에서 설명했던 식에 $R_w, S_o$를 사용하여 계산한다.

 

그리고 움직이는 물체에 대해 SH함수를 그냥 사용하면 당연히 위치에 따라 색이 바뀌기 때문에 문제가 생긴다.

모든 프레임마다 SH함수의 계수 값을 저장해야하는데 이는 저장공간에 문제가 있기 때문에 논문에서는 푸리에 변환을 도입했다.

기존 SH함수에는 시간$t$를 입력으로 받지 않지만 이를 한 차원 확장하여 아래 식에서는 $t$가 사용된다.

$$z_{m,l} = \sum_{i=0}^{k-1} f_i \cos\left(\frac{i\pi}{N_t}t\right)$$

 

$f_i$가 각 가우시안마다 저장될 푸리에 변환 계수이다.

이 값이 학습된다.

 

 


3. 초기화

3DGS는 SfM을 사용하고, Driving Gaussian은 LiDAR를 사용한다.

이 모델도 LiDAR를 사용하고, 객체의 경우 BB안에 점이 너무 적을 경우 무작위 점 생성을 통해 초기화한다.

 

배경에 대해서는 voxel 다운샘플링을 하고, 카메라 바깥의 점은 제외한다.

LiDAR는 거리의 한계가 있어 부족한 부분은 SfM으로 보충한다.

 

voxel다운샘플링은 같은 voxel안에 있는 점들은 하나로 합쳐버리는 것이다.

 


Street Gaussian 렌더링

렌더링 하는 방법에 대한 설명이다.

특정 시간 $t$의 장면을 렌더링하기 위해서는 아래의 과정을 거친다.

 

1. 각 객체에 변환($R_t, T_t$)을 적용해 로컬→월드 좌표계로 변환한다.

이때 해당 프레임에서의 SH함수도 계산된다.

2. 배경과 객체들을 합쳐 하나의 포인트 클라우드로 만든다.

3. 2D화면 투영 : 카메라의 파라미터를 사용해 해당 카메라 평면으로 projection한다.

 

색상은 3DGS와 마찬가지로 알파 블렌딩을 사용한다.

 

하늘은 무한한 거리를 가지고 있기 때문에 유한한 거리에서 동작하는 3DGS를 사용하기는 어렵다.

그래서 Cubemap이라는 것을 도입했다.하늘은 무한히 멀기 때문에 관측 위치는 중요하지 않고 방향만 중요하다.

따라서 Cubemap은 방향만 저장한다.

 

무한히 큰 상자 안에 관측자가 있다고 생각하면 상하좌우전후의 6개의 이미지만 저장하고 있으면 바로 계산이 가능하다.


훈련

 

자율주행 데이터셋이 제공하는 객체의 위치는 정확하지 않고 미세하게 흔들릴 수 있다.

따라서 보정치를 도입했다.

 

$R'_t = R_t \Delta R_t$

$T'_t = T_t + \Delta T_t$

 

Loss로는 다섯 가지를 더해 사용한다.

 

1. 기본적으로 원본과 얼마나 차이나는지를 측정한다.

계산 : 3DGS와 동일하다.

 

2. 깊이

계산 : 데이터 상에서의 거리값과 렌더링되었을 때의 깊이를 차이를 계산한다.

깊이 계산은 알파블렌딩 식에서 색 대신 깊이 정보를 넣으면 된다.

3. 하늘 비교 : 위에서 얘기한 것처럼 하늘은 가우시안이 아닌 cubemap이므로 모델이 이 둘을 구분할 수 있도록 도와준다.

계산 : 특정 픽셀에 대해 렌더링을 했을 때 누적 가우시안 투명도가 0에 가깝다면 하늘이라고 생각할 수 있다.

아래 식에서 $O_g$가 이 투명도를 의미한다. $M_{sky}$는 2D SAM등을 통해 미리 뽑아놓은 정답이다.

4. 시멘틱 정보 : 각 픽셀에 대해 정보를 학습한다. 이게 도로인지 차인지 등을 학습하여 객체 분리 성능을 높인다.

계산 : 미리 준비된 클래스 분류 결과와 semantic logit사이의 cross entropy이다.

 

5. 정규화 손실 : 공중에 떠있고 지저분한 가우시안을 없애기 위해 도입한다.

자기자신만 사용해 계산을 하고, 이는 애매한 투명도를 가지지 못하도록 한다.


결과

차량을 그리는 것을 다른 모델들과 비교해보면 자연스럽게 된다는 것을 확인할 수 있다.