아래 글에서 이 블로그에서 리뷰한 논문들의 흐름과 분야별 분류를 한 눈에 볼 수 있다.
읽은 논문들 정리
[목차]지속적으로 업데이트 중, 번호는 모델발전 순서가 아닌 읽은 순서에 따라 정렬.1. Computer Vision 분야 논문Classification 모델들의 발전Detection 모델들의 발전Segmentation3D 처리2. Natural Language Process
april2901.tistory.com
기존의 3DGS를 사용한 자율주행 장면 재구성에서는 몇가지 문제가 있었다.
기본적으로 정적인 장면을 가정하고,
카메라 뷰가 제한되어있으며,
배경들에 대한 제약이 없었다.
논문에서는 이런 이유들 때문에 상당한 퀄리티 감소가 있었다고 얘기한다.
3DGS계열 자율주행 복원에서 PVG, Driving Gaussian등의 모델이 나왔다.
PVG는 가상 시나리오에 대한 지원이 되지 않는다.
Driving Gaussian은 객체를 무작위로 초기화하는데 이는 성능이 낮다.
따라서 논문에서는 이 모델들 보다 성능이 좋은 모델을 만드는 것을 목표로 했다.
METHOD - Prerequisites
이 AutoSplat모델은 기본적으로 multi sensor data를 입력으로 받는다.
구체적으로 카메라 이미지, LiDAR 포인트 클라우드, 객체의 궤적을 얘기한다.
전체적인 흐름은 이미지를 참고하면 된다.

1. 먼저 multi sensor 데이터를 받아 배경을 구성한다.
이때 가우시안을 납작하게 강제한다.
2. 이후 객체의 가우시안을 만들 때는 template를 사용하여 보이지 않는 다른 쪽도 높은 퀄리티로 구현할 수 있다.
3. 이제 이 둘을 더해 최종 장면을 만들어 낸다.
METHOD - Background Reconstruction
도로와 하늘을 구성하는 가우시안들은 기하학적으로 정확하지 않고 floater를 만드는 문제가 있다.
이 문제들은 정답 뷰, 즉 원래 있던 데이터와 같은 시점에서는 문제가 없어보인다.
하지만 시점을 이동하게 되면 그 문제가 발생할 수 있다.
따라서 이 논문에서는 두 가지 단계를 거쳐 배경을 학습시키는 방법을 고안했다.
1단계
먼저 사전 학습된 segmentation model을 사용한 결과를 이용해 도로/하늘을 나머지 배경과 분리한다.
이후 LiDAR포인트를 이미지 평면에 투영해서 각 가우시안을 도로/하늘/기타 중 하나로 할당한다.
이 방법을 통해 하늘/도로 가우시안이 아닌 가우시안이 하늘/도로를 재구성하는 것을 막고,
따라서 multi view에서도 좀 더 일관성있는 결과를 가질 수 있다.
LiDAR는 하늘과의 거리를 측정하지는 않기 때문에 장면의 최대 높이에 하늘을 나타내는 점들을 추가한다.
또 도로/하늘을 나타내는 가우시안들은 평평하도록 제약을 건다.
roll, pitch각도와 z축기준 scale을 최소화 해서 제약을 구현할 수 있다.
배경에 대한 손실함수는 아래와 같다.
$$\mathcal{L}_{BG} = (1 - \lambda)\mathcal{L}_1(I_g, \hat{I}_g) + \lambda\mathcal{L}_{DSSIM}(I_g, \hat{I}_g) + \beta\mathcal{C}_g \quad g \in \{\text{road}, \text{sky}, \text{other}\}$$
$I_g,\hat{I}_g$는 각각 도로/하늘/기타에 대한 GT이미지와 렌더링된 이미지를 의미한다.
$\mathcal{C}_g$는 도로/하늘에 적용되는 제약을 의미한다.
구체적으로는 아래와 같이 구할 수 있다.
$$\mathcal{C}_g = \begin{cases} \frac{1}{N_g}\sum_{i=1}^{N_g}(|\phi_i| + |\theta_i| + |s_{z_i}|) & \text{if } g \in \{\text{road}, \text{sky}\} \\ 0 & \text{else} \end{cases}$$
여기서 $\phi_i, \theta_i, s_{z_i}$는 각각 롤, 피치, z축 스케일을 의미한다.
$\beta$는 가중치이다.
2단계
위의 손실함수를 사용해서 배경을 최적화 한다.
이걸 하는 이유는 평평한 가우시안들과 그렇지 않은 가우시안의 경계에서 좀 이상하게 보일 수 있는데 이를 막기 위해서이다.
METHOD - Foreground Reconstruction
이번에는 객체에 대한 방식을 살펴보자.
기본적으로 3DGS는 정적인 장면에 맞춰진 SfM을 사용한다.
따라서 동적 장면에는 어려움이 있을 수 있다.
LiDAR를 통해 물체의 구조를 알 수 있기는 하지만, 사각지대나 먼거리의 대상에 대해서는 정확하지 않다.
따라서 논문에서는 '템플릿'이라는 것을 사용한다.
템플릿 가우시안 만들기
논문에서는 하나의 이미지로부터 물체의 3D모양을 만드는 모델을 사용한다.
이렇게 나온 3D모델이 템플릿이라고 생각할 수 있다.
구체적인 모델이 아니라 차의 대략적인 형태를 잡아주는 모델이라고 생각하면된다.
만약 객체가 $K$개가 있다면 이 템플릿을 $K$번 복사해서 물체의 궤적에 따라 배치한다.
각 객체의 가우시안은 이것을 바탕으로 초기화되고 스케일을 조정해 BB와 같은 크기가 되도록 한다.
이 템플릿에 속하는 가우시안에 대해 학습을 진행하여 점차 실제 모습과 비슷하게 한다.
예를 들면 차량이 3대가 보인다고 할 때 차량 템플릿을 3개를 가져다 놓고 크기를 조절하여 BB와 맞춘다고 생각하면 된다.
반사된 가우시안 일관성
먼저 객체는 대칭적이라는 가정을 한다.
각 객체에 대해 각 가우시안을 대칭면에 반사시킨다.

$$M = I - 2\frac{aa^T}{\|a\|^2} \quad (3)$$
반사 행렬은 위처럼 항등행렬$I$를 이용해 나타낼 수 있다.
$a$는 반사 축을 나타낸다.
이 반사행렬을 아래처럼 사용하면 가우시안을 반사시킬 수 있다.
$$\tilde{x} = Mx$$
$$\tilde{R} = MR$$
$$\tilde{f}_{SH} = D_M f_{SH} \quad (4)$$
$x$는 가우시안의 위치, $R$은 회전 행렬, $f_{sh}$는 sh함수를 의미한다.
$D_M$은 Wigner-D행렬인데 수학과가 아니어서 그런지 정확히 이해는 못했다.
그냥 논문에서 나온대로 반사를 설명하는 행렬이라고 생각하면 될 듯 하다.
객체의 외관 모델링
이 부분에는 방향지시등, 헤드라이트처럼 중요한 부분들의 모델링이 포함된다.
또한 그림자와 같은 부분의 모델링도 되어야한다.
각 가우시안에 대해 residual SH함수를 학습한다.
이름처럼 기본 SH함수에 추가적인 변화량을 주는 역할이다.
정적 특징 $f_{SH}$와 동적 특징 $\Delta f_{SH}$로 분리했다고 생각해도 된다.
$$f_{SH, t} = f_{SH} + \Delta f_{SH, t}$$
MLP를 사용해 모델링한다.
$$\Delta f_{SH, t} = \text{MLP}(E_t, x, f_{SH})$$
여기서 $t$는 시간이고, $E_t$는 해당 시간을 임베딩으로 만든 것이다. 즉 특정 차원을 가지는 벡터로 시간을 변환한 것이다.
또한, $x$는 가우시안의 위치를 나타낸다.
그리고 이 추가적인 SH를 남발하면 시간에 따라 계속 색상이 바뀌어 원치않는 깜빡임 효과등이 나올 수 있기 때문에 이러한 오프셋이 희소해지도록 추가로 제약을 가한다.
결과적으로 객체의 외관과 관련된 손실함수는 아래와 같다.
$$\mathcal{L}_{FG} = (1 - \lambda)\mathcal{L}_1(I_g, \hat{I}_g) + \lambda\mathcal{L}_{DSSIM}(I_g, \hat{I}_g) + (1 - \lambda)\mathcal{L}_1(I_g, \tilde{I}_g) + \lambda\mathcal{L}_{DSSIM}(I_g, \tilde{I}_g) + \gamma\mathcal{L}_1(\Delta f_{SH, t}) \quad g \in \{fg_1, fg_2, ..., fg_K\}$$
여기서 $K$는 객체의 수이며, $fg_k$는 $k$번째 객체의 가우시안 집합이다.
$I_g, \hat{I}_g, \tilde{I}_g$는 각각 마스킹된 정답 이미지, 원본 가우시안만을 렌더링한 이미지, 반사된 가우시안만 렌더링한 이미지를 나타낸다.
과정을 좀 더 설명하면, 매 iter마다 원본 가우시안에 대해 반사 가우시안을 만들고 위 손실함수를 적용하여 원본 가우시안을 변화시킨다.
즉 반사 가우시안을 통해 원본 가우시안을 수정하는 것이고, 반사 가우시안은 iter가 끝나면 메모리에서 해제된 후 다음 iter때 다시 학습된 원본 가우시안을 바탕으로 생성된다.
전체 융합
이제 배경과 객체를 합쳐야한다.
이때 객체의 경계면에서 왜곡이 발생할 수 있다.
따라서 배경+객체를 함께 미세조정한다.
또 다른 논문에서도 많이 썼던 방식으로 BB의 오류가 있을 수 있기 때문에 각 객체에 대해 학습가능한 오프셋(이동, 회전)을 주는 방식을 사용한다.
최종 손실함수는 아래와 같다.
$$\mathcal{L} = \mathcal{L}_{BG} + \mathcal{L}_{FG}$$
실험
데이터셋
KITTI, Pandaset을 사용
일부러 Pandaset의 장면들 중 복잡하고 어려울 것 같은 장면을 사용했다.
평가
PSNR, SSIM, LPIPS등의 지표를 사용했다.
또 새로운 시나리오 시뮬레이션 평가를 위해 FID지표를 사용했다.
결과
V100 GPU기준 2시간의 학습시간이 소요되었고
Pandaset에서는 압도적인 성능 향상이 있었다.
다만 KITTI에서는 LPIPS에서 조금 낮은 수치를 보였다.

아래는 차량을 2meter 변화시켰을 때의 결과이다.

반사 가우시안 제약을 썼을 때, 안썼을 때의 차이이다.

Ablation studies
배경 기하학 제약을 없애면 측면 이동 시나리오에서 도로/차선 등이 일그러지는 효과가 발생했다.