BA on Graph Processor
Ortiz 2020 · 論文
一行要約 — バンドル調整がグラフプロセッサ(Graphcore IPU)上でガウス型ビリーフプロパゲーションを用いて極めて高速に解けることを初めて示した(CVPR 2020)論文であり、FutureMapping が提示したアルゴリズム・ハードウェア協調設計というビジョンを実証した。
問題
バンドル調整は SLAM と SfM における中心的な計算上のボトルネックである。古典的なソルバーは Levenberg-Marquardt を用いて MAP 解の点推定を計算する——これは本質的に集中的なバッチ計算であり、iSAM2 のようなツリーベースの逐次的手法でさえグラフの周期的な集中的再構成を必要とする。一方で、低消費電力の身体性を持つ Spatial AI は、データ転送を最小限に抑えた大規模並列・インプレース計算を要求する。本論文は、これまで幾何ビジョンではほとんど使われてこなかった GBP が、Graphcore の IPU——1216個の独立したコア(「タイル」)、各256KBのローカルメモリと6個のハードウェアスレッド、全対全の相互接続、GPU/CPU の DRAM でバイトあたり数百 pJ かかるのに対しオンチップアクセスはバイトあたり約1 pJ——に自然に対応することを示す。
手法とアーキテクチャ
因子グラフとしての BA。 変数はキーフレーム姿勢 とランドマーク であり、因子はガウス事前分布 、(単眼スケールを設定し2自由度の再投影メッセージを条件付けるために必要であり、測定項より100倍弱く自動生成される)、および測定モデル を持つ再投影因子 である。MAP 推論は事前分布と再投影にわたる二乗マハラノビス残差の和を最小化する。 周りで のヤコビアン を用いて線形化すると、各測定因子は情報形式で次のようになる:
GBP メッセージパッシング。 各変数ノードはビリーフ を保持する。分割されたパラメータを持つペアワイズ因子 は変数 に次を送る:
そして各変数は事前分布と受信メッセージを合計してビリーフを更新する: 、 についても同様である。因子からのメッセージは減衰され、()となる。再線形化は完全にローカルである: 因子は、その変数のビリーフが線形化点から 以上ずれたときに再線形化する(最大でも10イテレーションごと)。ロバストコスト: マハラノビス距離 が を超えたときに因子のガウス分布をリスケールすることで Huber カーネルを組み込み、外れ値と疑われる測定からのメッセージを減衰させる。
IPU マッピング。 各因子/変数ノードは1つのタイルに対応する(大きなグラフでは6個のスレッドを用いて1タイルに複数ノードを配置)。IPU のバルク同期並列モデルの下で動作し、すべての因子が再線形化してメッセージを計算し、交換し、すべての変数がビリーフを更新し、交換する——GBP の1イテレーション全体は125マイクロ秒未満で完了する。実装全体は約1000行の Poplar C++ で書かれている。IPU は半精度・単精度は扱えるが倍精度を扱えないため、事前分布は当初測定制約と同じスケールで設定され、10イテレーションにわたって徐々に100倍弱められ、数値的安定性を保つ。
実験結果
評価には TUM と KITTI のシーケンスの一部を使用し、ORB-SLAM をフロントエンド(キーフレーム、ORB 特徴、対応点)とし、6コアの i7-8700K(18スレッド、密な Schur を用いた LM、Huber カーネル、解析的導関数)上の Ceres と比較する:
- 速度: 平均再投影誤差(ARE)が1.5未満に収束するまでの時間——1個の IPU 上の GBP は10個のシーケンスにわたって平均で Ceres より24倍高速であり、125キーフレームと1919点を持つヘッドラインのインスタンスは40ミリ秒未満で解けるのに対し Ceres は1450ミリ秒かかる。GBP は通常50〜300イテレーションを必要とするのに対し LM ステップは10〜40であるが、各インプレースのイテレーションが非常に高速なため全体として勝る(IPU は120W)。
- 逐次 SLAM: 90キーフレームのシーケンスに1つずつキーフレームを追加していくと、新しい変数は既存の推定値と整合するように収まる; GBP は平均で Ceres より36倍高速に収束し、しばしば10イテレーション未満で済む。
- ロバスト性: 2個の TUM シーケンスに対するノイズ摂動されたキーフレーム初期化の100試行にわたり、GBP は Ceres に匹敵する収束半径を持つ。
- Huber 損失: 人為的に注入した誤ったデータ関連付け(fr1desk、20キーフレーム)では、Huber を用いた GBP は徐々に真の外れ値を分離(再現率は常に1)して収束するが、Huber なしの GBP は誤った関連付けが3%を超えると失敗する——さらに同じ Huber 損失を用いた Ceres は解を収束させることができず、GBP のローカルな外れ値処理が LM の大域的な処理より優れていることを示唆する。
SLAMにおける意義
本論文は、グラフ、ローカルストレージ、メッセージパッシングを中心に SLAM の計算を再考することで桁違いの高速化が得られるという、FutureMapping の思索的な論考を具体的な証拠へと転換した。著者らは、本当の価値は静的な BA の速度ではなく、「Spatial AI 問題を表す一般的かつ動的に変化する因子グラフの柔軟なインプレース最適化」——異種の因子、認識からの事前分布、任意の逐次更新——にあると論じている。SLAM が異種のエッジハードウェアやマルチロボットシステムへ移行する中で、GBP の純粋にローカルな計算モデルは、コア数に自然にスケールする数少ないバックエンド設計の一つである。
関連ノート
- FutureMapping 1 — この結果を予見していたビジョン論文
- FutureMapping 2 — この実装が従う GBP のチュートリアル
- DANCeRS — 分散マルチロボット GBP
- Factor graph — 基盤となる表現
- Incremental smoothing — 集中型の逐次的な代替手法(iSAM2)
- Bundle adjustment — 解かれている問題そのもの