(57)【特許請求の範囲】
【請求項１】
コンテンツ記憶部に記憶されているコンテンツの中から、クエリ用コンテンツと類似のコンテンツを検索するコンテンツ検索装置であって、
コンテンツの特徴ベクトルを生成する特徴ベクトル生成部と、
前記特徴ベクトルを線形変換するための線形変換行列であって、線形変換して得られる特徴ベクトルの分散共分散行列を単位行列に比例させる線形変換行列を生成する線形変換行列生成部と、
前記線形変換行列生成部にて生成された線形変換行列を記憶する線形変換行列記憶部と、
コンテンツの特徴ベクトルを、前記線形変換行列を用いて線形変換し、線形変換して得られた特徴ベクトルをビットコード化関数を用いてビットコード化することにより、コンテンツの特徴ビットコードを生成する特徴ビットコード生成部と、
前記特徴ビットコード生成部にて、前記各コンテンツの特徴ベクトルから生成した各コンテンツの特徴ビットコードを記憶した特徴ビットコード記憶部と、
前記クエリ用コンテンツを入力する入力部と、
前記特徴ベクトル生成部および前記特徴ビットコード生成部にて前記クエリ用コンテンツから生成された特徴ビットコードと、前記特徴ビットコード記憶部に記憶された各コンテンツの特徴ビットコードとのハミング距離に基づき、前記コンテンツ記憶部に記憶されているコンテンツの中から、前記クエリ用コンテンツに類似するコンテンツを検索する検索部と、
前記検索部にて検索されたコンテンツまたは当該コンテンツに対応付けられたデータを出力する出力部と、
を備えたコンテンツ検索装置。
【請求項２】
前記コンテンツ記憶部には、相互に類似する２つのコンテンツからなるコンテンツのペアが１つ以上記憶され、
前記線形変換行列生成部は、前記線形変換行列を用いて線形変換して得られる前記ペアの特徴ベクトル相互のユークリッド距離を、前記コンテンツ記憶部に含まれるすべてのペアについて求め、その合計を最小化させる前記線形変換行列を生成することを特徴とする請求項１に記載のコンテンツ検索装置。
【請求項３】
前記線形変換行列は、疎行列であることを特徴とする請求項１または請求項２に記載のコンテンツ検索装置。
【請求項４】
前記線形変換行列生成部は、前記線形変換行列の各要素の絶対値の総和を最小化させる前記線形変換行列を生成することを特徴とする請求項１から３のいずれかに記載のコンテンツ検索装置。
【請求項５】
前記コンテンツ記憶部には、相互に類似する２つのコンテンツからなるコンテンツのペアが１つ以上記憶され、
前記線形変換行列生成部は、前記コンテンツ記憶部に含まれるすべてのペアについて、各ペアを構成するコンテンツの特徴ベクトルの差分を要素とする行列ΔＰ、求めるべき線形変換行列Ｗ、および、０以上１以下の設定値λを用いて、
【数１９】
0005563016.tif 000020
で定義されるコスト関数ｆ（ｗ）を、各コンテンツのすべての前記特徴ベクトルを要素とする行列Ｑを用いた条件式
【数２０】
0005563016.tif 000021
の下で最小化するように、前記線形変換行列Ｗを生成することを特徴とする請求項１から４のいずれかに記載のコンテンツ検索装置。
【請求項６】
コンテンツ記憶部に記憶されているコンテンツの中から、クエリ用コンテンツと類似のコンテンツを検索する、コンテンツ検索装置が実行するコンテンツ検索方法であって、
前記コンテンツ記憶部に記憶された各コンテンツの特徴ベクトルを生成するステップと、
前記特徴ベクトルを線形変換するための線形変換行列であって、線形変換して得られた特徴ベクトルの分散共分散行列を単位行列に比例させる線形変換行列を生成して線形変換行列記憶部に記憶するステップと、
前記各コンテンツの特徴ベクトルを、前記線形変換行列記憶部から取得した前記線形変換行列を用いて線形変換し、線形変換して得られた特徴ベクトルをビットコード化関数を用いてビットコード化することにより、前記コンテンツ記憶部に記憶された各コンテンツの特徴ビットコードを生成して特徴ビットコード記憶部に記憶するステップと、
前記クエリ用コンテンツを取得するステップと、
前記クエリ用コンテンツの特徴ベクトルを生成するステップと、
前記クエリ用コンテンツの特徴ベクトルを、前記線形変換行列記憶部から取得した前記線形変換行列を用いて線形変換し、線形変換して得られた特徴ベクトルをビットコード化関数を用いてビットコード化することにより、前記クエリ用コンテンツの特徴ビットコードを生成するステップと、
前記特徴ビットコード記憶部から取得した前記各コンテンツの特徴ビットコードと、前記クエリ用コンテンツの特徴ビットコードとのハミング距離に基づき、前記コンテンツ記憶部に記憶されているコンテンツの中から、前記クエリ用コンテンツに類似するコンテンツを検索するステップと、
前記コンテンツ記憶部に記憶されているコンテンツの中から前記クエリ用コンテンツに類似するコンテンツとして検索されたコンテンツまたは当該コンテンツに対応付けられたデータを出力するステップと、
を備えたコンテンツ検索方法。
【請求項７】
コンテンツ記憶部に記憶されているコンテンツの中から、クエリ用コンテンツと類似のコンテンツを検索するためのプログラムであって、コンピュータに、
前記コンテンツ記憶部に記憶された各コンテンツの特徴ベクトルを生成するステップと、
前記特徴ベクトルを線形変換するための線形変換行列であって、線形変換して得られた特徴ベクトルの分散共分散行列を単位行列に比例させる線形変換行列を生成して線形変換行列記憶部に記憶するステップと、
前記各コンテンツの特徴ベクトルを、前記線形変換行列記憶部から取得した前記線形変換行列を用いて線形変換し、線形変換して得られた特徴ベクトルをビットコード化関数を用いてビットコード化することにより、前記コンテンツ記憶部に記憶された各コンテンツの特徴ビットコードを生成して特徴ビットコード記憶部に記憶するステップと、
前記クエリ用コンテンツを取得するステップと、
前記クエリ用コンテンツの特徴ベクトルを生成するステップと、
前記クエリ用コンテンツの特徴ベクトルを、前記線形変換行列記憶部から取得した前記線形変換行列を用いて線形変換し、線形変換して得られた特徴ベクトルをビットコード化関数を用いてビットコード化することにより、前記クエリ用コンテンツの特徴ビットコードを生成するステップと、
前記特徴ビットコード記憶部から取得した前記各コンテンツの特徴ビットコードと、前記クエリ用コンテンツの特徴ビットコードとのハミング距離に基づき、前記コンテンツ記憶部に記憶されているコンテンツの中から、前記クエリ用コンテンツに類似するコンテンツを検索するステップと、
前記コンテンツ記憶部に記憶されているコンテンツの中から前記クエリ用コンテンツに類似するコンテンツとして検索されたコンテンツまたは当該コンテンツに対応付けられたデータを出力するステップと、
を実行させるプログラム。
【請求項８】
コンテンツ記憶部に記憶されているコンテンツの中から、クエリ用コンテンツに類似するコンテンツを検索する検索装置に用いられ、前記コンテンツと前記クエリ用コンテンツとを特徴ビットコード間のハミング距離によって比較できるように、前記コンテンツと前記クエリ用コンテンツの特徴ビットコードを生成する特徴ビットコード生成装置であって、
前記コンテンツ記憶部からコンテンツを読み出し、前記コンテンツの特徴ベクトルを生成する特徴ベクトル生成部と、
前記特徴ベクトルを線形変換するための線形変換行列であって、線形変換して得られる特徴ベクトルの分散共分散行列を単位行列に比例させる線形変換行列を生成する線形変換行列生成部と、
前記線形変換行列生成部にて生成された線形変換行列を記憶する線形変換行列記憶部と、
コンテンツの特徴ベクトルを前記線形変換行列を用いて線形変換し、線形変換して得られた特徴ベクトルをビットコード化関数を用いてビットコード化することにより、コンテンツの特徴ビットコードを生成する特徴ビットコード生成部と、
を備えた特徴ビットコード生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンテンツ記憶部に記憶されているコンテンツの中から、クエリ用コンテンツと類似のコンテンツを検索する、情報検索装置、情報検索方法及びプログラムに関するものである。
【背景技術】
【０００２】
従来、画像検索や文章検索など、多くの情報検索の分野で、特徴ベクトルが用いられている。特徴ベクトルとは、画像や文章などのデジタルコンテンツから抽出された特徴量を、多次元のベクトルで表現したものであり、もとのデジタルコンテンツを識別するための指標として機能する。例えば、画像コンテンツＡの特徴ベクトルと、画像コンテンツＢの特徴ベクトルとの距離に基づき、それらの画像の被写体が同一であるか否かを識別することが可能である。同様に、データベース内のコンテンツの各々の特徴ベクトルとの距離に基づいて、データベースを検索し、クエリ用コンテンツと類似のコンテンツを抽出することが可能である。
【０００３】
他方、近年では、計算機が扱う情報が大規模化し、一度に大量かつ高次元の特徴ベクトルを扱うことも多くなっている。これに伴い、特徴ベクトル間の距離を算出する際の計算負荷が増大するという問題が生じている。例えば、Ｌ２ノルムの二乗を、特徴ベクトル間距離の指標として用いる場合、Ｌ２ノルムの二乗は次の式により求められる。
【数１】
0005563016.tif 000002
したがって、特徴ベクトルの次元数がＤであれば、Ｄ回の減算、Ｄ回の乗算、Ｄ−１回の加算が必要となる。多くの場合、特徴ベクトルは、浮動小数で表現されるため、仮にＤが大きくなくても、高い計算負荷がかかるところ、特徴ベクトルが高次元となれば、さらに計算負荷が増大する。しかも、情報検索の場合、データベースに大量のデータがあれば、その分、距離計算も大量に行わなければならない。そのため、ｋ−近傍探索などの高速アルゴリズムを用いても、かかる距離計算の負荷が、高速処理の妨げとなる。
【０００４】
また、特徴ベクトルを４バイトの単精度実数で表現する場合、Ｄ次元の特徴ベクトルは、４Ｄバイトのメモリを消費する。特徴ベクトルが高次元になるほど、このメモリ消費量は大きくなる。したがって、大量の特徴ベクトルを扱う場合、計算負荷の問題に加えて、扱う特徴ベクトルの数だけメモリを消費することになるという問題が生じる。メインメモリでは足りない場合、ハードディスクなどの二次領域に特徴ベクトルを格納しなければならないが、二次領域を用いると、計算機の処理速度が著しく低下するという問題もある。
【０００５】
そこで、近年では、特徴量をベクトルで表現せず、数十から数百個程度の０と１の列からなるバイナリビットコードで表現するという手法が提案されている。これらの手法による特徴ベクトルのバイナリビットコードへの変換は、特徴ベクトル空間における特徴ベクトル間の距離が、ビットコード変換後の空間におけるビットコード間のハミング距離と強く相関するように行われるため、ビットコード間の類似度を、ハミング距離に基づき判断することができる。ビットコード間のハミング距離は、２つのバイナリコードのＸＯＲを計算し、「１」となるビットの数を数えるだけで得られるので、きわめて高速な類似度計算が可能となる。また、上述のように、４Ｄバイト必要であったメモリを、ｄ／８バイト（ｄはビットコードのビット数）にまで削減でき、これにより、数十から数百分の１にまでメモリを節約することができる。
【０００６】
かかるビットコード変換の代表的手法として、「ｒａｎｄｏｍ  ｐｒｏｊｅｃｔｉｏｎ」、「ｖｅｒｙ  ｓｐａｒｓｅ  ｒａｎｄｏｍ  ｐｒｏｊｅｃｔｉｏｎ」、「Ｓｐｅｃｔｒａｌ  Ｈａｓｈｉｎｇ」の３つを挙げることができる（非特許文献１から３を参照）。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】Ｍｉｃｈｅｌ  Ｘ．  Ｇｏｅｍａｎｓ，  ａｖｉｄ  Ｐ．  Ｗｉｌｌｉａｍｓｏｎ，  “Ｉｍｐｒｏｖｅｄ  ａｐｐｒｏｘｉｍａｔｉｏｎ  ａｌｇｏｒｉｔｈｍｓ  ｆｏｒ  ｍａｘｉｍｕｍ  ｃｕｔ  ａｎｄ  ｓａｔｉｓｆｉａｂｉｌｉｔｙ  ｐｒｏｂｌｅｍｓ  ｕｓｉｎｇ  ｓｅｍｉｄｅｆｉｎｉｔｅ  ｐｒｏｇｒａｍｍｉｎｇ”，  Ｊｏｕｒｎａｌ  ｏｆ  ｔｈｅ  ＡＣＭ  Ｖｏｌｕｍｅ  ４２  ，    Ｉｓｓｕｅ  ６    （Ｎｏｖｅｍｂｅｒ  １９９５）  Ｐａｇｅｓ：  １１１５  −  １１４５
【非特許文献２】Ｐｉｎｇ  Ｌｉ，  Ｔｒｅｖｏｒ  Ｊ．  Ｈａｓｔｉｅ，  Ｋｅｎｎｅｔｈ  Ｗ．  Ｃｈｕｒｃｈ，  “ｖｅｒｙ  ｓｐａｒｓｅ  ｒａｎｄｏｍ  ｐｒｏｊｅｃｔｉｏｎｓ”，  ＫＤＤ  ‘０６  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  １２ｔｈ  ＡＣＭ  ＳＩＧＫＤＤ  ｉｎｔｅｒｎａｔｉｏｎａｌ  ｃｏｎｆｅｒｅｎｃｅ  ｏｎ Ｋｎｏｗｌｅｄｇｅ  ｄｉｓｃｏｖｅｒｙ  ａｎｄ  ｄａｔａ  ｍｉｎｉｎｇ  （２００６）
【非特許文献３】Ｙ．  Ｗｅｉｓｓ，  Ａ．  Ｔｏｒｒａｌｂａ，  Ｒ．  Ｆｅｒｇｕｓ．，  “Ｓｐｅｃｔｒａｌ  Ｈａｓｈｉｎｇ”，Ａｄｖａｎｃｅｓ  ｉｎ  Ｎｅｕｒａｌ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｐｒｏｃｅｓｓｉｎｇ  Ｓｙｓｔｅｍｓ，  ２００８．
【０００８】
これらのビットコード化手法は、変換行列で射影された特徴ベクトルを、ハッシュ関数を用いてバイナリコード化することにより、特徴ビットコードを得る点で共通する。一般的に、ビットコード化アルゴリズムは、以下のように記述することができる。
【数２】
0005563016.tif 000003
ここで、ｘは特徴ベクトル（Ｄ次元）、Ｗは変換行列（Ｄ行ｄ列）、ｚは特徴ビットコード（ｄビット）、ｂはバイアス（ｄ次元）、ｆは非線形関数、ｓｇｎは、値が負なら−１、正なら１を返す関数である。なお、特徴ビットコードは、ｚ＝１のとき「１」、ｚ＝−１のとき「０」として記述される。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、これらの手法のうち、「ｒａｎｄｏｍ  ｐｒｏｊｅｃｔｉｏｎ」及び「Ｓｐｅｃｔｒａｌ  Ｈａｓｈｉｎｇ」においては、Ｄ次元のベクトルをｄビットの特徴ビットコードに変換する場合、ＷTｘの計算にはｄＤ回の乗算と、ｄ（Ｄ−１）回の加算が必要である。したがって、ビットコード間の類似度の計算を高速化することができても、その前段階の処理であるビットコード化にかなりの時間を要する。特に、次元数Ｄが大きいほどこの問題は顕著である。
【００１０】
また、上記のビットコード化手法のうち、「ｒａｎｄｏｍ  ｐｒｏｊｅｃｔｉｏｎ」、「ｖｅｒｙ  ｓｐａｒｓｅ  ｒａｎｄｏｍ  ｐｒｏｊｅｃｔｉｏｎ」においては、Ｗの要素が、特徴ベクトルの分布状況が考慮されずに、ランダムに決定される。したがって、ビットコードが十分な識別性を発揮することができるようにするためには、ビットコード長を長くする必要がある。ビットコードが長くなれば、その分、メモリの消費量が増大し、また、ハミング距離の計算に要する時間も増大することとなる。特徴ビットコードによるコンテンツ検索手法を、リアルタイム画像検索やリアルタイム音声認識に適用するには、これらの問題を解決する必要がある。
【００１１】
本発明は、上記の問題に鑑みてなされたものであり、高速かつ高精度のコンテンツ検索を行うことができる、コンテンツ検索装置を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明のコンテンツ検索装置は、コンテンツ記憶部に記憶されているコンテンツの中から、クエリ用コンテンツと類似のコンテンツを検索するコンテンツ検索装置であって、コンテンツの特徴ベクトルを生成する特徴ベクトル生成部と、前記特徴ベクトルを線形変換するための線形変換行列であって、線形変換して得られる特徴ベクトルの分散共分散行列を単位行列に比例させる線形変換行列を生成する線形変換行列生成部と、前記線形変換行列生成部にて生成された線形変換行列を記憶する線形変換行列記憶部と、コンテンツの特徴ベクトルを、前記線形変換行列を用いて線形変換し、線形変換して得られた特徴ベクトルをビットコード化関数を用いてビットコード化することにより、コンテンツの特徴ビットコードを生成する特徴ビットコード生成部と、前記特徴ビットコード生成部にて、前記各コンテンツの特徴ベクトルから生成した各コンテンツの特徴ビットコードを記憶した特徴ビットコード記憶部と、前記クエリ用コンテンツを入力する入力部と、前記特徴ベクトル生成部および前記特徴ビットコード生成部にて前記クエリ用コンテンツから生成された特徴ビットコードと、前記特徴ビットコード記憶部に記憶された各コンテンツの特徴ビットコードとのハミング距離に基づき、前記コンテンツ記憶部に記憶されているコンテンツの中から、前記クエリ用コンテンツに類似するコンテンツを検索する検索部と、前記検索部にて検索されたコンテンツまたは当該コンテンツに対応付けられたデータを出力する出力部とを備えた構成を有している。
【００１３】
このように、コンテンツ記憶部に記憶されるコンテンツの特徴ベクトルを線形変換して得られる特徴ベクトルの分散共分散行列を単位行列に比例させる線形変換行列を求める構成により、当該線形変換行列による線形変換後の特徴ベクトルをビットコード化する際の情報損失を少なくすることができ、得られるビットコードの長さも短くすることできる。したがって、クエリ用コンテンツの特徴ビットコードと、検索対象となるコンテンツ記憶部に記憶されるコンテンツの特徴ビットコードとのハミング距離に基づき、コンテンツ記憶部に記憶されるコンテンツから、クエリ用コンテンツに類似のコンテンツを抽出するコンテンツ検索装置において、ハミング距離の計算を高速に行うことができ、また、検索対象となるコンテンツ記憶部の特徴ベクトルの分布状況が反映された、高精度のコンテンツ検索を行うことができる。なお、コンテンツの特徴ビットコードの分散共分散行列が単位行列に比例する場合に特徴ビットコードの情報損失が少なくなるが、このような線形変換行列を求める計算処理の負荷は大きく、線形変換行列を高速に求めることは困難である。本発明では、ビットコードではなく、線形変換後の特徴ベクトルの分散共分散行列が単位行列に比例するようにすることで、線形変換行列を求める計算処理の負担を軽減しつつ、情報損失の少ないビットコード化を実現している。
【００１４】
また、本発明のコンテンツ検索装置において、前記コンテンツ記憶部には、相互に類似する２つのコンテンツからなるコンテンツのペアが１つ以上記憶され、前記線形変換行列生成部は、前記線形変換行列を用いて線形変換して得られる前記ペアの特徴ベクトル相互のユークリッド距離を、前記コンテンツ記憶部に含まれるすべてのペアについて求め、その合計を最小化させる前記線形変換行列を生成するものであってよい。
【００１５】
この構成により、類似すると判断されるべきペアのコンテンツの特徴ベクトルの線形変換後の特徴ベクトルのユークリッド距離を小さくでき、線形変換後の特徴ベクトルから生成される特徴ビットコード同士のハミング距離も小さくすることができる。したがって、類似すると判定されるべきコンテンツが類似すると判定される適切な特徴ビットコードが得られる。ここで、「相互に類似する２つのコンテンツ」とは、例えば、同じ被写体を撮影した画像など、本来、類似するコンテンツとして検索される関係にあるコンテンツである。なお、類似するコンテンツが適切に検索されるためには、類似するコンテンツ同士の特徴ビットコードのハミング距離が最小になるようにすべきであるが、このような線形変換行列を求める計算処理の負荷は大きく、線形変換行列を高速に求めることは困難である。本発明では、ビットコードではなく、線形変換後の特徴ベクトルのユークリッド距離を最小にする線形変換行列を求めることで、線形変換行列を求める計算処理の負担を軽減しつつ、情報損失の少ないビットコード化を実現している。
【００１６】
また、本発明のコンテンツ検索装置において、前記線形変換行列は、疎行列であってよい。
【００１７】
この構成によれば、クエリ用コンテンツの特徴ベクトルを線形変換する際の演算量を減少させることができ、クエリ用コンテンツの高速なビットコード化、ひいては、さらなる高速なコンテンツ検索が可能となる。
【００１８】
また、本発明のコンテンツ検索装置において、前記線形変換行列生成部は、前記線形変換行列の各要素の絶対値の総和を最小化させる前記線形変換行列を生成するものであってよい。
【００１９】
この構成によれば、生成される線形変換行列の要素の多くをゼロにすることができるので、クエリ用コンテンツの特徴ベクトルを線形変換する際の演算量を減少させることができ、クエリ用コンテンツの高速なビットコード化、ひいては、さらなる高速なコンテンツ検索が可能となる。
【００２０】
また、本発明のコンテンツ検索装置において、前記コンテンツ記憶部には、相互に類似する２つのコンテンツからなるコンテンツのペアが１つ以上記憶され、前記線形変換行列生成部は、前記コンテンツ記憶部に含まれるすべてのペアについて、各ペアを構成するコンテンツの特徴ベクトルの差分を要素とする行列ΔＰ、求めるべき線形変換行列Ｗ、および、０以上１以下の設定値λを用いて、
【数３】
0005563016.tif 000004
で定義されるコスト関数ｆ（ｗ）を、各コンテンツのすべての前記特徴ベクトルを要素とする行列Ｑを用いた条件式
【数４】
0005563016.tif 000005
の下で最小化するように、前記線形変換行列Ｗを生成するものであってよい。
【００２１】
この構成によれば、クエリ用コンテンツの特徴ベクトルを線形変換するための線形変換行列は、情報損失が少なく、また、類似コンテンツのペアから生成された、線形変換後の２つの特徴ベクトルのユークリッド距離の全ペア合計値が小さくなるように、かつ、クエリ用コンテンツの特徴ビットコードを生成する際の演算量が少なくなるように、生成されることになる。したがって、高速かつ高精度のコンテンツ検索が可能となる。
【００２２】
また、本発明のコンテンツ検索方法は、コンテンツ記憶部に記憶されているコンテンツの中から、クエリ用コンテンツと類似のコンテンツを検索するコンテンツ検索方法であって、前記コンテンツ記憶部に記憶された各コンテンツの特徴ベクトルを生成するステップと、前記特徴ベクトルを線形変換するための線形変換行列であって、線形変換して得られた特徴ベクトルの分散共分散行列を単位行列に比例させる線形変換行列を生成して線形変換行列記憶部に記憶するステップと、前記各コンテンツの特徴ベクトルを、前記線形変換行列記憶部から取得した前記線形変換行列を用いて線形変換し、線形変換して得られた特徴ベクトルをビットコード化関数を用いてビットコード化することにより、前記コンテンツ記憶部に記憶された各コンテンツの特徴ビットコードを生成して特徴ビットコード記憶部に記憶するステップと、前記クエリ用コンテンツを取得するステップと、前記クエリ用コンテンツの特徴ベクトルを生成するステップと、前記クエリ用コンテンツの特徴ベクトルを、前記線形変換行列記憶部から取得した前記線形変換行列を用いて線形変換し、線形変換して得られた特徴ベクトルをビットコード化関数を用いてビットコード化することにより、前記クエリ用コンテンツの特徴ビットコードを生成するステップと、前記特徴ビットコード記憶部から取得した前記各コンテンツの特徴ビットコードと、前記クエリ用コンテンツの特徴ビットコードとのハミング距離に基づき、前記コンテンツ記憶部に記憶されているコンテンツの中から、前記クエリ用コンテンツに類似するコンテンツを検索するステップと、前記検索部にて検索されたコンテンツまたは当該コンテンツに対応付けられたデータを出力するステップとを備える。
【００２３】
また、本発明のプログラムは、コンテンツ記憶部に記憶されているコンテンツの中から、クエリ用コンテンツと類似のコンテンツを検索するためのプログラムであって、コンピュータに、前記コンテンツ記憶部に記憶された各コンテンツの特徴ベクトルを生成するステップと、前記特徴ベクトルを線形変換するための線形変換行列であって、線形変換して得られた特徴ベクトルの分散共分散行列を単位行列に比例させる線形変換行列を生成して線形変換行列記憶部に記憶するステップと、前記各コンテンツの特徴ベクトルを、前記線形変換行列記憶部から取得した前記線形変換行列を用いて線形変換し、線形変換して得られた特徴ベクトルをビットコード化関数を用いてビットコード化することにより、前記コンテンツ記憶部に記憶された各コンテンツの特徴ビットコードを生成して特徴ビットコード記憶部に記憶するステップと、前記クエリ用コンテンツを取得するステップと、前記クエリ用コンテンツの特徴ベクトルを生成するステップと、前記クエリ用コンテンツの特徴ベクトルを、前記線形変換行列記憶部から取得した前記線形変換行列を用いて線形変換し、線形変換して得られた特徴ベクトルをビットコード化関数を用いてビットコード化することにより、前記クエリ用コンテンツの特徴ビットコードを生成するステップと、前記特徴ビットコード記憶部から取得した前記各コンテンツの特徴ビットコードと、前記クエリ用コンテンツの特徴ビットコードとのハミング距離に基づき、前記コンテンツ記憶部に記憶されているコンテンツの中から、前記クエリ用コンテンツに類似するコンテンツを検索するステップと、前記検索部にて検索されたコンテンツまたは当該コンテンツに対応付けられたデータを出力するステップとを実行させる。
【００２４】
また、本発明の特徴ビットコード生成装置は、コンテンツ記憶部に記憶されているコンテンツの中から、クエリ用コンテンツに類似するコンテンツを検索する検索装置に用いられ、前記コンテンツと前記クエリ用コンテンツとを特徴ビットコード間のハミング距離によって比較できるように、前記コンテンツと前記クエリ用コンテンツの特徴ビットコードを生成する特徴ビットコード生成装置であって、前記コンテンツ記憶部からコンテンツを読み出し、前記コンテンツの特徴ベクトルを生成する特徴ベクトル生成部と、前記特徴ベクトルを線形変換するための線形変換行列であって、線形変換して得られる特徴ベクトルの分散共分散行列を単位行列に比例させる線形変換行列を生成する線形変換行列生成部と、前記線形変換行列生成部にて生成された線形変換行列を記憶する線形変換行列記憶部と、コンテンツの特徴ベクトルを前記線形変換行列を用いて線形変換し、線形変換して得られた特徴ベクトルをビットコード化関数を用いてビットコード化することにより、コンテンツの特徴ビットコードを生成する特徴ビットコード生成部とを備えた構成を有している。
【００２５】
このように、コンテンツ記憶部に記憶されるコンテンツの特徴ベクトルを線形変換して得られる特徴ベクトルの分散共分散行列を単位行列に比例させる線形変換行列を求める構成により、当該線形変換行列による線形変換後の特徴ベクトルをビットコード化する際の情報損失を少なくすることができ、得られるビットコードの長さも短くすることできる。したがって、クエリ用コンテンツの特徴ビットコードと、検索対象となるコンテンツ記憶部に記憶されるコンテンツの特徴ビットコードとのハミング距離に基づき、コンテンツ記憶部に記憶されるコンテンツから、クエリ用コンテンツに類似のコンテンツを抽出するコンテンツ検索の際に、ハミング距離の計算を高速に行うことができ、また、検索対象となるコンテンツ記憶部の特徴ベクトルの分布状況が反映された、高精度のコンテンツ検索が可能となる。
【発明の効果】
【００２６】
本発明によれば、高速かつ高精度のコンテンツ検索を行うことができる。
【図面の簡単な説明】
【００２７】
【図１】本発明の実施の形態におけるコンテンツ検索装置の構成を示すブロック図
【図２】本発明の実施の形態におけるコンテンツ検索装置の動作を示すフロー図
【図３】本発明の実施の形態におけるコンテンツ検索装置の一適用例を説明する図
【図４】本発明の実施の形態における線形変換行列生成部の動作を示すフロー図
【図５】本発明の実施の形態における特徴ベクトルのマッチングペアの概念を説明する図
【図６】（ａ）コスト関数ｆ（ｙ）の構成要素ΔＰを説明する図、（ｂ）コスト関数ｆ（ｙ）の構成要素ＷTΔＰを説明する図、（ｃ）コスト関数ｆ（ｙ）の構成要素ＷTΔＰΔＰTＷを説明する図
【図７】本発明の実施の形態における線形変換行列Ｗを算出する処理の流れを示すフロー図
【発明を実施するための形態】
【００２８】
以下、本発明の実施の形態のコンテンツ検索装置について、図面を参照しながら説明する。
【００２９】
図１は、本発明の実施の形態のコンテンツ検索装置の構成を示す図である。図１において、コンテンツ検索装置１は、コンテンツ記憶部１１１、入力部１１２、特徴ベクトル生成部１１３、特徴ベクトル記憶部１１４、線形変換行列生成部１１５、線形変換行列記憶部１１６、特徴ビットコード生成部１１７、特徴ビットコード記憶部１１８、検索部１１９、出力部１２０を備えている。なお、コンテンツ検索装置１は、一つの装置から構成されてもよいし、図１に示す構成要素をネットワークに接続されたサーバに分担させてもよい。例えば、スマートフォン等の携帯端末が入力部１１２及び出力部１２０を備え、コンテンツ記憶部１１１を含むその他の構成をサーバ側に持たせてもよい。携帯端末からクエリ用のコンテンツを入力し、サーバ側に送信することで、サーバはコンテンツ記憶部１１１から類似するコンテンツを検索し、検索結果を携帯端末に送信することができる。
【００３０】
本実施の形態のコンテンツ検索装置１は、コンテンツ記憶部１１１に記憶されたコンテンツの中からクエリ用コンテンツに類似するコンテンツを検索するに際して、コンテンツ及びクエリ用コンテンツの特徴ベクトルをビットコード化した特徴ビットコードを用いる。このための構成として、コンテンツ記憶部１１１のコンテンツの特徴ビットコードを記憶した特徴ビットコード記憶部１１８と、クエリ用コンテンツから特徴ビットコードを生成する特徴ビットコード生成部１１７とを有している。また、コンテンツの特徴ベクトルから生成される特徴ビットコードの情報損失を少なくするために、特徴ビットコードの生成に先立って特徴ベクトルを線形変換するための線形変換行列を記憶した線形変換行列記憶部１１６を有している。この線形変換行列は、コンテンツ記憶部１１１に記憶されたコンテンツに対する特徴ビットコードの情報損失を小さくするために、コンテンツの特徴ベクトルに基づいて計算される。以下、コンテンツ検索装置１の各構成について詳しく説明する。
【００３１】
コンテンツ記憶部１１１は、画像、文章などのコンテンツを、各コンテンツを識別するためのＩＤデータが対応付けて記憶されている。各コンテンツには、メタデータが付加されて記憶されていてもよい。本実施の形態において、コンテンツ記憶部１１１に記憶されたコンテンツが、検索対象のコンテンツである。コンテンツ記憶部１１１に記憶されたコンテンツの中から、クエリ用コンテンツに類似するコンテンツが検索される。
【００３２】
コンテンツ記憶部１１１に記憶されるコンテンツは、線形変換行列を生成する際には、特徴ベクトル生成部１１３に出力される。一方、コンテンツ検索が行われる際には、検索部１１９にて特定されたコンテンツのＩＤデータに対応するコンテンツまたはそのコンテンツに付加されているメタデータが出力部１２０に出力される。
【００３３】
なお、コンテンツ記憶部１１１には、相互に類似する２つのコンテンツからなるコンテンツのペアが１つ以上記憶されている。コンテンツ検索装置１が、例えば、クエリとして入力された画像コンテンツと類似の画像コンテンツを検索するものである場合、このペアをなすコンテンツは、例えば、同じ被写体を異なる角度から撮影した画像コンテンツであってよい。このようなペアをなす２つのコンテンツは、相互に、一方のコンテンツがクエリ用コンテンツとして入力されれば、当該ペアをなす他方のコンテンツが、検索結果として特定されるべき関係にある。
【００３４】
入力部１１２は、コンテンツ記憶部１１１に記憶されるコンテンツの検索を行う際のクエリとなるクエリ用コンテンツの入力を受け付け、当該クエリ用コンテンツを特徴ベクトル生成部１１３に入力する。例えば、検索対象として、コンテンツ記憶部１１１に記憶されるコンテンツが画像コンテンツである場合、入力部１１２は、クエリ用コンテンツとして、Ｗｅｂページ上の画像コンテンツを入力してもよいし、コンテンツ検索装置１が撮像装置を備える場合には、撮像装置で生成された画像コンテンツを入力してもよい。
【００３５】
特徴ベクトル生成部１１３は、コンテンツ記憶部１１１または入力部１１２から取得したコンテンツの特徴ベクトルを生成する。特徴ベクトルは、コンテンツから抽出された特徴量をベクトルで表現したものである。コンテンツからの特徴量の抽出及び特徴ベクトルの生成は、種々の手法によることができる。特徴ベクトル生成部１１３は、コンテンツ記憶部１１１に記憶される各コンテンツの特徴ベクトルを生成して、特徴ベクトル記憶部１１４に出力する。また、入力部１１２から取得したクエリ用コンテンツの特徴ベクトルを生成して、特徴ビットコード生成部１１７に出力する。
【００３６】
特徴ベクトル記憶部１１４は、特徴ベクトル生成部１１３にて生成された、コンテンツ記憶部１１１に記憶されるコンテンツの特徴ベクトルを、各コンテンツのＩＤデータと対応付けて記憶する。特徴ベクトル記憶部１１４に記憶される特徴ベクトルは、線形変換行列生成部１１５及び特徴ビットコード生成部１１７に出力される。
【００３７】
線形変換行列生成部１１５は、特徴ベクトル記憶部１１４からコンテンツ記憶部１１１に記憶されるコンテンツの特徴ベクトルを取得し、当該特徴ベクトルを用いてコンテンツの特徴ベクトルを線形変換するための線形変換行列を生成する。生成された線形変換行列は、線形変換行列記憶部１１６に出力される。
【００３８】
線形変換行列記憶部１１６は、線形変換行列生成部１１５にて生成された線形変換行列を記憶する。線形変換行列記憶部１１６に記憶される線形変換行列は、クエリ用コンテンツの特徴ビットコードまたはコンテンツ記憶部１１１に記憶されるコンテンツの特徴ビットコードを生成する際、特徴ビットコード生成部１１７に出力される。
【００３９】
特徴ビットコード生成部１１７は、線形変換行列記憶部１１６から取得した線形変換行列を用いて、特徴ベクトル記憶部１１４から取得した検索対象のコンテンツの特徴ベクトルを線形変換する。そして、線形変換して得られたコンテンツの特徴ベクトルを、ビットコード化関数を用いてビットコード化することにより、コンテンツ記憶部１１１に記憶される各コンテンツの特徴ビットコードを生成する。生成された特徴ビットコードは、特徴ビットコード記憶部１１８に記憶される。特徴ビットコード記憶部１１８は、各コンテンツの特徴ビットコードを、コンテンツ記憶部１１１にて用いられるＩＤデータと対応付けて記憶する。
【００４０】
特徴ビットコード生成部１１７は、また、線形変換行列記憶部１１６から取得した線形変換行列を用いて、特徴ベクトル生成部１１３から取得したクエリ用コンテンツの特徴ベクトルを線形変換する。そして、線形変換して得られたクエリ用コンテンツの特徴ベクトルを、ビットコード化関数を用いてビットコード化することにより、クエリ用コンテンツの特徴ビットコードを生成する。生成されたクエリ用コンテンツの特徴ビットコードは、検索部１１９に出力される。
【００４１】
検索部１１９は、特徴ビットコード記憶部１１８から取得した各コンテンツの特徴ビットコードと、特徴ビットコード生成部１１７から取得したクエリ用コンテンツの特徴ビットコードとのハミング距離に基づき、クエリ用コンテンツに類似するコンテンツを検索する。より具体的には、クエリ用コンテンツと検索対象のコンテンツの特徴ビットコード同士のハミング距離を算出し、クエリ用コンテンツの特徴ビットコードとのハミング距離が最短である特徴ビットコードに対応するコンテンツのＩＤデータを特定する。
【００４２】
検索部１１９は、特定されたＩＤデータを出力部１２０に渡す。出力部１２０は、検索部１１９から渡されたＩＤデータに基づき、コンテンツ記憶部１１１から対応するコンテンツまたは当該コンテンツのメタデータを出力させる。例えば、出力部１２０が図示しないディスプレイに接続されている場合、ディスプレイに抽出されたコンテンツまたはメタデータを表示させる命令を出力する。
【００４３】
上述したコンテンツ検索装置１の各機能は、ＣＰＵが、ＲＯＭ等に書き込まれたプログラムに従って演算処理を実行することにより実現されてもよい。このようなプログラムも、本発明の範囲に含まれる。
【００４４】
次に、コンテンツ検索装置１の動作を、図２のフロー図を参照しながら説明する。
【００４５】
まず、特徴ベクトル生成部１１３が、コンテンツ記憶部１１１に記憶される各コンテンツの特徴ベクトルを生成し、特徴ベクトル記憶部１１４に記憶する（ステップＳ２１）。次に、線形変換行列生成部１１５が、ステップＳ２１で生成された、各コンテンツの特徴ベクトルを、特徴ベクトル記憶部１１４から取得して、線形変換行列を生成する（ステップＳ２２）。すなわち、本実施の形態において、線形変換行列生成部１１５は、コンテンツの特徴ベクトルを線形変換するための線形変換行列を、コンテンツ検索の対象となるデータベースであるコンテンツ記憶部１１１に記憶される各コンテンツの特徴ベクトルを用いた学習に基づき生成する。上述のように、コンテンツ記憶部１１１には、相互に類似の２つのコンテンツのペアが１つ以上記憶されており、ペアを構成するコンテンツは、相互に、検索結果としてマッチすべきものであるから、ここで行われる学習は、教師あり学習である。なお、線形変換行列生成部１１５の動作については、後に詳述する。
【００４６】
続いて、特徴ビットコード生成部１１７が、特徴ベクトル記憶部１１４に記憶されている、各コンテンツの特徴ベクトルと、線形変換行列記憶部１１６に記憶されている線形変換行列とを取得して、コンテンツ記憶部１１１に記憶される各コンテンツの特徴ビットコードを生成する（ステップＳ２３）。特徴ビットコードの生成は、以下の式（１）により、特徴ベクトルを特徴ビットコードに変換することにより行われる。
【数５】
0005563016.tif 000006
ここで、Ｗは、ステップＳ２２で生成された線形変換行列、ｘiは、ステップＳ２１で生成され、特徴ベクトル記憶部１１４から取得した、各コンテンツの特徴ベクトルである。また、ａｖｅ（ｘ）は、特徴ベクトル記憶部１１４に記憶される、全ての特徴ベクトルの平均ベクトルである。ａｖｅ（ｘ）を減算した上で線形変換するのは、生成されるビットコードの偏りを防ぐためであり、この減算項は、既存のビットコード化手法におけるバイアスに相当する。
【００４７】
ｙは、特徴ベクトルｘを線形変換行列Ｗにより線形変換して得られる、ｘとは別のベクトル空間をなす特徴ベクトルである。また、ｓｇｎ（ｙi）は、ｙiの値が負なら−１、正なら１を返す関数であり、ベクトルをビットコード化する関数として機能する。得られるビットコードｚiの要素は、−１または１のいずれかとなるが、本実施の形態では、このうち、「−１」を「０」と置き換えたものを特徴ビットコードと呼ぶ。
【００４８】
なお、線形変換前の特徴ベクトルｘiを、次元数ｄとして、
【数６】
0005563016.tif 000007
と定義し、生成するビットコードｚiを、ｂビットとして、
【数７】
0005563016.tif 000008
と定義する場合、ステップＳ２２で生成する線形変換行列Ｗは、ｄ行ｂ列であり、
【数８】
0005563016.tif 000009
と記述することができる。
【００４９】
以上のステップＳ２３までの処理が、コンテンツ検索装置１にてコンテンツ検索を行うために必要となる準備の処理である。ここまでのステップで、コンテンツ記憶部１１１に記憶される各コンテンツの特徴ビットコードの生成と、クエリ用コンテンツの特徴ベクトルを特徴ビットコードに変換するための線形変換行列の生成が完了する。
【００５０】
ステップＳ２３までの工程は、コンテンツ検索の準備として１回行えばよく、コンテンツ検索のたびに行う必要はない。例えば、コンテンツ記憶部１１１に新たなコンテンツが追加されたり、コンテンツ記憶部１１１のコンテンツが削除された場合など、コンテンツ記憶部１１１に記憶されたコンテンツに変更があった場合にも、そのまま同じ線形変換行列を用いてクエリ用コンテンツの特徴ビットコードを生成してもよいし、上述したステップＳ２１〜Ｓ２３を行って、最新のコンテンツに適した線形変換行列を求め、検索用コンテンツのビットコードを更新してもよい。なお、線形変換行列を更新することなくそのまま用いる場合、メモリ消費量を低減させるため、特徴ベクトル記憶部１１４に格納されている特徴ベクトルは、ステップＳ２２にて線形変換行列を求めた時点で特徴ベクトル記憶部１１４から消去してもよい。
【００５１】
コンテンツ検索が行われる場合には、クエリ用コンテンツの入力に応じて、特徴ベクトル生成部１１３が、ステップＳ２１と同様の手法により、クエリ用コンテンツの特徴ベクトルを生成する（ステップＳ２４）。続いて、特徴ビットコード生成部１１７が、ステップＳ２３と同様の手法により、クエリ用コンテンツの特徴ビットコードを生成する（ステップＳ２５）。
【００５２】
そして、検索部１１９によるコンテンツ検索が行われる（ステップＳ２６）。検索部１１９は、クエリ用コンテンツの特徴ビットコードとハミング距離が最も近い特徴ビットコードを持つコンテンツを、ｋ−近似最近傍探索法に従い、特定する。ｋ−近似最近傍探索法によれば、ある一定以下の確率で最近傍探索が失敗することを許す代わりに、検索用コンテンツの全ビットコードとの距離計算を行う必要がない。したがって、コンテンツ検索のための計算量及び所要時間を削減することができる。なお、上述のように、ハミング距離は、２つの特徴ビットコードのＸＯＲをとり、１となるビット数を数えることにより得られるが、本実施の形態では、算出値が０から１の範囲の値をとるように正規化されたハミング距離Ｄhamming（Ｚu，Ｚv）を、以下の式により算出する。
【数９】
0005563016.tif 000010
特徴ビットコード記憶部１１８に記憶される各特徴ビットコードには、もとのコンテンツのＩＤデータが対応付けて記憶されている。したがって、ここでは、クエリ用コンテンツの特徴ビットコードに最もハミング距離が近い特徴ビットコードに対応するＩＤデータが特定される。
【００５３】
クエリ用コンテンツに最も近い特徴ビットコードに対応するＩＤデータが特定されると、出力部１２０が、コンテンツ記憶部１１１から、当該ＩＤデータに対応するコンテンツまたはそのメタデータを抽出して、出力する（ステップＳ２７）。
【００５４】
図３は、本実施の形態のコンテンツ検索装置１を利用したコンテンツ検索の一例を示す図である。図３に示すように、コンテンツ記憶部１１１には、画像コンテンツが、その被写体の名称をメタデータとして付与されて、ＩＤデータと対応付けて記憶されている。また、特徴ビットコード記憶部１１８には、各画像コンテンツの特徴ビットコードが、ＩＤデータと対応付けて記憶されている。
【００５５】
コンテンツ検索装置１の入力部１１２は、例えば、スマートフォンのカメラであり、カメラで生成された画像をクエリ用コンテンツとして入力する。すると、特徴ベクトル生成部１１３にて、クエリ用コンテンツの特徴ベクトルが生成され、次いで、特徴ビットコード生成部１１７にて、入力画像の特徴ビットコードが生成される。そして、検索部１１９にて、入力画像の特徴ビットコードに最も近い特徴ビットコードに対応するＩＤデータ０００１が特定され、コンテンツ記憶部１１１にＩＤデータ０００１と対応付けて記憶されるコンテンツのメタデータ「〇×タワー」が抽出され、出力部１２０が、コンテンツ検索装置１のディスプレイにおいて、メタデータ「〇×タワー」を入力画像に重畳表示されるように出力する。
【００５６】
次に、図４から図６を用いて、線形変換行列生成部１１５の動作について詳述する。
【００５７】
まず、線形変換行列生成部１１５は、コンテンツ記憶部１１１に記憶された各コンテンツの特徴ベクトルを記憶する特徴ベクト記憶部１１４から、全ての特徴ベクトルを取得して、各特徴ベクトルから、全特徴ベクトルの平均ベクトルを減算したものをまとめた行列Ｑを、以下のように定義する（ステップＳ４１）。
【数１０】
0005563016.tif 000011
【００５８】
ところで、上述のように、コンテンツ記憶部１１１には、相互に類似する２つのコンテンツからなるペアが１つ以上記憶されている。図５の例では、コンテンツ記憶部１１１には、同一被写体（東京駅）を、異なる角度から撮影した、ＩＤデータが００２１である画像コンテンツと、ＩＤデータが０１０２である画像コンテンツが、ともに「東京駅」とのメタデータを付加されて記憶されている。かかる類似コンテンツのペアは、一方をクエリとしたとき、他方が検索結果として抽出されるべき関係にあるという意味で、「マッチングペア」と呼ぶこともできる。なお、ここでは、被写体の名称（「東京駅」）のみをマッチングペアかどうかを判断するメタデータとして説明したが、時間帯（朝、昼、夜等）や撮影方向（東側から、西側から等）などのメタデータを用いてマッチングペアかどうかを判断してもよい。
【００５９】
そうすると、特徴ベクトル記憶部１１４には、マッチングペアに由来する特徴ベクトルｘが含まれることになる。線形変換行列の生成処理において、このような特徴ベクトルｘのペアも、同様に「マッチングペア」と呼ぶこととする。全部でＮ個の特徴ベクトルのうち、このようなマッチングペアを構成する２つの特徴ベクトルｘは、以下のようにｊ番目のペアを構成することを示す番号を付して、
【数１１】
0005563016.tif 000012
と記述することができる。
ステップＳ４１に引き続いて、線形変換行列生成部１１５は、各マッチングペアを構成する２つの特徴ベクトルから平均ベクトルを減算したものが、それぞれ、異なる行列の対応する列の要素となるように、行列Ｐ1、Ｐ2を以下のように定義する（ステップＳ４２）。
【数１２】
0005563016.tif 000013
【数１３】
0005563016.tif 000014
【００６０】
次に、線形変換行列生成部１１５は、行列Ｐ１とＰ２との差分をΔＰとして、以下のように定義する。
【数１４】
0005563016.tif 000015
図６（ａ）に示すように、ΔＰには、列方向の要素として、それぞれのマッチングペアの差分が格納されることになる。
【００６１】
そして、線形変換行列生成部１１５は、以下の式（３）で定義されるコスト関数ｆ（Ｗ）を、式（４）の制約条件のもとで最小化するような線形変換行列Ｗを求める（ステップＳ４４）。
【数１５】
0005563016.tif 000016
【数１６】
0005563016.tif 000017
具体的な線形変換行列Ｗの算出手法は後に説明することとし、ここでは、コスト関数ｆ（Ｗ）について説明する。
【００６２】
上述の式（４）ＷTＱＱTＷ＝Ｉは、特徴ベクトルｘを線形変換行列Ｗにより線形変換した後の特徴ベクトルである、ｙの分散共分散行列が単位行列となることを示す。情報理論によれば、ビットコードの分散共分散行列が単位行列Ｉに比例するとき、情報損失が最も少なくなることが知られている。ビットコード化の際の情報損失が少なくなれば、ビットコードの長さを従来例のように長くする必要はなくなる。これにより、メモリ消費量及びハミング距離の計算量を低減させることが可能となる。したがって、ビットコードの分散共分散行列が単位行列に比例するように、線形変換行列Ｗを学習により決定することが好ましい。もっとも、ビットコード化のためのｓｇｎ関数の計算は煩雑であるため、線形変換行列Ｗの学習にも通常、相当の時間を要する。そこで、本実施の形態では、この課題を緩和し、ビットコード化の１段階前のコンテンツの特徴量を示す、線形変換後の特徴ベクトルｙの分散共分散行列を単位行列とすることを、線形変換行列Ｗを最小化する拘束条件として定義している。
【００６３】
また、式（３）の第１項λ・ｔｒ（ＷTΔＰΔＰTＷ）において、ΔＰは、図６（ａ）のように表すことができるので、ＷTΔＰは、図６（ｂ）のように表すことができる。なお、図６において列方向に延びる矩形は、列方向にベクトルの各要素が列挙されることを示している。さらに、ＷTΔＰΔＰTＷは、図６（ｃ）のように表すことができる。そうすると、正方行列となるＷTΔＰΔＰTＷの対角要素の和であるｔｒ（ＷTΔＰΔＰTＷ）は、
【数１７】
0005563016.tif 000018
と、表現することができる。
【００６４】
式（５）は、マッチングペアを構成する各特徴ベクトルｘを線形変換した後の特徴ベクトルｙについて、線形変換前にマッチングペアを構成する関係にあった２つの特徴ベクトルｙの間のユークリッド距離を、全マッチングペアについて足し合わせたものと同値である。つまり、式（３）の右辺の第１項のｔｒ（ＷTΔＰΔＰTＷ）は、線形変換後の特徴ベクトルｙにおいて各マッチングペア間のユークリッド距離の合計を表している。したがって、ステップＳ４４において、コスト関数ｆ（ｙ）の最小化することは、各マッチングペアにおける線形変換後の特徴ベクトルｙのユークリッド距離の総和を最小化することになる。
【００６５】
本実施の形態においては、特徴ビットコード同士のハミング距離に基づいて類似コンテンツの検索を行うので、精度よくコンテンツ検索を行うためには、類似コンテンツ同士の特徴ビットコード間のハミング距離が小さいことが好ましい。本実施の形態では、コンテンツ記憶部１１１に記憶されるコンテンツのうち、２つの類似コンテンツからなるペアに対応する２つの特徴ベクトルのペアをマッチングペアとして対応付けている。したがって、このマッチングペアを構成する特徴ベクトルｘから生成された特徴ビットコード同士のハミング距離が小さくなるように線形変換行列Ｗの学習を行うことも可能である。しかし、上述のように、ｓｇｎ関数の計算が煩雑なため、このような線形変換行列Ｗの学習には時間を要する。そこで、本実施の形態においては、この課題も緩和し、ビットコード化の１段階前の状態である線形変換後の特徴ベクトルｙについて、もとのマッチングペアにおけるユークリッド距離の総和を、コスト関数ｆ（ｙ）に含めている。
【００６６】
式（３）の第２項の｜Ｗ｜1は、Ｌ１正則化項である。Ｌ１正則化は、線形変換行列Ｗの各要素の絶対値の総和である。正則化項をコスト関数ｆ（ｙ）に含めた上でコスト関数ｆ（ｙ）を最小化しようとするとき、線形変換行列Ｗは疎行列となる。通常、ビットコード化の演算に要する時間の多くをＷTｘの積和演算が占めるところ、線形変換行列Ｗを疎行列化することでこの演算回数を低減し、高速なビットコード化を実現することができる。
【００６７】
なお、線形変換行列Ｗの一部の要素を予め０にしておき、線形変換行列Ｗの他の要素に対してのみ、学習を行うようにすることもできる。これにより、線形変換行列Ｗをどの程度疎にするかを予め決定することが可能となる。
【００６８】
ここで、コスト関数ｆ（ｙ）の第１項、第２項において、λは、０から１の間のスカラ値である重み係数である。第１項の係数はλ、第２項の係数は１−λであるから、λが大きいほど、コスト関数ｆ（ｙ）は、マッチングペアの線形変換後のユークリッド距離の総和の最小化に重きをおくコスト関数となる。一方、λが小さいほど、Ｌ１正則化に重きをおくコスト関数となり、生成される線形変換行列Ｗは、より疎になる。なお、λを１としたとき、コスト関数からＬ１正則化項は除去され、一般固有値化問題の解として、線形変換行列Ｗを決定することができる。一般化固有値問題は、二次計画法等の解法を用いなくても解くことができ、かつ、最適解を見つけることができるという特徴がある。コスト関数を一般化固有値問題に帰着することができるのは、マッチングペアの特徴ビットコードどうしのハミング距離ではなく、線形変換後の特徴ベクトルのユークリッド距離の問題として捉えたことによるものであり、従来は知られていなかったことである。
【００６９】
ステップＳ４４においては、以上のように定義されるコスト関数ｆ（ｙ）を最小化するような線形変換行列Ｗを求めることで、線形変換後において、類似コンテンツとしてマッチすべきコンテンツから生成される特徴ベクトル間のユークリッド距離が小さく、情報損失が少なく、かつ、ビットコードへの変換に要する演算量が少なくなるような線形変換行列Ｗを得ることができる。
【００７０】
次に、ステップＳ４４におけるコスト関数の最小化処理について、図７のフロー図を参照して説明する。
【００７１】
まず、次式の一般化固有値問題を解いて、初期化を行う（ステップＳ７１）。
【数１８】
0005563016.tif 000019
ここで、Ｄは非対角要素が０で、対角要素に一般化固有値を持つ正方行列である。一般化固有値は、最小のものから昇順に並んでいるものとする。この一般化固有値問題を解は、λ＝１と置いた時の最適解を与える。この最適解をＷtとおく。
【００７２】
次に、最適化問題を近似する（ステップＳ７２）。ここでは、コスト関数ｆ（ｙ）の拘束条件として定義したＷTＱＱTＷ＝Ｉを、Ｗtの近傍でテイラー展開し、一次近似する。
【００７３】
そして、二次計画法により、解の更新を行う（ステップＳ７３）。具体的には、まず、Ｗtと同じサイズの行列を２つ（Ｗ+、Ｗ-）用意し、これらの行列の全要素を０に初期化する。その上で、Ｗtの正の要素を、Ｗ+の対応する要素にコピーし、Ｗtの負の要素の絶対値を、Ｗ-の対応する要素にコピーする。これにより、｜Ｗt｜＝Ｗ+＋Ｗ-と書き換えることが可能となるため、コスト関数ｆ（ｙ）の第２項であるＬ１正則化項の絶対値記号を除去することができる。ステップＳ７２の処理と、ステップＳ７３において、Ｗtに関するコスト関数最小化問題を、Ｗ+、Ｗ-に関するコスト最小化問題に置き換えることとにより、二次のコスト関数と、一次の拘束条件からなる最適化問題を得る。
【００７４】
この最適化問題は、二次計画法として知られており、これを適用することで、Ｗtを更新することが可能となる。線形変換行列部１１５は、解が収束しない場合（ステップＳ７４ＮＯ）は、ステップＳ７２の最適化問題の近似と、ステップＳ７３の解の更新を繰り返す。解が収束すれば（ステップＳ７４ＹＥＳ）、コスト関数ｆ（ｙ）を最小化するような、目的の解Ｗを得ることができる。
【００７５】
以上のように、本実施の形態によれば、クエリ用コンテンツの特徴ベクトルを線形変換するための線形変換行列Ｗが、コンテンツ記憶部１１１に記憶されるコンテンツの特徴ベクトルｘを用いた学習により、線形変換後の特徴ベクトルｙの分散共分散行列が単位行列となるように生成される。また、線形変換行列Ｗは、線形変換後のベクトルｙの関数であるｆ（ｙ）を最小化するものとして求めることができ、このコスト関数ｆ（ｙ）の最小化は、各マッチングペアにおけるユークリッド距離の総和（全ペアの合計値）が小さくなるように、かつ、線形変換行列Ｗが疎行列となるように、線形変換行列Ｗが決定されることを意味する。このように生成された線形変換行列は、類似コンテンツとして検索されるべきコンテンツ同士の特徴ビットコードのハミング距離を小さくし、また、特徴ベクトルをビットコード化する際に要する演算量も減少させる。したがって、高速かつ精度のよい、特徴ビットコードを用いたコンテンツ検索が可能となる。
【００７６】
上記の実施の形態では、画像コンテンツをクエリ用コンテンツとして入力し、クエリ用コンテンツに類似する画像コンテンツを検索する場合について説明したが、コンテンツ検索装置は、文章や他のコンテンツを入力して、それと同一または類似のコンテンツを検索するものであってよい。また、クエリ用コンテンツと、コンテンツ記憶部に記憶されるコンテンツは同種のものでなくてもよく、例えば、音声データを入力し、特徴ビットコードに基づき、その音声データの意味内容に関連するコンテンツが検索されてもよい。
【００７７】
また、上記の実施の形態では、検索対象となるコンテンツの特徴ベクトルを用いて線形変換行列を生成したが、他のデータベースのコンテンツの特徴ベクトルを用いて線形変換行列を生成してもよい。さらに、上記の実施の形態では、コンテンツ検索装置が検索対象となるコンテンツの特徴ベクトルを記憶する特徴ベクトル記憶部を備える場合について説明したが、特徴ベクトル記憶部を備えなくてもよい。
【００７８】
また、上記の実施の形態では、線形変換後の特徴ベクトルｙの分散共分散行列を単位行列とする条件を課したが、制約条件としてではなく、コスト関数ｆ（ｙ）の項として書き換えてもよく、また、ｙの分散共分散行列が単位行列に比例するという条件であってもよい。さらに、上記の実施形態では、特徴ベクトルから平均ベクトルａｖｅ（ｘ）を減算したうえで線形変換し、特徴ベクトルｙを求めたが、ａｖｅ（ｘ）以外のバイアス値を用いてもよいし、ｘをそのまま線形変換してｙを求めてもよい。この場合、行列Ｑ、行列Ｐ１、Ｐ２の要素として、特徴ベクトルｘから平均ベクトルａｖｅ（ｘ）を減算したものを用いる代わりに、他のバイアス値を減算したものを用いてもよいし、ｘをそのまま行列Ｑ、Ｐ１、Ｐ２の要素としてもよい。
【００７９】
また、上記の実施の形態では、ｋ−近似最近傍探索法により、クエリ用コンテンツの特徴ビットコードと、最もハミング距離が近いコンテンツを特定したが、他の方法により、最もハミング距離が近いコンテンツを特定してもよいし、全ての（検索用コンテンツの）特徴ビットコードについて、クエリ用コンテンツの特徴ビットコードとのハミング距離を算出して、最も距離が近いコンテンツを特定してもよい。
【産業上の利用可能性】
【００８０】
本発明は、高速かつ高精度のコンテンツ検索を行うことができるという効果を有し、特徴ビットコードを用いたコンテンツ検索を行うコンテンツ検索装置等として有用である。
【符号の説明】
【００８１】
１  コンテンツ検索装置
１１１  コンテンツ記憶部
１１２  入力部
１１３  特徴ベクトル生成部
１１４  特徴ベクトル記憶部
１１５  線形変換行列生成部
１１６  線形変換行列記憶部
１１７  特徴ビットコード生成部
１１８  特徴ビットコード記憶部
１１９  検索部
１２０  出力部
【図１】
0005563016.tif 000022
【図２】
0005563016.tif 000023
【図３】
0005563016.tif 000024
【図４】
0005563016.tif 000025
【図５】
0005563016.tif 000026
【図６】
0005563016.tif 000027
【図７】
0005563016.tif 000028