(57)【要約】【課題】データを量子化するために、メモリ使用量を最小限に抑えつつ、量子化誤差を小さくしたコードブックを作成するプログラム、装置及び方法を提供する。【解決手段】訓練ベクトルの集合ＸをK1個の１次クラスタの群に分類し、K1個の代表ベクトルSkからなる１次コードブックを作成する１次コードブック作成手段と、訓練ベクトルxの集合Ｘを１次コードブックを用いて各代表ベクトルSkに割り当て、代表ベクトルSk∈S毎に、訓練ベクトルxと間の残差ベクトル（＝x-Sk）の集合から確率モデルを生成する確率モデル生成手段と、K1個の確率モデルを、M個の２次クラスタの群に分類し、２次クラスタ毎に、割り当てられた代表ベクトルSkに基づく残差ベクトルの集合から２次コードブックTmを作成し、合計M個の２次コードブックT1〜Mを作成する２次コードブック作成手段とを有する。【選択図】図１
2018055618.tif 000002
【特許請求の範囲】
【請求項１】
対象データを、階層的な複数のコードブックを用いて量子化するようにコンピュータを機能させるプログラムであって、
前記コードブックを生成するために、
訓練ベクトルの集合ＸをK1個の１次クラスタの群に分類し、１次クラスタ毎に代表ベクトルSkを導出し、K1個の代表ベクトルS＝{S1, …, SK1}からなる１次コードブックを作成する１次コードブック作成手段と、
訓練ベクトルxの集合Ｘを１次コードブックを用いて各代表ベクトルSkに割り当て、代表ベクトルSk∈S毎に、訓練ベクトルxと間の残差ベクトル（＝x-Sk）の集合から確率モデルを生成する確率モデル生成手段と、
１次コードブックのK1個の確率モデルを、２次コードブック数M個の２次クラスタの群に分類し、１次コードブックの代表ベクトルSkを２次クラスタに割り当て、２次クラスタ毎に、割り当てられた代表ベクトルSkに基づく残差ベクトルの集合から２次コードブックTmを作成し、合計M個の２次コードブックT1〜Mを作成する２次コードブック作成手段と
としてコンピュータを機能させることを特徴とするプログラム。
【請求項２】
前記２次コードブック作成手段について、
１次コードブックのK1個の確率モデルを、M個の２次クラスタに初期的に割り当てる初期手段と、
２次クラスタ毎に、当該２次クラスタに含まれる複数の確率モデルから代表確率モデルを生成する生成手段と、
確率モデルを、最も距離が短くなる代表確率モデルに改めて割り当てて、２次クラスタを更新する割当手段と
を有し、生成手段及び割当手段を所定条件まで繰り返す
ようにコンピュータを機能させることを特徴とする請求項１に記載のプログラム。
【請求項３】
前記２次コードブック作成手段は、kをM個としたk-meansアルゴリズムよって実行される
ようにコンピュータを機能させることを特徴とする請求項２に記載のプログラム。
【請求項４】
前記２次コードブック作成手段について、
１次コードブックの中で、ランダムに選択した代表ベクトルSkの確率モデルを代表確率モデルとして割り当てる選択手段と、
選択されていない代表ベクトルSkの確率モデルの中で、最も距離が短くなる代表確率モデルとの距離に比例する確率で、確率モデルを次の代表確率モデルとして新たに選択する次選択手段と
を有し、次選択手段を代表確率モデルがM個となるまで繰り返す
ようにコンピュータを機能させることを特徴とする請求項１に記載のプログラム。
【請求項５】
前記２次コードブック作成手段は、kをM個としたk-means++アルゴリズムによって実行される
ようにコンピュータを機能させることを特徴とする請求項４に記載のプログラム。
【請求項６】
確率モデルと代表確率モデルとの間の距離は、ＫＬ(Kullback Leibler)ダイバージェンスによって算出される
ようにコンピュータを機能させることを特徴とする請求項２から５のいずれか１項に記載のプログラム。
【請求項７】
前記確率モデルは、多変量ガウス分布、多変量ベルヌーイ分布、多項分布、ディリクレ分布、又は、多変量ラプラス分布のいずれかである
ようにコンピュータを機能させることを特徴とする請求項１から６のいずれか１項に記載のプログラム
【請求項８】
前記訓練ベクトルの集合は、入力された訓練コンテンツにおける局所特徴の集合であり、
対象データxについて、１次コードブックのいずれかの代表ベクトルSkに量子化し、
対象データxと量子化された代表ベクトルSkとの残差ベクトルを、代表ベクトルSkが割り当てられた２次コードブックのいずれかの代表ベクトルTに量子化する
量子化手段としてコンピュータを機能させることを特徴とする請求項１から７のいずれか１項に記載のプログラム。
【請求項９】
入力されたリファレンスコンテンツ及びクエリコンテンツそれぞれについて、局所特徴の集合を抽出する局所特徴抽出手段と、
前記リファレンスコンテンツの各局所特徴について、前記コードブックを用いて量子化された量子化識別子iに対応する転置インデックスのリストに、前記局所特徴の情報を記憶する転置インデックス記憶手段と、
クエリコンテンツの各局所特徴について、前記コードブックを用いて量子化された量子化識別子iに対応する転置インデックスのリストを探索し、リストに記憶されている局所特徴に対応したリファレンスコンテンツに対しスコアを累積し、累積されたスコアを類似度としてリファレンスコンテンツを検索する検索手段と
して更にコンピュータを機能させ、クエリコンテンツに類似したリファレンスコンテンツを検索する
ことを特徴とする請求項１から８のいずれか１項に記載のプログラム。
【請求項１０】
対象データを、階層的な複数のコードブックを用いて量子化する量子化装置であって、
前記コードブックを生成するために、
訓練ベクトルの集合ＸをK1個の１次クラスタの群に分類し、１次クラスタ毎に代表ベクトルSkを導出し、K1個の代表ベクトルS＝{S1, …, SK1}からなる１次コードブックを作成する１次コードブック作成手段と、
訓練ベクトルxの集合Ｘを１次コードブックを用いて各代表ベクトルSkに割り当て、代表ベクトルSk∈S毎に、訓練ベクトルxと間の残差ベクトル（＝x-Sk）の集合から確率モデルを生成する確率モデル生成手段と、
１次コードブックのK1個の確率モデルを、２次コードブック数M個の２次クラスタの群に分類し、１次コードブックの代表ベクトルSkを２次クラスタに割り当て、２次クラスタ毎に、割り当てられた代表ベクトルSkに基づく残差ベクトルの集合から２次コードブックTmを作成し、合計M個の２次コードブックT1〜Mを作成する２次コードブック作成手段と
を有することを特徴とする量子化装置。
【請求項１１】
対象データを、階層的な複数のコードブックを用いて量子化する装置のコードブック作成方法であって、
前記装置は、
前記コードブックを生成するために、
訓練ベクトルの集合ＸをK1個の１次クラスタの群に分類し、１次クラスタ毎に代表ベクトルSkを導出し、K1個の代表ベクトルS＝{S1, …, SK1}からなる１次コードブックを作成する第１のステップと、
訓練ベクトルxの集合Ｘを１次コードブックを用いて各代表ベクトルSkに割り当て、代表ベクトルSk∈S毎に、訓練ベクトルxと間の残差ベクトル（＝x-Sk）の集合から確率モデルを生成する第２のステップと、
１次コードブックのK1個の確率モデルを、２次コードブック数M個の２次クラスタの群に分類し、１次コードブックの代表ベクトルSkを２次クラスタに割り当て、２次クラスタ毎に、割り当てられた代表ベクトルSkに基づく残差ベクトルの集合から２次コードブックTmを作成し、合計M個の２次コードブックT1〜Mを作成する第３のステップと
を実行することを特徴とする装置のコードブック作成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを量子化する際に用いられるコードブックの技術に関する。コードブックは、リファレンスコンテンツ（検索対象のコンテンツ）の集合から、クエリコンテンツ（検索キーとなるコンテンツ）に類似したリファレンスコンテンツを検索する技術に適用される。
【背景技術】
【０００２】
近年、局所特徴点に基づいた画像認識や検索技術が注目されている（例えば特許文献１参照）。物体認識に用いる局所特徴抽出アルゴリズムとしては、回転やスケールの変化にロバストな、例えばＳＩＦＴ(Scale-Invariant Feature Transform)やＳＵＲＦ(Speeded Up Robust Features)がある。例えば、ＳＩＦＴの場合、１枚の画像からは１２８次元の局所特徴の集合が抽出される。ＳＩＦＴとは、スケールスペースを用いて特徴的な局所領域を解析し、そのスケール変化及び回転に不変となる局所特徴を記述する技術である。一方で、ＳＵＲＦの場合、ＳＩＦＴよりも高速処理が可能であって、１枚の画像から６４次元の局所特徴の集合が抽出される。ＳＩＦＴは、処理コストが高く且つリアルタイムマッチングが困難であるのに対し、ＳＵＲＦは、積分画像を利用することによって処理を高速化している。
【０００３】
また、スマートフォンやタブレットのようなモバイル端末が普及する中で、コンテンツ検索処理に対して、更なる省メモリ化及び高速マッチング化が要求されてきている。特に、拡張現実感（ＡＲ(Augmented Reality)）の用途における画像認識の技術分野によれば、リアルタイムに処理するべく、ＳＩＦＴやＳＵＲＦよりも更に高速にコンテンツを検索することが要求される。そのために、局所特徴抽出アルゴリズムとして、ＯＲＢ（例えば非特許文献２参照）やＦＲＥＡＫ（例えば非特許文献３参照）が注目されている。これは、ＳＩＦＴやＳＵＲＦよりも局所特徴を高速に抽出できると共に、局所特徴をコンパクトにすることができる。
【０００４】
局所特徴点に基づいた画像認識では、特徴点同士のマッチングの処理コストが高いため、ＢｏＶＷ(Bag-of-Visual Words)と称されるフレームワークが広く利用されている（例えば非特許文献１又は４参照）。ＢｏＶＷでは、予め大量の訓練ベクトルの集合から、ＶＷ(Visual Words)と称される代表的なベクトルの集合（以下では「コードブック」と称する）を、k-means等のクラスタリングアルゴリズムを用いて生成する。そして、各局所特徴は、最も類似する代表ベクトルに量子化される。同じ代表ベクトルに量子化された局所特徴はマッチしたと判断され、異なる代表ベクトルに量子化された局所特徴はマッチしないと判断される。これによって、データベース中の局所特徴の数に寄らずに、一定時間でのマッチングが可能となる。
【０００５】
また、クエリコンテンツとリファレンスコンテンツとの間の幾何的な整合性を、局所特徴点間のマッチングの結果を用いて検証することによって、高精度な検索結果を得る技術もある（例えば非特許文献５参照）。一般に、ＢｏＶＷにおける代表ベクトルの数を多くすることによって、認識精度が向上することが知られている。しかしながら、代表ベクトルの数が大きくなるに従って、量子化に必要となる時間が増加し、更に代表ベクトルを保存するためのメモリ使用量が増加するという問題がある。
【０００６】
これに対し、木構造を用いて量子化することによって、量子化の処理時間を短くする技術もある（例えば非特許文献４又は５参照）。
また、残差量子化を用いることによって、メモリ使用量を最小限に抑えつつ、大量の代表ベクトルによって量子化する技術もある（例えば非特許文献６参照）。
更に、残差ベクトルの集合をクラスタリングし、残差ベクトルの分布に応じた残差量子化によって、量子化誤差を低減する技術もある（例えば特許文献３参照）。
【０００７】
尚、残差ベクトルの集合に対して、主成分分析によってモデル化する技術もある（例えば非特許文献７参照）。この技術によれば、主成分分析の後、直積量子化の際に、量子化誤差を低減するための回転行列を算出するものである。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１５−２０１１２３号公報
【特許文献２】特開２０１４−１４６２０７号公報
【特許文献３】特開２０１３−０１１９２０号公報
【非特許文献】
【０００９】
【非特許文献１】J. Sivic et al., "Video Google: A Text Retrieval Approach to Object Matching in Videos," in Proc. ICCV, 2003.
【非特許文献２】E. Rublee, V. Rabaud, K. Konolige, and G. Bradski, "ORB: An efficient alternative to SIFT or SURF," in Proc. ICCV, 2011.
【非特許文献３】A. Alahi, R. Ortiz, and P. Vandergheynst, "FREAK: Fast Retina Keypoint," in Proc. CVPR, 2012.
【非特許文献４】D. Galvez-Lopez and J. D. Tardos, "Real-time loop detection with bags of binary words," in Proc. of IROS, 2011, pp. 51?58.
【非特許文献５】J. Philbin, O. Chum, M. Isard, J. Sivic, and A. Zisserman, "Object retrieval with large vocabularies and fast spatial matching," in Proc. of CVPR, 2007, pp. 1-8.
【非特許文献６】A. Babenko and V. Lempitsky, "Efficient Indexing of Billion-Scale datasets of deep descriptors," in Proc. of CVPR, 2016.
【非特許文献７】Y. Kalantidis, Y. Avrithis, "Locally Optimized Product Quantization for Approximate Nearest Neighbor Search," CVPR'14.
【発明の概要】
【発明が解決しようとする課題】
【００１０】
非特許文献５に記載の技術によれば、全てのコードブックを保存する必要があり、メモリ使用量が大きくなってしまうという問題がある。
また、非特許文献６に記載の技術によれば、異なる分布を持つ残差ベクトルを、同一のコードブックで量子化しているために、量子化誤差が大きくなってしまうという問題がある。
更に、特許文献３の記載の技術によれば、残差ベクトルの集合のクラスタリングの際に、訓練ベクトルを全て実際に量子化する必要があり、代表ベクトルの数を大きくすることができないという問題がある。
【００１１】
そこで、本発明は、データを量子化するために、メモリ使用量を最小限に抑えつつ、量子化誤差を小さくしたコードブックを作成することができるプログラム、装置及び方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明によれば、対象データを、階層的な複数のコードブックを用いて量子化するようにコンピュータを機能させるプログラムであって、
コードブックを生成するために、
訓練ベクトルの集合ＸをK1個の１次クラスタの群に分類し、１次クラスタ毎に代表ベクトルSkを導出し、K1個の代表ベクトルS＝{S1, …, SK1}からなる１次コードブックを作成する１次コードブック作成手段と、
訓練ベクトルxの集合Ｘを１次コードブックを用いて各代表ベクトルSkに割り当て、代表ベクトルSk∈S毎に、訓練ベクトルxと間の残差ベクトル（＝x-Sk）の集合から確率モデルを生成する確率モデル生成手段と、
１次コードブックのK1個の確率モデルを、２次コードブック数M個の２次クラスタの群に分類し、１次コードブックの代表ベクトルSkを２次クラスタに割り当て、２次クラスタ毎に、割り当てられた代表ベクトルSkに基づく残差ベクトルの集合から２次コードブックTmを作成し、合計M個の２次コードブックT1〜Mを作成する２次コードブック作成手段と
としてコンピュータを機能させることを特徴とする。
【００１３】
本発明のプログラムにおける他の実施形態によれば、
２次コードブック作成手段について、
１次コードブックのK1個の確率モデルを、M個の２次クラスタに初期的に割り当てる初期手段と、
２次クラスタ毎に、当該２次クラスタに含まれる複数の確率モデルから代表確率モデルを生成する生成手段と、
確率モデルを、最も距離が短くなる代表確率モデルに改めて割り当てて、２次クラスタを更新する割当手段と
を有し、生成手段及び割当手段を所定条件まで繰り返す
ようにコンピュータを機能させることも好ましい。
【００１４】
本発明のプログラムにおける他の実施形態によれば、
２次コードブック作成手段は、kをM個としたk-meansアルゴリズムよって実行される
ようにコンピュータを機能させることも好ましい。
【００１５】
本発明のプログラムにおける他の実施形態によれば、
２次コードブック作成手段について、
１次コードブックの中で、ランダムに選択した代表ベクトルSkの確率モデルを代表確率モデルとして割り当てる選択手段と、
選択されていない代表ベクトルSkの確率モデルの中で、最も距離が短くなる代表確率モデルとの距離に比例する確率で、確率モデルを次の代表確率モデルとして新たに選択する次選択手段と
を有し、次選択手段を代表確率モデルがM個となるまで繰り返す
ようにコンピュータを機能させることも好ましい。
【００１６】
本発明のプログラムにおける他の実施形態によれば、
２次コードブック作成手段は、kをM個としたk-means++アルゴリズムによって実行される
ようにコンピュータを機能させることも好ましい。
【００１７】
本発明のプログラムにおける他の実施形態によれば、
確率モデルと代表確率モデルとの間の距離は、ＫＬ(Kullback Leibler)ダイバージェンスによって算出される
ようにコンピュータを機能させることも好ましい。
【００１８】
本発明のプログラムにおける他の実施形態によれば、
確率モデルは、多変量ガウス分布、多変量ベルヌーイ分布、多項分布、ディリクレ分布、又は、多変量ラプラス分布のいずれかである
ようにコンピュータを機能させることも好ましい。
【００１９】
本発明のプログラムにおける他の実施形態によれば、
訓練ベクトルの集合は、入力された訓練コンテンツにおける局所特徴の集合であり、
対象データxについて、１次コードブックのいずれかの代表ベクトルSkに量子化し、
対象データxと量子化された代表ベクトルSkとの残差ベクトルを、代表ベクトルSkが割り当てられた２次コードブックのいずれかの代表ベクトルTに量子化する
量子化手段としてコンピュータを機能させることも好ましい。
【００２０】
本発明のプログラムにおける他の実施形態によれば、
入力されたリファレンスコンテンツ及びクエリコンテンツそれぞれについて、局所特徴の集合を抽出する局所特徴抽出手段と、
リファレンスコンテンツの各局所特徴について、コードブックを用いて量子化された量子化識別子iに対応する転置インデックスのリストに、局所特徴の情報を記憶する転置インデックス記憶手段と、
クエリコンテンツの各局所特徴について、コードブックを用いて量子化された量子化識別子iに対応する転置インデックスのリストを探索し、リストに記憶されている局所特徴に対応したリファレンスコンテンツに対しスコアを累積し、累積されたスコアを類似度としてリファレンスコンテンツを検索する検索手段と
して更にコンピュータを機能させ、クエリコンテンツに類似したリファレンスコンテンツを検索することも好ましい。
【００２１】
本発明によれば、対象データを、階層的な複数のコードブックを用いて量子化する量子化装置であって、
コードブックを生成するために、
訓練ベクトルの集合ＸをK1個の１次クラスタの群に分類し、１次クラスタ毎に代表ベクトルSkを導出し、K1個の代表ベクトルS＝{S1, …, SK1}からなる１次コードブックを作成する１次コードブック作成手段と、
訓練ベクトルxの集合Ｘを１次コードブックを用いて各代表ベクトルSkに割り当て、代表ベクトルSk∈S毎に、訓練ベクトルxと間の残差ベクトル（＝x-Sk）の集合から確率モデルを生成する確率モデル生成手段と、
１次コードブックのK1個の確率モデルを、２次コードブック数M個の２次クラスタの群に分類し、１次コードブックの代表ベクトルSkを２次クラスタに割り当て、２次クラスタ毎に、割り当てられた代表ベクトルSkに基づく残差ベクトルの集合から２次コードブックTmを作成し、合計M個の２次コードブックT1〜Mを作成する２次コードブック作成手段と
を有することを特徴とする。
【００２２】
本発明によれば、対象データを、階層的な複数のコードブックを用いて量子化する装置のコードブック作成方法であって、
装置は、
コードブックを生成するために、
訓練ベクトルの集合ＸをK1個の１次クラスタの群に分類し、１次クラスタ毎に代表ベクトルSkを導出し、K1個の代表ベクトルS＝{S1, …, SK1}からなる１次コードブックを作成する第１のステップと、
訓練ベクトルxの集合Ｘを１次コードブックを用いて各代表ベクトルSkに割り当て、代表ベクトルSk∈S毎に、訓練ベクトルxと間の残差ベクトル（＝x-Sk）の集合から確率モデルを生成する第２のステップと、
１次コードブックのK1個の確率モデルを、２次コードブック数M個の２次クラスタの群に分類し、１次コードブックの代表ベクトルSkを２次クラスタに割り当て、２次クラスタ毎に、割り当てられた代表ベクトルSkに基づく残差ベクトルの集合から２次コードブックTmを作成し、合計M個の２次コードブックT1〜Mを作成する第３のステップと
を実行することを特徴とする。
【発明の効果】
【００２３】
本発明のプログラム、装置及び方法によれば、データを量子化するために、メモリ使用量を最小限に抑えつつ、量子化誤差を小さくしたコードブックを作成することができる。即ち、メモリ量と検索精度とのトレードオフを考慮した小さいコードブックを用いて、リファレンスとなる高次元の局所特徴の集合から、クエリとなる局所特徴に類似した局所特徴を検索することができる。
【図面の簡単な説明】
【００２４】
【図１】本発明のコードブックを用いた量子化処理を表す概念図である。
【図２】本発明におけるコンテンツの検索装置の機能構成図である。
【図３】本発明の検索装置における訓練フェーズの説明図である。
【図４】代表ベクトルと残差ベクトルとを表す説明図である。
【図５】確率モデルの概念図である。
【図６】本発明の２次コードブック作成部のフローチャートである。
【図７】本発明の検索部によって参照される転置インデックスを表す説明図である。
【図８】従来技術におけるコードブックを表す概念図である。
【図９】本発明におけるコードブックを表す概念図である。
【図１０】本発明における確率モデルのクラスタリングを表す概念図である。
【発明を実施するための形態】
【００２５】
以下、本発明の実施の形態について、図面を用いて詳細に説明する。
【００２６】
検索装置は、リファレンスコンテンツの集合から、クエリコンテンツに類似したリファレンスコンテンツを検索する。その際に実行される量子化処理では、階層的な複数のコードブックが用いられる。
【００２７】
検索装置には、訓練コンテンツ、リファレンスコンテンツ及びクエリコンテンツが入力される。ここで、コンテンツは、例えば画像であってもよい。本発明の検索装置は、多数の訓練画像から１次コードブック及び２次コードブックを作成し、クエリ画像に類似するリファレンス画像を検索する。
【００２８】
図１は、本発明のコードブックを用いた量子化処理を表す概念図である。
【００２９】
図１によれば、クエリコンテンツ及びリファレンスコンテンツから導出された局所特徴と、訓練コンテンツから導出された階層型のコードブックとのマッチングを表している。
コードブックは、訓練コンテンツから予め作成されたものであり、１次コードブックと複数の２次コードブックとによって階層化されている。
【００３０】
訓練ベクトルの集合Ｘ＝｛x1,x2,・・・,xN｝から、１次コードブックSと、M個の２次コードブックT1,T2,・・・,TMとが作成される。また、１次コードブックSの量子化結果となる代表ベクトルに、次に、どの２次コードブックで量子化すべきかを対応付けた割当情報m[k]も作成する。
訓練ベクトルxは、D次元ベクトルであり、n番目の訓練ベクトルをxnと表す。
１次コードブックSは、K1個の代表ベクトルS＝｛S1,S2,・・・,SK1｝を記憶し、各代表ベクトルもD次元のベクトルで表現される。
M個の２次コードブックの集合T1,T2,・・・,TMはそれぞれ、K2個の代表ベクトルTm1,Tm2,・・・,TmK2を記憶し、各代表ベクトルもD次元のベクトルで表現される。
割り当て情報m[k]（k=1,2,・・・,K1）は、K1個の要素を持つ配列である。これは、１次コードブックでk番目の代表ベクトルに割り当てられたベクトルは、更にm[k]番目の２次コードブックで量子化されることを規定している。
【００３１】
クエリコンテンツの局所特徴と、リファレンスコンテンツの局所特徴とはそれぞれ、コードブックの中で、その距離が最も近い代表ベクトルに紐付けられる。そして、２次コードブックの同一の代表ベクトルに紐付けられた局所特徴同士は、マッチングしたと認識される。
【００３２】
図２は、本発明におけるコンテンツの検索装置の機能構成図である。
【００３３】
図２によれば、検索装置１は、１次コードブック記憶部１０１と、２次コードブック記憶部１０２と、局所特徴抽出部１１と、１次コードブック作成部１２１と、確率モデル生成部１２２と、２次コードブック作成部１２３と、量子化部１３と、転置インデックス記憶部１４と、検索部１５とを有する。これら機能構成部は、装置に搭載されたコンピュータを機能させるプログラムを実行することによって実現される。また、これら機能構成部の処理の流れは、装置のコードブック作成方法及び量子化方法としても理解できる。
【００３４】
前述した機能構成部は、＜訓練フェーズ＞、＜インデックス構築フェーズ＞、＜検索フェーズ＞の各フェーズに応じて機能する。
【００３５】
＜訓練フェーズ＞
訓練フェーズによれば、検索装置１は、多数の訓練コンテンツを入力し、訓練コンテンツ毎に局所特徴の集合を抽出する。そして、局所特徴の集合を用いて１次コードブック及び２次コードブックを作成する。
訓練フェーズでは、局所特徴抽出部１１と、１次コードブック作成部１２１と、確率モデル生成部１２２と、２次コードブック作成部１２３とが機能する。
【００３６】
＜インデックス構築フェーズ＞
インデックス構築フェーズによれば、検索装置１は、多数のリファレンスコンテンツ（検索対象のコンテンツ）を入力し、リファレンスコンテンツ毎に局所特徴の集合を抽出する。そして、局所特徴毎に、１次コードブック及び２次コードブックを用いて量子化する。その量子化対象データは、検索用の転置インデックスとして記憶される。
インデックス構築フェーズでは、局所特徴抽出部１１と、量子化部１３と、転置インデックス記憶部１４とが機能する。
【００３７】
＜検索フェーズ＞
検索フェーズによれば、検索装置１は、クエリコンテンツ（検索キーのコンテンツ）を入力し、クエリコンテンツから局所特徴の集合を抽出する。次に、局所特徴毎に、１次コードブック及び２次コードブックを用いて量子化する。その量子化対象データから、転置インデックスを参照して、最も類似するリファレンスコンテンツを検索する。
検索フェーズでは、局所特徴抽出部１１と、量子化部１３と、検索部１５とが機能する。
【００３８】
以下では、検索装置１の機能構成部毎に、詳述する。
【００３９】
［局所特徴抽出部１１］＜訓練・インデックス構築・検索フェーズ＞
局所特徴抽出部１１は、入力された訓練コンテンツ、リファレンスコンテンツ及びクエリコンテンツそれぞれについて、任意の局所特徴抽出アルゴリズムによって局所特徴の集合を抽出する。局所特徴抽出アルゴリズムとしては、回転やスケールの変化にロバストな、従来技術における例えばＳＩＦＴやＳＵＲＦ、ＯＲＢ、ＦＲＥＡＫが用いられる。
訓練フェーズの場合、抽出された局所特徴の集合は、１次コードブック作成部１２１へ出力される。
インデックス構築フェーズ及び検索フェーズの場合、抽出された局所特徴の集合は、量子化部１３へ出力される。
【００４０】
図３は、本発明の検索装置における訓練フェーズの説明図である。
【００４１】
［１次コードブック作成部１２１］＜訓練フェーズ＞
１次コードブック作成部１２１は、訓練ベクトルの集合Ｘ＝｛x1,x2,・・・,xN｝をK1個の１次クラスタの群に分類し、１次クラスタ毎に代表ベクトルSkを導出する。
【００４２】
具体的には、k-meansアルゴリズムを用いて、以下のステップを実行する。
（Ｓ１）訓練ベクトルを、K1個の１次クラスタに初期的に割り当てる。
（Ｓ２）１次クラスタ毎に、当該１次クラスタに含まれる複数の訓練ベクトルから代表ベクトルSkを生成する。
（Ｓ３）訓練ベクトルを、最も距離が短くなる代表ベクトルSkに改めて割り当てて、１次クラスタを更新する。
そして、Ｓ２及びＳ３を、所定条件まで繰り返す。
【００４３】
局所特徴が、バイナリ特徴ベクトルである場合、代表ベクトルを２値化する。具体的には、i番目のクラスタの代表ベクトルが、(vi1,vi2,・・・,viK2)であるとすると、各次元の値が0.5以上であれば"1"、そうでなければ"0"とする。
Sij＝1 if vij≧0.5
＝0 otherwise
【００４４】
そして、１次コードブック作成部１２１は、K1個の代表ベクトルS＝｛S1,S2,・・・,SK1｝からなる１次コードブックを作成する。作成された１次コードブックは、１次コードブック記憶部１０１で記憶される。
【００４５】
［確率モデル生成部１２２］＜訓練フェーズ＞
確率モデル生成部１２２は、訓練ベクトルxの集合Ｘ＝｛x1,x2,・・・,xN｝を１次コードブックを用いて各代表ベクトルSkに割り当てる。そして、代表ベクトルSk∈S毎に、訓練ベクトルxと間の残差ベクトル（＝x−Sk）の集合から確率モデルを生成する。
【００４６】
図４は、代表ベクトルと残差ベクトルとを表す説明図である。
図４によれば、クラスタ毎に、代表ベクトルと訓練ベクトルとの間の残差ベクトルが表されている。
【００４７】
図５は、確率モデルの概念図である。
【００４８】
確率モデルは、残差ベクトルをパラメトリックにモデル化したものである。図５によれば、確率モデルは、多変量に対する分布頻度で表されている。
局所特徴が実数特徴ベクトルである場合、確率モデルとして「多変量ガウス分布」が採用され、局所特徴がバイナリ特徴ベクトルである場合、「多変量ベルヌーイ分布」が採用される。このように、本発明によれば、実数特徴ベクトル及びバイナリ特徴ベクトルの両方に適用することができる。
勿論、確率モデルは、これらに限られず、局所特徴に応じて、多項分布、ディリクレ分布、又は、多変量ラプラス分布を採用してもよい。
【００４９】
「多変量ガウス分布」（局所特徴が実数特徴ベクトルである場合）
k番目の１次コードブックの代表ベクトルに対する残差ベクトルを、平均0、分散共分散行列Σkの多変量ガウス分布によってモデル化する。ここで、分散共分散行列Σkは、以下のように表される。
Σk＝ＵkＵkT
Ｕk：Skに割り当てられた訓練ベクトルxiの残差ベクトルxi−Skの集合
【００５０】
「多変量ベルヌーイ分布」（局所特徴がバイナリ特徴ベクトルである場合）
k番目の１次コードブックの代表ベクトルに対する残差ベクトルを、多変量ベルヌーイ分布によって、以下のようにモデル化する。
ｐk(ｘ)＝Πd=1Dμkdxd（１−μkd）1-xd
μkd：k番目の１次コードブックに紐づく残差ベクトルのd次元目のビットが、
"1"となる確率
μkdは、１次コードブックに紐づく残差ベクトルのd次元のビットの平均値によって算出される。
尚、バイナリ特徴ベクトルの場合、残差ベクトルは、入力ベクトルと代表ベクトルとのXORによって算出される。
【００５１】
ベルヌーイ分布とは、確率pで1を、確率q＝1-pで0をとる離散確率分布をいう。ベルヌーイ分布に従う確率変数Xについて、平均p、分散pq＝p(1-p)となる。「多変量ベルヌーイ分布」は、バイナリ特徴ベクトルxtが生成される確率p(xt|λ)を表現する。
【００５２】
［２次コードブック作成部１２３］
２次コードブック作成部１２３は、１次コードブックのK1個の確率モデルを、２次コードブック数M個の２次クラスタの群に分類し、１次コードブックの代表ベクトルSkを２次クラスタに割り当てる。即ち、ベクトルxの残差ベクトルx−Skの分布が類似している代表ベクトルが、同じクラスタになるように分類する。
【００５３】
そして、２次コードブック作成部１２３は、２次クラスタ毎に、割り当てられた代表ベクトルSkに基づく残差ベクトルの集合から２次コードブックTmを作成し、合計M個の２次コードブックT1〜Mを作成する。作成されたM個の２次コードブックT1〜Mは、２次コードブック記憶部１０２によって記憶される。
【００５４】
尚、２次コードブック数Mを小さくするほど、残差ベクトルの分布が、クラスタ毎に大きく異なるために、残差ベクトルを量子化する際の量子化誤差が増加し、結果的に近似最近傍検索の精度が悪くなる。一方で、２次コードブック数Mを大きくするほど、コードブックの情報量（メモリ量）が非常に大きくなる。
【００５５】
２次コードブック作成部１２３における２次クラスタの分類方法として、例えば＜k-meansアルゴリズム＞＜k-means++アルゴリズム＞の２つがある。
【００５６】
図６は、本発明の検索装置における２次コードブック作成部のフローチャートである。
【００５７】
＜k-meansアルゴリズム＞
図６（ａ）によれば、２次コードブック作成部１２３は、kをM個としたk-meansアルゴリズムよって実行される。
【００５８】
具体的には、以下のステップを実行する。
（Ｓ６１１：初期ステップ）K1個の確率モデルを、M個の２次クラスタに初期的に割り当てる。具体的には、K1個の確率モデルの割当情報m[k]（k=1, …, K1）を初期化する。これは、k番目の１次コードブックの代表ベクトルがm[k]番目のクラスタに属していることを表す。この初期化は、m[k]のkにランダムに、1〜Mのラベルを割り当てるものであってもよい。
【００５９】
（Ｓ６１２：生成ステップ）２次クラスタ毎に、当該２次クラスタに含まれる複数の確率モデルから代表確率モデルを生成する。
【００６０】
実数特徴ベクトルに対しては、確率モデルの「多変量ガウス分布」から、代表多変量ガウス分布を生成する。m番目の代表多変量ガウス分布の平均を0、分散共分散行列をΣ'mとすると、Σ'mは、以下のように定義される。
Σ'm＝１／βm  Σm[k]=mαkΣk
βm＝Σm[k]=mαk
【００６１】
バイナリ特徴ベクトルに対しては、確率モデルの「多変量ベルヌーイ分布」から、代表多変量ベルヌーイ分布を生成する。m番目の代表多変量ベルヌーイ分布パラメータをμ'm1,・・・,μ'mDとすると、μ'mdは、以下のように定義される。
μ'md＝１／βm  Σm[k]=mαkμkd
βm＝Σm[k]=mαk
【００６２】
αkは、k番目の１次コードブックの代表ベクトルに割り当てられた訓練ベクトルの数である。m番目のクラスタに割り当てられた確率モデルについて、割り当てられた訓練ベクトルの数を重みとして、重み付き平均によって算出することに相当する。
βmは、正規化項である。
【００６３】
（Ｓ６１３：割当ステップ）K1個の確率モデルを、最も距離が短くなる代表確率モデルに改めて割当てて、２次クラスタを更新する。
【００６４】
更新されたM個の代表確率モデルについて、確率モデルの割当情報m[k]（k＝1,2,・・・,K1）を更新する。これは、各確率モデルについて、最も類似した代表確率モデルを算出する。この確率モデル間の距離には、ＫＬ(Kullback Leibler)ダイバージェンスを用いることが好ましい。ＫＬダイバージェンスとは、相対エントロピーとも称され、分布と分布と間の差の大きさを導出するものである。
【００６５】
実数特徴ベクトルに対しては、k番目の確率モデルｆkと、m番目の代表確率モデルｇmとの間のＫＬダイバージェンスＤKLは、以下のように算出される。
ＤKL(ｆk||ｇm)＝1/2［log(|Σ'm|/|Σk|)＋tr(Σ'm-1Σk)−d］
【００６６】
バイナリ特徴ベクトルに対しては、k番目の確率モデルと、m番目の代表確率モデルとの間のＫＬダイバージェンスは、以下のように算出される。
Σd=1D（μkdlog(μkd/μ'md)＋(1−μkd)log((1−μkd)/(1−μ'md))）
【００６７】
そして、Ｓ６１２及びＳ６１３を、所定条件まで繰り返す。所定条件としては、例えばＫＬダイバージェンスが所定値に収束するまでであってもよいし、所定回数まで単に繰り返すものであってもよい。
【００６８】
＜k-means++アルゴリズム＞
図６（ｂ）によれば、２次コードブック作成部１２３は、kをM個としたk-means++アルゴリズムによって実行される。
【００６９】
具体的には、以下のステップを実行する。
（Ｓ６２１：選択ステップ）１次コードブックの中で、ランダムに選択した代表ベクトルSkの確率モデルを代表確率モデルとして割り当てる。
【００７０】
（Ｓ６２２：次選択ステップ）選択されていない代表ベクトルSkの確率モデルの中で、最も距離が短くなる代表確率モデルとの距離に比例する確率で、確率モデルを次の代表確率モデルとして新たに選択する。
ここで、「比例する確率」とは、全ての代表確率モデルとの距離が遠い確率モデルほど、高い確率で選択されることを意味する。
【００７１】
そして、Ｓ６２２の次選択ステップを、代表確率モデルがM個となるまで繰り返す。
尚、実数特徴ベクトル及びバイナリ特徴ベクトルに基づく確率モデル間の距離の算出は、前述したk-meansアルゴリズムと同様に、ＫＬダイバージェンスを用いる。
【００７２】
［量子化部１３］＜インデックス構築・検索フェーズ＞
量子化部１３は、リファレンスコンテンツの局所特徴と、クエリコンテンツの局所特徴とを、対象データxとして入力する。量子化部１３は、対象データxについて、１次コードブックのいずれかの代表ベクトルSkに量子化する。ここで、量子化結果として、１次コードブックの代表ベクトル識別子k'が得られる。次に、対象データxと量子化された代表ベクトルSkとの残差ベクトルを、代表ベクトルSkに割り当てられた２次コードブックのいずれかの代表ベクトルTで量子化する。ここで、量子化結果として、２次コードブックの代表ベクトル識別子l’が得られる。
【００７３】
実数特徴ベクトルについては、k'及びl'は、理想的には、量子化誤差||x−(Sk'＋Tm[k']l')||2を最小化するものである。
バイナリ特徴ベクトルについては、k'及びl'は、理想的には、量子化誤差popcnt（x XOR Sk’ XOR Tm[k’]l’）を最小化するものである。
しかしながら、このk'及びl'を厳密にすると計算量が大きくなってしまう。
そのために、本発明によれば、k'の解を、１次コードブックの代表ベクトルのうちxのr近傍に限定する。
即ち、実数特徴ベクトルについては、量子化時にはまず、S1,S2,・・・,SK1から、xとの２乗距離が小さくなる上位r件のk'1,k'2,・・・,k'rを算出し、それらの残差x−Sk'1, x−Sk'2,・・・, x−Sk'rを更に２次コードブックで量子化することによって、k'及びl'を算出する。
また、バイナリ特徴ベクトルについては、量子化時にはまず、S1,S2,・・・,SK1から、xとのハミング距離が小さくなる上位r件のk'1,k'2,・・・,k'rを算出し、それらの残差x XOR Sk'1,Sk'2,・・・,Sk'rを更に２次コードブックで量子化することによって、k'及びl'を算出する。
【００７４】
量子化部１３について、リファレンスコンテンツの局所特徴から得られた量子化結果は、転置インデックス記憶部１４へ出力する。
また、クエリコンテンツの局所特徴から得られた量子化結果は、検索部１５へ出力する。
【００７５】
［転置インデックス記憶部１４］
転置インデックス記憶部１４は、リファレンスコンテンツの各局所特徴について、コードブックを用いて量子化された量子化識別子iに対応する転置インデックスのリストに、局所特徴の情報を記憶する。「転置インデックス」とは、リファレンス局所特徴を、識別値に置き換えたものであり、代表識別値n毎に作成されたリファレンス局所特徴のリストである。
【００７６】
図７は、本発明の検索部によって参照される転置インデックスを表す説明図である。
【００７７】
リファレンスベクトルのメタデータには、何が割り当てられてもよい。例えば、リファレンスベクトルが画像検索における画像特徴量である場合、リファレンスベクトルが所属する画像識別値を割り当てる。メタデータ（リファレンスベクトルの付加情報）には、例えば、コンテンツＩＤ（識別子、例えば画像ＩＤ）、局所特徴の座標、局所特徴のスケール、局所特徴の角度、局所特徴ベクトル等を保存してもよい。
【００７８】
［検索部１５］＜検索フェーズ＞
検索部１５は、クエリコンテンツに類似したリファレンスコンテンツを検索する。検索部１５は、クエリコンテンツの各局所特徴について、コードブックを用いて量子化された量子化識別子iに対応する転置インデックスのリストを探索する。次に、リストに記憶されている局所特徴に対応したリファレンスコンテンツに対しスコアを累積する。そして、累積されたスコアを類似度としてリファレンスコンテンツを検索する。
【００７９】
ここで、クエリコンテンツの局所特徴とリファレンスコンテンツの局所特徴との距離を算出し、その距離に応じてスコアを算出することができる。例えば、クエリコンテンツの局所特徴とリファレンスの局所特徴との２乗距離をdとすると、スコアとしてexp(-d/a)を利用することができる。ここで、aは調整可能なパラメータである。また、ＩＤＦ(Inverse Document Frequency)を利用して、各量子化される識別子の出現頻度に応じてスコアを修正してもよい。
【００８０】
以上、詳細に説明したように、本発明のプログラム、装置及び方法によれば、データを量子化するために、メモリ使用量を最小限に抑えつつ、量子化誤差を小さくしたコードブックを作成することができる。即ち、メモリ量と検索精度とのトレードオフを考慮した小さいコードブックを用いて、リファレンスとなる高次元の局所特徴の集合から、クエリとなる局所特徴に類似した局所特徴を検索することができる。
【００８１】
図８は、従来技術におけるコードブックを表す概念図である。
図９は、本発明におけるコードブックを表す概念図である。
図１０は、本発明における確率モデルのクラスタリングを表す概念図である。
【００８２】
図８のような従来技術によれば、残差ベクトルの集合を確率モデルでモデル化していないために、１次コードブックにおける残差ベクトル（量子化誤差）の集合から直接的に、２次コードブックを作成している。
これに対し、図９のような本発明によれば、残差ベクトルの集合を確率モデルでパラメトリックにモデル化することによって、確率モデルの類似度に応じた２次コードブックを作成している。
特に、図１０（ａ）及び図１０（ｂ）を繰り返すことによって、残差ベクトルの確率モデルを最適化することできる。
即ち、本発明によれば、確率モデルの類似度に応じた２次コードブックを作成することによって、全ての１次クラスタに対する２次コードブックを作成しない。
また、１次コーブックの量子化結果に応じて２次コードブックを切り替えることによって、量子化誤差を最小化することができる。
更に、１次コードブックの代表ベクトルの数が大量であっても、残差ベクトルの確率モデルに応じた２次コードブックで残差量子化することができるので、現実的な時間で量子化することができる。
【００８３】
前述した本発明の種々の実施形態について、本発明の技術思想及び見地の範囲の種々の変更、修正及び省略は、当業者によれば容易に行うことができる。前述の説明はあくまで例であって、何ら制約しようとするものではない。本発明は、特許請求の範囲及びその均等物として限定するものにのみ制約される。
【符号の説明】
【００８４】
１  検索装置
１０１  １次コードブック記憶部
１０２  ２次コードブック記憶部
１１  局所特徴抽出部
１２１  １次コードブック作成部
１２２    確率モデル生成部
１２３  ２次コードブック作成部
１３  量子化部
１４  転置インデックス記憶部
１５  検索部
【図１】
2018055618.tif 000003
【図２】
2018055618.tif 000004
【図３】
2018055618.tif 000005
【図４】
2018055618.tif 000006
【図５】
2018055618.tif 000007
【図６】
2018055618.tif 000008
【図７】
2018055618.tif 000009
【図８】
2018055618.tif 000010
【図９】
2018055618.tif 000011
【図１０】
2018055618.tif 000012