CodeSLAM

Bloesch 2018 · 論文

一行要約 — CodeSLAM(CVPR 2018)は、各キーフレームの密な深度マップを画像条件付き変分自己符号化器からの小さな潜在コードとして表現し、密な幾何をカメラ姿勢と共同で最適化できるほどコンパクトにした。

問題

リアルタイム3D知覚における幾何の表現は、依然として重要な未解決課題である。密なマップは完全な表面形状を捉えるが、その高次元性ゆえに保存・処理のコストが高く、厳密な確率的推論には適さない。スパースな特徴ベースの表現は構造と動きの共同確率的推論を可能にするが、シーン情報の一部しか捉えられず、主に位置特定にしか有用でない。しかし自然なシーン幾何は高度に整然としている——隣接する深度値は強く相関している——ため、密な表現は実際には多数のパラメータを必要としないはずである。CodeSLAM は密でありながらコンパクトかつ最適化可能な表現を求める: 共同確率的最適化の内部に収まるほど少ないパラメータで完全な表面幾何を表す。

手法とアーキテクチャ

輝度条件付き深度自己符号化。 変分自己符号化器はキーフレームの深度マップを圧縮するが、画像だけでは予測できない情報のみをコードに保持するよう輝度画像を条件とする:

D=D(I,c)D = D(I, \boldsymbol{c})

ここで II は輝度画像、c\boldsymbol{c} は潜在コード(参照ネットワークでは128次元)である。U-Net が II をマルチスケール特徴に分解し、対応する解像度で深度エンコーダ/デコーダに連結する; 変分ボトルネック(2つの512チャンネル全結合層、KL 正則化)はコードから深度への写像を滑らかに保つ。c=0\boldsymbol{c}=0 とすることで、最も可能性の高い単一視点深度予測 D(I,0)D(I,0) が得られる。

不確実性を考慮した学習。 ネットワークはピクセルごとの平均 μ\mu と不確実性 bb を予測し、4段階のピラミッドレベルで観測深度 d~\tilde{d} に対するラプラス分布の負対数尤度によって学習される:

logp(d~μ,b)=d~μb+log(b)-\log p(\tilde{d}\mid\mu,b) = \frac{|\tilde{d}-\mu|}{b} + \log(b)

深度は近接度 p=a/(d+a)p = a/(d+a)(平均深度 aa)として再パラメータ化され、[0,][0,\infty][0,1][0,1] に写す。学習には SceneNet RGB-D を ADAM(学習率 10410610^{-4}\to10^{-6}、6エポック)で使用する。線形デコーダを用いることで、ヤコビアン D/c\partial D/\partial\boldsymbol{c}(そうでなければ評価に最大約1秒かかる)をキーフレームごとに一度だけ事前計算できる。

密なワーピングと共同最適化。 視点間の姿勢 TAB=(RAB,BtAB)\boldsymbol{T}_A^B=(\boldsymbol{R}_A^B, {}_B\boldsymbol{t}_A^B) が与えられると、各ピクセル u\boldsymbol{u} は次のようにワープする:

w(u,cA,TAB)=π(RABπ1(u,DA[u])+BtAB)w(\boldsymbol{u},\boldsymbol{c}_{A},\boldsymbol{T}_{A}^{B})=\pi\big(\boldsymbol{R}_{A}^{B}\,\pi^{-1}(\boldsymbol{u},D_{A}[\boldsymbol{u}])+{}_{B}\boldsymbol{t}_{A}^{B}\big)

ここで π,π1\pi,\pi^{-1} は投影/逆投影演算子、DA[u]D_A[\boldsymbol{u}] はピクセル参照である。N フレームの Structure-from-Motion バックエンドは各フレームに未知のコード(初期値0)と姿勢(初期値は単位変換)を割り当て、重なるすべてのペアにわたってフォトメトリックおよび幾何的な残差を最小化する。

Epho=Lp(IA[u]IB[w(u,cA,TAB)]),Egeo=Lg(DA[u]DB[w(u,cA,TAB)])E_{\mathrm{pho}} = L_{p}\big(I_{A}[\boldsymbol{u}]-I_{B}[w(\boldsymbol{u},\boldsymbol{c}_{A},\boldsymbol{T}_{A}^{B})]\big), \qquad E_{\mathrm{geo}} = L_{g}\big(D_{A}[\boldsymbol{u}]-D_{B}[w(\boldsymbol{u},\boldsymbol{c}_{A},\boldsymbol{T}_{A}^{B})]\big)

ここで損失 Lp,LgL_p, L_g は無効な対応をマスクし、2種類の誤差を重み付けし、Huber 重み付けを適用し、傾斜したまたはオクルージョンされたピクセルの重みを下げる。減衰付き Gauss–Newton ソルバーがすべてのコードと姿勢を更新する。トラッキングは現在のフレームを最後のキーフレームに、同じ機構(フォトメトリックコストのみ、coarse-to-fine)を用いて整合させる; PTAM 方式の全体システムはトラッキングとマッピングを交互に行い、古いキーフレームを線形事前分布へ周辺化する。

実験結果

SLAMにおける意義

CodeSLAM は、DTAM 以来密な SLAM を阻んできた問いに答えた: 密な幾何を後付けで融合するのではなく、共同確率的最適化の内部に含める方法である。その核心的な教訓——最適化器と密なマップの間に学習された低次元パラメータ化を置く——は、学習ベース SLAM における最も影響力のあるアイデアの一つであり(CVPR 2018 ベストペーパー特別賞)、SceneCode、DeepFactors、NodeSLAM、CodeMapping を生み出し、ネットワークパラメータが再びコンパクトな最適化可能な幾何として機能する neural-implicit SLAM(iMAP、NICE-SLAM)を概念的に予見していた。

関連ノート