DeepSLAM

Li 2020 · 논문

한 줄 요약 — DeepSLAM은 포즈를 위한 Tracking-Net, 깊이를 위한 Mapping-Net, 루프 검출을 위한 Loop-Net, 그리고 g2o 포즈 그래프 최적화로 완전한 단안 SLAM 파이프라인을 신경망들로 구성하며, 스테레오 영상으로 완전 비지도 학습하고 단안 비디오에 배포한다.

문제

2020년 당시 학습 기반 visual odometry는 지도(DeepVO/ESP-VO) 및 자기지도(SfM-Learner) 형태로 존재했지만, 지도 학습 변형은 비용이 큰 ground-truth 궤적을 필요로 했고, 단안 자기지도 학습은 메트릭 스케일을 잃었으며, 학습 기반 시스템은 거의 모두 오도메트리에만 국한되어 있었다 — 즉 루프 클로징이 없어 드리프트가 무한히 커졌다. 한편 기하학적 시스템은 어려운 장면(비, 야간, 과다 노출)에서 취약하며 데이터로부터 개선될 수 없다. DeepSLAM은 고전적 SLAM 분해 전체 — 추적, 매핑, 루프 클로저, 그래프 최적화 — 를 어떠한 annotated ground truth도 없이 학습된 네트워크로 재현할 수 있는지 묻는다.

방법 및 아키텍처

프론트엔드 네트워크(테스트 시점, 단안 입력). Tracking-Net은 RCNN이다 — VGGNet 컨볼루션 레이어가 이미지 시퀀스(길이 5)에 대한 LSTM으로 특징을 전달하며, 상대 6-DoF 포즈와 추정치별 불확실성을 출력하여 윈도우당 (n1)(n-1)개의 상대 포즈로 이루어진 지역 포즈 그래프를 직접 만들어낸다. Mapping-Net은 밀집하고 메트릭 스케일이 맞는 깊이 맵을 예측하는 인코더-디코더다(5프레임마다 실행). Loop-Net은 ImageNet으로 사전 학습된 Inception-ResNet-V2(SLAM 특화 학습 없음)로, 이미지를 특징 벡터로 임베딩한다. 코사인 거리 dcos=cos(v1,v2)d_{cos}=\cos(v_{1},v_{2})가 임계값 이하로 떨어지면 두 이미지가 루프로 선언되고, 그 후 Tracking-Net(시퀀스 길이 2)이 루프 변환을 계산하며 g2o가 지역+전역 포즈 그래프를 결합하여 최적화한다.

스테레오 시퀀스에서의 비지도 학습. 공간적(좌-우) 및 시간적(프레임 간) 기하학적 일관성이 손실 함수를 구성한다. 스테레오가 메트릭 스케일을 제공하므로 포즈나 깊이 라벨이 필요 없다. 스테레오 기저선 BB와 초점거리 ff가 주어지면, 예측된 깊이 DiD_i는 대응 거리 Hi=Bf/DiH_{i}=Bf/D_{i}를 주며, 이로부터 이미지들이 상호 워핑된다. 좌-우 광도 손실(우-좌에 대해서도 유사하며, disparity map Q=H×wQ = H \times w에 대해서도 마찬가지)은 다음과 같다:

Ll,rp=λsfs(Il,Il)+(1λs)IlIl1,fs()=1SSIM()2L_{l,r}^{p}=\sum \lambda_{s}\, f_{s}(I_{l},I_{l}') + (1-\lambda_{s})\,\lVert I_{l}-I_{l}'\rVert_{1}, \qquad f_{s}(\cdot)=\tfrac{1-\mathrm{SSIM}(\cdot)}{2}

여기에 좌우 스트림에서 추정된 포즈 간의 포즈 일관성 손실 Lo=λpx^lx^r1+λrφ^lφ^r1L^{o}=\lambda_{p}\lVert\hat{x}_{l}-\hat{x}_{r}\rVert_{1}+\lambda_{r}\lVert\hat{\varphi}_{l}-\hat{\varphi}_{r}\rVert_{1}이 추가된다. 시간적으로는, 픽셀이 다음을 통해 프레임 사이를 워핑한다.

pk+1=KT^k,k+1D^kK1pkp_{k+1}' = K\,\hat{T}_{k,k+1}\,\hat{D}_{k}\,K^{-1}p_{k}

(KK는 내부 파라미터, T^k,k+1\hat{T}_{k,k+1}은 예측된 포즈, D^k\hat{D}_k는 예측된 깊이), 이는 마스킹된 광도 손실과, 역투영된 포인트 클라우드에 대한 ICP 스타일 3D 기하학적 정합 손실 Lk,k+1g=MgkEgk1L_{k,k+1}^{g}=\sum\lVert M_{g}^{k}E_{g}^{k}\rVert_{1}(Egk=PkPkE_{g}^{k}=P_{k}-P_{k}')을 준다.

불확실성과 이상치 제거. 평균 광도/기하학적 오차는 불확실성 σk,k+1=2×S(μpk+μpk+1+λe(μgk+μgk+1))1\sigma_{k,k+1}=2\times S\big(\mu_{p}^{k}+\mu_{p}^{k+1}+\lambda_{e}(\mu_{g}^{k}+\mu_{g}^{k+1})\big)-1(Sigmoid SS, 범위 0.5–1)을 정의하며, 이는 Tracking-Net의 불확실성 출력을 감독하고, 백분위수 qth=q0+(1q0)(1σk,k+1)q_{th}=q_{0}+(1-q_{0})(1-\sigma_{k,k+1})를 통해 비트 단위 오차 맵 마스크의 크기를 적응적으로 조정한다 — 학습 중 움직이는 객체(광도 마스크)와 하늘·객체 경계처럼 신뢰할 수 없는 깊이(기하학적 마스크)를 걸러낸다.

실험 결과

SLAM에서의 의미

DeepSLAM은 “모든 모듈을 네트워크로 교체하되 아키텍처는 유지한다”는 전략을 가장 완전한 형태로 보여주며, 순수 학습 기반 VO 논문들이 생략했던 루프 클로저와 포즈 그래프 단계까지 포함한다 — 그리고 비지도 학습의 성과를 입증한다: 지도 학습 경쟁자들이 사용할 수 없는 비라벨 KITTI 시퀀스를 단순히 섭취함으로써 계속 개선되었다. 스테레오로 학습하고 단안으로 배포하는 방식은 스케일을 인식하는 자기지도 학습을 얻는 표준적인 방법으로 남아 있으며, RobotCar에서의 강건성 결과는 학습 기반 SLAM이 기하학적 방법에 대해 갖는 주된 강점 — 수작업 특징이 실패하는 조건에서의 우아한 동작 — 을 예고했다.

관련 문서