[논문스터디] SuMa++: Efficient LiDAR-based Semantic SLAM

Estelle Yoon·2025년 2월 15일

Study

목록 보기
2/8

Bibtex 인용

@inproceedings{chen2019iros, 
		author = {X. Chen and A. Milioto and E. Palazzolo and P. Giguère and J. Behley and C. Stachniss},
		title  = {{SuMa++: Efficient LiDAR-based Semantic SLAM}},
		booktitle = {Proceedings of the IEEE/RSJ Int. Conf. on Intelligent Robots and Systems (IROS)},
		pages = {4530--4537},
		year = {2019},
		url = {https://www.ipb.uni-bonn.de/wp-content/papercite-data/pdf/chen2019iros.pdf}
}

요약

  • 의미론적 정보 활용 Semantic SLAM
  • 동적 객체 필터링 및 의미 기반 스캔 정합에 활용
  • 동적 객체 많을 때, SOTA

인트로

  • mapping은 대부분 동적인 환경에서 작동 → 일관된 맵 만들기 어려움
  • 의미론적 정보는 navigation을 위한 중요한 요소
  • FCN을 이용해 의미론적 정보를 추출
  • 고품질 의미론적 맵 생성 및, 정확성과 odometry 품질 향상함
  • 동적 객체가 많은 환경에서도 정확한 맵 생성, 일반적 환경에서도 성능 향상 이룸

기여

  • Surfel 기반 맵에 의미론적 정보 통합
  • 동적 객체 필터링을 위한 새로운 기법 제안
  • 카메라 데이터 없이 Lidar기반으로 point들에 대한 semantic 정보를 함축한 mapping방법 propose
  • ICP과정에서 high level constraint를 구현해냄

  • odometry and SLAM
  • Deep learning and CNN
  • 동적 객체 탐지, semantic segmentation, 3D reconstruction

Approach

  • 기본적 접근법은 Surfel based Mapping
  • FCN RangeNet++을 통합하여 semantic segmentation 정보 활용
    • RangeNet++은 포인트클라우드를 구면 투영하여 각 포인트에 의미론적 라벨 할당
  • sementic label 활용하여 동적 객체 필터링, 스캔 정합
  • sementic label 활용하여 constraints 추가함으로 pose estimation 정확도 및 robustness 향상

Surfel based Mapping

  • 타임 스텝 tt에서 포인트 클라우드를 구면 투영하여 vertex map을 생성
  • vertex map을 이용하여 normal map 생성
  • Projective ICP를 활용하여 이전 스텝의 렌더링 된 뷰와 현재의 맵 뷰를 비교하여 pose 업데이트를 계산함
  • 모든 pose 업데이트 계산을 연결하여 월드 좌표에서의 최종 pose 결정
  • SuMa에서 Map은 Surfel로 표현
    • position
    • normal
    • radius
    • timestamp
  • 각 surfel은 binary bays filter를 사용하여 stability를 판단
  • loop closure, pose-graph optimization을 통해 globally consistent한 map을 생성

Semantic Segmentation

  • 각 프레임에 대하여 RangeNet++을 활용해 semantic label을 예측
  • RangeNet은 포인트클라우드들이 구면 투영된 range image를 받아서 semantc segmentation 수행
  • feild of view에서 point wise하게 label을 제공하므로 semantic information을 map에 통합할 수 있음

Refined Semantic Map

  • RangeNet++에서 아웃풋으로 주는 blob을 map에 reprojection할 때, label 오류가 발생할 수 있음
  • 위의 flood-fill 알고리즘을 preprocess 단계에서 실행하여 해결

  • 위의 그림이 그 결과
  • 일단 raw를 가져다가 eroded 된 것들을 다 제거
    • 이웃 픽셀 중 어떤 하나라도 다른 label을 가질경우 해당 픽셀 제거
  • 그 후, vertex map에서 깊이 정보를 활용하여 eroded된 것들을 복원
    • 비어있는 픽셀에 대해 이웃 픽셀의 라벨을 상속
    • distance가 threshold 이하일 경우에만 적용

Filtering Dynamics using Semantics

  • 대부분의 환경을 static하다 가정하고 SLAM은 geometric 정보 활용해서 map만듬
  • 실제로는 동적이기 때문에 map association에 문제를 일으킴
  • semantic segmentation에서 제공하는 label을 활용하여 동적 객체를 처리
  • 기존 맵과 현재의 뷰 사이의 semantic consistency를 비교
  • consistent하지 않을 경우 해당 surfel이 이동했을 것이라 판단
  • bayes filter에 penalty항을 추가, unstable surfel 제거

odds(p)=log(p(1p)1odds(p) = log(p(1-p)^{-1}
  • 다른 단순한 방법으로는 이동 가능하다고 판단되는 모든 label에 해당하는 surfel 삭제 방법 있음
    • 이 경우 incremental pose extimation에 활용될 법한 feature들 삭제
    • ex) 주차된 차
    • 너무 삭제하면 정합시에 활용할 feature가 줄어 정합에 실패할 수 있음

Semantic ICP

  • frame to model ICP에 semantic constraint를 추가하여 outlier의 영향을 줄이는 optimization 구현
  • ICP

- 점으로부터 가장 가까운 점을 대응점 쌍으로 설정
- 각 점군에 두개의 평균을 빼서 0으로 정규화
- 각 점들마다 최단거리의 타겟을 correspondence로 설정하여
- 공분산 행렬을 분해 회전행렬을 구한 후, 평균과 차이를 통해 이동 벡터를 산출
- 이걸 수렴할때까지 계속 반복
  • 반복을 최소화 하기위해 아래의 error function 사용

  • 각 vertex들은 reference vector, normal vector로 associate되어있음

  • 최소화를 위해 gauss-newton을 사용하여 increments δ\delta 를 구함
    • δ=(JTWJ)1JTWr\delta = (J^T WJ) ^{-1} J^T Wr
    • WW는 diagonal matrix containing weight wuw_u for each residual
    • rr은 stacked residual vector
    • JJ 는 jacobian of rr respect to increment δ\delta
  • 이 과정에서 hard association, huber norm을 사용해 weight를 부여
  • higher level semantic scene을 사용해 residual에 추가적 constraint를 줌
  • 이렇게 geometric정보를 semantic정보와 결합

  • 위에 보면 a가 현재 b가 월드맵 c가 가중치 맵
    • 동적 객체에 대해 필터링 됨(b), 동적 객체에 대해 가중치 낮게 잡힘(c)

Experimental Evaluation

  • 목적
    • 많은 동적 객체가 있는 상황에서도 정확한 mapping
    • 일반적 환경에서 단순하게 동적 객체 제거하는 것보다 나은 성능
  • 사용 데이터
    • KITTI Vision Benchmark
      • velodyne HDL-64E 포인트 클라우드 10Hz
  • SuMa, SuMa w. naive filtering, SuMa++ 비교
  • RangeNet++은 모든 KITTI Odometry Benchmark 시퀀스로 학습시킴
  • 사용 하드웨어
    • Intel Xeon(R) W-2123 w. 8core @3.60GHz w. 16GB RAM
    • Nvidia Quadro P4000 w. 8GB RAM

KITTI Road Sequence

  • 동적 객체가 있는 상황에서의 mapping 성능 차이
  • semantic label 제공되지 않는 sequence
  • 대부분의 객체가 동적 객체, 표지판/기둥 등 low feature 객체
  • SuMa에서는 교차로 표지판이 다른 위치로 mapping
  • SuMa++에서는 동적 객체 정확히 필터링, consistent mapping 보여줌

  • relative rotational, translational error

  • 아무튼 SuMa에서의 성능 저하는 동적 객체에 의한 것임

KITTI Odometry Benchmark

  • Naive filtering과 Semantic filtering의 성능 차이

  • relative translational, rotational error

  • SuMa + naive filtering은 diverge하는데 SuMa++은 SOTA SLAM들이랑 비교해도 성능 유사

  • unseen trajectory에 대해 test

    • rotational error 0.0032/m0.0032 ^\circ /m - SuMa와 동일
    • translational error 1.06%1.06\% - SuMa에서는 1.39%1.39\%
    • 아무튼 개선됨

Discussion

  • 초기 동적 객체 필터링 힘듬
    • 초기 관측에서 동적 객체가 많으면, proper initial velocity, pose estimation이 불가능
    • initializing 하는 동안에는 모든 동적 객체를 naive하게 제거, 이후 backtrack하는 방법 사용할 수 있음
  • naive filtering
    • naive한 방법으로 동적 객체를 filtering 하는 것이 장기적 관점에서 가려진 environment를 표현하는 것에 유용할 수 있음

Conculsion

  • need future work about
    • loop closing/detection
    • estimation of more fine grained semantic information - such as lane structure, road type etc
profile
Studying

0개의 댓글