SLAM에서 연산량을 줄이는 방법에는 어떤게 있을까요?

SJ·2025년 1월 2일
0

이 게시글은 장형기 님의 SLAM 기술면접 질문 100선에 대한 답을 제 나름대로 한 것입니다.


SLAM의 연산량을 줄이는 방법은 크게 보면 2가지라고 생각합니다.

입력 데이터를 줄이는 방법과 알고리즘에서 연상량을 줄이는 방법입니다.
그럼 차례차례 보겠습니다.

입력 데이터를 줄이는 방법

  • DownSampling 기법

    • 이미지 해상도 다운샘플링
      카메라 입력 영상을 원본보다 낮은 해상도로 스케일링해 사용합니다.

      ex) 1980x1080 이미지를 640x360으로 줄여 처리하면, 특징 추출 매칭 시 연산량이 크게 감소함

      단점: 해상도가 너무 낮으면 정밀도와 특징 식별 능력이 떨어질 수 있으므로, 업무에 맞는 적절한 수준을 선택해야 합니다.

    • 포인트 클라우드 다운 샘플링

      LiDAR나 RGB-D 센서에서 획득한 포인트 클라우드를 Voxel grid나 랜덤 샘플링을 통해 희소화합니다.

      ex) 1cm 격자의 Voxel 그리드로 다운샘플링하면, 인접 포인트들을 하나로 통합해 전체 점 개수를 줄이므로, Registration이나 맵핑 알고리즘의 연산량을 감소시킵니다.

알고리즘에서 최적화

  • Keyframe 기법

    • keyframe 선정 및 유지: 모든 프레임을 처리하지 않고, 위치 자세 변화가 충분히 클 때만 keyframe으로 설정합니다.

      이것은 모든 frame을 계산하지 않고 중요한 frame을 선별하면서 연산량을 줄일 수 있습니다.

  • Submap 생성

    전체 맵을 여러 구역으로 쪼개서 각각 관리합니다. 이를 통해 메모리 효율성을 높이고 전체를 계산할 때 큰 덩어리를 통합하기 때문에 더욱 쉽게 계산할 수 있습니다.


    뭐 생각나는건 이 정도입니다. 보통 down sampling처리, keyframe 방식과 submap 생성하는 것을 주로 처리합니다. 요즘 implicit neural field로 mapping을 하면서 submap을 하기 힘들어지기도 하는데 key frame과 down sampling은 거의 필수적으로 사용하는 것 같습니다.

profile
student

0개의 댓글