InfiniTAM v3

Prisacariu 2017 · 論文

一行要約 — ボクセルハッシュされたTSDF(またはサーフェル)マッピング、ロバストなICP/RGBトラッキング、ランダムファーンによる再位置決め、サブマップベースの大域的整合性のある再構成を組み合わせた、モジュール式でクロスデバイス対応のオープンソースRGB-D再構成フレームワーク。

問題

再構成をTSDFとして体積的に表現することは、KinectFusion型システムのGPU実装が享受する単純さと効率をもたらす——しかし、密な均一グリッドはメモリを消費しやすく、スケールを制限する。また、研究コミュニティには、カメラトラッキング、シーン表現、データ統合を交換・適応できる、単一の高速で柔軟なパイプラインが存在しなかった。InfiniTAMはまさにそのフレームワークであり、v3の技術報告書はその第3世代の実装を記述している。その主な追加点は、失敗検出機能を備えたロバストなトラッカー、ランダムファーンによる再位置決め、サブマップを介した大域的整合性のあるTSDF再構成、そしてサーフェルバックエンドである。

手法とアーキテクチャ

エンジンアーキテクチャ。 Chain-of-Responsibilityパターンに基づく設計: ステートレスな処理エンジン(トラッキング、割り当て、統合、レイキャスト、スワッピング)が状態オブジェクトを受け渡し、各エンジンはAbstract層、デバイス固有(CPU/CUDA/Metal)層、共有インラインCコードによるデバイス非依存層に分割される。パイプラインは2種類存在する: ITMBasicEngine(標準的な融合)とITMMultiEngine(ループクロージングを伴う大域的整合性)。

ボクセルハッシング。 ボクセル(TSDF値、重み、任意のRGB)は8×8×88\times 8\times 8のブロックにまとめられ、連続的なボクセルブロック配列(2182^{18}エントリ)に格納される。ハッシュテーブルは、ブロックの角座標b\mathbf{b}を以下の式によって格納インデックスに写像する。

h(b)=((bx73856093)(by19349669)(bz83492791))modnh(\mathbf{b}) = \big( (b_x \cdot 73856093) \oplus (b_y \cdot 19349669) \oplus (b_z \cdot 83492791) \big) \bmod n

衝突は非順序の余剰リストで処理される。割り当ては、各深度ピクセルddについてdμd-\muからd+μd+\muまでの線分を逆投影し、3つの非ブロッキング段階で交差するブロックを割り当てる。統合は、KinectFusionと同様に、可視の各ボクセルをTSDFの加重移動平均で更新する。

トラッキング。 従来のITMDepthTrackerは、モデルのレイキャスト結果に対する点-平面距離d=(Rp+tV(pˉ))N(pˉ)d = (\mathbf{R}\mathbf{p} + \mathbf{t} - \mathcal{V}(\bar{\mathbf{p}}))^{\top} \mathcal{N}(\bar{\mathbf{p}})を、解像度の階層にわたって最小化する。ITMColorTrackerは代わりに色差d=I(π(RV(i)+t))C(i)2d = \| I(\pi(\mathbf{R}\,\mathcal{V}(i) + \mathbf{t})) - \mathcal{C}(i) \|_2を最小化する。v3で新たに導入された、既定のITMExtendedTrackerはICPをロバストにする: ピクセルごとの誤差に対するHuberノルム、遠方(ノイズが多い)の測定値に対する深度依存の重み低減、距離閾値によるアウトライア除去、そして強度I=0.299R+0.587G+0.114BI = 0.299R + 0.587G + 0.114B上のフレーム対フレームの測光項(Tukey損失、0.3でスケーリング)のオプション付加であり、これらすべてがcoarse-to-fineのLevenberg-Marquardt法で最小化される。ICP統計量(インライア比、Hessian行列式、残差)に対するSVM分類器がトラッキング失敗を検出し、再位置決めを起動する。

再位置決め(ランダムファーン)。 各RGB-D画像は、nn個の特徴テストによるmm個の二値コードブロックとして符号化される。画像間の類似度はブロックごとのハミング距離BlockHD(bCI,bCJ)=1mk=1m(bFkIbFkJ)\mathrm{BlockHD}(b_C^I, b_C^J) = \frac{1}{m}\sum_{k=1}^{m} (b_{F_k}^I \equiv b_{F_k}^J)である。コードテーブルはコードをキーフレームIDに写像するため、最も近い保存済みキーフレーム(とその姿勢)を一定時間で取得できる——これはポーズ復元とループクロージング検出の両方に用いられる。

大域的整合性のある再構成。 シーンは剛体的なサブマップ(フレームごとに追跡されるアクティブなもの、休眠状態のパッシブなもの。カメラが現在のサブマップから離れると新しいサブマップが生成される)に分割される。サブマップ間の制約はトラッキングとファーン検出によるループクロージングから積み上げられ、サブマップのポーズグラフはバックグラウンドスレッドで最適化される。レンダリングは、その場で融合された暗黙的な結合TSDFをレイキャストする。

F^(X)=iFw(PiX)F(PiX)\hat{F}(\mathbf{X}) = \sum_i F_w(\mathbf{P}_i \mathbf{X})\, F(\mathbf{P}_i \mathbf{X})

ここでPi\mathbf{P}_iはサブマップiiの姿勢、F,FwF, F_wはそのTSDFと重みである——大域マップはサブマップに対するビューであり、明示的に構築されることはない。

サーフェルバックエンドとスワッピング。 Kellerらの点ベース融合のベータ実装は、信頼度重み付き平均によってマッチしたサーフェルを更新する。vˉk(cˉkvˉk+αvg)/(cˉk+α)\bar{\mathbf{v}}_k \leftarrow (\bar{c}_k \bar{\mathbf{v}}_k + \alpha \mathbf{v}^g) / (\bar{c}_k + \alpha)、最大500万サーフェルまで対応する。固定サイズのホスト/デバイス転送バッファを備えたスワッピングエンジンが、GPUメモリからボクセルブロックをページアウトし、戻ってきた際に再融合するため、マップがGPU容量を超えることが可能になる。

実験結果

v3の論文はフレームワークの実装に関する技術報告書であり、ベンチマーク研究ではない——定量的な評価表は含まれていない。基盤となる大域的整合性サブマップ手法は、姉妹論文(Kähler et al., ECCV 2016)で評価されている。報告書自体の主張はエンジニアリング上のものである: パイプラインはGPU上でリアルタイムに動作する(最適化があまり進んでいないサーフェルバックエンドでも、良いGPUでは「それでもリアルタイム」である)。市販のグラフィックスカードは、ハッシングを用いてもなお、4 mmボクセル解像度でおおよそ一部屋分をアクティブメモリに保持できるが、これをスワッピングサブシステムがより大きなシーンへ拡張する。そして、このスタック全体は、CPU、CUDA、Metalのデバイス層を横断し、多数のセンサー(Kinect、PrimeSense、RealSense、Structure)で動作する。トラッキング精度の完全な評価は姉妹論文を参照のこと。その持続的な影響は、最も広く使われている、ハック可能なオープンソースRGB-D再構成コードベースの一つとしてのものである。

SLAMにおける意義

InfiniTAM v3は、KinectFusion以降の最先端技術——ボクセルハッシング、失敗検出を備えたロバストなフレーム対モデルトラッキング、ファーンによる再位置決め、サブマップベースのループクロージング——を一つのモジュール式フレームワークにまとめ上げた。もし本番品質の密SLAMパイプラインがどのように設計されているか(メモリ管理、GPUカーネル、交換可能なマップバックエンド、ホスト-デバイス間ページング)を理解したいのであれば、InfiniTAMのコードを読むことはこのレベルにおける最良の演習の一つである。それはまた、BundleFusionのようなスケーラブルなTSDFシステムが構築の基盤とするボクセルハッシング格納方式の参照実装でもある。

関連ノート