∇SLAM(Grad SLAM):Dense SLAM meets Automatic Differentiation

SJ·2024년 6월 27일
1

Paper

목록 보기
4/23

이 논문은 2020 ICRA에 나온 Grad SLAM입니다.
예전부터 이어져 오던 딥러닝 열풍에 맞춰 SLAM에서도 딥러닝을 활용하기 위해 작성된 논문입니다.
딥러닝을 사용하기 위해서는 모든 과정이 미분 가능해야 합니다. 아직은 미분 가능하지 않은 부분이 많기 때문에 이 논문에서 그 미분 가능하지 않은 부분을 미분 가능하게 만들려고 합니다.

Introduction

이 논문은 SLAM 과정 모두를 differential 하게 바꿔 backpropagation이 가능하도록 바꾸려고 합니다.
이것이 가능해지면 gradient를 계산하여 learning approach를 map 표현에 사용할 수 있게 되어 더 정교한 map을 만들 수 있을 것입니다. 보통 dense SLAM은 odometry estimation(frame-to-frame alignment)-map building(model-to-frame alignment/local optimization)-global optimization 순으로 이루어집니다. 이 과정에서 미분 불가능한 부분을 찾아 미분 가능하도록 바꾼 것이 이 논문의 핵심 내용입니다.


∇SLAM

preliminaries:Computational Graph

(Figure1. Example Computational Graph)
gradient based learning 구조에서는 모든 함수와 approximator들이 computational graph로 나타나야 합니다.
Computational graph는 미분 가능성이 유지된다면 어떤 형태도 가능합니다.
SLAM에서는 nonlinear least square module, raycasting routines, discretization이 미분 불가능하여 이것을 고치지 않으면 Computational graph를 그릴 수가 없습니다.

∇LM(levenberg-Marquardt):A differentiable Nonlinear least square Solver
보통 error term이 non linear하기 때문에 Gaussian-Newton Method나 Levenberg-Marquardt method 같은 방법을 활용하여 optimization 문제를 해결합니다. Gaussian-Newton method의 경우 초기값에 따라 결과가 달라지기도 하고 발산의 가능성도 있기 때문에 이 논문에서는 Levenberg-Marquardt method를 사용합니다.
LM 방식은 보통 residual이 클 경우 damping ratio를 키워 gradient descent에 가깝게 진행하고 residual이 작을 경우 damping ratio를 줄여 gaussian-Newton method 방식과 유사하게 진행합니다. 이 residual이 크다 작다를 판단하는 과정과 damping ratio를 사람이 골라주는 과정은 미분 가능하지 않기 때문에 이것을 해결해야합니다.
여기서는 iteration에서의 residual을 계산하여 크기를 보는 것보다는 다음 iteration에서의 residual과의 차를 봅니다.
만약 residual이 작아진다면 올바르게 수렴되고 있으니 작은 damping ratio를 선택하면 되고 반대의 경우 큰 damping ratio를 만들면 됩니다. 이것을 수식으로 나타내면 아래와 같습니다.

damping ratio의 최솟값과 최댓값을 설정해주면 그 사이의 값을 r1-r0로 정할 수 있게 됩니다.
이렇게 function을 만들어 differentiable한 형태를 만들어줍니다.
이러한 gatefunction은 아직 미분 가능해지게 하는 것에 의미를 두었을 뿐 성능에 대한 효과는 더 연구를 해봐야한다고 이 논문은 설명합니다.

differentiable mapping
Map construction 과정도 미분이 불가능한 과정입니다.
예를 들어, map을 만들때 새로운 frame은 live frame의 surface measurement와 align이 되어야 합니다.
보통 이 alignment 과정은 다음과 같이 진행됩니다.
1. Map이 live frame과 intersection test 진행되고 map과 pixel의 active set이 결정되고 나머지는 버립니다.
2. Active image pixel의 measurement validity를 측정하고 valid active set을 만듭니다.
3. valid pixel의 set을 3D로 투영시키고 이것을 map과 비교합니다.
4. 비교하여 global map에 필요한 경우 global map에 결합합니다.
이 과정에서도 clipping,thresholding,new/old descision,active/inactive descision등 많은 미분 불가능한 operation이 있습니다. 이 모든 미분 불가능한 과정을 미분 가능한 식으로 바꿀 수는 있겠지만 이 미분 과정은 한 point에서만 가능하기 때문에 이 논문에서는 함수를 locally smooth하게 만든다고 합니다.
관측의 과정을 새롭게 정의하는데 그것은 다음과 같습니다.
1. Surface measurement함수가 오직 pixel p에 의해 결정되는 것이 아니라 pixel p, 주변 pixel nbd(p), kernel함수 K(p,nbd(p))로 결정된다.
2. Surface measurement가 global frame으로 바뀔 때 map element와 measurement사이 hard association대신 soft association을 사용합니다.
3.모든 surface measurement는 새로운 map element로 가정되고 differentiable fusion step에 들어갑니다.
여기서 kernel은 bilinear interpolation kernel을 사용하였습니다.
Soft falloff function을 사용하여 3D association을 정의합니다.
이것은 가정 가까운 candidate point를 설정된 region에서 계산하는 것입니다.
자세한 수식은 이 논문에 나오진 않습니다.

Differentiable Map fusion
Map fusion의 경우 대부분 미분 가능한 과정인데 fall off 함수만 미분이 불가능합니다.
이 경우 logistic fallfoff function을 사용하여 미분 가능하게 map fusion을 미분 가능하게 만듭니다.

Differentiable ray backprojection

Dense slam system의 경우 global pose estimation을 ray casting을 통해서 합니다.
raycasting은 미분이 불가능합니다.
먼저, 각 이미지의 pixel을 통해, camera ray가 backproject되고 첫번째 맵 element와의 intersection이 결정됩니다. 이것은 ray가 map element를 발견하거나 reconstruction boundary를 벗어날 때까지 전진하는 것을 포함하는데, 보통 max-min acceleration schemes을 사용하거나 volumetric signed distance function을 사용합니다.
ray casting을 미분 가능하게 하려는 시도는 몇 번 있었습니다.
Scene Representation network는 LSTM을 사용하여 ray marching step을 예측합니다.
DRC,WS_GAN 같은 연구에서 작가는 ray에 있는 모든 voxel을 가져와 ray의 potential을 계산합니다. 이 논문은 여기서 하나를 더 가져오는데 depth measurement에 따른 gaussian falloff를 가진 voxel들을 가져옵니다. ray를 미분하기 위해서 주변 pixel의 potentail에 대한 finite diffenrence를 사용합니다. 주변 pixel의 potential의 차이로 우리 ray의 differenctial을 나타내는 것입니다.


이것은 미분 계산 과정을 그림으로 나타낸 것입니다.

3줄 요약

  1. dense slam에 graident기반 learning을 적용하고 싶다.
  2. 최적화, mapping, map fusion, ray backprojection 등 미분 불가능한 함수들이 여러개 있어 learning을 사용할 수 없다.
  3. 이것을 모두 미분 가능하게 바꿨다.
profile
student

0개의 댓글