関数kmeansベースのインデックスとANNの検索のための非対称の距離計算(バイナリ局所特徴):...

転送:http://www.cvchina.info/2012/01/13/kmeans-based-indexing-and-asymmetric-distance-computation-for-ann-search-binary-local-feature-part1/#more-3232


エルベJegou ハミング埋め込みや大型のための弱い幾何学的一貫性 -scale画像検索と最近傍探索のための製品量子化局所的な特徴を取得するための最も近い隣人は、転置ファイルを関数kmeansクラスタリングにインスピレーションを与え、非対称の距離計算は、 バイナリ形式に適用されます。

主なアイデア:

関数kmeansは、ラフなインデックスが特徴です。

統計データ圧縮機能によります。

前記クエリー機能の指標との間の距離を取得する非対称な方法を使用して計算されます。

アルゴリズム:

トレーニング:

  1. 機能指数関数kmeansクラスタリングを使用するにはK・センターを得ます。クラスタリングはバイナリ形式フィーチャーください、カテゴリセンターが道を更新します。各ビットについて、対応するビット0の統計的な周波数は、すべての機能のカテゴリに該当する、とどちらが高いです。
  2. 各クラスタについて、すべてのビット当たり1,0の統計的な特性周波数のクラス内に入る、1または0が50%の最初のMビットに近い周波数をとります。(近い50%、より大きなエントロピー)

訓練の後、我々は2つのデータセットを取得します:

  • Kはカテゴリセンターを備えています。
  • 各カテゴリ中心のための設定されている「M番目のビット位置識別子」を これらの識別子は、圧縮された元の特徴基礎を形成します。(以下、投影ベクトルと呼びます)

インデックス:

  1. 反転テーブルを作成します。
  2. 前記各インデックスのは、そのカテゴリ中心を計算する、及びMビットの署名を得るために、カテゴリの特徴投影ベクトルによって投影されます。sig_templと呼ばれる、署名が反転テーブルに挿入されます。

ANNの検索:

  1. sig_queryにMビットを与えるために、中心クエリ機能カテゴリquery_cluster、及び投影された投影カテゴリの特徴ベクトルを計算します。
  2. クエリは、中央カテゴリ、投影ベクトルの除去に対応するビット位置からカテゴリを計算される、dist_baseと呼びます。
  3. 計算のsig_queryのsig_templのテーブルエントリから逆エントリを対応query_cluster横切る、dist_sigと呼びます。次に、クエリ特徴の距離および索引付け機能DIST = dist_base + dist_sig。そのような閾値未満として得られた最小距離は、ANNを見つけることを考えることができます。

時間の複雑さの少し分析:

我々は、32バイト、前記Kが= 40、M = 64、と仮定するORB(インデックスの仮定が1K特徴付けられます)。

その後、各ANNだけでやるの取得します

32バイト40を約+ 25 8バイトのハミング距離計算のハミング距離を計算します。

徹底的な比較検索:

1000年のハミング距離計算32バイト

高速化:20X

 

  1. 例:
  1. 実験の構成:
  • 特徴:オーブ
  • NN /アンマッチしきい値:50
  • K = 40
  1. 次の図は)RANSACを:(一致せず全数探索結果画像を示します

画像

RANSAC後:

画像

次の図は、ANNの検索モード、画像マッチングの結果:(ないRANSACを示します)

画像

RANSAC後:

画像

点の数は大幅に減少するマッチング、見ることができるように。その理由は、固有の欠陥2のインデックスです。(二自体クローズ機能は、異なるクラスタに分類されます)。おそらく、マルチ割り当ての使用が改善されます。

そして、他のコードは、再発その2を照合します。


ます。https://my.oschina.net/dake/blog/196639で再現

おすすめ

転載: blog.csdn.net/weixin_34306676/article/details/91508693
おすすめ