오늘의 포스팅은 김정호(한국전자기술연구원 책임연구원)님의 기술동향 간행물을 읽고 정리해보는 포스팅이다.
아래 주소에서 원문 내용을 확인할 수 있다.
SLAM이란 무엇인가?
미지의 환경에서 다양한 센서들을 이용하여 위치를 추정하고 3차원 환경 지도를 생성하는 기술을 SLAM(Simultaneous Localization and Mapping)이라고 한다.
이러한 SLAM을 위해 필요한 대표적인 센서들은 카메라, 라이다등이 있다. (이외에도 imu,gps등 다양한 센서들이 존재)
이런 센서들을 이용하여 SLAM을 수행하게 되면 시간이 흐름에 따라 오차가 누적된다.
주변 환경과 조도 변화에 따라 센서 관측치에 대한 노이즈가 존재하기 때문이다.이러한 오차를 극복하기 위한 방법은 현재 3가지로 분류된다. 하나하나씩 알아보도록 하겠다.
기하학적 방법론
획득한 영상들의 시퀸스로부터 기하학적 계산을 통해 카메라의 위치/ 지도 생성을 하면서 생기는 오차를 줄이는 방법은 크게 2가지가 있다.
필터링 방법과 최적화 방법이다.필터링 방법에는 칼만 필터(Kalman Filter)와 입자 필터(Particle Filter) 두가지를 이용한다.칼만 필터의 경우 자세와 지도를 구성하는 랜드마크(landmark)의 위치를 가우시안 분포로 설정하고 이에 해당하는 평균, 공분산을 영상 데이터를 새롭게 획득할 때마다 갱신해가면서 SLAM을 수행하는 방식이다.입자 필터의 경우, 입자를 기반으로 한 필터의 한 종류로써 비선형성이 너무 커서 예측하기 어렵고, 기존에 상태나, 측정치, 등에 대한 확률 정보가 없을 때 사용한다.
최적화 방법에도 크게 두 가지가 존재한다.
첫번째로는 특징점 기반 최적화이다.
1. 영상에서 특징점을 추출하고 이를 영상 시퀸스에서 추적하여 초기 카메라 위치를 계산한다.
2. 3차원 지도상의 랜드마크의 위치를 카메라의 추정된 자세로 재투영시켜 영상에서의 특징점의 좌표와의 거리를 최소화한다.
이러한 방법의 경우 영상에서 특정 화소들을 이용해 위치를 추적하고 지도를 만들기 때문에 처리속도가 빠르다.또한 false-matching으로 발생하는 문제들을 RANSAC(Random Sample Consensus)을 활용하여 제거 가능하다.
두번째는, Direct SLAM이다.
1. 두 장의 영상으로부터 카메라의 움직임과 환경에 대한 정보를 획득하기 위해서,첫 번째 영상을 두 번째 위치에서의 영상으로 변환한다.
2. 실제 획득한 두 번째 영상과 변환한 영상의 밝기 차이를 최소화하도록 최적화한다.
이런 방법은 처리속도가 느리지만, 환경을 조밀하게 모델링하는 것이 가능하다. 또한 특징점이 없는 균질한(homogeneous)한 환경에서 성능이 우수하다.
딥러닝 기반 방법론
딥러닝을 이용한 기법의 경우 학습된 지식을 통해 응용 분야에 맞게끔 모델을 자동으로 설계한다.
복잡한 모델과 고차원의 특징 정보들을 사람이 따로 정의하지 않고도 데이터로부터 자동으로 계산하기 때문에 강인성을 확보할 수 있다. 더욱이 최근에 들어서 많은 양의 SLAM 학습 데이터가 존재하고 딥러닝 네트워크도 발전함에 따라 이러한 방법을 사용하는 경우가 많아지고 있다.
딥러닝 기반의 SLAM 기술들은 크게 Odometry 추정과 Mapping으로 분류된다.
먼저 오도메트리 추정은 두 영상 사이의 상대적인 자세 변화를 추정하는 기술이다.
딥러닝 기반 오도메트리 추정 기술은 학습 지도학습과 비지도학습으로 구분한다.지도학습의 경우 (연속적인 영상 - 카메라 자세 변화) 에 대한 학습 데이터를 가지고 입력영상에 따른 자세 변화의 출력을 제공하는 End to End 딥러닝 기술이다. 영상에서 특징 정보를 추출하기 위해 CNN(Convolutional Neural Network)을, 순차적인 자세 추정을 위해 RCNN(Recurrent Convolutional Neural Network)을 이용한다.
비지도 학습 기반의 방법은 주어진 영상 시퀸스에 대한 자세 데이터가 없을 때 뎁스 정보를 추출하고 자세변화를 추정한다. 먼저 자세 변화와 뎁스를 계산한 뒤 다른 시점의 영상을 합성하여 그 시점의 실영상과 비교를 하여 손실함수를 구한다.
Mapping은 주변 환경에 대한 공간 모델을 생성하는 것이다. 쉽게 말해 센서 데이터를 이용해 주변환경에 대한 3차원 형상 또는 구조를 표현하는 기술이다. 이러한 지도를 구성하는 요소에는 뎁스(depth), 포인트(point), 매쉬(mesh), 복셀(voxel)등이 있다.
영상정보에서 거리정보를 획득하는 방법은 양안 영상, 영상 시퀀스를 이용해야 하는 방법에서 딥러닝을 이용해 단안 영상에서 뎁스 정보를 추출하는 방법이 연구되고 있다. 지도학습 방법을 사용한다면 많은 양의 영상과 그에 해당하는 뎁스 데이터를 학습해 입력영상으로부터 바로 뎁스를 예측하는 기술이 연구되고 있다.
그러나 이러한 데이터를 얻기는 쉽지 않기 때문에,비지도 학습 방법에서는 뎁스 영상 대신 양안 카메라로부터 획득한 영상을 데이터로 사용한다.예를 들면, 왼쪽 영상을 오른쪽 영상으로 변환하기 위한 시차와 오른쪽 영상을 왼쪽 영상으로 변환하는 시차를 계산한 후 이를 left-right consistency 제약조건을 이용해 네트워크를 구성하여 뎁스를 생성한다.
하이브리드 방법론(geometry + deep)
하이브리드 방식은 Visual SLAM의 여러 단계 중 일부를 딥러닝으로 대체하고 나머지는 기하학적 방법을 사용하는 것이다. 딥러닝 기법은 영상에서 특징정보를 추출하기 어려운 환경에서 나은 결과를 제공한다.
하지만 특징정보가 풍부한 환경에서는 고전적인 방법이 더 우수한 경우가 많다. 예를 들면, 단일 영상으로 뎁스를 예측하는 데에는 딥러닝을 사용하고, 입력 영상으로부터 자세 변화를 추정하는 부분은 기하학적 방법을 사용하는 모델또한 있다. 이렇게 생성된 뎁스와 카메라 자세는 CRF(Critical Random Field)를 이용해 정확도를 향상시킨다.
이러한 방법 외에도 뎁스와 광류(opticla flow)를 딥러닝으로 학습해 계산하고, 이 것들을 기하학적 오도메트리 방법에 적용하여 카메라의 자세를 추정하기도 한다. 딥러닝을 이용해 움직이거나 변화되는 부분을 검출해 기존 알고리즘을 향상시키도 한다. 또한 앞서 제시한 필터링 기법과 딥러닝을 섞기도 한다.