Visual Place Recognition (VPR)

Visual Place Recognitionは一つの問いに答える:このカメラは以前ここに来たことがあるか? 現在の画像と過去に訪れた場所のデータベースが与えられたとき、VPRは最も可能性の高いマッチを検索する――これがループ閉じ込み検出における知覚側の役割である。視点の変化、照明の変化、天候、そして中程度のシーン変化があっても成功しなければならず、同時に見た目が似ているだけの別の場所に対して誤発火してはならない(知覚的エイリアシング(perceptual aliasing)――見た目が同一の2番目の廊下はVPRの典型的な難敵である)。

古典的な手法は**Bag of Visual Words (BoVW)**である。

  1. オフラインで、大量の局所特徴記述子(例:ORB)をk-meansでクラスタリングし、KK個の単語からなる*visual vocabulary(視覚語彙)*を構築する。
  2. 各画像を視覚語彙上のヒストグラムとして表現し、ありふれた情報量の低い単語の重みを下げるためにTF-IDFで重み付けする。
  3. 転置インデックス(単語からそれを含む画像へのマッピング)を介して候補を検索する。これにより数千のキーフレームがあっても検索が高速に行える。

TF-IDF重み付けは明示的に見る価値がある。NN個のデータベース画像のうち nkn_k個に出現する単語 kk には逆文書頻度 idfk=log(N/nk)\mathrm{idf}_k = \log(N / n_k) が与えられる。すべての廊下画像に存在する単語は idf0\mathrm{idf} \approx 0 となり類似度に何も寄与しないが、稀な単語(特徴的なポスター、変わった角の配置)はスコアを支配する。各画像の重み付きヒストグラムは正規化され、L1/L2またはコサインスコアで比較される。転置インデックスのおかげで、クエリと少なくとも1つの単語を共有する画像しか実際には処理されない。DBoW2/DBoW3はこれを階層的な語彙木(粗から細への降下による O(logK)O(\log K) の単語割り当て、O(K)O(K)の線形探索ではない)で実装し、ORB-SLAM、VINS-Monoなど多くのシステムで使用されている。FAB-MAPは同じ検索アイデアの古典的な確率論的定式化である。

現代的な手法は手作りのヒストグラムを学習済みの大域記述子に置き換える。NetVLADの核心は、上記の量子化ステップをそのまま微分可能な形に一般化したものである。各局所特徴 xi\mathbf{x}_i を最近傍クラスタにハード割り当てする代わりに、重み aˉk(xi)\bar{a}_k(\mathbf{x}_i) でソフト割り当てし、各クラスタ中心 ck\mathbf{c}_k に対する残差を集約する。

V(j,k)=iaˉk(xi)(xi(j)ck(j)),V(j, k) = \sum_i \bar{a}_k(\mathbf{x}_i)\, \left( x_i^{(j)} - c_k^{(j)} \right),

これにより、正規化された固定サイズの記述子が得られ、GPSタグ付きストリートビュー画像上でトリプレット損失によりエンドツーエンドで学習される(「同じ場所、異なる見え方」を正例とする)。Patch-NetVLADはパッチレベルの再ランキングを追加する。HF-Netは1つのネットワークで大域特徴と局所特徴を同時に予測し、認識と位置推定を統合した階層を実現する。そして現在のシステムは、外観の極端な変化に対する頑健性のために、基盤モデル特徴(例:DINOベースの記述子)を用いる傾向が強まっている。同じルートを繰り返し走行する場合(配送ロボット、鉄道など)、単一画像ではなく記述子の短い系列をスコア付けするシーケンスベースのマッチングによって、大きな頑健性向上を無償で得られる。

候補が何によって生成されようとも、SLAMシステムは検索結果だけを信用することはない。標準的なパイプラインは、上位k個の候補を検索し、その後幾何的に検証する――候補に対して局所特徴をマッチングし、essential/PnPモデルでRANSACを実行し、十分な数のインライアを要求する(ORB-SLAMはさらに、可視性を共有するキーフレーム間の一致性も要求する)。検証済みのマッチのみがループ閉じ込みのエッジとなる。なぜなら、1つの誤検出でも地図を折り曲げてしまう可能性があるからだ。

VPRの評価:再現率より精度を優先する

ループ閉じ込みにおいて、2種類の誤りは大きく非対称である。見逃したループ(偽陰性)はドリフト補正の機会を失うコストで済む――地図は少しだけ歪んだままになる。検証を通過した誤ったループ(偽陽性)は地図を破壊しかねない。したがって、SLAMにおけるVPRは再現率をほぼ犠牲にしてでも精度を優先するように調整される。システムが真の再訪のごく一部にしか発火せず、誤ったものにはほぼ発火しないという運用が標準であり、論文が「100%精度での再現率」を報告するのはまさにこの理由による。これはまた、多層防御(検索スコアの閾値 → 複数の連続マッチにわたる時間的/可視性の一致性 → 幾何的検証 → ロバストなバックエンド)が過剰な用心ではなく標準的なアーキテクチャである理由でもある。

よくある落とし穴

SLAMにおける意義

VPRはvisual odometryをフルSLAMへ昇格させる要素である。以前訪れた場所を認識できなければ、ドリフトは決して補正できない。同じ仕組みは、追跡失敗後のリローカリゼーション、キッドナップロボット問題からの復帰、複数セッションにわたる地図統合、そして協調SLAMにおけるロボット間ループ閉じ込みも提供する――SLAMシステムのほぼすべての「大域的」機能は、場所認識が信頼できる形で機能することに支えられている。

関連ノート