[논문 리뷰] LCDNet: Deep Loop Closure Detection and Point Cloud Registration for LiDAR SLAM
[IEEE T-RO,2022] LCDNet: Deep Loop Closure Detection and Point Cloud Registration for LiDAR SLAM 논문 리뷰
Abstract
Loop closure detection은 SLAM에서 essential한 요소이며, 시간이 지남에 따라 누적되는 오차(drift error)를 줄이는데 도움이 된다.
최근 몇 년간, 여러 deep learning 방식이 loop closure detection에서 수작업만큼 효과적이지 못했다.
특히 reverse loop에서 더욱 그렇다고 한다.
본 논문에서는 LCDNet이라고 하는 새로운 딥러닝 접근법을 소개한다.
이 접근법은 이전에 방문한 장소를 detection하고, 현재 scan과 map사이의 6DOF relative transformation을 추정하며
LiDAR point cloud의 loop closure를 효과적으로 인식한다.
LCDNet은 다음 구성 요소로 이루어져있다.
- Shared encoder
- Place recognition head : extract global descriptor
- relative pose head : 두 point cloud간 transformation 추정
end-to-end training이 가능하다고 한다.
여러 자율 주행 데이터 셋에서 평가했을 때, SOTA를 달성했다고 한다.
Introduction
typical SLAM pipeline에 대해 설명한다.
- 1) consecutive scan allignment
- 2) loop detection
- 3) loop closure to align the current scan to the previously visited place : 이전 방문 장소와 현재 scan과의 align을 통한 map correction.
2) 3) 과정은 loop가 감지되었을 때, pose graph에 constraint로 넣어주며 accumulated drift를 감소시킨다.
loop detection를 위해 local keypoint를 추출하거나 global handcrafted descriptor를 활용하는데,
이러한 접근법의 대부분은 두 point cloud를 비교하기 위해 상황에 맞는 ‘임의의’ 함수를 필요로 하며, 과거 scan 수가 많아질수록 runtime에 영향을 미친다.
이를 위해 loop detection task에 DNN(Deep neural network)를 적용한 연구들 또한 등장하였다.
DNN 기반 방식은 handcrafted method(수작업)보다 빨라서 loop closure detection을 빠르게 할 수 있다. 하지만 성능은 SOTA만큼 나오지 않았다.
Point cloud registration을 위해 ICP를 설명하는데, 위치나 방향에 큰 차이가 있으면 정렬하지 못하거나 local minima에 빠질 수 있다고 설명한다.
이러한 typical SLAM pipeline에 대해, 이를 극복하기 위해
본 논문에서는 LCDNet을 제안하였다고 한다. (Figure 1)
Figure 1
loop detection과 point cloud registration을 수행한다.
LCDNet은 DNN이 distinctive feature를 추출하는 기능과 feature matching을 위한 transport theory의 알고리즘을 결합한다.
LCDNet은 shared backbone으로 구성되며, abstract에서 설명한 것처럼 Place recognition head(extract global descriptor)와 relative pose head로 구성된다.
또한 LCDNet의 핵심 요소 중 하나는 unbalanced optimal transport(UOT) algorithm이며, 미분 가능한 방식으로 구현했다고 한다.
UOT는 효과적인 feature matching, outlier제거, 가려진 지점 처리(handle occluded points)가 가능하면서도 network를 end-to-end로 학습할 수 있다.
그리고 기존 existing loop closure 방법은 relative yaw rotation만 추정했다.(between two point clouds)
하지만 LCDNet은 6DoF를 모두 추정한다. 이는 subsequent ICP refinement를 더 빠르게 수렴할 수 있도록 한다.
Technical Approach
Figure 2
Figure 2에서 overview를 확인할 수 있다.
Feature Extraction
Figure 3
feature extractor stream은 3D Object detection을 위해 제안된 pointvoxel-RCNN(PV-RCNN)을 기반으로 제작하였다.
PV-RCNN은 voxel-based method의 기능과(high-level feature extract) PointNet type(fine-grained feature extract) 아키텍쳐를 결합하였다.
(복셀 기반은 높은 수준을 추출하지만, 세부 사항을 놓칠 수 있고, PointNet은 세부 사항 capture는 좋지만 높은 수준의 특징을 추출하는 데는 효과적이지 않아 이 둘을 결합한 방식이라고 한다.)
여기서 object detection이 아니라 feature extraction만 관심있기 때문에
오직, 3D voxel DNN과 Voxel set abstraction(VSA) module만 사용하고,
region proposal, ROI-grid pooling, FC layer 등은 사용하지 않았다.
3D Voxel DNN을 사용하여 첫 번째로 point cloud를 voxel grid로 변환한다.
여기서 voxel feature는 동일한 voxel내에 있는 모든 점에 걸쳐 평균화된다.
이어서, sparse 3D convolution과 downsampling을 사용하여 feature pyramid를 추출한다.
4개의 pyramid block으로 구성되며, down sampling rates가 1, 2, 4, 8배인 sparse 3D convolution으로 구성된다고 한다.
마지막으로, Z축을 따라 특징을 쌓아 가장 조밀한 feature map을 2D BEV(Bird-Eye-View?) 맵으로 변환한다.
(복잡해서 더 깊게 이해하지는 않았는데, 결국 3D Voxel DNN을 사용하여 voxel grid로 변환하고 feature pyramid를 추출하는 과정이다 정도로 이해했다.)
출처 : 논문리뷰 PV-RCNN: Point-Voxel Feature Set Abstraction for 3D Object Detection
VSA 모듈은 pyramid feature map들과 BEV feature map 그리고 input point cloud를 N개의 주요 keypoint feature로 집계한다.
이를 위해 Farthest point sampling(FPS)를 사용해 input point cloud를 downsampling한다.
(균일하게 분포된 N개의 keypoint 선택)
VSA 모듈은 SA(Set Abstraction)의 extension이다.(참고)
SA는 raw point cloud에서 동작하고, VSA는 3D sparse feature map에서 voxel feature를 이웃한다.
keypoint feature는 MLP를 활용하여 추출된다.(논문 식 참고)
이러한 feature extractor가 SOTA인 것도 확인했다고 한다.
Global Descriptor
간단하게 point cloud의 global descriptor는 NetVLAD layer를 사용하여 keypoint의 feature set을 compact G-dimesional vector로 집계하여 생성한다.
NetVlad 레이어는 PointNet에서 사용되는 max pooling 대신 사용된다.
🦾한 줄 정리
Place recognition을 위해 사용되는 NetVLAD를 이용하여 Feature Extraction module에서 생성한 point cloud의 feature set에 대해 global descriptor를 추출한다.
자세한 내용은 논문을 더 참고해야할 것 같다.
Relative Pose Estimation
two point cloud $P$와 $S$가 주어졌을 때,
본 논문의 아키텍쳐에서 세 번째 요소(모듈)은 6DoF transformation을 추정한다.
이는 source point cloud $P$과 target point cloud $S$를 align하기 위해서이다.
이 task를 feature extractor를 통해 계산한 keypoint의 feature를 매칭하는 것으로 수행한다.
(Figure 2 참고)
LiDAR point cloud의 희소성과 feature extractor에서 수행되는 keypoint 샘플링 단계로 인해, P의 포인트는 S에서 하나의 매칭 포인트가 없을 수 있지만, S에서 둘 이상의 포인트 사이에 놓일 수 있다.
그래서 이 task에서 일대일 매핑은 적절하지 않다.
이를 해결하기 위해, Sinkhorn algorithm을 적용했다고 하며, 이는 optimal transport theory를 빠르게 추정할 수 있다고 한다.
이 접근 방식은 두 point cloud 간의 다대일 매핑이 가능한 unbalanced optimal transport(UOT)을 사용하여 구현된다.
이러한 방식이 최근 여러 작업에서 좋은 모습을 보였다고 한다.
이러한 식(OT)를 UOT로 바꾸는 것과 이유는 논문을 더 자세히 참고해야할 것 같다.
(이해가 안가서 넘어감.)
이후 추정한 UOT는 point cloud간 correspondence를 표현하고, P에서 S로 투영된 모든 키포인트의 좌표를 계산하는 데 사용한다.
이후 weighted SVD를 사용하여 두 포인트 클라우드간의 transformation을 추정한다.
🦾한 줄 정리
결국 P의 i포인트와 S의 j포인트의 매칭의 Cost를 minimize하고자 하고 (matching -> relative pose), 이걸 다대일 매핑과 성능을 위해 UOT로 변환하는 것을 설명한다. 이후 SVD를 사용하여 transformation을 추정한다.
Loss Function
넘어가도록 하겠다.
SLAM System
최근에 제안된 SLAM 시스템인 LIO-SAM에 본 논문이 제안한 LCDNet을 통합한다고 소개한다.
LIO-SAM은 factor graph에서 구축된 LiDAR inertial odometry framework이다.
LIO-SAM의 유클리디안 거리 기반 loop closure 감지를 LCDNet으로 대체했다.
참고 자료
- Cattaneo, Daniele, Matteo Vaghi, and Abhinav Valada. “Lcdnet: Deep loop closure detection and point cloud registration for lidar slam.” IEEE Transactions on Robotics 38.4 (2022): 2074-2093.
- https://github.com/robot-learning-freiburg/LCDNet
- 논문리뷰 PV-RCNN: Point-Voxel Feature Set Abstraction for 3D Object Detection
- [논문 리뷰] PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space
📣
포스팅에서 오류나 궁금한 점은 Comments를 작성해 주시면, 많은 도움이 됩니다.💡
Leave a comment