GradSLAM

Murthy 2020 · 論文

一行要約 — 密なSLAMを完全に微分可能な計算グラフとして定式化するPyTorchフレームワーク。トラスト領域最適化、表面測定、フュージョン、レイキャスティングを滑らかに再パラメータ化することで、3D地図から2Dピクセルまで勾配をエンドツーエンドで流せるようにする。

問題

表現学習とSLAMを融合させることは、SLAMシステムが高度にモジュール化され複雑であるがゆえに未解決の問題である。機能的には、SLAMは生のセンサー入力をロボットと環境の状態に関する分布へと変換する — この写像M=GSLAM(s)\mathcal{M}=\mathcal{G}_{SLAM}(s)が微分可能であれば、勾配sM\nabla_{s}\mathcal{M}は「特定のピクセル測定が結果として得られる3D地図にどれだけ寄与しているか」に答えることができ、タスクベースの誤差信号を用いて表現をエンドツーエンドで学習できるようになる。しかし、密なSLAMの複数のコンポーネントは微分不可能であるか、勾配がほぼどこでもゼロになる:LMソルバーは減衰/非減衰の離散的な決定を行い、マッピングはクリッピング/インデクシング/しきい値処理、および新規要素か既存要素かの離散的な決定を含み、レイキャスティングはレイに沿って離散的に進む。

手法とアーキテクチャ

GradSLAMは各非滑らかブロックを、可能な限り厳密に近い微分可能な対応物に置き換え、それらを完全なパイプラインへと合成する。

微分可能LM(\nablaLM)。 目的関数12r(x)2\frac{1}{2}\sum r(x)^{2}に対して、LMステップは現在の反復点と先読み反復点における誤差ノルムr0=r(x0)Tr(x0)r_{0}=r(x_{0})^{T}r(x_{0})r1=r(x1)Tr(x1)r_{1}=r(x_{1})^{T}r(x_{1})を比較して減衰・非減衰を決定しなければならない。GradSLAMは、この離散的な切り替えを、一般化ロジスティック関数に基づく滑らかなゲート関数に置き換える:

λ1=Qλ(r0,r1)=λmin+λmaxλmin1+Deσ(r1r0),Qx(r0,r1)=x0+δx01+e(r1r0),\lambda_{1}=Q_{\lambda}(r_{0},r_{1})=\lambda_{min}+\frac{\lambda_{max}-\lambda_{min}}{1+De^{-\sigma(r_{1}-r_{0})}},\qquad Q_{x}(r_{0},r_{1})=x_{0}+\frac{\delta x_{0}}{1+e^{-(r_{1}-r_{0})}},

ここでD,σD,\sigmaは減衰速度を制御し、[λmin,λmax][\lambda_{min},\lambda_{max}]は減衰係数の範囲を限定する — これにより最適化器全体が1つの微分可能グラフになる。

微分可能なマッピングとフュージョン。 表面測定は3つの方法で平滑化される:各有効ピクセルの測定値は近傍のカーネル関数K(p,nbd(p))K(p, nbd(p))である(2次元では双線形);ライブ測定値と地図要素との対応付けはソフトであり、深度センサーに基づいたガウス減衰exp(r(P)2/2σ2)\exp(-r(P)^{2}/2\sigma^{2})(ここでr(P)r(P)はカメラレイからの径方向深度)によって最も近い候補群に広がる;そしてデフォルトでは、すべての測定値は微分可能なフュージョンステップに渡される新規要素として扱われる。フュージョン(地図サイズを時間ではなく探索済み体積に比例させる)は、従来の重み付き平均化スキームの急峻な打ち切りしきい値を、ロジスティック減衰によって滑らかにする。

微分可能レイキャスティング。 レイは、そのピクセルの深度測定値を中心としたガウス減衰を用いて、通過するすべてのボクセルにわたってプーリングされる;ピクセル位置に関するレイの導関数には、近傍レイに対するIgehy風の有限差分vc/pc((vrvl)/2,  (vuvd)/2)T\partial v_{c}/\partial p_{c}\approx\big((v_{r}-v_{l})/2,\;(v_{u}-v_{d})/2\big)^{T}が用いられる。

ケーススタディ。 3つの古典的な密なシステムがこれらのブロックから再構成される:\nablaKinectFusion(TSDFボリューム;打ち切り符号付き距離関数sdf(p)=trunc(K1x21tp2depth(x))sdf(p)=trunc(\lVert K^{-1}x\rVert_{2}^{-1}\lVert t-p\rVert_{2}-depth(x))は滑らかなロジスティック打ち切りを得る。というのも、x=π(Kp)x=\lfloor\pi(Kp)\rfloorにおける床関数と、μ\muにおける厳格な打ち切りの両方が勾配をブロックしてしまうためである)、\nablaPointFusion(本論文のソフト対応付けマッピングとPointFusionのフュージョン規則を用いたサーフェルマップ)、\nablaICP-SLAM(フレーム間ICP-Odometryおよびフレーム対モデルのバリアント)。すべてGPU上で完全に動作し、任意の中間変数 — カメラポーズ、ピクセルの輝度/深度、最適化器のパラメータ、カメラ内部パラメータ — に関する勾配を提供する。

実験結果

SLAMにおける意義

GradSLAMは初の汎用的な微分可能SLAMフレームワークであり、「SLAMをレイヤーとして扱う」というスローガンを実行可能な研究コードへと変えた。これはBA-Net、Theseus、LieTorchと同じ潮流に属する — 幾何学的最適化をネットワーク内に埋め込むというものである — そして、per-frameのラベルではなく下流のマッピング品質から得られる教師信号を用いて知覚モジュール(深度の事前知識、センサーノイズモデル、コスト関数)を学習する道を開いた。オープンソースのPyTorchライブラリは、微分可能なロボット知覚研究の一般的な出発点となっている。

関連ノート