Keypoints

**キーポイント(keypoint)**とは、繰り返し検出可能な幾何構造を持つ画像上の特徴的な位置——コーナー、ブロブ、エッジの交差点など——であり、同じシーンを撮影した別の画像内で再検出できるものを指す。**ディスクリプタ(descriptor)**は、キーポイント周辺の局所的な見え方をエンコードした簡潔な数値表現であり、視点や照明が変化しても画像間でのマッチングを可能にする。検出器(detector)(どこにあるかを見つける)とディスクリプタ(何であるかを符号化する)が合わさって、特徴点ベースSLAMのフロントエンドの基本語彙を構成する。

キーポイントを有用にする性質は2つある。

古典的な系譜

手法検出器ディスクリプタ備考
SIFT (2004)スケール空間中のDoGブロブ128次元の勾度ヒストグラム非常に高精度だがCPU上では低速
FAST (2006)半径3の円周上16画素の連続した明/暗弧なし極めて高速なコーナー判定
ORB (2011)oFAST(FAST+輝度重心による向き付け)rBRIEF、256ビットのバイナリSLAMの主力(ORB-SLAM)
AKAZE (2013)非線形拡散スケール空間バイナリ(M-LDB)ガウススケール空間よりエッジ保存性に優れる

SIFTスケール空間内でブロブを検出する。画像を段階的に大きくなるスケールでガウシアンと畳み込み、L(x,y,σ)=G(x,y,σ)I(x,y)L(x,y,\sigma) = G(x,y,\sigma) * I(x,y) を得る。Difference of Gaussians(ガウス差分) D(x,y,σ)=L(x,y,kσ)L(x,y,σ)D(x,y,\sigma) = L(x,y,k\sigma) - L(x,y,\sigma) はガウシアンラプラシアン(Laplacian-of-Gaussian)ブロブ検出器を近似する。キーポイントは空間・スケールの両方における DD の局所極値であり、二次関数フィッティングによってサブピクセル精度まで精緻化され、コントラストとエッジ応答によってフィルタリングされる。ディスクリプタは局所勾度ヒストグラムから主方向を割り当て、4×44\times4 グリッド上の8ビン勾度ヒストグラム——128次元ベクトル——を構築し、照明不変性のために正規化する。SIFTは非常に高精度だが低速(CPU上で高解像度画像1枚あたり約1秒程度)であり、これがリアルタイムSLAMでの利用を制限している。

FASTはもう一方の極端に位置する。画素 pp がコーナーであるのは、半径3の円周上にある16画素のうち n12n \ge 12 個の連続した弧が、しきい値 tt 以上すべて IpI_p より明るい、あるいはすべて暗い場合である。高速化テストではまず4つの方位画素だけを確認し、3つ未満しか条件を満たさなければ pp はコーナーではないと判定する。FASTにはディスクリプタも向き・スケールもなく、ディスクリプタと組み合わせるべき検出プリミティブである。

ORBはリアルタイムSLAMがほぼ普遍的に採用した組み合わせである。輝度重心によってFASTに向きを付加する——パッチモーメントを mpq=x,yxpyqI(x,y)m_{pq} = \sum_{x,y} x^p y^q I(x,y) とすると、向きは θ=atan2(m01,m10)\theta = \mathrm{atan2}(m_{01}, m_{10}) となる——そしてBRIEFのバイナリサンプリングパターンを θ\theta だけ回転させることで回転不変性を持たせる(rBRIEF)。256ビットのディスクリプタは32バイトのコストで、マッチングには XORpopcount 命令によって計算されるハミング距離を用いる——1フレームあたり数千の特徴を十分な速度でマッチングできる。スケール不変性は画像ピラミッド上で検出することで得られる。

AKAZEはガウシアンによるブラーの代わりに非線形拡散フィルタリングでスケール空間を構築し、境界付近でエッジを保存してより精度の高いキーポイントを得る。「加速(accelerated)」の部分はFast Explicit Diffusion(FED)であり、これによりコストが実用的な水準まで下がる。

検出からマッチングへ

検出はフロントエンドの半分にすぎず、幾何処理が消費するのはマッチングである。

すべてのフレームで検出とマッチングを行う代わりの手法としてトラッキングがある。連続フレーム間でキーポイントをピラミッド型Lucas-Kanade(KLT)で追跡し、フォワード-バックワードチェックで信頼できないトラックを除去する——より安価であり、多くのVIOシステムにおける標準的なフロントエンドである。

SLAMシステムが上乗せするもの

学習ベースの世代

学習型の検出器・ディスクリプタは、手作りの設計を再現性と識別性のために学習されたネットワークで置き換える。SuperPointは自己教師あり学習で訓練される。合成図形上で事前学習し、合成ホモグラフィ下で実画像に自己ラベル付け(「ホモグラフィック適応」)を行うことで微調整する。1つの共有エンコーダが検出器ヘッド(キーポイントスコアマップ)とディスクリプタヘッド(密なディスクリプタマップ)に供給される。R2D2は2つの別々のマップを予測する——再現性(repeatability)(この点が再度検出されるか)と信頼性(reliability)(そのディスクリプタは識別的か)——両方が高い点だけを残すことで、テクスチャのない領域や繰り返し模様の領域で有効に働く。これらは通常、後段でSuperGlueのような学習型マッチャーと組み合わせて使われる。

SLAMパイプラインにおいて、キーポイントは以降のすべての処理の原材料となる。初期化とエッセンシャル行列推定のための2D-2D対応、姿勢トラッキング(PnP)のための2D-3D対応、3D特徴点への三角測量、そしてループクロージングのためのbag-of-visual-wordsによる場所認識である。

SLAMにおける意義

特徴点ベース(間接的)SLAM——PTAMからORB-SLAM3にいたる主流パラダイム——は、完全にキーポイントの上に成立している。検出された特徴の品質、速度、分布が、システム全体の精度とロバスト性の上限を決める。検出器・ディスクリプタ間のトレードオフ(精度対Hz、バイナリ対浮動小数点ディスクリプタ、手作り対学習型)を理解することは、論文を読む上でも、自分の計算資源に合ったフロントエンドを選ぶという非常に実践的な作業においても不可欠である。

ハンズオン

関連ノート