NodeSLAM

Sucar 2020 · 논문

한 줄 요약 — 검출된 각 물체를 클래스 조건부 VAE가 디코딩하는 컴팩트한 학습된 점유(occupancy) 코드로 표현하는 객체 수준 SLAM으로, 새로운 확률적 미분 가능 렌더러를 사용해 물체 형상, 물체 포즈, 카메라 궤적을 공동으로 최적화한다.

문제

장면 표현의 선택은 SLAM 시스템에 필요한 추론 알고리즘과 그것이 가능케 하는 응용 모두를 결정한다. 포인트 맵이나 surfel 맵은 물체 정체성, 포즈, 완전한 형상에 대한 개념이 전혀 없다 — 그러나 로봇이 머그컵을 잡거나 상자를 포장하려면 정확히 그런 정보가 필요하다. 고전적인 복원은 직접 관측된 표면만을 복원할 수 있고, feed-forward 형상 예측은 여러 측정값을 원칙적인 방식으로 통합할 수 없다. NodeSLAM은 SLAM 스타일의 공동 추정 안에서 하나 이상의 RGB-D 이미지로부터 원칙에 기반한 완전한 물체 형상 추론을 요구하며, 객체별 TSDF 시스템(Fusion++)과 CAD 모델 인스턴스 시스템 사이의 간극을 메운다.

방법 및 아키텍처

형상 모델. 단일 클래스 조건부 3D CNN VAE(5개의 합성곱 층, 커널 4, 스트라이드 2; 대칭 구조의 decoder)가 테이블 위 물체 4개 클래스(머그컵, 그릇, 병, 캔)에 대한 32×32×3232\times 32\times 32 크기의 ShapeNet 점유 격자로 학습되며, KL latent 손실과 binary cross-entropy 복원 손실을 사용한다. 맵의 각 물체는 크기 16의 latent code d\mathbf{d}와 9-DoF 포즈(회전, 이동, 스케일)로 표현된다.

확률적 렌더링(측정 함수). 각 픽셀에 대해, 역투영된 광선을 따라 MM개의 깊이 δ^i\hat{\delta}_i를 샘플링하고, 디코딩된 격자로부터 삼중선형 보간된 점유값 oio_i를 가져온다. 광선 종료 확률과 이탈(escape) 확률은

ϕi=p(D[u,v]=δ^i)=oij=1i1(1oj),ϕM+1=j=1M(1oj),\phi_i = p(\mathbf{D}[u,v] = \hat{\delta}_i) = o_i \prod_{j=1}^{i-1}(1-o_j), \qquad \phi_{M+1} = \prod_{j=1}^{M}(1-o_j),

이며, 렌더링된 깊이와 픽셀별 불확실성은 이 분포의 평균과 분산으로 주어진다:

δ^μ[u,v]=i=1M+1ϕiδ^i,δ^var[u,v]=i=1M+1ϕi(δ^iD[u,v])2.\hat{\delta}_{\mu}[u,v] = \sum_{i=1}^{M+1}\phi_i\,\hat{\delta}_i, \qquad \hat{\delta}_{var}[u,v] = \sum_{i=1}^{M+1}\phi_i\,(\hat{\delta}_i - D[u,v])^2 .

다중 물체 렌더는 최소 깊이 방식으로 결합되며(가림 처리), 4단계 가우시안 피라미드가 조대-정밀(coarse-to-fine) 최적화를 위해 수용 영역을 넓힌다.

추론. 코드에 대한 가우시안 사전 분포가 주어지면, MAP 문제는 Levenberg–Marquardt로 풀리는 최소자승 목적함수가 된다:

mind,TCGu,v(δ[u,v]δ^μ[u,v])2δ^var[u,v]+idi2.\min_{\mathbf{d},\,T_{CG}} \sum_{u,v} \frac{(\delta[u,v] - \hat{\delta}_{\mu}[u,v])^2}{\hat{\delta}_{var}[u,v]} + \sum_i \mathbf{d}_i^2 .

이동/스케일은 마스킹된 포인트 클라우드로부터, 방향은 검출된 지지 평면(머그컵의 yaw는 추가로 CNN을 사용)으로부터 초기화되고, d=0\mathbf{d}=0(클래스 평균 형상)으로 초기화된다.

SLAM 루프. Mask R-CNN 마스크는 두 단계로 맵의 물체와 연관된다(먼저 이전 프레임 마스크 IoU > 0.2, 그다음 렌더링된 마스크 IoU); 매칭되지 않은 마스크는 새 물체를 생성한다. 카메라 추적은 맵을 고정한 채 동일한 렌더 손실을 최소화한다. 키프레임(물체가 초기화되거나 시점 변화가 13°를 초과할 때 생성)은 카메라 포즈, 물체 포즈, 형상 코드에 대한 3개 키프레임 슬라이딩 윈도우 공동 최적화로 들어간다: Ljoint=jLrenderj+iLprioriL_{joint} = \sum_j L_{render}^j + \sum_i L_{prior}^i. 타이밍: 물체당 렌더링 7ms, 전체 물체 복원 약 1.5초, 추적 7fps, 공동 최적화 2초.

실험 결과

SLAM에서의 의미

NodeSLAM은 현대적인 객체 수준 SLAM 패러다임을 확립했다: 학습된 형상 사전을 고전적 공동 추정 안의 최적화 가능한 맵 변수로 사용하고, 미분 가능한 렌더링을 측정 모델로 사용한다 — 이는 이후 신경 필드 SLAM을 이끄는 것과 같은 렌더러 역변환(inverted-renderer) 아이디어이다. 포즈를 가진 완전한 물체 모델은 원시 기하 파편과 달리 로봇 조작이 정확히 필요로 하는 것이다. 이는 코드 기반 밀집 SLAM(CodeSLAM)에서 객체 중심 신경 필드 매핑(vMAP)과 DeepSDF 기반 시스템인 DSP-SLAM으로 이어지는 개념적 다리이다.

관련 문서