DeepSLAM

Li 2020 · 論文

一行要約 — DeepSLAMは、姿勢推定用のTracking-Net、深度推定用のMapping-Net、ループ検出用のLoop-Net、そしてg2oによるポーズグラフ最適化からなる完全なモノキュラーSLAMパイプラインをニューラルネットワークで構成し、ステレオ映像で完全教師なし学習した上でモノキュラー映像に展開する。

問題

2020年当時、学習型ビジュアルオドメトリは教師あり(DeepVO/ESP-VO)と自己教師あり(SfM-Learner)の両形態で存在していたが、教師ありの手法は高価な真値軌道を必要とし、モノキュラー自己教師あり手法はメトリックスケールを失い、学習型システムのほぼすべてがオドメトリのみ――ループクロージングがなく、ドリフトが無制限に増大する――であった。一方、幾何ベースのシステムは困難なシーン(雨、夜間、露出過多)では脆く、データから改善することもできない。DeepSLAMは、古典的SLAMの分解――トラッキング、マッピング、ループクロージング、グラフ最適化――全体を、アノテーション付きの真値を一切使わずに学習したネットワークで再現できるかを問う。

手法とアーキテクチャ

フロントエンドネットワーク(テスト時、モノキュラー入力)。 Tracking-NetはRCNNである――VGGNetの畳み込み層が画像系列(長さ5)にわたるLSTMに供給され、相対的な6自由度姿勢とそれぞれの推定に対する不確実性を出力し、ウィンドウごとに (n1)(n-1) 個の相対姿勢からなるローカルポーズグラフを直接生成する。Mapping-Netはエンコーダ・デコーダであり、密でメトリックスケールの深度マップを予測する(5フレームごとに実行)。Loop-NetはImageNet事前学習済みのInception-ResNet-V2(SLAM特有の学習は行わない)であり、画像を特徴ベクトルに埋め込む。あるペアのコサイン距離 dcos=cos(v1,v2)d_{cos}=\cos(v_{1},v_{2}) が閾値を下回るとループと判定され、その後Tracking-Net(系列長2)がループの変換を計算し、g2oがローカル+グローバルのポーズグラフ全体を最適化する。

ステレオ系列による教師なし学習。 空間的(左右間)および時間的(フレーム間)な幾何整合性から損失が構成される。ステレオはメトリックスケールを供給するため、姿勢や深度のラベルは不要である。ステレオベースライン BB と焦点距離 ff を用いると、予測深度 DiD_i は対応距離 Hi=Bf/DiH_{i}=Bf/D_{i} を与え、これにより画像が相互ワープされる。左右間の光度損失(右から左、および視差マップ Q=H×wQ = H \times w についても同様)は

Ll,rp=λsfs(Il,Il)+(1λs)IlIl1,fs()=1SSIM()2L_{l,r}^{p}=\sum \lambda_{s}\, f_{s}(I_{l},I_{l}') + (1-\lambda_{s})\,\lVert I_{l}-I_{l}'\rVert_{1}, \qquad f_{s}(\cdot)=\tfrac{1-\mathrm{SSIM}(\cdot)}{2}

であり、これに加えて左右の映像から推定された姿勢間の整合性損失 Lo=λpx^lx^r1+λrφ^lφ^r1L^{o}=\lambda_{p}\lVert\hat{x}_{l}-\hat{x}_{r}\rVert_{1}+\lambda_{r}\lVert\hat{\varphi}_{l}-\hat{\varphi}_{r}\rVert_{1} がある。時間的には、ピクセルはフレーム間で

pk+1=KT^k,k+1D^kK1pkp_{k+1}' = K\,\hat{T}_{k,k+1}\,\hat{D}_{k}\,K^{-1}p_{k}

(KK は内部パラメータ、T^k,k+1\hat{T}_{k,k+1} は予測姿勢、D^k\hat{D}_k は予測深度)によってワープされ、マスク付きの光度損失と、逆投影された点群に対するICP的な3D幾何レジストレーション損失 Lk,k+1g=MgkEgk1L_{k,k+1}^{g}=\sum\lVert M_{g}^{k}E_{g}^{k}\rVert_{1}(Egk=PkPkE_{g}^{k}=P_{k}-P_{k}')が得られる。

不確実性と外れ値の排除。 光度誤差と幾何誤差の平均から不確実性 σk,k+1=2×S(μpk+μpk+1+λe(μgk+μgk+1))1\sigma_{k,k+1}=2\times S\big(\mu_{p}^{k}+\mu_{p}^{k+1}+\lambda_{e}(\mu_{g}^{k}+\mu_{g}^{k+1})\big)-1(シグモイド SS、範囲0.5–1)が定義され、これがTracking-Netの不確実性出力を教師するとともに、パーセンタイル qth=q0+(1q0)(1σk,k+1)q_{th}=q_{0}+(1-q_{0})(1-\sigma_{k,k+1}) を介してビットマスク型誤差マップのサイズを適応的に決定する――学習中に、動体(光度マスク)や信頼できない深度(空や物体エッジなど、幾何マスク)を排除する。

実験結果

SLAMにおける意義

DeepSLAMは「すべてのモジュールをネットワークに置き換え、アーキテクチャは保持する」戦略を、純粋な学習型VO論文が省略していたループクロージングとポーズグラフの段階も含めて、最も完全な形で示している。さらに、教師なし学習の見返りを実証した――教師あり手法が利用できないラベルなしのKITTI系列を取り込むだけで性能が向上し続けたのである。ステレオで学習してモノキュラーで展開するというそのレシピは、スケールを意識した自己教師付き学習を得るための標準的な手段として今も残っている。そしてRobotCarにおける頑健性の結果は、幾何ベースの手法に対する学習型SLAMの主な売り――手作り特徴量が失敗する条件下での優雅な振る舞い――を予告していた。

関連ノート