Tnote

[SLAM 논문리뷰] ORB-SLAM 본문

SLAM 스터디

[SLAM 논문리뷰] ORB-SLAM

jfl 2022. 4. 23. 19:26

ORB-SLAM

이미지 특징점을 추출하는 알고리즘 중 10년동안 성능이 검증된 SIFT라는 알고리즘이 있다. 하지만 SIFT 알고리즘은 많은 계산량을 필요로 하기 때문에, 실시간 처리나 모바일기기와 같은 성능이 떨어지는 장치에서 사용하기 어려웠다. 그래서 많은 계산량을 해결해줄 알고리즘이 필요해졌고, FAST keypoint detector와 BRIEF descriptor가 합쳐진 ORB가 개발되었다. ORB는 GPU없이 실시간 성능을 낼 수 있을 정도로 가벼웠고 성능은 SIFT 알고리즘에 맞먹는 성능을 보여줬다.

=> FAST Detector + ORB Descriptor

 

A Versatile and Accurate Monocular SLAM System

다양하고 정확한 Monocular SLAM 시스템

*Monocular : 단안의, 외눈

 

FAST keypoint detector

영상에서 실시간으로 keypoint(코너, 에지)를 찾는 알고리즘으로 중심 픽셀과 중심 픽셀을 중심으로 원형에 위치한 픽셀들과의 차이를 구분

BRIEF descriptor

descriptor는 간단하게 두 사진이 있을 때, 같은 사진인지 다른 사진인지 비교하는 것인데, 비교를 할 때 특정 영역에 대한 부분을 예를 들어, 코너, 에지등과 같은 keypoint를 찾아서 서로 비교한다. 이 때, descriptor는 많은 용량을 가지고 있어야 했고 이를 해결하기 위해 descriptor를 이진화하였다. 이것이 BRIEF descriptor

 

bag of words

문서를 자동으로 분류하기 위한 방법 중 하나, 글에 포함된 단어들의 분포를 보고 이 문서가 어떤 종류의 문서이지 판단하는 기법. 여기서는 문서가 아닌 이미지를 분류하고 검색하기 위한 목적으로 활용.

  1)영상 feature를 추출한 후 clustering을 거쳐 feature을 대표할 수 있는 값 생성하고 bag에 저장.

  2)임의의 영상에 featrue을 추출한 후 clustering을 거쳐 생성된 값과 bag에 저장된 값 비교.

 

bandle 조정

카메라 위치 추정과 3D 지도를 추정하기 위해 수행됨


0. 초록

본 논문에선 ORB-SLAM 제시

  -심한 동작 혼란에 강함

  -넓은 기준선에서 loop closing 과 relocalization 허용

  -완전 자동 초기화를 포함

 

본 논문에서 최근 몇 년간의 우수한 알고리즘 기반으로,

모든 SLAM 작업에 대해 새로운 시스템을 처음부터 다시 설계

*tracking, mapping, relocalization, loop closing..

=> 다른 최첨단 단안 SLAM 접근 방식에 비해 전례 없는 성능 달성.

 

1. 소개

bundle 조정(BA)는 강력한 일치 네트워크와 좋은 초기 추측이 제공될 때

  -희소 기하학적 재구성

  -카메라 위치의 정확한 추정치 제공

 

단, Visual SLAM과 같은 실시간 응용 프로그램에 적합하지 않은 것으로 간주

=> 그래서, Viual SLAM의 목표를 달성하기 위해 실시간 SLAM 알고리즘이 BA에 다음을 제공하도록 해야함

       1) 선택된 키프레임의 하위 집합 중에서 장면 특징의 해당 관찰

       2) 키프레임 수와 함께 복잡성이 증가함에 따라 선택 시 불필요한 중복 피함

       3) 정확한 결과를 생성하기 위한 키프레임 및 포인트의 강력한 네트워크 구성

             (상당한 시차와 루프 클로저 match가 많은 포인트를 관찰하는 키프레임의 잘 분산된 세트)
       4) 비선형 최적화를 위한 키프레임 포즈 및 포인트 위치의 초기 추정

       5) 확장성을 달성하기 위해 최적화에 초점을 맞춘 탐색의 로컬 맵

       6) 실시간으로 루프를 닫기 위해 빠른 전역 최적화(ex; pose graph) 수행하는 기능

 

이 연구에서 PTAM의 주요아이디어인 A와 B의 장소 인식 작업 + Strasdat et al.의 규모 인식 루프 폐쇄 + covisibility 정보의 사용을 기반으로 다음의 기여를 하는 새로운 단안 SLAM 시스템을 설계.

  1) 모든 작업에 대해 동일한 기능 사용

       tracking, mapping, relocalization, loop closing이 시스템을 효율적이고 단순하며 안정적으로 만든다.

       GPU없이 실시간 성능을 허용하는 ORB 기능 사용 -> 관점, 조명의 변화에 좋은 불변성 제공

  2) 대규모 환경에서 실시간 운영

       covisibility 그래프 사용 -> tracking 과 mapping은 global map 크기와 관계없이 로컬 covisible 영역에 초점 맞춤

  3) 포즈 그래프의 최적화를 기반으로 한 실시간 루프 닫기

       스패닝 트리, 루프 폐쇄 링크, covisibility 그래프의 강한 모서리로 구축

  4) 실시간 카메라 relocalization
       tracking 실패로부터 복구할 수 있고 map 재사용도 향상된다.

  5) 새롭고 강력한 자동 초기화 절차

       평면 및 비평면 장면의 초기 map을 생성을 허용하는 모델 선택을 기반으로 한 자동 초기화 절차

  6) map point 및 keyframe 선택에 대한 가장 적합한 접근 방식의 생존

       생성에는 관대하지만 컬링에는 매우 제한적인 선택

       이 정책은 중복 keyframe이 삭제되므로 tracking 견고성을 개선하고 평생 작동을 향상.

 

이 연구는 자동차 및 로봇 시퀀스를 포함하는 실 내외 환경의 인기있는

공개 데이터 셋에 대한 광범위한 평가를 제시한다.

  -특히, 픽셀 강도에 대해 직접 최적화하는 직접 방법에서 최신 기술보다 더 나은 카메라 위치 정확도 달성

  -여기에 제시된 loop closing 및 relocalization은 이전 작업 기반.

  -본 논문에서는 초기화 방법인 필수 graph 추가하고 관련된 모든 방법 완성.

  -모든 구성 요소를 자세히 설명하고 철저한 실험적 검증 수행

=> 이것은 단안 SLAM에 대한 가장 완벽하고 안정적인 솔루션이다. (+소스코드도 공개)

 

2. 관련 연구

...

 

3. 시스템 개요

A. feature 선택

mapping 및 tracking에 사용되는 것과 동일한 feature가 frame-rate relocalization, loop detection를 수행하기 위해 장소 인식에도 사용되는 것.

  -시스템의 주요 디자인 아이디어 중 하나

  -이것이 시스템을 효율적으로 만듦

  -이전 작업에서와 같이 SLAM에 가까운 feature에서 recognition feature의 깊이를 보간할 필요가 없도록 한다.

  -이미지당 33ms 미만의 추출에 필요한 기능이 필요

  -일반적인 장소 인식 기능을 얻으려면 BRIEF와 LDB를 제외한 회전 불변 필요

 

우리는 ORB를 선택

  -256bit descriptor가 연결된 멀티 스케일 FAST 코너

  -계산 및 매치가 매우 빠르며 관점에 대한 불변성이 우수 -> 넓은 기준선과 일치시켜 BA의 정확도를 높일 수 있다.

  -이미 장소 인식을 위한 ORB의 좋은 성능을 보여주었지만, 현재 구현에서는 이러한 기능으로 제한되지 않는다.

 

B. 3개의 스레드 : Tracking, Local Mapping, Loop Closing

 

*스레드(thread) : 프로세스 내에서 실제로 작업을 수행하는 주체

병렬로 실행되는 세 개의 스레드 통합

ORB-SLAM 시스템  개요

tracking - map, ORB feature 활용해 지도에서 현재의 위치를 찾는다.

local mapping - keyframe 정보를 지도에 mapping

loop closing - drift 제거를 위해 지도 정보를 통해 현재 위치 교정

 

[TRACKING] - 매 frame마다 카메라 위치 파악하고 새 keyframe을 삽입할 시점 결정하는 역할

1) 이전 frame과 일치하는 초기 기능 수행

2) 모션 전용 BA를 사용해 포즈 최적화 or closing 또는 갑작스러운 움직임으로 인해 추적이 손실된 경우 장소 인식 모듈을 사용하여 pose를 최적화

3) 카메라 pose 및 feature matching에 대한 초기 추정이 있으면, 시스템에서 유지 관리하는 keyframe의 covisibility garph를 사용하여 local visible map 검색 -> local map 포인트와 일치하는 항목을 재투영하여 검색하고 모든 일치 항목에 대해 카메라 pose를 다시 최적화

4) tracking 스레드는 새 keyframe이 삽입되는지 여부를 결정.

 

[LOCAL MAPPING]

-새 keyframe을 처리하고 로컬 BA를 수행 -> 카메라 pose 주변에서 최적의 재구성 달성

-새 keyframe에서 일치하지 않는 ORB에 대해서 covisibility garph와 연결된 keyframe에서 검색되어 새 포인트를 삼각측량 한다.

-생성 후 일정 시간이 지나면 tracking중 수집된 정보를 기반으로 고품질 포인트만 유지하기 위해 긴급 포인트 컬링 정책 적용

-local mapping은 중복 keyframe을 컬링하는 역할도 한다.

 

[LOOP CLOSING]

1) 모든 새 keyframe이 있는 loop 검색

2) loop가 감지되면 유사성 변환을 계산 (loop에 누적된 드리프트에 대해 알려줌) 

3) loop의 양쪽이 정렬되고 중복된 점이 융합됨

4) 유사성 제약 조건에 대한 pose graph 최적화 수행 (전역 일관성을 달성하기 위해)

 

*covisibility graph의 희소 하위 그래프에 대해 최적화를 수행한다는 것이 참신한 부분

 

C. Map Points, Keyframes, Their Selection

Map point($p_i$)는 다음과 같은 정보를 가진다.

  1)$X_w,i$, world 좌표계에서 3차원 위치

  2)$n_i$, 모든 보기 방향의 평균 단위 벡터

  3)$D_i$, ORB descriptor

  4)$d_max$ 와 $d_min$, 관찰할 수 있는 최대/최소 거리  

 

Keyframes($k_i$)는 다음과 같은 정보를 가진다.

  1)$T_iw$, point를 world에서 카메라 좌표계로 바꾼 카메라 pose

  2)초점 거리 및 주요 point를 포함한 카메라 내장 기능

  3)frame에서 추출된 모든 ORB 특징

 

Their Selection

  -Map point와 Keyframe은 관대한 정책으로 생성

  -culling : 중복 keyframe과 잘못 일치하거나 추적할 수 없는 Map point를 감지하는 역할을 한다.

     => tracking 이 어려운 조건(회전, 빠름 움직임)에서 견고성을 높인다. (지속된 재방문으로 제한되는 범위에서)

  -Map은 PTAM에 비해 매우 적은수의 이상값과 더 적은 point가 포함되어 있다.

 

D. Covisibility Graph and Essential Graph

keyframe간 covisibilty 정보

  -여러 작업에서 매우 유용한 정보

  -무방향 가중치 그래프로 표시됨

  -각 노드는 keyframe이며, edge는 동일한 맵 포인트(최소 15개)의 관찰을 공유하는 경우 존재

 

loop를 수정하기 위해 graph를 따라 loop closing 오류를 분산하기 위해 pose graph 최적화를 수행한다.

  -covisibility graph가 너무 많은 가장자리르 포함해서 정확한 정보와 강력한 네트워크를 위해 essential graph 구축.

  -초기 keyframe에서 spanning tree를 점진적으로 구축해 최소한의 가장자리 covisibility 그래프로 essential graph 구축

*spanning tree : 최소신장트리

  -

 


[추가 정보]

1. Bundle 조정(BA)

map point 개수를 최적화 하는 과정.

 

Full BA - 모든 맵 포인트 및 키프레임 최적화(첫 번째 프레임 제외)

Local BA - 맵 포인트 최적화, 카메라 pose 고정 

Motion-only BA - 맵 포인트 고정, 카메라 pose 최적화

 

2. co-visibility graph

co-visibility graph(공가시성 그래프)를 설명하기 위해선 visibility graph(가시성 그래프)를 먼저 이해해야 한다.

 

왼쪽의 그림을 보면 카메라에서 나온 직선이 물체에 닿는 곳에 노란색 점들이 찍혀있는 걸 볼 수 있다. 이 때 이 점이 visibility graph이다.

 

다음 오른쪽 그림을 보면 A, B 두 대의 카메라에서 각각 visibility graph를 그려봤을 때 겹치는 부분이 빨간 점으로 되어있음을 알 수 있다. 이 때 이 붉은 점이 covisibility graph이다.

 

즉, 두 대의 카메라에서 영사해 겹치는 부분을 표현한 것이 covisibility graph이다.

위 글에서 covisibility graph는 두 대의 카메라가 아닌 A와 B 지점에서의 카메라로 생각하면 된다. 

3. Essential graph

공통 맵 포인트가 100개 이상인 covisibility 그래프(모든 노드 포함)의 하위 그래프.

 

4. keyframe

localization 및 tracking을 위한 정보 단서를 포함하는 시스템 내에 저장된 이미지

 

5. Map points

하나 이상의 키프레임과 연결된 3D 공간의 한 점

--

map initialization

 

monocular SLAM