(57)【要約】  確率的な連想データ構造を用いた、空間的効率の良い画像データベースの作成手法および検索手法を提供する。  画像データベースに登録されるべき画像であって物体を表す画像から、その画像の各所の局所的な特徴をそれぞれ表現する１以上の特徴ベクトルを局所特徴量としてそれぞれ抽出する特徴抽出工程と、登録されるべき要素としての複数のキーにそれぞれ割り当てられた値をそのキーに基づいて連想させる連想データ構造であって、偽陽性を許容することによりデータの容量を圧縮する圧縮データ構造を構造要素として含む連想データ構造を用い、各特徴ベクトルをキーとして前記連想データ構造に登録する登録工程とを備える。
2010143573.tif 000002
【特許請求の範囲】
【請求項１】
物体認識用画像データベースに登録されるべき物体が撮影された画像から、その画像の局所的特徴を表す複数の特徴ベクトルを抽出する特徴抽出工程と、
データを登録できかつあるデータが登録済か否かを判定し得るデータ構造に対し、ある物体から抽出された各特徴ベクトルを、その物体に予め割り当てられた識別子が前記特徴ベクトルから連想されるように登録する登録工程とを備え、
各工程をコンピュータが実行し、
前記登録に係る物体は、ｎビット（ｎは自然数）の識別子が割り当てられ、
前記登録工程は、前記識別子の各ビットのゼロ値登録用と１値登録用として用意された２×ｎ個の前記データ構造に対し、各特徴ベクトルが抽出された物体の識別子に応じて各ビットのゼロ値登録用と１値登録用の何れか一方のデータ構造に前記特徴ベクトルをそれぞれ登録し、
前記画像データベースは、検索質問としてある物体の画像が与えられたとき同じ物体が登録されているか否かの認識処理を行うべく、前記コンピュータまたは他のコンピュータによってアクセスされ、
前記認識処理は、前記検索質問から複数の特徴ベクトルを検索質問ベクトルとして抽出し、各検索質問ベクトルと同値の特徴ベクトルが各データ構造に登録されているか否かを調べ、すべてのビットについてゼロ値または１値のいずれかに同値の特徴ベクトルが登録されているときは登録された各ビットの値に応じたｎビット値を識別子の候補として得、各検索質問ベクトルにつき得られた候補を統計処理して検索質問に適合する識別子を見出すことを特徴とする物体認識用画像データベースの作成方法。
【請求項２】
各データ構造は、偽陽性を許容することによりデータを格納するメモリの容量を削減するものである請求項１に記載の作成方法。
【請求項３】
前記登録工程は、所定の規則を適用して前記識別子に係る誤り検出用の値を得、得られた値を前記誤り検出用のデータ構造に登録し、
前記認識処理は、得られた識別子の候補と前記誤り検出用データ構造に登録された値とを照合し、両者が一致する場合は前記検索質問ベクトルについての判定結果を統計処理の対象とし、一致しない場合は統計処理の対象としない請求項１または２に記載の作成方法。
【請求項４】
前記誤り検出用の値が少なくとも１ビットからなり、
前記誤り検出用データ構造は、ビットのゼロ値登録用と１値登録用としてデータ構造が用意されてなる請求項３に記載の作成方法。
【請求項５】
前記認識処理は、偽陽性のために、ゼロ値および１値登録用のいずれのデータ構造にも同一の検索質問ベクトルが登録されていると判断されるビットの数が予め定められた数を超える場合、その検索質問ベクトルについての判定結果を統計処理の対象から除外する請求項２〜４のいずれか一つに記載の作成方法。
【請求項６】
前記認識処理は、前記検索質問ベクトルに関連があると判定される識別子の値に対して所定の得点を与え、前記検索質問ベクトルに関連があると判定される識別子が存しない場合はいずれの識別子にも得点を与えず、
前記検索質問から抽出される検索質問ベクトルについての統計処理に基づき最多得点を得た識別子を決定する請求項１〜５のいずれか一つに記載の作成方法。
【請求項７】
前記データ構造はブルーム・フィルタである請求項１〜６のいずれか一つに記載の作成方法。
【請求項８】
物体認識用画像データベースに登録されるべき物体が撮影された画像から、その画像の局所的特徴を表す複数の特徴ベクトルを抽出する特徴抽出部と、
データを登録できかつあるデータが登録済か否かを判定し得るデータ構造体の集合からなるデータ構造部と、
ある物体から抽出された各特徴ベクトルからその物体に予め割り当てられた識別子が前記特徴ベクトルから連想されるように前記特徴ベクトルを前記データ構造部に登録する登録部とを備え、
前記登録に係る物体は、ｎビット（ｎは自然数）の識別子が割り当てられ、
前記データ構造部は、前記識別子の各ビットのゼロ値登録用および１値登録用として２×ｎ個のデータ構造体を少なくとも有し、
前記登録部は、各特徴ベクトルが抽出された物体の識別子に応じて各ビットのゼロ値登録用と１値登録用の何れか一方のデータ構造に前記特徴ベクトルをそれぞれ登録し、
前記画像データベースは、検索質問としてある物体の画像が与えられたとき同じ物体が登録されているか否かの認識処理を行う認識装置によってアクセスされ、
前記認識装置は、前記検索質問から複数の特徴ベクトルを検索質問ベクトルとして抽出し、各検索質問ベクトルと同値の特徴ベクトルが各データ構造に登録されているか否かを調べ、すべてのビットについてゼロ値または１値のいずれかに同値の特徴ベクトルが登録されているときは登録された各ビットの値に応じたｎビット値を識別子の候補として得、各検索質問ベクトルにつき得られた候補を統計処理して検索質問に適合する識別子を見出すことを特徴とする物体認識用画像データベースの作成装置。
【請求項９】
物体認識用画像データベースに登録されるべき物体が撮影された画像から、その画像の局所的特徴を表す複数の特徴ベクトルを抽出する特徴抽出処理と、
データを登録できかつあるデータが登録済か否かを判定し得るデータ構造に対し、ある物体から抽出された各特徴ベクトルを、その物体に予め割り当てられた識別子が前記特徴ベクトルから連想されるように登録する登録処理とをコンピュータに実行させ、
前記登録に係る物体は、ｎビット（ｎは自然数）の識別子が割り当てられ、
前記登録処理は、前記識別子の各ビットのゼロ値登録用と１値登録用として用意された２×ｎ個の前記データ構造に対し、各特徴ベクトルが抽出された物体の識別子に応じて各ビットのゼロ値登録用と１値登録用の何れか一方のデータ構造に前記特徴ベクトルをそれぞれ登録し、
前記画像データベースは、検索質問としてある物体の画像が与えられたとき同じ物体が登録されているか否かの認識処理を行うべく、前記コンピュータまたは他のコンピュータによってアクセスされ、
前記認識処理は、前記検索質問から複数の特徴ベクトルを検索質問ベクトルとして抽出し、各検索質問ベクトルと同値の特徴ベクトルが各データ構造に登録されているか否かを調べ、すべてのビットについてゼロ値または１値のいずれかに同値の特徴ベクトルが登録されているときは登録された各ビットの値に応じたｎビット値を識別子の候補として得、各検索質問ベクトルにつき得られた候補を統計処理して検索質問に適合する識別子を見出すことを特徴とする物体認識用画像データベースの作成処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、物体認識用画像データベースの作成方法、作成装置および作成処理プログラムに関する。より詳細には、データを要素とする集合があるとき各データ（キー）に割り当てられた値をそのキーに基づいて連想させるデータ構造であって、偽陽性(False Positive)を許容することによりデータ容量を圧縮する連想データ構造を用いてなる、特徴ベクトルの圧縮表現とその特定物体認識への応用に関する。
【背景技術】
【０００２】
特定物体認識とは、物体のインスタンスを認識するタスクである。この明細書では、SIFT（例えば、非特許文献１参照）などの局所特徴量を用いた特定物体認識について述べる。【０００３】
我々の周囲には物体のインスタンスが無数にあるため、特定物体認識を真に実用的なものとするには、識別できる物体数の大規模化が必須である。局所特徴量は数十から数百の次元を持つ実数値ベクトルであり、高い識別性を持つため、多数の物体を識別する目的に適している。認識処理の基本は、未知の物体から得た局所特徴量と既知の物体から得た局所特徴量を照合する処理である。特徴ベクトルの照合は最近傍探索によって容易に実現できるものの、その大規模化には、まだいくつかの障害を乗り越える必要がある。最も重要な障害は、処理速度とメモリ量に関するものである。【０００４】
幸い、処理速度については、これまでに有効な手法が提案されている。その中には、k-d木などの木構造に基づくもの（例えば、前記非特許文献１参照）、ハッシュに基づくもの（例えば、特許文献１、非特許文献２参照）などがある。これらの手法では、近似最近傍探索を用いることによって、処理速度を大幅に改善している。【０００５】
一方、メモリ量の問題については十分な解決策は得られていない。局所特徴量は画像あたり数百から数千個にもなるため、物体数が大規模になるとその記録には膨大なメモリが必要となる。
これまでに、特徴ベクトルをVisual Word （例えば、非特許文献３参照）と呼ばれる代表ベクトルに置換することで必要なメモリ量を削減する手法が提案されている。この手法は、画像に写っている物体のクラス（例えば、一般的な「車」というカテゴリー）を認識する「一般物体認識」には有効な手法といえる。しかし、画像中の物体のインスタンス（例えば、前者の「車」というカテゴリーの中の特定のモデル名）まで認識する「特定物体認識」への適合性は高いとはいえない。大規模な特定物体認識を行うためには、Visual Wordの数を多くしなければならない。高い認識率を得るためには、一つのVisual Wordに2〜3個の特徴ベクトルを対応付けるのが限界でありそれより多くの特徴ベクトルを一つのVisual Wordで代表させるようにすると認識率が低下してしまう（例えば、非特許文献４参照）。特定物体認識におけるメモリ量削減の決め手にはなり得ない。【０００６】
この他のメモリ量削減手法として、スカラ量子化（例えば、非特許文献５参照）や特徴ベクトルの取捨選択（例えば、非特許文献６、前記非特許文献４参照）などがある。しかし、上記の近似最近傍探索を用いた照合では、特徴ベクトル間の距離を計算する必要があるため、いずれにせよ個々の特徴ベクトルを記録しなければならない。従って、記録する特徴ベクトル数に応じたメモリ量が必要となり、その削減には限界が生じる。【０００７】
また、この問題を解決する一つの考え方は、照合に際して距離計算を放棄することである。これにより特徴ベクトルの記録も不要となるため、メモリ量の大幅な削減が可能となる。実際、特徴ベクトルをハッシュ表に登録しておき、それを検索することによって認識する手法が提案されている（例えば、特許文献１、前記非特許文献２参照）。この手法では、特徴ベクトルの照合を、距離あるいは類似度という量的な概念に基づく類似検索ではなく、ハッシュ関数の値（ハッシュ値）が同じかどうかという一致検索によって実現している。ハッシュ表には特徴ベクトルの有無が記録されるだけなので、メモリ量の大幅な削減が可能となる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】国際公開第2008/026414号パンフレット
【非特許文献】
【０００９】
【非特許文献１】D. Lowe: "Distinctive Image Features from Scale-Invariant Keypoints", International Journal of Computer Vision, Vol. 60, No. 2, pp. 91-110 (2004).
【非特許文献２】野口和人, 黄瀬浩一, 岩村雅一："近似最近傍探索の多段階化による物体の高速認識", 画像の認識・理解シンポジウム(MIRU2007)論文集、OS-B2-02, pp. 111-118 (2007).
【非特許文献３】K. Kise, K. Noguchi and M. Iwamura: "Memory Efficient Recognition of Specific Objects with Local Features", Proc. of the 19th International Conference of Pattern Recognition (ICPR2008) WeAT3.1 (2008).
【非特許文献４】井上勝文, 三宅弘志, 黄瀬浩一："局所記述子に基づく3次元物体認識のためのメモリ削減−局所記述子の取捨選択によるアプローチ−", 画像の認識・理解シンポジウム(MIRU2008)論文集、OS15-3, pp. 363-370 (2008).
【非特許文献５】本道貴行, 黄瀬浩一："特定物体認識のためのデータベース容量削減法の検討〜局所特徴量の量子化と取捨選択〜", 電子情報通信学会技術研究報告、Vol. 108，No. 484，PRMU2008-265, pp. 171-176 (2009).
【非特許文献６】B. Chazelle, J. Kilian, R. Rubinfeld and A. Tal: "The Bloomier Filter: An Efficient Data Structure for Static Support Lookup Table", Proc. 15th Annual ACM-SIAM SODA, pp. 30-39 (2004).
【発明の概要】
【発明が解決しようとする課題】
【００１０】
ところが、この手法にもまだメモリ量削減の余地がある。正しい認識のためには、類似した特徴ベクトルが同じハッシュ値を持つようにしなければならない。ところが、これによって、ハッシュ表に記録される特徴ベクトルに偏りが生じる。その結果、ハッシュ表の大部分には何も記録されず、空間効率、即ち、メモリ空間のうちで有効利用されるメモリ領域の割合が悪化する。【００１１】
この発明は、以上のような事情を考慮してなされたものであって、前述の課題を解決するため、データ集合の要素としての「キー」にそれぞれ割り当てられた値をそのキーに基づいて提供する連想データ構造を用いた、空間的効率の良い画像データベースの作成手法および検索手法を提供する。前記連想データ構造は、データ容量の圧縮、即ち、データの格納に必要なメモリ量を削減し高い空間効率を得る代償として偽陽性を許容するデータ構造を組み合わせてなる。前記データ構造は、多数のキーが登録されている状態で、あるキーが登録されているか否かを調べる（検索する）ために用いられる。前述の偽陽性は、検索を行うとそのキーに割り当てられていない値が返される場合があったり、そのキーが登録されていないにもかかわらず値が返されたりすることが起こることがあり得ることである。その意味で、前記データ構造は、確率的なデータ構造といえる。つまり、正解が得られる保証がなく誤った結果が返されることがあっても、誤った結果を返す確率が実用上支障のない程度に低ければよいとするのである。データベースの作成に要するメモリ量を抑制するために、偽陽性を許容することも一つの選択肢である。【００１２】
上記のハッシュ表を用いる代わりに前記データ構造を用いて、特徴ベクトルが記録されているかどうかを検索できる。大きな違いは、記録されていない特徴ベクトルを誤って検出するという偽陽性が生じるかどうかにある。ハッシュ表を用いる手法では偽陽性は生じ得ない。一方、前記データ構造を用いる手法では、一定の偽陽性を容認することの引き替えに、高い空間効率を得ることが可能となる。
【課題を解決するための手段】
【００１３】
この発明は、物体認識用画像データベースに登録されるべき物体が撮影された画像から、その画像の局所的特徴を表す複数の特徴ベクトルを抽出する特徴抽出工程と、データを登録できかつあるデータが登録済か否かを判定し得るデータ構造に対し、ある物体から抽出された各特徴ベクトルを、その物体に予め割り当てられた識別子が前記特徴ベクトルから連想されるように登録する登録工程とを備え、各工程をコンピュータが実行し、前記登録に係る物体は、ｎビット（ｎは自然数）の識別子が割り当てられ、前記登録工程は、前記識別子の各ビットのゼロ値登録用と１値登録用として用意された２×ｎ個の前記データ構造に対し、各特徴ベクトルが抽出された物体の識別子に応じて各ビットのゼロ値登録用と１値登録用の何れか一方のデータ構造に前記特徴ベクトルをそれぞれ登録し、前記画像データベースは、検索質問としてある物体の画像が与えられたとき同じ物体が登録されているか否かの認識処理を行うべく、前記コンピュータまたは他のコンピュータによってアクセスされ、前記認識処理は、前記検索質問から複数の特徴ベクトルを検索質問ベクトルとして抽出し、各検索質問ベクトルと同値の特徴ベクトルが各データ構造に登録されているか否かを調べ、すべてのビットについてゼロ値または１値のいずれかに同値の特徴ベクトルが登録されているときは登録された各ビットの値に応じたｎビット値を識別子の候補として得、各検索質問ベクトルにつき得られた候補を統計処理して検索質問に適合する識別子を見出すことを特徴とする物体認識用画像データベースの作成方法を提供する。【００１４】
また、異なる観点から、この発明は、物体認識用画像データベースに登録されるべき物体が撮影された画像から、その画像の局所的特徴を表す複数の特徴ベクトルを抽出する特徴抽出部と、データを登録できかつあるデータが登録済か否かを判定し得るデータ構造体の集合からなるデータ構造部と、ある物体から抽出された各特徴ベクトルからその物体に予め割り当てられた識別子が前記特徴ベクトルから連想されるように前記特徴ベクトルを前記データ構造部に登録する登録部とを備え、前記登録に係る物体は、ｎビット（ｎは自然数）の識別子が割り当てられ、前記データ構造部は、前記識別子の各ビットのゼロ値登録用および１値登録用として２×ｎ個のデータ構造体を少なくとも有し、前記登録部は、各特徴ベクトルが抽出された物体の識別子に応じて各ビットのゼロ値登録用と１値登録用の何れか一方のデータ構造に前記特徴ベクトルをそれぞれ登録し、前記画像データベースは、検索質問としてある物体の画像が与えられたとき同じ物体が登録されているか否かの認識処理を行う認識装置によってアクセスされ、前記認識装置は、前記検索質問から複数の特徴ベクトルを検索質問ベクトルとして抽出し、各検索質問ベクトルと同値の特徴ベクトルが各データ構造に登録されているか否かを調べ、すべてのビットについてゼロ値または１値のいずれかに同値の特徴ベクトルが登録されているときは登録された各ビットの値に応じたｎビット値を識別子の候補として得、各検索質問ベクトルにつき得られた候補を統計処理して検索質問に適合する識別子を見出すことを特徴とする物体認識用画像データベースの作成装置を提供する。【００１５】
さらに、この発明は、物体認識用画像データベースに登録されるべき物体が撮影された画像から、その画像の局所的特徴を表す複数の特徴ベクトルを抽出する特徴抽出処理と、データを登録できかつあるデータが登録済か否かを判定し得るデータ構造に対し、ある物体から抽出された各特徴ベクトルを、その物体に予め割り当てられた識別子が前記特徴ベクトルから連想されるように登録する登録処理とをコンピュータに実行させ、前記登録に係る物体は、ｎビット（ｎは自然数）の識別子が割り当てられ、前記登録処理は、前記識別子の各ビットのゼロ値登録用と１値登録用として用意された２×ｎ個の前記データ構造に対し、各特徴ベクトルが抽出された物体の識別子に応じて各ビットのゼロ値登録用と１値登録用の何れか一方のデータ構造に前記特徴ベクトルをそれぞれ登録し、前記画像データベースは、検索質問としてある物体の画像が与えられたとき同じ物体が登録されているか否かの認識処理を行うべく、前記コンピュータまたは他のコンピュータによってアクセスされ、前記認識処理は、前記検索質問から複数の特徴ベクトルを検索質問ベクトルとして抽出し、各検索質問ベクトルと同値の特徴ベクトルが各データ構造に登録されているか否かを調べ、すべてのビットについてゼロ値または１値のいずれかに同値の特徴ベクトルが登録されているときは登録された各ビットの値に応じたｎビット値を識別子の候補として得、各検索質問ベクトルにつき得られた候補を統計処理して検索質問に適合する識別子を見出すことを特徴とする物体認識用画像データベースの作成処理プログラムを提供する。
【発明の効果】
【００１６】
この発明の物体認識用画像データベースの作成方法において、前記登録工程は、前記識別子の各ビットのゼロ値登録用と１値登録用として用意された２×ｎ個の前記データ構造に対し、各特徴ベクトルが抽出された物体の識別子に応じて各ビットのゼロ値登録用と１値登録用の何れか一方のデータ構造に前記特徴ベクトルをそれぞれ登録ので、特徴ベクトルが各ビットのゼロ値用または１値用のデータ構造に登録されているか否か、いずれのデータ構造に登録されているかに基づいてその特徴ベクトルから識別子の値を連想することができる。前記データ構造は、偽陽性を許容することによりデータ容量を圧縮するものであるから、従来と同じメモリ量でより大規模な物体認識用画像データベース実現することができる。後述する図９、図１０、図１５、図１６などに示すように、本願発明は、ハッシュ表を用いて近似最近傍探索を行う手法と比較した場合に、より一層メモリ量の削減が可能であることが実験的に検証されている。【００１７】
この発明において、前記データ構造として適用可能なものの具体的な一例は、ブルーム・フィルタ（Bloom Filter）であり、前記連想データ構造として適用可能なものの具体的な一例は、ブルーミア・フィルタ（Bloomier Filter、例えば、前記非特許文献６参照）である。ブルーミア・フィルタは、登録されるべき要素としての複数のキーにそれぞれ割り当てられた値をそのキーに基づいて連想させるための手法として知られたデータ構造である。ここで、連想とは、あるキーが与えられたときに、所定のデータ構造によりそのキーに対応付けられた値を短時間で得ることのできる仕組みを意味し、連想するとは、その仕組みによりキーに対応付けられた値を得ることといえる。ブルーミア・フィルタは、一般に複数の共通なハッシュ関数を有する複数のブルーム・フィルタ（ｍビットのビット配列）で構成され、あるキーが与えられたとき各ハッシュ関数から得られるハッシュ値を用いて各ブルーム・フィルタを参照し、参照結果に基づいて前記キーに対応付けられた値を得ることができる。その詳細は後述する。【００１８】
この発明の物体認識用画像データベースに登録されるものは、物体を表す画像であり、検索質問（クエリー）も画像として与えられる。検索質問の画像が表す物体と一致する物体を前記画像データベースから検索できれば、その物体が認識されたといえる。
このような物体認識では、短時間のうちに物体認識が完了すること、および、少ないメモリ量で画像データベースを実現することが重要である。両者は、しばしばトレードオフの関係にあるが、この発明は、どちらかといえば、それらのうちメモリ量の削減に課題の重点がある。即ち、多量の画像データが登録される画像データベースを構築するときに有効な手法である。
以上の作用効果は、この発明による物体認識用画像データベースの作成装置および作成処理プログラムについても同様である。
【図面の簡単な説明】
【００１９】
【図１】従来の物体認識において認識時間を短縮するため識別器を直列に多段階化した構成を示す説明図である。
【図２】この発明に係るブルーム・フィルタへの登録処理の流れを示す説明図である。
【図３】この発明の実験例で用いた3次元物体の例を示す説明図である。
【図４】この発明の実験例で用いた2次元物体の例を示す説明図である。
【図５】この発明の実験例で検索質問として用いた画像であって、前記2次元物体の画像をみる視点の角度を変えて撮影した画像の様子を示す説明図である。
【図６】この発明の手法と比較例である野口らの手法の各種パラメータを変えたときの物体の認識率を示す第１のグラフである（実験1、55個の3次元物体の認識実験）。
【図７】この発明の手法と比較例である野口らの手法の各種パラメータを変えたときの物体の認識率を示す第２のグラフである（実験1、55個の3次元物体の認識実験）。
【図８】比較例である野口らの手法の各種パラメータを変えたときの物体の認識率を示す第３のグラフである（実験1、55個の3次元物体の認識実験）。
【図９】この発明の手法と比較例としての野口らの手法とで、パラメータcを変化させたとき、認識処理に必要なメモリ量を比較した結果を示す第１のグラフである（実験1、55個の3次元物体の認識実験）。
【図１０】この発明の手法と比較例としての野口らの手法とで、パラメータcを変化させたとき、認識処理に必要なメモリ量を比較した結果を示す第２のグラフである（実験1、55個の3次元物体の認識実験）。
【図１１】この発明の手法で、パラメータtを変化させたとき、認識率を示すグラフである（実験1、55個の3次元物体の認識実験）。
【図１２】この発明の手法と比較例である野口らの手法の各種パラメータを変えたときの物体の認識率を示す第１のグラフである（実験2、5000個の2次元物体の認識実験）。
【図１３】この発明の手法と比較例である野口らの手法の各種パラメータを変えたときの物体の認識率を示す第２のグラフである（実験2、5000個の2次元物体の認識実験）。
【図１４】比較例である野口らの手法の各種パラメータを変えたときの物体の認識率を示す第３のグラフである（実験2、5000個の2次元物体の認識実験）。
【図１５】この発明の手法と比較例としての野口らの手法とで、パラメータcを変化させたとき、認識処理に必要なメモリ量を比較した結果を示す第１のグラフである（実験2、5000個の2次元物体の認識実験）。
【図１６】この発明の手法と比較例としての野口らの手法とで、パラメータcを変化させたとき、認識処理に必要なメモリ量を比較した結果を示す第２のグラフである（実験2、5000個の2次元物体の認識実験）。
【図１７】同程度のメモリが使える状況で、この発明の手法、比較例である野口らの手法のd=28、d=24についてパラメータb,cを変化させたときの認識率と処理時間を示すグラフである（実験2、5000個の2次元物体の認識実験）。
【図１８】この発明の手法において、tを変化させたときの物体の認識率を示すグラフである（実験2、5000個の2次元物体の認識実験）。
【図１９】この発明の手法において、誤り検出ブルーミア・フィルタの有効性を示す第１のグラフである（55個の3次元物体の認識実験）。
【図２０】この発明の手法において、誤り検出ブルーミア・フィルタの有効性を示す第２のグラフである（55個の3次元物体の認識実験）。
【図２１】この発明の手法において、誤り検出ブルーミア・フィルタの有効性を示す第３のグラフである（5000個の2次元物体の認識実験）。
【図２２】この発明の手法において、誤り検出ブルーミア・フィルタの有効性を示す第４のグラフである（5000個の2次元物体の認識実験）。
【図２３】この発明に係るデータベース作成処理の具体例を説明する第１の説明図である。
【図２４】この発明に係るデータベース作成処理の具体例を説明する第２の説明図である。
【発明を実施するための形態】
【００２０】
以下、この発明の好ましい態様について説明する。
この発明の物体認識用画像データベースの作成方法において、各データ構造は、偽陽性を許容することによりデータを格納するメモリの容量を削減するものであってもよい。
前記登録工程は、所定の規則を適用して前記識別子に係る誤り検出用の値を得、得られた値を前記誤り検出用のデータ構造に登録し、前記認識処理は、得られた識別子の候補と前記誤り検出用データ構造に登録された値とを照合し、両者が一致する場合は前記検索質問ベクトルについての判定結果を統計処理の対象とし、一致しない場合は統計処理の対象としなくてもよい。このようにすれば、前記登録工程は、前記識別子の値に所定の規則を適用して誤り検出用の値を得、得られた値を前記誤り検出用データ構造にさらに登録するので、検索質問ベクトルがあるビット桁のゼロ値にも１値にも登録されていると判断された場合にも、誤り検出用データ構造に登録された値との整合性を判定し、誤り検出用データ構造を用いない場合よりも高い精度で検索質問ベクトルに関連する画像を検索することができる。
また、前記誤り検出用の値が少なくとも１ビットからなり、前記誤り検出用データ構造は、ビットのゼロ値登録用と１値登録用としてデータ構造が用意されてなるものでもよい。このようにすれば、２×ｎ個の前記データ構造を用いて識別子を連想する連想データ構造が構成されるところ、さらに前記データ構造を追加することにより検出用データ構造を構成することができる。
【００２１】
また、前記認識処理は、偽陽性のために、ゼロ値および１値登録用のいずれのデータ構造にも同一の検索質問ベクトルが登録されていると判断されるビットの数が予め定められた数を超える場合、その検索質問ベクトルについての判定結果を統計処理の対象から除外してもよい。このようにすれば、いわゆる偽陽性によりある検索質問ベクトルに関連する画像の識別子として所定の数を超える値が得られた場合、誤った値を多数含むその判断結果を特定の基礎から除外することにより、前記除外を行わない場合よりも高い精度で検索質問ベクトルに関連する画像を検索することができる。
【００２２】
さらにまた、前記認識処理は、前記検索質問ベクトルに関連があると判定される識別子の値に対して所定の得点を与え、前記検索質問ベクトルに関連があると判定される識別子が存しない場合はいずれの識別子にも得点を与えず、前記検索質問から抽出される検索質問ベクトルについての統計処理に基づき最多得点を得た識別子を決定してもよい。このようにすれば、複数の検索質問ベクトルの判断結果を多数決処理する、いわゆる投票処理により、個々の判断結果が正しい確率が100％でなくても、多数決処理により妥当な結果を得ることができる。
【００２３】
前記データ構造は、ブルーム・フィルタであってもよい。
また、前述の作成方法および検索方法において、各データ構造は、それを構成するビットの数ｍ（ｍは自然数）が予め定められた登録ベクトルの最大数よりも大きくてもよい。より好ましくは、ｍは、各登録ベクトルが登録された後の各データ構造が、適度にゼロ値のビットを含む疎な状態になるように決定される。このようにすれば、データ構造の誤検出の確率、即ち、偽陽性の発生確率を低い値にすることができる。ただし、あまりmを大きくしすぎると空間効率が低下する。設計者は、両者の兼ね合いから実験的にあるいは経験的に妥当な値を決定すればよい。
ここで示した種々の好ましい態様は、それら複数を組み合わせることもできる。
【００２４】
以下、図面を用いてこの発明をさらに詳述する。なお、以下の説明は、すべての点で例示であって、この発明を限定するものと解されるべきではない。
この発明の詳細な説明に先立ち、その技術的意義を把握しやすくするために関連研究について、少し詳しく説明しておく。
1. 関連研究について
【００２５】
局所特徴量を用いた特定物体認識では、メモリ量の削減が重要な課題である。削減の従来手法には、特徴ベクトルのベクトル量子化を行うもの（前記非特許文献７参照）や、スカラ量子化を行うもの（前記非特許文献３参照）がある。
【００２６】
前者の、ベクトル量子化をする手法では、複数の特徴ベクトルをVisual Wordと呼ばれる代表ベクトルに置き換えることでメモリ量を削減している。しかし大規模な認識を行うためには、一つのVisual Wordに2〜3個の特徴ベクトルを対応付けるのが限度であり、それ以上の数を一つのVisual Wordに対応付けると認識率が低下することが報告されている（前記非特許文献５参照）。
【００２７】
一方、後者のスカラ量子化する手法では、特徴ベクトルの各次元をスカラ量子化することでメモリ量を削減している。この手法では、ある程度大規模な物体認識でも有効であるが、特徴ベクトルの数を1 bitで表現したとしても、特徴ベクトルの数に比例してメモリ量が増加するため、更なる大規模な物体認識を行うには限界がある。このため、特徴ベクトルそのものの容量を削減する手法には限界がある。
【００２８】
特徴ベクトル自体の容量を削減する以外のアプローチには、主記憶ではなく補助記憶を利用する手法がある（例えば、F. Fraundorfer, H. Stewenius and D. Nister: "A Binning Scheme for Fast Hard Drive Based Image Search", Proc. of CVPR2007, pp. 1-6 (2007)参照。また、姫井教考, 和田俊和："B+木を用いた補助記憶装置上での近似最近傍探索", 電子情報通信学会技術研究報告、Vol. 108，No. 484，PRMU2008-273, pp. 223-228 (2009)参照）。その他、データベースに登録する特徴ベクトルをサンプリングする手法（例えば、前記非特許文献５、４参照）がある。
【００２９】
補助記憶を利用する手法では、記録している場所へのポインタのみを主記憶に保存することでメモリ量を削減している。この手法では、かなり大規模な物体認識を行えるが、認識処理に時間がかかるという問題点が生じる。
【００３０】
特徴ベクトルをサンプリングする手法では、認識に有効な特徴ベクトルを取捨選択することによりメモリ量を削減している。この手法でも、大規模な物体認識を行うためには、削減できる特徴ベクトルの数に限界があり、それ以上の数を削減すると認識率が低下してしまう。
【００３１】
上に述べたような手法では、特徴ベクトルの距離を計算するため、どの手法でも個々の特徴ベクトル自体を記録する必要があり、認識に必要なメモリ量を削減するには限界がある。
【００３２】
この問題を解決するための一つのアプローチとして、特徴ベクトルの距離計算を放棄することが考えられる。このような考えに基づいた手法として、ハッシュ表を用いた手法（前記特許文献１、非特許文献２参照）が提案されている。しかし、この手法にも問題点があり、ハッシュ表に登録される特徴ベクトルに偏りがあり、ハッシュ表の大部分が何も記録されず、空間効率が悪い。そこでこの発明では、特徴ベクトルの距離計算を行わないという考えに基づき、ハッシュ表と比べてはるかに空間効率の良いブルーミア・フィルタを用い、メモリ量を削減する手法を提案する。
2. 野口らの手法
【００３３】
本節では、この発明の基礎となる野口らの手法（前記特許文献１、非特許文献２参照）について説明する。野口らの手法は、PCA-SIFT（例えば、Y. Ke and R. Sukthankar: "PCA-SIFT:A more distinctive representation for local image descriptors", Proc. of CVPR2004, Vol. 2, pp. 506-513 (2004)参照）で求めた36次元の特徴ベクトルを用いる特定物体認識手法である。野口らの手法は、ハッシュ表に特徴ベクトルを登録するデータベース作成処理と、このデータベースを用い、投票処理に基づいて物体を認識する認識処理の二つに分かれる。以下に、具体的な処理について説明する。
2-1. データベース作成
【００３４】
本節では、野口らの手法のデータベース作成処理について説明する。野口らの手法ではまず、特徴ベクトルpの第1次元から第d次元(d≦36)までをとり、p'=(p1, p2, …, pd)を作成する。次にこのベクトルp'を用い、
【００３５】
【数１】
2010143573.tif 000003
によって各次元を２値化したビットベクトル u=(u1,…,ud)を作成する、そして、
【００３６】
【数２】
2010143573.tif 000004
【００３７】
というハッシュ関数より、ハッシュ表に登録するためのインデックスを求める。ここで、Hsizeは、ハッシュ表のサイズである。求まったインデックスに、特徴ベクトルpに対する物体IDを登録する。ここで、物体IDは、この発明の「識別子」に対応する。
【００３８】
野口らの手法では、特徴ベクトルの登録時に衝突が生じた場合、リストとして特徴ベクトルを登録していく。但し、計算コストの削減のために、リスト長に閾値cを設け、リスト長がcよりも長くなる場合、リスト全体をハッシュ表から削除し、以後の登録を禁止する。これは、同じハッシュ値を持つ特徴ベクトルは互いに類似しているため、物体認識にあまり寄与しないという考えに基づく。以上の処理を全ての特徴ベクトルに対して行い、データベースを作成する。
2-2. 認識処理
【００３９】
野口らの手法では、質問画像からPCA-SIFTで求めた特徴ベクトルを用い、データベース作成処理と同様に、ハッシュ表のインデックスを求める。そして、求めたハッシュインデックスに登録されている物体ID全てに投票を行う。この処理を、質問画像から得られる特徴ベクトル全てに対して行い、最終的に最も得票数が多い物体を認識結果とする。以下に具体的な処理について説明する。
【００４０】
まず、質問画像から得られる特徴ベクトルから、ハッシュ表のインデックスを求める。このとき、野口らの手法で用いるハッシュ関数の性質より、次のような問題が発生する。検索質問画像とデータベースの画像が全く同じになるということはほとんどないため、質問画像から得られる特徴ベクトルは、各次元の値がデータベース作成に用いる特徴ベクトルと異なったものとなる。これが原因で異なったビットベクトルに変換されてしまうと、真に対応する物体IDをハッシュ表より検索することができなくなる。そこで、この問題に対処するために、各次元の値に、許容変動幅eを設ける。具体的に説明すると、検索質問となる特徴ベクトル q=(q1, q2, …, qd)において、
【００４１】
【数３】
2010143573.tif 000005
を満たす次元jに対して、ujだけではなく
【００４２】
【数４】
2010143573.tif 000006
【００４３】
も用いて特徴ベクトルを検索する。例を示すと、ビットベクトル u=(1, 0, 0, 1)の第3次元目がこの処理の対象であった場合、u'=(1, 0, 1, 1)も用いて検索する。しかし、この処理を全ての次元に対して行うと、処理時間が膨大になってしまうため、処理の対象とする次元数に閾値bを設ける。これにより、最も多い場合で、検索に用いるビットベクトルu'の数を2b個に抑えている。
【００４４】
【数５】
2010143573.tif 000007
となる次元数がb個より多くなる場合、次元のインデックスの大きいものからb個採用する。
以上の処理を行うことで、ハッシュ表に登録されている物体IDに投票を行い、最も得票数の多い物体を認識結果とする。
【００４５】
野口らの手法では、処理を効率化するために図１に示すような複数の識別器を直列に並べた構成とする。この多段階化の構成は、本願発明にも適用可能である。第s段では、b = s-1とした識別器を用いる。質問画像をこの認識器にかけた場合の処理について具体的に説明する。まず第1段では、b=0としたときのビットベクトルを用いて認識する。このとき、得票数が一位の物体と他の物体との得票数の差が十分に大きければ、この時点で得票数一位の物体を認識結果として出力する。十分な得票数差が得られなければ、第2段の識別器に移り、b=1としたときのビットベクトルを用いて認識する。この処理を繰り返すことにより質問画像を認識する。この識別器の多段階化による認識手法の特徴は、識別器の段が移ったとき、前の段で検索に用いられたビットベクトル以外のビットベクトルを用いて認識を行うという、差分探索性があることである。このため、最終段の識別器まで移ったとしても、最初から2b個のビットベクトルを用いて認識するのとほぼ同じ処理時間で認識できる。
2-3. 野口らの手法の課題
【００４６】
野口らの手法では、認識率を確保するために、ビットベクトルの次元dの値を大きくする必要がある。しかし、dの値を大きくすればハッシュ表の大きさも指数的に増加する。
またHsize = 2dとした予備実験により、約一千万個のPCA-SIFT特徴ベクトルを野口らの手法でハッシュ表にマッピングしてみたところ、d=24のとき65%以上、d=28のとき96%以上のハッシュインデックスが、一つの特徴ベクトルにも対応しない、またはリストが削除された状態となっていることが分かった。以上から、野口らの手法には、ハッシュ表の空間効率の観点から、なお改善の余地があるといえる。
この課題に対処すべく、この発明ではハッシュ表と比べると、はるかに空間効率の良いデータ構造として、偽陽性を許容することによりデータの容量を圧縮するデータ構造を用いることにした。前記データ構造の具体的な構成の一例は、ブルーム・フィルタであり、前記連想データ構造の具体的な構成の一例は、ブルーミア・フィルタである。
3. ブルーム・フィルタとブルーミア・フィルタ
【００４７】
本節では、この発明に係る連想データ構造として適用可能なブルーミア・フィルタ（前記非特許文献６参照）と、その基礎となるブルーム・フィルタ（詳細は、例えば、B. H. Bloom: "Space/Time Trade-offs in Hash Coding with Allowable Errors", Commun. ACM, Vol. 13, No. 7, pp. 422-426 (1970)参照）について説明する。
3-1. ブルーム・フィルタ
【００４８】
ブルーム・フィルタは、平衡2分探索木やハッシュ表と比べてはるかに空間効率の良いデータ構造である。このブルーム・フィルタは、あるデータ集合と要素が与えられたとき、この要素がデータ集合のメンバであるか否かを調べるために用いられる。この手法には、ある要素がデータ集合のメンバではないにもかかわらず、集合のメンバであると判断される偽陽性(False Positive)の可能性が高くなるという問題点や、データ集合から元の要素を取り出すことができないという問題点がある。一方この手法には、メモリ量を増やすことなくデータ集合にいくらでも要素を追加することができるという利点がある。もちろん要素を追加すればするほど偽陽性の可能性は高くなるが、同じメモリ量で保存できる要素数は、平衡2分探索木やハッシュ表と比べると圧倒的に多い。
【００４９】
この発明では、この空間効率の良さを利用し、ブルーム・フィルタを特徴ベクトルの圧縮表現に用いる。この明細書では、以後データ集合の要素を特徴ベクトルとして話を進める。以下に、ブルーム・フィルタへの特徴ベクトル登録方法と特徴ベクトルの認識方法の具体的な処理について説明する。
【００５０】
図２に特徴ベクトルの登録処理の流れを示す。まず、空のブルーム・フィルタとしてm bitの配列を用意し、全てのbitを0で初期化する。以下では、mを"TableSize"と呼ぶこととする。次に、k個のハッシュ関数を用意し、それぞれのハッシュ関数に対して、特徴ベクトルをキーとしてハッシュ値を計算する。ここで、得られるハッシュ値は1〜mの整数値とする。そして、得られたk個のハッシュ値 x1, x2, …, xkを基に、ブルーム・フィルタのxi(i=1, 2, …, k)番目のbitを1にすることで特徴ベクトルを登録する。特徴ベクトルの認識処理も探索処理と同様に、特徴ベクトルをキーとしてそれぞれのハッシュ関数からハッシュ値を得る。そして、得られたハッシュ値に対応するbitが全て1になっていれば、データ集合にその特徴ベクトルが含まれているとする。
3-2. ブルーミア・フィルタ
【００５１】
この発明で、ブルーミア・フィルタ（Bloomier Filter）は、複数のブルーム・フィルタを用いることで、登録した特徴ベクトルと関連する値を連想させるために用いられるデータ構造である。この手法にも、偽陽性の可能性があるという問題点や、元の特徴ベクトルをデータ集合から取り出すことができないという問題点があるものの、ハッシュ表などと比べると、圧倒的に空間効率が良いという利点がある。この発明では、この性質を利用し、ブルーミア・フィルタを特定物体認識に用いる。以下に、ブルーミア・フィルタの動作について具体的に説明する。
【００５２】
ブルーミア・フィルタで連想させる値が0と1の二種類のみの例について説明する。まず2つのブルーム・フィルタ XとYを用意する。次に、特徴ベクトルに連想させたい値が0である場合、ブルーム・フィルタ Xに特徴ベクトルを登録しておき、連想させたい値が1である場合、ブルーム・フィルタ Yに特徴ベクトルを登録しておく。これによりある特徴ベクトルを認識させたとき、ブルーム・フィルタ Xに存在すれば、その特徴ベクトルから連想される値は0である可能性が高く、また、ブルーム・フィルタ Yに存在すれば、連想される値は1である可能性が高いとすることができる。
【００５３】
この発明では、上記のブルーミア・フィルタの動作を利用し、特定物体を認識するために用いる物体IDを連想させることを考える。物体IDをn bitで表現するとしたとき、bitごとに二つのブルーム・フィルタを用意することで、これを実現させる。これにより、N個の物体を識別するために、物体ごとにブルーム・フィルタを用意するとN個のブルーム・フィルタが必要となるが、ブルーミア・フィルタを用いることで、log2N個のブルーム・フィルタで物体を識別することができる。
4. この発明の手法
【００５４】
本節では、ブルーミア・フィルタを用いた特定物体認識手法について述べる。この発明でも、野口らの手法と同様に、画像からPCA-SIFTによって求めた特徴ベクトルを用いる。まず、ブルーミア・フィルタへ特徴ベクトルを登録するデータベース作成処理について説明する。次に、ブルーミア・フィルタを用いた物体認識手法について具体的に説明する。
4-1. データベース作成
【００５５】
本節では、ブルーミア・フィルタへ特徴ベクトルを登録するデータベース作成処理について説明する。まず、物体を識別するために用いる物体IDをn bitで表現するとしたとき、2n個のブルーム・フィルタを用意する。このとき0を連想させるブルーム・フィルタをX1, X2, …, Xn、1を連想させるブルーム・フィルタをY1, Y2, …, Ynとする。それぞれのブルーム・フィルタのTableSizeは、
【００５６】
【数６】
2010143573.tif 000008
とする。ここで、
【００５７】
【数７】
2010143573.tif 000009
は物体IDのf番目のbitがgである物体から得られる特徴ベクトルの総数、aは一特徴ベクトルを何bitで保存するかを表す値である。
【００５８】
具体例を示すと、ブルーム・フィルタ Xiの場合、物体IDをbit表現したときにi番目のbitが0である全ての物体から得られる特徴ベクトル数がMの値となり、
【００５９】
【数８】
2010143573.tif 000010
がXiのTableSizeとなる。
【００６０】
次に、物体IDを連想させるために、n個のブルーム・フィルタに対して特徴ベクトルを登録していく。例えば、2bitで物体IDを表現するとき、物体IDの3を"10"で表現したとすると、bit列の1 bit目が"1"、2 bit目が"0"であるため、Y1とX2のブルーム・フィルタに物体ID3の物体から得られる特徴ベクトルを保存する。以下に具体的な処理を説明する。
【００６１】
この発明では野口らの手法と同様に、特徴ベクトルのd次元を用いて、ビットベクトルuを作成する。データベースに登録する特徴ベクトル全てをビットベクトルで表現したとき、同じビットベクトルが閾値c個以上あれば、そのビットベクトルに変換される特徴ベクトルは、認識にはあまり有効でないと考え、データベースに登録しない。それ以外の場合は、求めたビットベクトルuをキーとし、k個のハッシュ関数を用いて、ブルーム・フィルタのどのビットを1にするかを決める。
【００６２】
この実施形態では、k=8とし、ハッシュ関数にインターネット上のGeneral Purpose Hash Function Algorithms, [online]、平成21年6月3日検索、＜URL: http://www.partow.net/programming/hashfunctions/index.html#RSHashFunction.＞ で紹介されている8個のハッシュ関数を用いる。ただし、これは一例にすぎず、他のハッシュ関数を用いてもよい。
【００６３】
以上の処理を全ての特徴ベクトルに対して行い、データベースを作成する。この発明では、データベースから元の特徴ベクトルを取り出すことができないが、ブルーム・フィルタの性質上、元の特徴ベクトルをそのまま保存するよりも、かなりメモリ量を圧縮して特徴ベクトルを表現することができる。
4-2. 物体認識
【００６４】
本節では、ブルーミア・フィルタを用いた物体認識手法について説明する。まず、提案する物体認識手法の処理の流れを説明する。この手法では、検索質問画像から得られる特徴ベクトルqを用い、物体IDのi(i=1, 2, …, n)番目のbitが0か1かを求めるために、XiとYiのブルーム・フィルタにqに対応する特徴ベクトルが登録されているかを調べる。このとき、Xiに登録されていれば、物体IDのi番目のbitを0とし、Yiに登録されていれば、物体IDのi番目のbitを1とする。そして、全てのbitに対して値を求め、最終的に求まった物体IDの物体に投票を行う。この処理を検索質問画像から得られる特徴ベクトル全てに対して行い、最も得票数の多かった物体を認識結果とする。以下に具体的な処理について説明する。
【００６５】
質問画像から得られる特徴ベクトルは、一般に各次元の値がデータベース作成に用いる特徴ベクトルのものと異なったものとなる。このためこの実施形態でも、野口らの手法と同様に、各次元の値の許容変動幅eを設け変動に対処する。また、この処理を行う次元数を閾値b個以下に制限し、次元数がbを上回るときには、次元のインデックスの大きいものからb個を採用する。そしてこれらのビットベクトルを用いて、物体IDのi(i=1, 2, …, n)番目のbitが0か1かを求める。
【００６６】
このとき、ブルーム・フィルタ Xiに存在していれば、物体IDのi番目のbitを0とし、ブルーム・フィルタ Yiに存在していれば、物体IDのi番目のbitを1とする。XiとYiの両方に含まれていない場合は、このビットベクトルをキーとした特徴ベクトルはデータベースに登録されていないとし、i番目以降の処理を打ち切る。
【００６７】
この処理では、XiとYiの両方に含まれていた場合に問題が起こる。これは、どちらかのブルーム・フィルタが偽陽性を引き起こし、実際には登録されていないにもかかわらず、登録されていると判断されるために起こる。この発明では、このような場合、両方の可能性を試すことにより対処する。具体的には、物体IDのi番目のbitが0となる物体IDと1となる物体IDの両方を投票の対象とする。但し、全てのbitに対して上記の処理を行うと誤投票が増加してしまうため、この発明では、偽陽性に対処する物体IDの次元数に閾値tを設け、投票する物体ID数を2t個に制限する。対処する次元数がt個を超える場合、次元の小さいものからt個採用する。
【００６８】
上記の処理を繰り返し、求まった物体IDの物体に投票する。この処理を検索質問画像から得られる全ての特徴ベクトルに対して行い、最終的に最も得票数の多かった物体を認識結果とする。
【００６９】
またこの実施形態では、認識処理の効率化を図るために、野口らの手法と同様に、第s段がb = s-1とした識別器を用いて認識を行う。これによって、十分に他の物体との得票数差が得られれば、途中の段で処理を打ち切ることができるため、認識処理を効率的に行うことができる。
4-3. 誤り検出
【００７０】
この発明では、上記の処理で作成したデータベースに加え、投票時に投票誤りを検出するための処理も提案する。まず、データベース作成の際には、上記の通常のブルーミア・フィルタに加え、誤り検出用のブルーミア・フィルタも作成する。これは、ある検索質問画像から得られた特徴ベクトルを用いて認識処理で求まったIDに、本当に投票を行ってよいかを決めるための簡易的な誤り検出器である。
【００７１】
この誤り検出ブルーミア・フィルタを以下のように作成する。まず、二つのブルーム・フィルタ P0, P1を用意する。そして、物体IDを2bit表現したとき、1の数が偶数個の物体IDから得られる特徴ベクトルをP0に登録し、1の数が奇数個の物体IDから得られる特徴ベクトルをP1に登録する。それぞれのブルーム・フィルタのTableSizeは、式(4)と同様に与えられる。
【００７２】
認識処理では、求まった物体IDの物体に投票を行うかどうかを、誤り検出ブルーミア・フィルタを用いて決める。このとき、誤り検出ブルーミア・フィルタに登録されていなかった場合や、両方に登録されていた場合、求まった物体IDは誤ったIDと判断し、投票を行わない。
【００７３】
5. データベース作成処理、認識処理の具体例
前節で述べたデータベース作成処理、認識処理についての具体例を本節に示す。なお、説明を理解しやすくするため、本節では非常に小さな物体IDのbit数、特徴ベクトル数を例示しているが、実際に本願発明が適用される場面では、後述する実験例、あるいはそれよりさらに大規模なデータベースが処理の対象となる。
【００７４】
5-1. データベース作成処理
いま、物体IDが「3」の物体から得られる特徴ベクトルをデータベースに登録する処理について具体的に述べる。まず特徴ベクトルを登録するブルーム・フィルタを決める。ここで、物体ID3を2bitで表現するとしたとき、物体ID3に10というbit列を割り当てたとする。例では、bit列の1番目の数字が1，2番目の数字が0であるので、bit列の1番目の数字に1を連想させるブルーム・フィルタ Y1と、bit列の2番目の数字に0を連想させるブルーム・フィルタ X2に特徴ベクトルを登録する。
また、物体IDをbit列で表現したとき、1が奇数個現れるので、誤り検出ブルーム・フィルタ P1にも特徴ベクトルを登録する。次に、物体ID3の物体より得られる特徴ベクトルを、図２に示すような手順で登録する。
【００７５】
まず、物体ID3の物体から得られる特徴ベクトルの1次元目からd次元を用い、ビットベクトルを作成する。特徴ベクトルの各次元の値が非負であるとき1とし、負であるとき0に変換する。具体的に説明すると、今物体ID3の物体から得られる特徴ベクトルとして、
P1 = ( 24,-500, 249, 32),
P2 = (239, 123, -11, -57),
…
があるとき、d=3とすると、P1，P2，・・・はそれぞれ低次元側（左側）から3ビットの各要素を0または1に符号化してなるビットベクトル、
u1 = (1, 0, 1),
u2 = ( 1, 1, 0),
…
に変換される。
【００７６】
このとき、同じビットベクトルに変換される特徴ベクトルがc個以上あった場合、このビットベクトルに変換される特徴ベクトルは、類似しているため認識にはあまり有効でないと考え、以後の処理に用いない。
【００７７】
次に、ビットベクトルをキーとしてk個のハッシュ関数からそれぞれハッシュ値を得る。そして、得られたハッシュ値に対応するブルーム・フィルタのbitを1にする。ここで、対象のブルーム・フィルタは、前述のごとくY1, X2, P1であり、何も登録されていない初期後の状態で、各ブルーム・フィルタは、全ての要素が0（ゼロ）である。
ここで、kをk=3とし、ブルーム・フィルタのTableSizeをm=8としたとき、ビットベクトルu1，u2を登録する例を図２３に示す。
【００７８】
図２３で、まず、ビットベクトルu1をキーとして、前述のk個のハッシュ関数からk=3個のハッシュ値を求める。いま、求まったハッシュ値が1，2，4であったとき、(00000000)に初期化されたブルーム・フィルタ Y1, X2, P1の1，2，4番目のbitを1にする。u1登録後のY1, X2, P1は、いずれも（11010000）になる（図２３(a)参照）。
【００７９】
続いてu2をキーとし、前述のk個のハッシュ関数から2，5，7というハッシュ値が求まったとすると、既に、u1が登録されたY1, X2, P1のベクトル（11010000）のうち2，5，7番目のbitを1にする。u2登録後のY1, X2, P1は、いずれも（11011010）になる（図２３(b)参照）。
【００８０】
以上の処理を、物体ID3の物体から得られる全ての特徴ベクトルについて繰り返し、ブルーム・フィルタY1とX2とP1に登録する。
さらに、他の物体IDについても同様の処理行う。例えば、物体ID4について、11というbit列を割り当てたとする。bit列の1番目および2番目の数字がいずれも1であるので、bit列の1番目の数字に1を連想させるブルーム・フィルタ Y1と、bit列の2番目の数字に1を連想させるブルーム・フィルタ Y2と、偶数ビットの誤り検出ブルーム・フィルタ P0とに、物体ID4の物体から得られる全ての特徴ベクトルを登録する。
以上のようにして、各物体の各特徴ベクトルについて登録を行い、データベースを作成する。
【００８１】
5-2. 認識処理
続いて、認識処理の具体例について述べる。まず、検索質問画像から得られる特徴ベクトルを用いて、全てのブルーム・フィルタに対して検索を行う。
いま、検索質問画像から得られる特徴ベクトル（検索質問特徴ベクトル）として、
q1 = ( 31,-480, 220, 49),
q2 = (239, 20, 113, -82),
…
があるとき、データ登録処理時と同様に、特徴ベクトルからビットベクトル、
u1' = ( 1, 0, 1),
u2' = ( 1, 1, 1),
…
を作成する。
【００８２】
このビットベクトルをキーとして、前述のk=3個のハッシュ関数からそれぞれハッシュ値を求める。物体IDのビット列に対応する各ブルーム・フィルタ X1, X2, Y1, Y2について、対応するbitが全て1になっているかを調べる。もし、全てのbitが1となっていれば、キーの特徴ベクトルがそのブルーム・フィルタに登録されているとする。
【００８３】
具体的に述べると、ブルーム・フィルタ Y1が（11011010）となっているとする。
検索質問の特徴ベクトルq1から得られたビットベクトルu1'についてハッシュ値を求めると、u1'は登録時のu1と同じ値であるから、登録処理と同様のハッシュ値1，2，4が得られる。ブルーム・フィルタ Y1の1，2，4番目のbitをみると全てが1になっている。この場合、q1はブルーム・フィルタ Y1に登録されていると判断する。
【００８４】
但し、一般に、ブルーム・フィルタでは、登録されていないにも関わらず、登録されていると判断されることがある。今q2が実際にはブルーム・フィルタに登録されていない特徴ベクトルであると仮定する。q2より求めたビットベクトルu2'からハッシュ値を求めると2，4，5であったとする。このハッシュ値よりブルーム・フィルタ Y1＝（11011010）の対応する第2，4，5 bitを調べると、全て1になっている。このように、実際には登録されていない特徴ベクトルでも、ブルーム・フィルタが偽陽性を起こし、登録されていると判断されることがある。
【００８５】
説明を続ける。このように、検索質問の各特徴ベクトルにつき、前述した手順で検索処理を行うことで、物体IDのi番目のbitが何であるかを判断する。ある検索質問の特徴ベクトルがブルーム・フィルタ Xiに登録されていたとする。この場合、物体IDのi番目のbitを0とする。一方、その特徴ベクトルがYiに登録されていたとすると、物体IDのi番目のbitを1とする。仮に、Y1とX2に特徴ベクトルが登録されていたとすると、物体IDのbit列は「10」となるため、ID3の物体に投票を行う。
【００８６】
このとき、ブルーム・フィルタが偽陽性を起こし、XiとYiの両方に特徴ベクトルが登録されていると判断されたとする。その場合、この発明では両方の可能性を試す。即ち、その検索質問特徴ベクトルについては、図２３に示すように、物体IDのi番目のbitが0の物体と1となる物体の両方に投票を行うこととする。例えば、検索処理の結果、ある検索質問特徴ベクトルがX1，Y1，X2に登録されていたと判断されると、物体IDのbit列00と10の2つのID候補を用意する。そして、誤り検出ブルーム・フィルタを参照し、投票してもよい物体IDを決める。即ち、誤り検出ブルーム・フィルタ P0に特徴ベクトルが登録されていたとき、前記ID候補のうち物体IDに1が偶数個のID「00」のみ投票を行い、逆に、P1に特徴ベクトルが登録されていたとき、物体IDに1が奇数個のID「10」のみ投票を行う（図２４参照）。なお、ここでは、ブルーム・フィルタを用いた誤り検出の一例を示したが、誤り検出に代えて、例えば、複数のブルーム・フィルタにより公知の誤り符号訂正の手法を適用できるように構成してもよい。このようにすれば、偽陽性に起因する誤った判断をより低減することができる。
【００８７】
上記の検索処理および投票処理を検索質問画像から得られる全ての特徴ベクトルに対して行う。その結果、最終的に最も得票数の多かった物体を認識結果とする。
なお、投票に際しては、票に重みを付けてもよい。例えば、物体IDがiの物体から抽出されデータベースに登録された特徴ベクトル数がNi個のとき、その物体IDへの投票に1／√Niの重みを付けて投票するようにしてもよい。
【００８８】
5. 実験例
本節では、この発明の有効性を確かめるために、55個の3次元物体を用いたデータセットと、5000個の2次元物体を用いたデータセットに対して行った実験の結果について述べる。
5-1. 実験条件
まず、55個の3次元物体のデータセットについて説明する。図３に本実験で用いた3次元物体の例を示す。本実験では、物体に対して、真正面、真正面から上へ15°、30°の角度から、ウェブカメラで、5°ごとに物体を回転させて撮影した画像を用いた。ウェブカメラは、株式会社ロジクール製、製品型名 Qcam（登録商標） Pro 9000、解像度：640480のものである。このうち、データベース作成用画像として、回転角度が0°, 10°, …, 350°の画像36枚×3方向の、1物体当たり108枚を用い、残りの画像を検索質問画像とした。データベース作成用画像から得られる特徴ベクトルの数は、約120万個である。
【００８９】
次に、5000個の2次元物体のデータセットについて説明する。本実験では、Googleイメージ検索において、"雑誌"、"ポスター"、"表紙"等の検索キーワードで収集した1667枚の画像と、PCA-SIFTのサイトで公開されていた1667枚の画像と、写真共有サイトのFlickrにおいて、"animal"、"birthday"、"food"、"japan"等のタグにより収集した1666枚の画像をデータベース作成用画像とした。
【００９０】
図４に例を示す。なお、収集の際には、600×600 pixel以下のサイズの画像は除外し、画像の長辺が640pixel以下になるように縮小した。また、得られる特徴ベクトルが100個以下になる画像も除外した。データベース作成用画像から得られる特徴ベクトルの数は、約1千万個である。検索質問画像としては、次のように用意した。まず、データベースに含まれる画像の内、Googleイメージ検索で収集した画像から100枚、PCA-SIFTのサイトから得た画像から200枚、Flickrから収集した画像から200枚の合計500枚を無作為に選択した。次に、これらの画像をA4の用紙にカラーレーザプリンタ（株式会社沖データ製、製品型名 C5200n）を用いて印刷し、カメラ（キャノン株式会社社製、製品型名 EOS Kiss Digital、630万画素、付属レンズ型名：EF-S 18-55mm USM）で撮影した。
【００９１】
撮影した画像の例を図５に示す。図５に示す通り、紙面全体が写る配置で、紙面に対するカメラの光軸の角度θを 90°, 75°, 60°に変化させた。また、角度を90°として紙面の一部分を撮影した。その結果、1枚の紙面に対して、合計4通りの画像を得た。さらに、撮影した画像を512×341pixelに縮小し、PCA-SIFTにより特徴ベクトルを求めた。
【００９２】
両実験において、この発明と野口らの手法を用いてそれぞれ物体の認識を行った場合の、物体の認識率と、質問画像一枚の認識にかかった平均の処理時間と、認識に必要なメモリ量を比較した。但し、処理時間に特徴ベクトルの抽出時間等は含めないものとする。
【００９３】
本実験では、この発明と野口らの手法で用いられているパラメータの内、両方のビットベクトルを試す次元数b、ハッシュのリスト長c、ビットベクトルの次元数dを変化させて物体の認識率を調べた。ここで各パラメータの変動幅は、b=0, 1, …, 10、c=1, 2, …, 10、d=24,28である。また両手法において、特徴ベクトルの許容変動幅eはe=200とした。使用した計算機は、CPUがAMD Opteron8378 2.4GHz、メモリが128GBのものである。
5-2. 実験1：55個の3次元物体を用いた実験
【００９４】
この発明の手法において、前節で述べたパラメータ以外に、特徴ベクトルの保存容量a、偽陽性に対処する次元数tも変化させて物体の認識率を調べた。aとtの変動幅は、a=8, 16, 24, 32、t=1, 2, 3, 4, 5とする。野口らの手法のハッシュ表のハッシュサイズは、Hsize=2dとした。d=24のときの結果を図６、d=28のときの結果を図７に示す。横軸に認識率、縦軸に処理時間を示す。
【００９５】
図６、7に示す実験結果より、この発明の手法ではbの値を大きくすれば物体の認識率が高くなるが、大きくしすぎると認識率が低下し、処理時間も増加することが分かった。これは、bによって特徴ベクトルの変動に対処することができるが、bを増加しすぎると誤投票が多くなるため認識率が低下し、さらに投票回数が増加することが、処理時間の増加に繋がっていると考えられる。
【００９６】
図８にbを変化させたときの認識率を比較した例を示す。ここで用いたパラメータは、a=8, d=28で最も認識率の高かったc=8, t=2を用いた。また結果より、この発明の手法の方が野口らの手法と比べて、一枚の認識にかかる処理時間は多くかかるものの、物体の認識率では若干良い結果を得るものがあった。認識処理に時間がかかる原因として、野口らの手法では、一つの検索質問ベクトルqに対してハッシュ表を一度検索するだけで投票を行えるが、この発明の手法では、2n個のブルーム・フィルタを検索しなければ投票を行えないことが挙げられる。
【００９７】
次に、この発明の手法のパラメータaを変化させたものと、野口らの手法とで、パラメータcを変化させたとき、認識処理に必要なメモリ量を比較した結果をdごとに図９と図１０に示す。横軸にパラメータc、縦軸にメモリ量を示す。
【００９８】
図９と図１０に示す実験結果より、この発明の手法の方が野口らの手法と比べて、かなり空間効率がよいことが分かる。これは、野口らの手法ではメモリ量の大部分がハッシュ表のエントリに用いられていることに起因している。
上記の結果より、この発明の手法は野口らの手法と比べ、認識にかかる処理時間は多くかかるものの、認識率とメモリ量の点で優れているといえる。
【００９９】
最後に、この発明の手法において、tを変化させたときの物体の認識率を比較した。実験では、a=8, d=28のときに最も認識率の高かったパラメータb=3, c=8を用いた。図１１に実験結果を示す。結果より、tの値を大きくすれば物体の認識率が高くなるが、大きくしすぎると認識率が低下することが分かった。これは、tを増加させることで誤投票が増加してしまうことが原因として挙げられる。
5-3. 実験2：5000個の2次元物体を用いた実験
【０１００】
実験1と同様に、5.1節で述べたパラメータ以外に、パラメータa, tも変化させて物体の認識率を調べた。パラメータの変動幅は、実験1と同じである。また野口らの手法に用いるハッシュ表のサイズも実験1と同じサイズとした。d=24のときの結果を図１２、d=28のときの結果を図１３に示す。横軸に認識率、縦軸に一枚の認識にかかった平均の処理時間を示す。結果より、実験1と同様に、bを大きくすれば認識率が増加するが、さらに大きくすると認識率が低下し、処理時間も長くなることが分かった。
【０１０１】
図１４にbを変化させたときの認識率を比較した例を示す。ここで用いたパラメータは、a=8, d=28で最も認識率の高かったc=2, t=3を用いた。また実験結果より、処理時間ではこの発明の手法は野口らの手法と比べて、特にd=24のとき大きく劣ることが分かったが、認識率ではd=28のとき、若干良い結果を得るものがあった。d=24で認識率、処理時間共に野口らの手法に比べて劣る原因として、検索処理時に同じビットベクトルに変換される割合が大きくなるため、投票処理時に他の物体との得票数差が開かないことが挙げられる。
【０１０２】
次に、この発明の手法のパラメータaを変化させたものと、野口らの手法とで、パラメータcを変化させたとき、認識処理に必要なメモリ量を比較した結果をdごとに図１５と図１６に示す。横軸にパラメータc、縦軸にメモリ量を示す。
【０１０３】
図１５と図１６に示す実験結果より、d=24の結果において、a=24, 32のとき野口らの手法より認識に必要なメモリ量が多くなってしまったが、d=28のとき、野口らの手法に比べてこの発明の手法はかなり空間効率がよいことが分かった。d=24、a=24, 32のときにメモリ量が多くなった原因として、この発明の手法では、一つの特徴ベクトルに対して、n個のブルーム・フィルタに登録しなればならないことが原因として挙げられる。
【０１０４】
さらに、同程度のメモリが使える状況での比較を行った。メモリ量がほぼ同じであるこの発明の手法のd=28、a=8,16と、比較手法1として野口らの手法のd=24と、比較手法2として、野口らの手法においてd=28、Hsize = 224-1としたときの手法の3手法に着目する。これらの3手法でb,cの値を変化させたときの認識率と処理時間の違いを調べた。但しこの発明の手法では、tの値もt=1, 2, 3, 4, 5と変化させて実験を行った。
【０１０５】
図１７に、その実験結果を示す。横軸に認識率、縦軸に1枚の認識にかかった平均の処理時間を示す。実験結果より、使用するメモリ量をほぼ同じにしたとき、この発明の手法は、比較手法と比べて処理時間は多くかかるものの、パラメータによって認識率をかなり向上させることができた。このことからこの発明の手法は、効率よく特徴ベクトル表現を圧縮できているといえる。
【０１０６】
最後に、この発明の手法において、tを変化させたときの物体の認識率を比較した。実験では、a=8, d=28のときに最も認識率の高かったパラメータb=6, c=2を用いた。図１８にその実験結果を示す。実験1と同様に、tを大きくすれば認識率が増加するが、さらに大きくすると認識率が低下してしまうことが分かった。
5-4. 誤り検出の効果
【０１０７】
最後に、前述の誤り検出ブルーミア・フィルタの有効性を調べるために、bおよびtを変化させ、誤り検出ブルーミア・フィルタを用いる場合と用いない場合の認識率を比較した。bを変化させた場合の実験およびtを変化させた場合の実験で用いたパラメータは、それぞれ最も認識率の高いものを用いた。
まず、55物体を対象とした実験について述べる。用いたパラメータを表1に、bに関する実験結果を図１９に、tに関する実験結果を図２０にそれぞれ示す。
【０１０８】
図１９と図２０に示す実験結果より、b,t共に大きくすれば認識率が増加するが、大きくしすぎると認識率が低下してしまうことが分かった。これは、値を増加させると、誤投票も増加してしまうことが原因であると考えられる。また実験結果より、特にtを変化させた場合、誤り検出ブルーミア・フィルタを用いた場合、誤った投票を検出することで誤投票が抑えられるため、用いない場合より高い認識率を得ることができると分かった。このため、誤り検出ブルーミア・フィルタを用いることは有効であるといえる。
【０１０９】
次に２次元物体の結果について述べる。ただし、この実験については、物体数を5000ではなく1万とした。用いたパラメータを表2に、bに関する実験結果を図２１に、tに関する実験結果を図２２にそれぞれ示す。55物体の結果と同様に、共に大きくすれば認識率が増加するが、大きくしすぎると認識率が低下してしまうことが分かった。また、誤り検出ブルーミア・フィルタを用いた場合、用いない場合より高い認識率を得ることができると分かった。このため、誤り検出ブルーミア・フィルタを用いることは有効であるといえる。
【０１１０】
前述した実施の形態の他にも、この発明について種々の変形例があり得る。それらの変形例は、この発明の範囲に属さないと解されるべきものではない。この発明には、請求の範囲と均等の意味および前記範囲内でのすべての変形とが含まれるべきである。
【産業上の利用可能性】
【０１１１】
特定物体を認識する手法に、局所特徴量を表す特徴ベクトルの最近傍探索を用いる手法がある。この手法では、特徴ベクトル間の距離を計算するために、特徴ベクトルそのものを記録する必要があるが、一般に物体認識に関与する特徴ベクトルの数は膨大であるため、莫大なメモリ量が必要となる。この問題を解決するため、特徴ベクトルの距離を計算しない枠組みが必要となる。【０１１２】
この発明は、特徴ベクトルの距離を計算しないメモリ量削減手法として、ハッシュ表などと比べてはるかに空間効率の良いブルーミア・フィルタを用いる手法を提案した。また、平面および3次元特定物体の認識実験を通して、ハッシュ表を用いる手法とこの発明を比較し、その有効性を検証した。
【符号の説明】
【０１１３】
１    画像データベース
【図２】
2010143573.tif 000011
【図８】
2010143573.tif 000012
【図９】
2010143573.tif 000013
【図１０】
2010143573.tif 000014
【図１１】
2010143573.tif 000015
【図１４】
2010143573.tif 000016
【図１５】
2010143573.tif 000017
【図１６】
2010143573.tif 000018
【図１８】
2010143573.tif 000019
【図１９】
2010143573.tif 000020
【図２０】
2010143573.tif 000021
【図２１】
2010143573.tif 000022
【図２２】
2010143573.tif 000023
【図２３】
2010143573.tif 000024
【図１】
2010143573.tif 000025
【図３】
2010143573.tif 000026
【図４】
2010143573.tif 000027
【図５】
2010143573.tif 000028
【図６】
2010143573.tif 000029
【図７】
2010143573.tif 000030
【図１２】
2010143573.tif 000031
【図１３】
2010143573.tif 000032
【図１７】
2010143573.tif 000033
【図２４】
2010143573.tif 000034
【国際調査報告】
2010143573.tif 000035
2010143573.tif 000036
2010143573.tif 000037