Paper/3D vision

StreetSurf: Extending Multi-view Implicit Surface Reconstruction to Street Views (arXiv2023)

침닦는수건 2023. 10. 16. 20:16
반응형

내 맘대로 Introduction

이 논문은 3D surface reconstruction을 street view에 어떻게 효과적으로 적용할지 고민한 논문이다. 전반적인 논문 느낌이 연구적으로 어떻게 거리뷰에 적용할지 설명하는게 아니라 이것저것 붙여보면서 어떻게든 잘 되게 만들어보려고 노력한 흔적을 설명한 느낌이다. 그래서 새로운 아이디어가 반짝이는 논문이라기 보다 어떤 걸 조립하면 성능이 잘 나오는지 보여주는 조립형 논문 같다.

 

핵심아이디어는 object-centric으로 sphere 공간을 잡고 시작하는 것을 non object- centric cuboid 공간으로 잡은 것, hash table을 써서 가속한 것, 근-중-장거리 모델을 따로 두어 성능을 끌어올린 것 정도 되겠다. 참고로 거리뷰가 시점이 단조롭고 이미지가 충분한 세팅은 아니기 때문에 근-중-장거리 모델을 따로 두는 것이 좋다고 한다.

 

메모하며 읽기

전체적인 그림은 위와 같다. 분홍,하늘색으로 잡힌 영역이 multi-resolution hash grid로 잡은 근거리 영역, 회색 포인트로 그려진 곳이 중거리 영역, 무한대 포인트로 그려진 곳이 장거리 영역이다. 

근거리는 자세하게 복원해야 하므로 특정 거리를 잡아 미리 multi resolution으로 잡아두고 학습을 하고, 중거리의 경우, 학습 중간 중간 변화하는 sampling되는 거리값에서 inverse cuboid warping으로 hash grid를 그때 그때 잡아 학습을 한다. 장거리는 하늘만을 가정하고 그냥 무한대 점 1개의 색을 맞추는 MLP로 퉁쳤다. 

loss를 LiDAR가 없을 경우, Color loss와 다른 알고리즘에서 뱉어준 normal, depth를 이용한 loss, LiDAR가 있을 경우 직접 color loss와 depth loss를 추가한다. 

이름은 복잡하지만 근-중-장거리가 개념상 나뉘어져있단 소리다. 구현적으로는 그냥 근중 - 장거리 로 나뉜 느낌이다.
일단 ray 별로 근-중거리를 합쳐서 sampling하고 rendering한다. 장거리는 선택적으로 사용되는데 sky mask가 있을 때만 추가된다. 즉 sky segmentation 없으면 근-중거리만 있다. 




근-중거리를 개념 상 나눴다고 했는데 앞선 rendering 과정처럼 그냥 concat 하고 통째로 rendering하면 실제로 구분력은 없다. 수식 상으로 구분력이 주어지는 것이 아닌 듯 하다.

구현적으로 figure 5와 같이 근거리는 항상 고정적으로 cuboid를 잡고, 중거리는 sampling에 따라 dynamic하게 잡히도록 해서 근거리는 항상 자세하게, 중거리는 두루두루 보도록 설계를 해서 구분력을 부여한 것 같다. 


 근-중거리의 cuboid를 어떻게 잡느냐는 설명인데, 거리뷰 시퀀스마다 카메라 위치가 지나간 공간 전부를 둘러싸는 cuboid를 근거리, 그 외를 중거리로 보았다. 즉 촬영 차량이 지나간 경로 인근은 근거리 복원 대상으로 보고, 촬영 차량이 지나가진 않았지만 관측된 영역은 중거리 복원 대상으로 본 것이다.

cuboid의 사이즈는 frusturm을 고려해서 잡았고 중거리는 inverse-cuboid warping으로 그 때 그 때 중거리용 AABB를 잡아 hash grid 생성해서 연산했다. 

object centric이면 SDF network 초기화를 sphere 형태로 하면 되는데 거리뷰는 sphere나 elipsoid로 하면 망한다. 그래서 다른 방식으로 바닥면을 일단 초기화해주었다고 한다. 거리뷰기 때문에 도로 위치를 카메라 위치로 역계산해서 초기화해주는 것인데 효과적일 것 같다.
초기화 다음에 적혀있어서 초기화에 사용된 수식 같지만 아니다. 그냥 전체적으로 학습에 도움이 되는 loss로 entropy regularization loss는 0 아니면 1 확실하게 나뉘도록 강제하는 loss고 sky mask loss는 하늘 영역이라고 하면 근-중거리에서 occupancy가 안나오도록 강제하는 것이다. 

참고로 entropy regularization loss는 다음과 같이 생겼다.


사용된 loss 전부다. (논문 구조가 좀 이상한게, 중간 중간 loss 설명도 하고 정작 후반에서는 앞에 설명했음 ㅋ 이러는 구조) 

color loss 당연히 사용하는데 수식은 NeuS를 따른다. 최종 형태는 L1으로 했을 때 제일 좋았다고 한다. 

Geometric loss는 선택적으로 LiDAR를 사용할 수 있을 때와 없을 때를 나뉘어서 전자는 LiDAR와 rendered depth를 직접 비교하는 loss, 후자는 monoSDF에서 쓴 것처럼 다른 SOTA normal, depth network에서 나온 pseudo GT와 비교하는 loss다. 

마지막 sparsity regularization loss는 거리뷰가 시점이 워낙 단조롭다 보니까 cuboid 내에 한 번도 촬영이 안된 부분이나 몇번 촬영이 안된 부분이 있을텐데 이 영역에서 noise가 생기는 것을 방지하는 loss다. entropy regularization loss와 거의 같은 목적으로 추가된 loss.
참고로 ray sampling을 hash table을 쓰면 NGP를 따라가야 하는데 효율은 NeuS 방식이 좋다보니 둘 을 합쳐서 2스텝으로 했다고 한다. 일단 hash grid를 따라서 occupied region까지 추리고 그 범위에서 neus 방식대로 확률 값을 보아 재sampling하는 것이다. 속도야 조금 느려지겠지만 성능 향상이 클 방식 같다.
반응형