(57)【要約】【課題】複数特徴量ハッシュ関数を生成することができるようにする。【解決手段】単一特徴量ハッシュ関数生成部３２が、複数のコンテンツの各々に対し、当該コンテンツから抽出された複数の特徴量の各々について、当該特徴量に対応するハッシュ値を求めるためのハッシュ関数である単一特徴量ハッシュ関数を生成する。そして、単一特徴量ハッシュ値生成部３６によって、複数のコンテンツの各々に対し、当該コンテンツから抽出された複数の特徴量の各々について、当該特徴量と、生成された当該特徴量に対応する単一特徴量ハッシュ関数とに基づいて、当該特徴量に対応するハッシュ値である単一特徴量ハッシュ値を生成する。そして、複数特徴量ハッシュ関数生成部３８が、複数のコンテンツの各々に対して生成された複数の単一特徴量ハッシュ値に基づいて、複数の単一特徴量ハッシュ値の情報量が最大となるように、複数特徴量ハッシュ関数を生成する。【選択図】図１
2015201041.tif 000002
【特許請求の範囲】
【請求項１】
単一特徴量ハッシュ関数生成手段、単一特徴量ハッシュ値生成手段、及び複数特徴量ハッシュ関数生成手段を含むハッシュ関数生成装置におけるハッシュ関数生成方法であって、
前記単一特徴量ハッシュ関数生成手段が、複数のコンテンツの各々に対し、前記コンテンツから抽出された複数の特徴量の各々について、前記特徴量に対応するハッシュ値を求めるためのハッシュ関数である単一特徴量ハッシュ関数を生成するステップと、
前記単一特徴量ハッシュ値生成手段が、前記複数のコンテンツの各々に対し、前記コンテンツから抽出された前記複数の特徴量の各々について、前記特徴量と、前記単一特徴量ハッシュ関数生成手段によって生成された前記特徴量に対応する前記単一特徴量ハッシュ関数とに基づいて、前記特徴量に対応するハッシュ値である単一特徴量ハッシュ値を生成するステップと、
前記複数特徴量ハッシュ関数生成手段が、前記単一特徴量ハッシュ値生成手段によって前記複数のコンテンツの各々に対して生成された複数の前記単一特徴量ハッシュ値に基づいて、前記複数の単一特徴量ハッシュ値の情報量が最大となるように、前記複数の単一特徴量ハッシュ値各々のビット数の総和よりも小さいビット数のハッシュ値を求めるためのハッシュ関数である複数特徴量ハッシュ関数を生成するステップと、
を含むハッシュ関数生成方法。
【請求項２】
前記複数特徴量ハッシュ関数生成手段が前記複数特徴量ハッシュ関数を生成するステップは、前記単一特徴量ハッシュ値生成手段によって前記複数のコンテンツの各々に対して生成された複数の前記単一特徴量ハッシュ値に基づいて、前記複数の単一特徴量ハッシュ値の分散が最大となるように、前記複数特徴量ハッシュ関数を生成する
請求項１記載のハッシュ関数生成方法。
【請求項３】
前記ハッシュ値をバイナリ値とした請求項１又は請求項２記載のハッシュ関数生成方法。
【請求項４】
単一特徴量ハッシュ値生成手段、及び複数特徴量ハッシュ値生成手段を含むハッシュ値生成装置におけるハッシュ値生成方法であって、
前記単一特徴量ハッシュ値生成手段が、コンテンツから抽出された複数の特徴量の各々について、前記特徴量と、前記コンテンツの前記特徴量に対応する予め生成された前記単一特徴量ハッシュ関数とに基づいて、前記コンテンツの前記特徴量に対応するハッシュ値である単一特徴量ハッシュ値を生成するステップと、
前記複数特徴量ハッシュ値生成手段が、前記単一特徴量ハッシュ値生成手段によって生成された複数の前記単一特徴量ハッシュ値と、請求項１〜請求項３の何れか１項記載のハッシュ関数生成方法によって生成された前記複数特徴量ハッシュ関数とに基づいて、前記コンテンツの前記複数の特徴量に対応するハッシュ値である複数特徴量ハッシュ値を生成するステップと、
を含むハッシュ値生成方法。
【請求項５】
複数のコンテンツの各々に対し、前記コンテンツから抽出された複数の特徴量の各々について、前記特徴量に対応するハッシュ値を求めるためのハッシュ関数である単一特徴量ハッシュ関数を生成する単一特徴量ハッシュ関数生成手段と、
前記複数のコンテンツの各々に対し、前記コンテンツから抽出された前記複数の特徴量の各々について、前記特徴量と、前記単一特徴量ハッシュ関数生成手段によって生成された前記特徴量に対応する前記単一特徴量ハッシュ関数とに基づいて、前記特徴量に対応するハッシュ値である単一特徴量ハッシュ値を生成する単一特徴量ハッシュ値生成手段と、
前記単一特徴量ハッシュ値生成手段によって前記複数のコンテンツの各々に対して生成された複数の前記単一特徴量ハッシュ値に基づいて、前記複数の単一特徴量ハッシュ値の情報量が最大となるように、前記複数の単一特徴量ハッシュ値各々のビット数の総和よりも小さいビット数のハッシュ値を求めるためのハッシュ関数である複数特徴量ハッシュ関数を生成する複数特徴量ハッシュ関数生成手段と、
を含むハッシュ関数生成装置。
【請求項６】
コンテンツから抽出された複数の特徴量の各々について、前記特徴量と、前記コンテンツの前記特徴量に対応する予め生成された前記単一特徴量ハッシュ関数とに基づいて、前記コンテンツの前記特徴量に対応するハッシュ値である単一特徴量ハッシュ値を生成する単一特徴量ハッシュ値生成手段と、
前記単一特徴量ハッシュ値生成手段によって生成された複数の前記単一特徴量ハッシュ値と、請求項５記載のハッシュ関数生成装置によって生成された前記複数特徴量ハッシュ関数とに基づいて、前記コンテンツの前記複数の特徴量に対応するハッシュ値である複数特徴量ハッシュ値を生成する複数特徴量ハッシュ値生成手段と、
を含むハッシュ値生成装置。
【請求項７】
請求項１〜請求項３の何れか１項記載のハッシュ関数生成方法、あるいは請求項４記載のハッシュ値生成方法の各ステップをコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハッシュ関数生成方法、ハッシュ値生成方法、装置、及びプログラムに係り、特に、複数特徴量ハッシュ関数を生成するハッシュ関数生成方法、ハッシュ値生成方法、装置、及びプログラムに関する。
【背景技術】
【０００２】
通信環境やコンピュータ、分散処理基盤技術の高度・高品質化により、ネットワークに流通するコンテンツ（画像・映像・音声・文書等）の数は膨大なものとなっている。例えば、ある検索エンジンがインデクシングしているウェブページの数は数兆にのぼるといわれている。また、あるサイトでは、日々３．５億の画像がアップロードされていると報告されており、また、あるサイトでは、１分当たり６４時間分の映像が新規に公開されているとの報告もある。
【０００３】
このような膨大な量のコンテンツは、利用者にとっては豊富な情報源となる一方で、閲覧したいコンテンツに素早くアクセスすることがますます困難になっているという課題ももたらしている。このような流れの中、閲覧・視聴したいコンテンツを効率的に探し出すためのメディア解析技術への要望がますます高まってきている。
【０００４】
コンテンツの解析においては、類似したコンテンツの発見が重要な役割を果たす。例えば、コンテンツを分類する場合は、同じようなコンテンツは同じカテゴリに分類する。あるいは検索の場合、あるコンテンツをクエリとして与えたとき、このコンテンツに類似したコンテンツを検索することが基本的な要件となる。そのほか、コンテンツ推薦においても利用者がこれまでに閲覧した／閲覧しているコンテンツと類似したコンテンツを発見してこれを推薦するし、コンテンツ要約の場合においても、類似したコンテンツを提示することは冗長であるため、これを発見して省くような処理が必要となる。
【０００５】
ここで、類似コンテンツを発見する典型的な手続きについて説明する。まず、コンテンツをある特徴量によって表現する。次に、特徴量同士の近さを測ることで類似度を計算し、この類似度に基づいて類似コンテンツを発見する。単純な例を挙げれば、コンテンツが画像や映像であれば、画像（映像フレーム）の色ヒストグラムを特徴量としてその類似度を測ることができる。コンテンツが文書であれば、単語の出現頻度をヒストグラム化したもの（Ｂａｇ−ｏｆ−Ｗｏｒｄｓヒストグラムなどと呼ぶ）を特徴量として類似度を測ることができる。いうまでもなく、仮にコンテンツの数が１０００あれば、１０００のコンテンツそれぞれに対して類似度を計算し、結果類似度の高いコンテンツを類似コンテンツとして拾い上げる必要がある。
【０００６】
しかしながら、前述のように、膨大な量のコンテンツを対象にした場合、計算時間とメモリを大量に消費するという課題があった。
【０００７】
通常、コンテンツの特徴量（ベクトル）の次元は高次元になることが多く、その類似度の計算には膨大な時間を要する。一般に、文書のＢａｇ−ｏｆ−Ｗｏｒｄｓヒストグラムの次元は、単語の種類（語彙）と同次元になる。画像の色ヒストグラムのような単純な特徴量であっても、一般に数百〜数千次元の実数値ベクトルとなるし、最近用いられるスパース表現やフィッシャーカーネルに基づく特徴表現では、数十万〜数百万次元のベクトルとなることもあり得る。さらに、全てのコンテンツの組に対してその類似度を計算する必要があるため、どのような類似度計算手段を用いようとも、特徴量の次元がＤ、コンテンツがＮ個あったとするとＯ（ＤＮ）の計算量を要する。また、即時検索を実行するためには、特徴量あるいはその類似度をメモリに蓄積しておくことが好ましいが、これを行うためにはＯ（Ｎ２）のメモリが必要となる。このように、億を超えるオーダのコンテンツを扱う必要がある昨今においては、非現実的な時間とメモリを要するのである。
【０００８】
さらに、昨今のコンテンツはそれ単体として流通することは稀であり、ある特定のコンテキストに即しながら、相互に関連した内容を持つ複数の異種メディアが混在して流通しているのが実状である。例えば、「東京オリンピック開催決定」について報じたニュースサイトのウェブページには、招致団や会場の様子を記した文書の他、現場の様子を撮影した写真が付与されているであろう。あるいは、写真だけでなく、映像や音声が付加されていることも少なくない。また、仮に画像一つに着目した場合でも、これを表現する特徴量は単一のものに限らない。先に述べたように、同じ画像であっても色ヒストグラムでこれを表現することもできるし、スパース表現やフィッシャーカーネルに基づく特徴表現を採用することもできる。すなわち、ある単一のコンテンツを表現する上で、その表現は単一に限らないのであり、往々にして複数の異なる特徴量やメディアの複合体として表現されるべきものである。ここで、本明細書で指すところの「メディア」は、画像や文書、映像、音等のコンテンツの種別を表すのであり、種別ごと種々の公知の「特徴量」によって表現することができるものである。したがって、以降、「特徴量やメディア」を区別なく単に特徴量と記す。
【０００９】
上記観点は、類似コンテンツの発見においては殊更重要である。例えば、ある「赤いりんご」の写真を持っていたとして、これに類似する画像を発見したいとしよう。特徴量として、仮に色ヒストグラムを用いたとすると、“赤”をキーとして赤い物体が検索されるので、正解となる「りんご」だけでなく、「郵便ポスト」や「赤いバラ」など類似しているとは言い難い物体も含まれてしまうであろう。また、仮に形状を表す特徴量であるＨｉｓｔｏｇｒａｍ  ｏｆ  Ｏｒｉｅｎｔｅｄ  Ｇｒａｄｉｅｎｔ（ＨＯＧ）などを利用すると、この場合にも正解の「赤いりんご」だけでなく、「みかん」や「サッカーボール」など、同様の“丸い”形状を持つ物体が検索されてしまう。すなわち、類似コンテンツの発見においては単一の特徴量による探索は失敗しやすいのである。こういった場合には、色ヒストグラムとＨＯＧの双方を特徴量として利用することで、“赤”くかつ“丸い”ことをキーとすることで、上記のような「郵便ポスト」、「赤いバラ」、「みかん」、「サッカーボール」など、明らかな間違いを防ぎ、発見効率を高めることができるのである。
【００１０】
このような問題を解決するために、従来からいくつかの発明がなされている。特許文献１に開示されている技術では、コンテンツの特徴量と、異なる２つのコンテンツを関連付けるべきか否かを示す関連情報（正解データ）に基づいてハッシュ関数を求め、このハッシュ関数を基に特徴量を低ビットなハッシュ値に変換する。
【００１１】
また、非特許文献１に開示されている技術では、近接する任意の２つのコンテンツ（特徴量）において、元の特徴量の類似度と衝突確率が等しくなるようなハッシュ関数群を生成する。典型的な類似度としてコサイン類似度を考えており、その場合のハッシュ関数生成の基本的な手続きは、特徴量空間にランダムな超平面を複数生成することによる（ｒａｎｄｏｍ  ｐｒｏｊｅｃｔｉｏｎと呼ばれる）。各超平面のどちら側に特徴量が存在するかによって特徴量をハッシュ化し、全てのコンテンツ間で類似度を求めることなく、近似的に類似コンテンツを発見することができる。
【００１２】
また、非特許文献２に開示されている技術は、特徴量の分布を捉え、その分布に対して最適なハッシュ値を構成する。具体的には、特徴量空間における多様体構造を捉え、その多様体構造を最適に保存するバイナリ空間（ハッシュ空間）への非線形な埋め込みを求めることで、元の高次元な特徴量を、低ビットなハッシュ値に変換する。そのハッシュ値の類似性を評価することで、高速な類似コンテンツの発見を実現することができる。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開２０１３−６８８８４号公報
【非特許文献】
【００１４】
【非特許文献１】M. Datar, N. Immorlica, P. Indyk, V.S. Mirrokni，“Locality-Sensitive Hashing Scheme based on p-Stable Distributions”，In Proceedings of the Twentieth Annual Symposium on Computational Geometry，2004，p.253-262
【非特許文献２】入江  豪、Ｚｈｅｎｇｕｏ  Ｌｉ、Ｓｈｉｈ−Ｆｕ  Ｃｈａｎｇ、「構造を保存するハッシング」、画像の認識・理解シンポジウム、２０１３．
【発明の概要】
【発明が解決しようとする課題】
【００１５】
特許文献１及び非特許文献１、２に開示されている技術では、元のコンテンツをコンパクトなハッシュ値に変換することで、非常に高精度かつ高速な類似コンテンツの発見を可能にしていた。しかしながら、いずれの技術もそのハッシュ値は、コンテンツごとにある単一の特徴量に基づいて生成されるのであり、複数の異なる特徴量に基づいてハッシュ値を構成できるものではなかった。現在に至るまで、いずれの技術によっても、高速かつ省メモリでありながら、複数の異なる特徴量に基づいてハッシュ値を構成することで高精度な類似コンテンツの発見を実現することはできないという問題があった。
【００１６】
本発明は、上記の事情を鑑みてなされたもので、複数特徴量ハッシュ関数を生成することができるハッシュ関数生成方法、ハッシュ値生成方法、装置、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１７】
上記の目的を達成するために本発明に係るハッシュ関数生成方法は、単一特徴量ハッシュ関数生成手段、単一特徴量ハッシュ値生成手段、及び複数特徴量ハッシュ関数生成手段を含むハッシュ関数生成装置におけるハッシュ関数生成方法であって、前記単一特徴量ハッシュ関数生成手段が、複数のコンテンツの各々に対し、前記コンテンツから抽出された複数の特徴量の各々について、前記特徴量に対応するハッシュ値を求めるためのハッシュ関数である単一特徴量ハッシュ関数を生成するステップと、前記単一特徴量ハッシュ値生成手段が、前記複数のコンテンツの各々に対し、前記コンテンツから抽出された前記複数の特徴量の各々について、前記特徴量と、前記単一特徴量ハッシュ関数生成手段によって生成された前記特徴量に対応する前記単一特徴量ハッシュ関数とに基づいて、前記特徴量に対応するハッシュ値である単一特徴量ハッシュ値を生成するステップと、前記複数特徴量ハッシュ関数生成手段が、前記単一特徴量ハッシュ値生成手段によって前記複数のコンテンツの各々に対して生成された複数の前記単一特徴量ハッシュ値に基づいて、前記複数の単一特徴量ハッシュ値の情報量が最大となるように、前記複数の単一特徴量ハッシュ値各々のビット数の総和よりも小さいビット数のハッシュ値を求めるためのハッシュ関数である複数特徴量ハッシュ関数を生成するステップと、を含んで構成されている。
【００１８】
本発明に係るハッシュ関数生成装置は、複数のコンテンツの各々に対し、前記コンテンツから抽出された複数の特徴量の各々について、前記特徴量に対応するハッシュ値を求めるためのハッシュ関数である単一特徴量ハッシュ関数を生成する単一特徴量ハッシュ関数生成手段と、前記複数のコンテンツの各々に対し、前記コンテンツから抽出された前記複数の特徴量の各々について、前記特徴量と、前記単一特徴量ハッシュ関数生成手段によって生成された前記特徴量に対応する前記単一特徴量ハッシュ関数とに基づいて、前記特徴量に対応するハッシュ値である単一特徴量ハッシュ値を生成する単一特徴量ハッシュ値生成手段と、前記単一特徴量ハッシュ値生成手段によって前記複数のコンテンツの各々に対して生成された複数の前記単一特徴量ハッシュ値に基づいて、前記複数の単一特徴量ハッシュ値の情報量が最大となるように、前記複数の単一特徴量ハッシュ値各々のビット数の総和よりも小さいビット数のハッシュ値を求めるためのハッシュ関数である複数特徴量ハッシュ関数を生成する複数特徴量ハッシュ関数生成手段と、を含んで構成されている。
【００１９】
本発明における前記複数特徴量ハッシュ関数生成手段は、前記単一特徴量ハッシュ値生成手段によって前記複数のコンテンツの各々に対して生成された複数の前記単一特徴量ハッシュ値に基づいて、前記複数の単一特徴量ハッシュ値の分散が最大となるように、前記複数特徴量ハッシュ関数を生成するようにすることができる。
【００２０】
本発明は、前記ハッシュ値をバイナリ値とするようにすることができる。
【００２１】
本発明に係るハッシュ値生成方法は、単一特徴量ハッシュ値生成手段、及び複数特徴量ハッシュ値生成手段を含むハッシュ値生成装置におけるハッシュ値生成方法であって、前記単一特徴量ハッシュ値生成手段が、コンテンツから抽出された複数の特徴量の各々について、前記特徴量と、前記コンテンツの前記特徴量に対応する予め生成された前記単一特徴量ハッシュ関数とに基づいて、前記コンテンツの前記特徴量に対応するハッシュ値である単一特徴量ハッシュ値を生成するステップと、前記複数特徴量ハッシュ値生成手段が、前記単一特徴量ハッシュ値生成手段によって生成された複数の前記単一特徴量ハッシュ値と、本発明のハッシュ関数生成方法によって生成された前記複数特徴量ハッシュ関数とに基づいて、前記コンテンツの前記複数の特徴量に対応するハッシュ値である複数特徴量ハッシュ値を生成するステップと、を含んで構成されている。
【００２２】
本発明に係るハッシュ値生成装置は、コンテンツから抽出された複数の特徴量の各々について、前記特徴量と、前記コンテンツの前記特徴量に対応する予め生成された前記単一特徴量ハッシュ関数とに基づいて、前記コンテンツの前記特徴量に対応するハッシュ値である単一特徴量ハッシュ値を生成する単一特徴量ハッシュ値生成手段と、前記単一特徴量ハッシュ値生成手段によって生成された複数の前記単一特徴量ハッシュ値と、本発明のハッシュ関数生成装置によって生成された前記複数特徴量ハッシュ関数とに基づいて、前記コンテンツの前記複数の特徴量に対応するハッシュ値である複数特徴量ハッシュ値を生成する複数特徴量ハッシュ値生成手段と、を含んで構成されている。
【００２３】
本発明のプログラムは、本発明のハッシュ関数生成方法、又は本発明のハッシュ値生成方法の各ステップをコンピュータに実行させるためのプログラムである。
【発明の効果】
【００２４】
以上説明したように、本発明のハッシュ関数生成方法、装置、及びプログラムによれば、複数のコンテンツの各々に対し、当該コンテンツから抽出された複数の特徴量の各々について、単一特徴量ハッシュ関数を生成し、複数のコンテンツの各々に対し、当該コンテンツから抽出された複数の特徴量の各々について、当該特徴量と、当該特徴量に対応する単一特徴量ハッシュ関数とに基づいて、単一特徴量ハッシュ値を生成し、複数のコンテンツの各々に対して生成された複数の単一特徴量ハッシュ値に基づいて、複数の単一特徴量ハッシュ値の情報量が最大となるように、複数特徴量ハッシュ関数を生成することにより、複数の特徴量を含むコンテンツのハッシュ値を生成するための複数特徴量ハッシュ関数を生成することができる、という効果が得られる。
【００２５】
また、本発明のハッシュ値生成方法、装置、及びプログラムによれば、コンテンツから抽出された複数の特徴量の各々について、当該特徴量と、当該特徴量に対応する予め生成された単一特徴量ハッシュ関数とに基づいて、コンテンツの特徴量に対応するハッシュ値である単一特徴量ハッシュ値を生成し、生成された複数の単一特徴量ハッシュ値と、生成された複数特徴量ハッシュ関数とに基づいて、コンテンツの複数の特徴量に対応するハッシュ値である複数特徴量ハッシュ値を生成することにより、コンテンツと類似するデータを精度よく発見することができる。
【図面の簡単な説明】
【００２６】
【図１】本発明の第１の実施の形態に係る情報処理装置の構成を示す概略図である。
【図２】本発明の第１の実施の形態に係る情報処理装置におけるハッシュ関数生成処理ルーチンの内容を示すフローチャートである。
【図３】本発明の第１の実施の形態に係る情報処理装置におけるハッシュ値生成処理ルーチンの内容を示すフローチャートである。
【図４】本発明の第２の実施の形態に係る情報処理システムの構成を示す概略図である。
【図５】複数特徴量ハッシュ値によって対応付けられたコンテンツの一例を示す図である。
【図６】本発明の第１の実施の形態に係る情報処理装置の実施例の一例を示す図である。
【発明を実施するための形態】
【００２７】
本発明の実施の形態では、複数の特徴量によって表現されたコンテンツに対し、高速かつ省メモリでありながらも高精度な類似コンテンツ発見を実現するためのハッシュ関数の生成及びハッシュ値の生成を行う情報処理装置に本発明を適用した場合を例に説明する。以下、図面を参照して本発明の実施の形態を詳細に説明する。
【００２８】
＜第１の実施の形態＞
＜システム構成＞
本発明の第１の実施の形態に係る情報処理装置１は、ハッシュ関数を生成し、生成されたハッシュ関数を用いてハッシュ値を生成する。この情報処理装置１は、ＣＰＵと、ＲＡＭと、後述する複数特徴量ハッシュ関数生成処理ルーチン及び複数特徴量ハッシュ値生成処理ルーチンを実行するためのプログラムを記憶したＲＯＭとを備えたコンピュータで構成され、機能的には次に示すように構成されている。図１に示すように、情報処理装置１は、入力部２と、演算部３と、出力部４とを備えている。
【００２９】
また、図１に示すコンテンツデータベース５には、複数のコンテンツが登録されている。コンテンツデータベース５には、少なくともコンテンツ自体、あるいは、当該コンテンツデータの所在を一意に示すアドレスが格納されている。コンテンツは、例えば、文書であれば文書ファイル、画像であれば画像ファイル、音であれば音ファイル、映像であれば映像ファイルなどであり、好ましくは、コンテンツデータベース５には、更に、各コンテンツのメディア種別とそれ自体を一意に識別可能な識別子が格納されているものとする。その他、メタデータとして、例えばコンテンツの内容を表現するもの（コンテンツのタイトル、概要文、キーワード）、コンテンツのフォーマットに関するもの（コンテンツのデータ量、サムネイル等のサイズ）などが、コンテンツデータベース５に格納されていてもよい。
【００３０】
情報処理装置１は、コンテンツデータベース５と通信手段を介して接続され、入力部２、出力部４を介して相互に情報通信し、コンテンツデータベース５に登録されたコンテンツに基づいて単一／複数特徴量ハッシュ関数を生成する単一／複数特徴量ハッシュ関数生成処理と、生成した単一／複数特徴量ハッシュ関数を用いてコンテンツを複数のバイナリ値に変換する単一／複数特徴量ハッシュ値生成処理を行う。
【００３１】
また、コンテンツデータベース５は、情報処理装置１の内部にあっても外部にあっても構わず、通信手段は任意の公知のものを用いることができるが、本実施形態においては、外部にあるものとして、通信手段は、インターネット、ＴＣＰ／ＩＰにより通信するよう接続されているものとする。コンテンツデータベース５は、いわゆるＲＤＢＭＳ（Relational Database Management System）などで構成されているものとしてもよい。
【００３２】
情報処理装置１の各部およびコンテンツデータベース５は、演算処理装置、記憶装置等を備えたコンピュータやサーバ等により構成して、各部の処理がプログラムによって実行されるものとしてもよい。このプログラムは情報処理装置１が備える記憶装置に記憶されており、磁気ディスク、光ディスク、半導体メモリ等の記録媒体に記録することも、ネットワークを通して提供することも可能である。もちろん、その他いかなる構成要素についても、単一のコンピュータやサーバによって実現しなければならないものではなく、ネットワークによって接続された複数のコンピュータに分散して実現してもよい。
【００３３】
次に、図１に示す情報処理装置１の各部について説明する。
【００３４】
入力部２は、処理対象データであるコンテンツを受け付ける。具体的には、入力部２は、コンテンツデータベース５から、複数（Ｎ個）のコンテンツを取得する。また、入力部２は、検索クエリとしてのコンテンツの入力を受け付ける。
【００３５】
演算部３は、特徴抽出部３０と、単一特徴量ハッシュ関数生成部３２と、記憶部３４と、単一特徴量ハッシュ値生成部３６と、複数特徴量ハッシュ関数生成部３８と、複数特徴量ハッシュ値生成部４０とを備えている。このうち、本発明の実施の形態の主たる機能を備える構成要素は、複数特徴量ハッシュ関数生成部３８及び複数特徴量ハッシュ値生成部４０である。
【００３６】
特徴抽出部３０は、入力部２によって受け付けたＮ個のコンテンツの各々に対し、当該コンテンツから複数の特徴量を抽出する。具体的には、特徴抽出部３０は、Ｎ個の各コンテンツを解析し、各コンテンツを特徴的に表すＭ個（Ｍ＞０）の特徴量を抽出する。
また、特徴抽出部３０は、入力部２によって受け付けた検索クエリとしてのコンテンツから、複数の特徴量を抽出する。
【００３７】
特徴抽出部３０における特徴量を抽出する処理は、コンテンツのメディア種別に依存する。例えば、コンテンツが文書であるか、画像であるか、音であるか、映像であるかによって、抽出するまたは抽出できる特徴量は変化する。ここで、各メディア種別に対してどのような特徴量を抽出するかは、本実施の形態の要件として重要ではなく、一般に知られた公知の特徴抽出処理を用いてよい。具体的には、あるコンテンツから抽出された次元を持つ数値データ（スカラー又はベクトル）であれば、あらゆる特徴量に対して有効である。したがって、ここでは、本実施形態に適する、各種コンテンツに対する特徴抽出処理の一例を説明する。
【００３８】
コンテンツが文書である場合には、文書中に出現する単語の出現頻度を用いることができる。例えば、公知の形態素解析を用いて、名詞、形容詞等に相当する単語ごとに、その出現頻度を計数すればよい。この場合、各文書の特徴量は、単語種別と同じだけの次元を持つベクトルとして表現される。
【００３９】
コンテンツが画像である場合には、例えば、明るさ特徴、色特徴、テクスチャ特徴、コンセプト特徴、景観特徴、形状特徴などを抽出する。明るさ特徴は、ＨＳＶ色空間におけるＶ値を数え上げることで、ヒストグラムとして抽出することができる。この場合、各画像の特徴量は、Ｖ値の量子化数（例えば、１６ビット量子化であれば２５６諧調）と同数の次元を持つベクトルとして表現される。
【００４０】
色特徴は、Ｌ＊ａ＊ｂ＊色空間における各軸（Ｌ＊、ａ＊、ｂ＊）の値を数え上げることで、ヒストグラムとして抽出することができる。各軸のヒストグラムのビンの数は、例えば、Ｌ＊に対して４、ａ＊に対して１４、ｂ＊に対して１４などとすればよく、この場合、３軸の合計ビン数は、４×１４×１４＝７８４、すなわち７８４次元のベクトルとなる。
【００４１】
テクスチャ特徴としては、濃淡ヒストグラムの統計量（コントラスト）やパワースペクトルなどを求めればよい。あるいは、局所特徴量を用いると、色や動きなどと同様、ヒストグラムの形式で抽出することができるようになるため好適である。局所特徴としては、例えば下記の参考文献１に記載されるＳＩＦＴ（Scale Invariant Feature Transform）や、下記の参考文献２に記載されるＳＵＲＦ（Speeded Up Robust Features）などを用いることができる。
【００４２】
［参考文献１］D.G. Lowe, “Distinctive Image Features from Scale-Invariant Keypoints ", International Journal of Computer Vision, pp.91-110, 2004
［参考文献２］H. Bay, T. Tuytelaars, and L.V. Gool, “SURF: Speeded Up Robust Features", Lecture Notes in Computer Science, vol. 3951, pp.404-417, 2006
【００４３】
これらによって抽出される局所特徴は、例えば１２８次元の実数値ベクトルとなる。このベクトルを、予め学習して生成しておいた符号長を参照して、符号に変換し、その符号の数を数え上げることでヒストグラムを生成することができる。この場合、ヒストグラムのビンの数は、符号長の符号数と一致する。又は、参考文献３に記載のスパース表現や、参考文献４、５に記載のフィッシャーカーネルに基づく特徴表現などを利用してもよい。
【００４４】
［参考文献３］  Jinjun Wang, Jianchao Yang, Kai Yu, Fengjun Lv, Thomas Huang, and Yihong Gong, “Locality-constrained Linear Coding for Image Classification", IEEE Conference on Computer Vision and Pattern Recognition, pp. 3360-3367, 2010.
［参考文献４］  Florent Perronnin, Jorge Sanchez, Thomas Mensink, “Improving the Fisher Kernel for Large-Scale Image Classification", European Conference on Computer Vision, pp. 143-156, 2010.
［参考文献５］  Herve Jegou, Florent Perronnin, Matthijs Douze, Jorge Sanchez, Patrick Perez, Cordelia Schmid, “Aggregating Local Image Descriptors into Compact Codes", IEEE Trans. Pattern Recognition and Machine Intelligence, Vol. 34, No. 9, pp. 1704-1716, 2012.
【００４５】
結果として生成される特徴量は、いずれの場合にも、符号長の符号数に依存した長さを持つ実数値ベクトルになる。
【００４６】
コンセプト特徴とは、画像中に含まれる物体や、画像が捉えているイベントのことである。任意のものを用いてよいが、例を挙げれば、「海」、「山」、「ボール」などのようなものである。もし、ある画像に「海」が映っていた場合、その画像は「海」コンセプトに帰属する画像であるという。その画像が、各コンセプトに帰属するか否かは、コンセプト識別器を用いて判断することができる。通常、コンセプト識別器はコンセプト毎に一つ用意され、画像の特徴量を入力として、その画像があるコンセプトに帰属しているか否かを帰属レベルとして出力する。コンセプト識別器は、予め学習して獲得しておくものであり、決められた画像特徴、例えば先に述べた局所特徴と、予め人手によって、その画像がどのコンセプトに帰属しているかを表した正解ラベルとの関係を学習することによって獲得する。学習器としては、例えばサポートベクターマシンなどを用いればよい。コンセプト特徴は、各コンセプトへの帰属レベルをまとめてベクトルとして表現することで得ることができる。この場合、生成される特徴量はコンセプトの数と同数の次元を持つベクトルとなる。
【００４７】
景観特徴は、画像の風景や場面を表現した特徴量である。例えば参考文献６に記載のＧＩＳＴ記述子を用いることができる。ＧＩＳＴ記述子は画像を領域分割し、各領域に対して一定のオリエンテーションを持つフィルタを掛けたときの係数によって表現されるが、この場合、生成される特徴量は、フィルタの種類（分割する領域の数とオリエンテーションの数）に依存した長さのベクトルとなる。
【００４８】
［参考文献６］A. Oliva and A. Torralba, “Building the gist of a scene: the role of global image features in recognition", Progress in Brain Research, 155, pp.23-36, 2006
【００４９】
形状特徴は、画像に写る物体の形状を表す特徴量である。例えば参考文献７に記載のＨＯＧ特徴量やエッジヒストグラムを用いることができる。
【００５０】
［参考文献７］N. Dalal and B. Triggs, “Histograms of Oriented Gradients for Human Detection", IEEE Conference on Computer Vision and Pattern Recognition, pp.886-893, 2005
【００５１】
コンテンツが音である場合には、音高特徴、音圧特徴、スペクトル特徴、リズム特徴、発話特徴、音楽特徴、音イベント特徴などを抽出する。音高特徴は、例えばピッチを取るものとすればよく、下記の参考文献８に記載される方法などを用いて抽出することができる。この場合、ピッチを１次元ベクトル（スカラー）として表現するか、あるいはこれをいくつかの次元に量子化しておいてもよい。
【００５２】
［参考文献８］古井貞熙，“ディジタル音声処理，４．９ピッチ抽出”，ｐｐ．５７−５９，１９８５
【００５３】
音圧特徴としては、音声波形データの振幅値を用いるものとしてもよいし、短時間パワースペクトルを求め、任意の帯域の平均パワーを計算して用いるものとしてもよい。いずれにしても、音圧を計算するバンドの数に依存した長さのベクトルとなる。
【００５４】
スペクトル特徴としては、例えばメル尺度ケプストラム係数（ＭＦＣＣ：Mel-Frequency Cepstral Coefficients）を用いることができる。
【００５５】
リズム特徴としては、例えばテンポを抽出すればよい。テンポを抽出するには、例えば下記の参考文献９に記載される方法などを用いることができる。
【００５６】
［参考文献９］E.D. Scheirer, “Tempo and Beat Analysis of Acoustic Musical Signals ", Journal of Acoustic Society America, Vol. 103, Issue 1, pp.588-601, 1998
【００５７】
発話特徴、音楽特徴は、それぞれ、発話の有無、音楽の有無を表す。発話・音楽の存在する区間を発見するには、例えば下記の参考文献１０に記載される方法などを用いればよい。
【００５８】
［参考文献１０］K. Minami, A. Akutsu, H. Hamada, and Y. Tonomura, “Video Handling with Music and Speech Detection", IEEE Multimedia, vol. 5, no. 3, pp.17-25, 1998
【００５９】
音イベント特徴としては、例えば、笑い声や大声などの感情的な音声、あるいは、銃声や爆発音などの環境音の生起などを用いるものとすればよい。このような音イベントを検出するには、例えば下記の参考文献１１に記載される方法などを用いればよい。
【００６０】
［参考文献１１］国際公開第２００８／０３２７８７号
【００６１】
コンテンツが映像である場合、映像は、一般に画像と音のストリームであるから、上記説明した画像特徴と音特徴を用いることができる。映像中のどの画像、音情報を分析するかについては、例えば、予め映像をいくつかの区間に分割し、その区間ごとに１つの画像、音から特徴抽出を実施する。
【００６２】
映像を区間に分割するには、予め決定しておいた一定の間隔で分割するものとしてもよいし、例えば下記の参考文献１２に記載される方法などを用いて、映像が不連続に切れる点であるカット点によって分割するものとしてもよい。
【００６３】
［参考文献１２］Y. Tonomura, A. Akutsu, Y. Taniguchi, and G. Suzuki, “Structured Video Computing", IEEE Multimedia, pp.34-43, 1994
【００６４】
映像を区間に分割する場合には、望ましくは、上記の後者の方法を採用する。映像区間分割処理の結果として、区間の開始点（開始時刻）と終了点（終了時刻）が得られるが、この時刻毎に別々の特徴量として扱えばよい。
【００６５】
上記説明した特徴量の中から、Ｍ種類の特徴量を予め選択しておき、特徴抽出部３０によって、選択したＭ種類の特徴量を抽出する。なお、以上のように抽出できる特徴量以外にも、その他の公知の特徴量を用いるものとしてもよい。
【００６６】
単一特徴量ハッシュ関数生成部３２は、Ｎ個のコンテンツの各々に対して特徴抽出部３０によって当該コンテンツから抽出されたＭ個の特徴量に基づいて、Ｍ個の特徴量の各々について、単一特徴量ハッシュ関数を生成する。単一特徴量ハッシュ関数は、特徴量に対応するハッシュ値を求めるためのハッシュ関数である。具体的には、あるコンテンツｉから抽出されたｍ番目の特徴量をｘｍ，ｉ∈ＲＤｍと表し、特徴量ｘｍ，ｉのコンテンツの特徴量次元はＤｍであるとき、単一特徴量ハッシュ関数生成部３２は、特徴量ｘｍ，ｉに対して、ｈｍ，ｋ：ＲＤｍ→｛−１，１｝Ｂｍとなる単一特徴量ハッシュ関数を求める。ここで、Ｂｍは特徴量ｘｍ，ｉに対して生成する単一特徴量ハッシュ値のバイナリビット数である。｛−１，１｝と｛０，１｝は情報量という観点で本質的に差異がないことに注意すれば、各ｈによって、特徴量ｘｍ，ｉ∈ＲＤｍは０または１を取るＢｍ個のバイナリ値に写像され、これはすなわち、Ｂｍビットのハッシュ値に変換されることを意味する。本実施の形態では、単一特徴量ハッシュ値、及び後述する複数特徴量ハッシュ値が、複数のバイナリ値によって構成される場合を例に説明する。
【００６７】
上記の先行技術文献に挙げた通り、このような単一特徴量ハッシュ関数を求める技術は既に存在しており（例えば、上記特許文献１、上記非特許文献１、上記非特許文献２等）、任意の公知のものを利用してよい。後述するように、本発明の実施の形態の複数特徴量ハッシュ関数生成／ハッシュ値生成処理は、単一特徴量ハッシュ関数が上記単一特徴量ハッシュ関数の性質を満たす限りどのような生成方法であっても利用可能である。
【００６８】
例えば、上記非特許文献１のものを利用する場合には、Ｂｍ×Ｄｍのサイズの行列を正規乱数によって生成し、これを単一特徴量ハッシュ関数として利用することができる。
【００６９】
単一特徴量ハッシュ関数生成部３２は、以上の処理をＭ種類全ての特徴量（ｍ＝１，・・・，Ｍ）に対して実施することで、Ｍ個の単一特徴量ハッシュ関数を得る。得られたＭ個の単一特徴量ハッシュ関数は記憶部３４に格納される。
【００７０】
記憶部３４には、単一特徴量ハッシュ関数生成部３２によって生成されたＭ個の単一特徴量ハッシュ関数と、後述する単一特徴量ハッシュ値と、複数特徴量ハッシュ関数とが格納される。
【００７１】
単一特徴量ハッシュ値生成部３６は、Ｎ個のコンテンツの各々に対し、特徴抽出部３０によって当該コンテンツから抽出されたＭ個の特徴量の各々について、当該特徴量と、記憶部３４に格納された当該特徴量に対応する単一特徴量ハッシュ関数とに基づいて、当該特徴量に対応するハッシュ値である単一特徴量ハッシュ値を生成する。
【００７２】
具体的には、単一特徴量ハッシュ値生成部３６は、単一特徴量ハッシュ関数生成部３２におけるハッシュ関数生成処理に対応した任意の公知の方法を用いることができる。例えば、単一特徴量ハッシュ関数生成部３２において上記非特許文献１のものを利用した場合には、単一特徴量ハッシュ関数としてＢｍ×Ｄｍのサイズの実数値行列が生成されている。この実数値行列をＡｍと置くと、これを用いて、上記非特許文献１によれば、下記のように単一特徴量ハッシュ値ｚｍ，ｉを生成することができる。
【００７３】
【数１】
2015201041.tif 000003
【００７４】
ここで、ｓｉｇｎ（ｘ）は符号関数であり、ｘ≧０のとき１、ｘ＜０のとき−１をとる関数である。μｍはｘｍ，ｉの全コンテンツｉ＝１，・・・，Ｎに対する平均値又は中央値である。単一特徴量ハッシュ関数生成部３２において、これ以外の方法によって単一特徴量ハッシュ関数を生成した場合には、それに準じた単一特徴量ハッシュ値生成方法を採ればよい。以上の処理を、Ｍ種類全ての特徴量、Ｎ個全てのコンテンツに対して施し、単一特徴量ハッシュ値を得る。
単一特徴量ハッシュ値生成部３６は、Ｎ個のコンテンツ各々に対して生成されたＭ個の単一特徴量ハッシュ値を記憶部３４に格納する。
【００７５】
また、単一特徴量ハッシュ値生成部３６は、特徴抽出部３０によって抽出された検索クエリとしてのコンテンツのＭ個の特徴量と、Ｍ個の特徴量に対応する記憶部３４に格納された単一特徴量ハッシュ関数とに基づいて、Ｍ個の単一特徴量ハッシュ値を生成する。
【００７６】
また、単一特徴量ハッシュ値生成部３６は、検索クエリとしてのコンテンツに対して生成されたＭ個の単一特徴量ハッシュ値を記憶部３４に格納する。
【００７７】
複数特徴量ハッシュ関数生成部３８は、記憶部３４に格納された、Ｎ個のコンテンツ各々に対して生成されたＭ個の単一特徴量ハッシュ値に基づいて、Ｍ個の単一特徴量ハッシュ値の情報量が最大となるように、複数特徴量ハッシュ関数を生成する。複数特徴量ハッシュ関数は、Ｍ個の単一特徴量ハッシュ値各々のビット数の総和よりも小さいビット数のハッシュ値を求めるためのハッシュ関数である。そして、複数特徴量ハッシュ関数生成部３８は、生成された複数特徴量ハッシュ関数を記憶部３４に格納する。
【００７８】
本発明の実施の形態の目的は、複数特徴量ハッシュ値によって、単一特徴量ハッシュ値よりも高精度な類似度の計測を可能にしたうえ、さらに、時間のかかる類似度計算を省略することである。したがって、ここで生成する複数特徴量ハッシュ関数と、それにより生成される複数特徴量ハッシュ値は、Ｍ個の単一特徴量ハッシュ値の持つ情報量を最大化するように設計する。
【００７９】
ここで、情報量最大化について説明する。２値（−１か１）を取るハッシュ値は、（単一特徴量、複数特徴量に関わらず）確率的には二項分布に従うと仮定できる。仮に１が出る確率をｐとすると、ハッシュ値のうちｂビット目ｚ（ｂ）の（平均）情報量、すなわち情報エントロピーＨは
【００８０】
【数２】
2015201041.tif 000004
【００８１】
と表すことができる。Ｈはｐ＝１／２のとき最大値１を取る。ここで、ｚ（ｂ）の分散ｖａｒは、ｚ（ｂ）の期待値が（２ｐ−１）、ｚ（ｂ）の二乗の期待値が１であることに注意すれば、
【００８２】
【数３】
2015201041.tif 000005
【００８３】
となる。明らかに、ｖａｒはｐ＝１／２のとき最大値１を取り、最大値において情報エントロピーＨと等価である。
【００８４】
以上の議論が示す通り、ハッシュ値の持つ情報量を最大化するためには、ハッシュ値の各ビットの分散が大きくなるようにビットを構成すればよい。
すなわち、複数特徴量ハッシュ関数生成部３８は、Ｎ個のコンテンツの各々に対して生成されたＭ個の単一特徴量ハッシュ値の分散が最大となるように、複数特徴量ハッシュ関数を生成する。言い換えれば、Ｍ組の単一特徴量ハッシュ値の全てのビットによって得られる情報量を最大化しつつ、これらを新たな一組の複数特徴量ハッシュ値に変換するためには、その分散が最大となるような変換（線形混合）を求め、これを複数特徴量ハッシュ関数として構成すればよい。
【００８５】
改めて、ｍ番目の単一特徴量ハッシュ値をｚｍ，ｉ＝（ｚｍ，ｉ（１），・・・，ｚｍ，ｉ（Ｂｍ））Ｔとする。ｚｍ，ｉ（ｂ）は、ｚｍ，ｉのｂ番目のビットである。さらに、ｉ番目のコンテンツに対して求められているＭ個の単一特徴量ハッシュ値のビットを並べ、ベクトル表現したものをｚｉ＝(ｚ１，ｉＴ，・・・，ｚＭ，ｉＴ)Ｔと表す。ｚｉは、各単一特徴量ハッシュ値のｍ種類のビット長Ｂｍの総和Ｂ＝Ｂ１＋・・・＋ＢＭと同じ長さを持つベクトルである。さらに、Ｎ個全てのコンテンツにおけるｚｉを並べた行列をＺ＝[ｚ１，・・・，ｚＮ]と表す。このとき、全てのビットに対する分散共分散行列ＣはＣ＝ＺＺＴと計算できる。
【００８６】
この手続きでは、Ｎ個のコンテンツの各々に対して生成されたＭ個の単一特徴量ハッシュ値を結合したハッシュ値ｚｉの分散を最大化するように、単一特徴量ハッシュ値のビットの線形混合をＶ（Ｖ＜Ｂ）個求めることである。Ｖは任意の自然数でよく、例えばＶ＝３２としておけばよい。
【００８７】
このＶ個の線形混合をＷ＝[ｗ１，・・・，ｗＶ]と表す。各線形混合ｗｖは長さＢのベクトルであり、ｗｖを用いることで、ｚｉから、新たなハッシュ値（複数特徴量ハッシュ値）ｙｉの１ビット分ｙｉ（ｖ）を下記のように求めることができる。
【００８８】
【数４】
2015201041.tif 000006
【００８９】
従って、Ｖ個の線形混合によって、Ｖビットの複数特徴量ハッシュ値を求めることができるのである。
【００９０】
上記式（４）が本発明の実施の形態で言うところの複数特徴量ハッシュ関数であり、これを求めることはＷを求めることに他ならない。ハッシュ値ｚｉの分散を最大にするようにＷを求めるには、以下の式（５）の最適化問題を解けばよい。
【００９１】
【数５】
2015201041.tif 000007
【００９２】
ここで、Ｉは単位行列である。この最適化問題の解Ｗは、Ｃの固有ベクトルの内、固有値の大きいものから順にＶ個に相当する。このような固有ベクトルは反復法やべき乗法など、任意の公知の一般的な方法を用いて求めることができる。
【００９３】
以上が、複数特徴量ハッシュ関数を求める手続きである。
【００９４】
複数特徴量ハッシュ値生成部４０は、記憶部３４に格納されたＭ個の単一特徴量ハッシュ値と、複数特徴量ハッシュ関数とに基づいて、コンテンツのＭ個の特徴量に対応するハッシュ値である複数特徴量ハッシュ値を生成する。複数特徴量ハッシュ関数生成部３８の複数特徴量ハッシュ関数生成処理が済んでいれば、記憶部３４には、Ｍ個の特徴量それぞれに対する単一特徴量ハッシュ関数と、複数特徴量ハッシュ関数が格納されている。
【００９５】
なお、複数特徴量ハッシュ値生成部４０によって複数特徴量ハッシュ値を生成する際には、上記式（４）を計算すればよいだけである。したがって、任意のコンテンツを、Ｖビット以下の複数特徴量ハッシュ値で表現することができる。
【００９６】
この計算に必要となるメモリ量は、Ｗとｚｉそれぞれを格納するに必要なメモリ量のみであり、Ｖが８、Ｂが１００の場合、ｚｉは１００ｂｉｔ、Ｗは３．２ＫＢ程度である。もし仮に、１００万コンテンツを全て複数特徴量ハッシュ値に変換したとすると、高々８ＭＢ程度にしかならず、現存する一般的なコンピュータにおいても極めて容易に蓄積できるメモリ量に抑えることができる。したがって、この方法によって省メモリなハッシュ値生成が可能である。
【００９７】
また、複数特徴量ハッシュ値生成部４０は、記憶部３４に格納された、検索クエリとしてのコンテンツの複数の単一特徴量ハッシュ値と、複数特徴量ハッシュ関数とに基づいて、検索クエリとしてのコンテンツの複数特徴量ハッシュ値を生成する。
【００９８】
出力部４は、複数特徴量ハッシュ値生成部４０によって生成された複数特徴量ハッシュ値を、コンテンツデータベース５へ出力する。
【００９９】
コンテンツデータベース５には、出力部４によって出力された複数特徴量ハッシュ値と、当該複数特徴量ハッシュ値に対応するコンテンツとの組み合わせが格納される。
【０１００】
＜情報処理装置の作用＞
次に、本実施の形態に係る情報処理装置１の作用について説明する。情報処理装置１は、複数特徴量ハッシュ関数を生成する複数特徴量ハッシュ関数生成処理と、複数特徴量ハッシュ関数に基づいて、Ｍ個の特徴量を単一のハッシュ値にハッシュ化する複数特徴量ハッシュ値生成処理とを実行する。以下、これら２つの処理について説明する。
【０１０１】
＜複数特徴量ハッシュ関数生成処理ルーチン＞
まず、情報処理装置１が、コンテンツデータベース５に格納されたＮ個のコンテンツを取得すると、情報処理装置１によって、図２に示す複数特徴量ハッシュ関数生成処理ルーチンが実行される。複数特徴量ハッシュ関数生成処理ルーチンは、実際に検索クエリとしてのコンテンツをハッシュ化する前に、少なくとも１度実行される処理である。
【０１０２】
まず、ステップＳ１００において、入力部２によって、コンテンツデータベース５から、複数（Ｎ個）のコンテンツを取得する。
【０１０３】
ステップＳ１０２において、特徴抽出部３０によって、上記ステップＳ１００で取得されたＮ個のコンテンツの各々に対し、当該コンテンツから複数の特徴量を抽出する。
【０１０４】
ステップＳ１０４において、単一特徴量ハッシュ関数生成部３２によって、Ｎ個のコンテンツの各々に対して上記ステップＳ１０２で当該コンテンツから抽出されたＭ個の特徴量に基づいて、Ｍ個の特徴量の各々について、単一特徴量ハッシュ関数を生成する。また、単一特徴量ハッシュ関数生成部３２によって、生成されたＭ個の単一特徴量ハッシュ関数を記憶部３４に格納する。
【０１０５】
ステップＳ１０６において、単一特徴量ハッシュ値生成部３６によって、Ｎ個のコンテンツの各々に対し、上記ステップＳ１０２で当該コンテンツから抽出されたＭ個の特徴量の各々について、当該特徴量と、上記ステップＳ１０４で記憶部３４に格納された当該特徴量に対応する単一特徴量ハッシュ関数とに基づいて、単一特徴量ハッシュ値を生成する。また、単一特徴量ハッシュ値生成部３６によって、Ｎ個のコンテンツ各々に対して生成されたＭ個の単一特徴量ハッシュ値を記憶部３４に格納する。
【０１０６】
ステップＳ１０８において、複数特徴量ハッシュ関数生成部３８によって、上記ステップＳ１０６で記憶部３４に格納された、Ｎ個のコンテンツ各々に対して生成されたＭ個の単一特徴量ハッシュ値に基づいて、Ｍ個の単一特徴量ハッシュ値の情報量が最大となるように、複数特徴量ハッシュ関数を生成する。そして、複数特徴量ハッシュ関数生成部３８によって、生成された複数特徴量ハッシュ関数を記憶部３４に格納して、複数特徴量ハッシュ関数生成処理ルーチンを終了する。
【０１０７】
以上の処理により、コンテンツデータベース５に格納されたＮ個のコンテンツから複数特徴量ハッシュ関数を生成することができる。
【０１０８】
＜複数特徴量ハッシュ値生成処理ルーチン＞
次に、検索クエリとしてのコンテンツが情報処理装置１に入力されると、情報処理装置１によって、図３に示す複数特徴量ハッシュ値生成処理ルーチンが実行される。複数特徴量ハッシュ値生成処理ルーチンは、記憶部３４に格納された複数特徴量ハッシュ関数を用いてコンテンツを表現する複数の特徴量を（一組の）ハッシュ値へとハッシュ化する処理である。
【０１０９】
まず、ステップＳ２００において、入力部２によって、検索クエリとしてのコンテンツの入力を受け付ける。
【０１１０】
ステップＳ２０２において、特徴抽出部３０によって、上記ステップＳ２００で受け付けた検索クエリとしてのコンテンツから、複数の特徴量を抽出する。
【０１１１】
ステップＳ２０４において、単一特徴量ハッシュ値生成部３６によって、上記ステップＳ２０２で抽出されたＭ個の特徴量と、Ｍ個の特徴量に対応する、上記ステップＳ１０４で記憶部３４に格納された単一特徴量ハッシュ関数とに基づいて、Ｍ個の単一特徴量ハッシュ値を生成する。また、単一特徴量ハッシュ値生成部３６によって、生成されたＭ個の単一特徴量ハッシュ値を記憶部３４に格納する。
【０１１２】
ステップＳ２０６において、複数特徴量ハッシュ値生成部４０によって、上記ステップＳ２０４で記憶部３４に格納された複数の単一特徴量ハッシュ値と、上記ステップＳ１０８で記憶部３４に格納された複数特徴量ハッシュ関数とに基づいて、検索クエリとしてのコンテンツの複数特徴量ハッシュ値を生成する。また、複数特徴量ハッシュ値生成部４０によって、コンテンツデータベース５に格納されたＮ個のコンテンツ各々について、上記ステップＳ１０６で記憶部３４に格納されたＭ個の単一特徴量ハッシュ値と、上記ステップＳ１０８で記憶部３４に格納された複数特徴量ハッシュ関数とに基づいて、当該コンテンツの複数特徴量ハッシュ値を生成する。
【０１１３】
ステップＳ２０８において、出力部４によって、上記ステップＳ２０６で生成された複数特徴量ハッシュ値と、上記ステップＳ２００で受け付けたコンテンツ、又はコンテンツデータベース５に格納されたＮ個のコンテンツとの組み合わせをコンテンツデータベース５へ出力し、コンテンツデータベース５に格納して、複数特徴量ハッシュ値生成処理ルーチンを終了する。
【０１１４】
以上の処理により、入力したコンテンツに対して、複数特徴量ハッシュ値を求めることができる。また、検索クエリとしてのコンテンツの複数特徴量ハッシュ値と類似する複数特徴量ハッシュ値を有するコンテンツを、Ｎ個のコンテンツから発見することができる。
なお、検索クエリとしてのコンテンツの複数特徴量ハッシュ値を生成する処理と、コンテンツデータベース５に格納されたＮ個のコンテンツ各々についての複数特徴量ハッシュ値を生成する処理とを別々の処理ルーチンとして実行してもよい。
【０１１５】
以上説明したように、本発明の実施の形態に係る情報処理装置によれば、複数のコンテンツの各々に対し、当該コンテンツから抽出された複数の特徴量の各々について、単一特徴量ハッシュ関数を生成し、複数のコンテンツの各々に対し、当該コンテンツから抽出された複数の特徴量の各々について、当該特徴量と、当該特徴量に対応する単一特徴量ハッシュ関数とに基づいて、単一特徴量ハッシュ値を生成し、複数のコンテンツの各々に対して生成された複数の単一特徴量ハッシュ値に基づいて、複数の単一特徴量ハッシュ値の情報量が最大となるように、複数特徴量ハッシュ関数を生成することにより、複数の特徴量を含むコンテンツのハッシュ値を生成するための複数特徴量ハッシュ関数を生成することができる。
【０１１６】
また、本発明の実施の形態に係る情報処理装置によれば、複数のコンテンツの各々に対し、当該コンテンツから抽出された複数の特徴量の各々について、当該特徴量と、当該特徴量に対応する単一特徴量ハッシュ関数とに基づいて、単一特徴量ハッシュ値を生成し、複数のコンテンツの各々に対して生成された複数の単一特徴量ハッシュ値と、生成された複数特徴量ハッシュ関数とに基づいて、複数のコンテンツの各々に対し、複数の特徴量に対応するハッシュ値である複数特徴量ハッシュ値を生成する。また、検索クエリとしてのコンテンツから抽出された複数の特徴量の各々について、当該特徴量と、当該特徴量に対応する予め生成された単一特徴量ハッシュ関数とに基づいて、検索クエリとしてのコンテンツの特徴量に対応するハッシュ値である単一特徴量ハッシュ値を生成し、生成された複数の単一特徴量ハッシュ値と、生成された複数特徴量ハッシュ関数とに基づいて、検索クエリとしてのコンテンツの複数の特徴量に対応するハッシュ値である複数特徴量ハッシュ値を生成する。これにより、複数特徴量ハッシュ値を用いて、検索クエリとしてのコンテンツの類似するコンテンツを精度よく発見することができる。
【０１１７】
また、以上説明したように、前述した複数特徴量ハッシュ関数と複数特徴量ハッシュ値を用いることにより、複数の異なる特徴量で表現されたコンテンツについて、高速かつ省メモリでありながらも高精度に類似コンテンツを発見することが可能になる。省メモリであることから、例えば、メモリ量の小さいモバイル端末（スマートフォンやタブレット）での利用も可能となる。また、高速であることから、実時間性の要求される利用に対しても対応可能である。これらの効果を活用した具体的な利用シーンとして、街中を歩いているときに気になる場所や商品をモバイル端末で写真撮影し、類似した場所・商品を検索することが可能になる。
【０１１８】
また、大量のコンテンツの中から、類似コンテンツを発見するためのハッシュ関数の生成及びハッシュ値の生成を行うことができる。
【０１１９】
また、複数の特徴量によって表現されたコンテンツに対し、高速かつ省メモリでありながらも高精度な類似コンテンツ発見を実現するためのハッシュ関数の生成及びハッシュ値の生成を行うことができる。
【０１２０】
＜第２の実施の形態＞
＜システム構成＞
次に、図４を参照して、本発明の第２の実施の形態について説明する。なお、第１の実施の形態と同様の構成となる部分については、同一符号を付して説明を省略する。
【０１２１】
第２の実施の形態では、サーバ装置とクライアント装置とで情報処理システムを構成する点が、第１の実施の形態と異なっている。第２の実施の形態では、類似コンテンツ検索を実施する情報処理システムに、本発明を適用させた場合を例に説明する。
【０１２２】
本発明の第２の実施の形態に係る情報処理システム２００は、図４に示すように、サーバ装置６と、クライアント装置１１とを備えている。
【０１２３】
図４に示すサーバ装置６は、ＣＰＵと、ＲＡＭと、各処理ルーチンを実行するためのプログラムを記憶したＲＯＭとを備えたコンピュータで構成され、機能的には次に示すように構成されている。図４に示すように、サーバ装置６は、入力部７、演算部８、出力部９を備えている。また、演算部８は、特徴抽出部８０、単一特徴量ハッシュ関数生成部８２、記憶部８４、単一特徴量ハッシュ値生成部８６、複数特徴量ハッシュ関数生成部８８、複数特徴量ハッシュ値生成部９０を備えている。また、コンテンツデータベース１０には、第１の実施の形態のコンテンツデータベース５と同様に、複数のコンテンツが登録されている。
【０１２４】
また、図４に示すクライアント装置１１は、ＣＰＵと、ＲＡＭと、各処理ルーチンを実行するためのプログラムを記憶したＲＯＭとを備えたコンピュータで構成され、機能的には次に示すように構成されている。図４に示すように、クライアント装置１１は、入力部１２、演算部１３、出力部１４を備えている。また、演算部１３は、特徴抽出部１３０、単一特徴量ハッシュ値生成部１３６、記憶部１３４、複数特徴量ハッシュ値生成部１４０を備える。
【０１２５】
ここで、サーバ装置６とクライアント装置１１において、共通する構成要素（入力部、特徴抽出部、単一／複数特徴量ハッシュ関数記憶部、単一／複数特徴量ハッシュ値生成部）はそれぞれ同一の機能を有するように構成し、また、上記図１に記載した各構成要素と同一名称のものは、上記図１の場合と同一の機能を有するものとしてよい。さらに、記憶部の内容は、それぞれ何らかの通信手段で適宜同期されているものとする。
【０１２６】
図４に示す装置構成における処理動作は下記の通りである。まずサーバ装置６は、上記説明した処理と同様の処理を行って、適宜、単一／複数特徴量ハッシュ関数を生成して記憶部８４に格納し、クライアント装置１１の記憶部１３４と同期させる。さらに、コンテンツデータベース１０中のコンテンツに対して、上記説明した処理と同様の処理を行って、複数特徴量ハッシュ値を生成し、コンテンツデータベース１０に格納しておく。
【０１２７】
一方、クライアント装置１１は、入力部１２によって、利用者からの検索要求、すなわち、検索クエリとしてのコンテンツの入力を受け付けたら、当該コンテンツに対して複数特徴量ハッシュ値を生成し、出力部１４からサーバ装置６の入力部７へと当該複数特徴量ハッシュ値を出力する。
【０１２８】
クライアント装置１１から複数特徴量ハッシュ値を受けた場合、サーバ装置６は、当該複数特徴量ハッシュ値を用いて、コンテンツデータベース１０に対して検索を行い、複数特徴量ハッシュ値に基づいて類似コンテンツを発見し、その結果をクライアント装置１１へと出力する。
【０１２９】
最後に、クライアント装置１１は、サーバ装置６より受け取った検索結果を利用者に出力する。
【０１３０】
このように構成することで、サーバ装置６で単一／複数特徴量ハッシュ関数生成処理を実施し、クライアント装置１１では複数特徴量ハッシュ値生成処理のみを実施するように構成することができる。
【０１３１】
なお、第２の実施の形態に係る情報処理装置１の他の構成及び作用については、第１の実施の形態と同様であるため、説明を省略する。
【０１３２】
この構成を取るメリットを説明する。一般に、クライアント装置（ＰＣ，携帯端末等）は、サーバ装置と比較して演算能力に乏しいため、単一／複数特徴量ハッシュ関数生成のように演算量が比較的多い処理には適さない場合がある。この構成にすれば、単一／複数特徴量ハッシュ関数生成処理は演算能力の高いサーバ装置で適宜実施し、クライアント装置では演算量の少ない単一／複数特徴量ハッシュ値生成処理だけを実施することができる。さらに、通常、ネットワークを介した通信によってデータ容量の多い情報を伝送する場合、伝送時間が掛かるという問題があるが、当該構成によって、伝送するのは情報量の小さい複数特徴量ハッシュ値のみでよくなり、検索に対する即応性を高めることができる。
【０１３３】
[実施例]
次に、上記の第１の実施の形態で説明した処理により生成した複数特徴量ハッシュ値によって、類似コンテンツを高速かつ省メモリに検索する実施例について説明する。本実施例では、コンテンツデータベース５に、Ｎ個の画像コンテンツが格納されているとする。特徴量として、色ヒストグラム、テクスチャ特徴、形状特徴量の３つを利用するものとし、これらに基づいて、複数特徴量ハッシュ値が生成され、記憶部３４に格納されているとする。目的は、新しく検索クエリとしての入力された画像コンテンツｑに対して、類似するコンテンツをＮ個のコンテンツの中から発見することである。
【０１３４】
まず、新しく検索クエリとして入力された画像コンテンツｑに対して色ヒストグラム、テクスチャ特徴、形状特徴量を抽出し、単一特徴量ハッシュ関数によって単一特徴量ハッシュ値を求める。その後、上記式（４）に基づいて、複数特徴量ハッシュ値ｙｑを求める。
【０１３５】
最も単純には、図５に示すハッシュテーブルを用いる方法がある。まず、コンテンツデータベース５に登録されている複数特徴量ハッシュ値によって、図５に示すようなハッシュテーブルを構成する。このテーブルでは、ある複数特徴量ハッシュ値と、その複数特徴量ハッシュ値に変換された画像コンテンツ（識別子）を対応づけて格納しており、複数特徴量ハッシュ値が与えられた際に、それと同一の複数特徴量ハッシュ値を取る画像コンテンツを即時発見することができる。例えば、複数特徴量ハッシュ値「００００」を指定した場合、それに対応づけられた画像（画像１、画像５・・・）を直ちに発見できるのである。同様に、このハッシュテーブルを利用すれば、新たに入力されたコンテンツｑの複数特徴量ハッシュ値ｙｑに対応した画像コンテンツを即座に発見することが可能となる。
【０１３６】
この方法によれば、コンテンツデータベース５に登録された画像コンテンツの数Ｎに寄らず、ほぼ一定の時間で高速に、かつ、元の特徴量をメモリに保持する必要がないため、省メモリに類似コンテンツを発見できるという利点がある。
【０１３７】
また、別の方法として、ハミング距離による距離計算を利用することができる。すなわち、新たに入力された画像コンテンツｑの複数特徴量ハッシュ値ｙｑと、コンテンツデータベース５に格納されたＮ個の画像コンテンツの複数特徴量ハッシュ値との距離を計算し、距離の小さいものを類似コンテンツとして得るものである。複数特徴量ハッシュ値はバイナリであるため、距離計算は例えばハミング距離で計算することができるが、ハミング距離はＸＯＲ（排他的論理和）とｐｏｐｃｎｔ演算（すなわち、バイナリ列のうち、１となっているビットの数を数える演算）のみで計算できること、および、複数特徴量ハッシュ値は通常少数のバイナリ値で表現できることから、元の特徴量で距離計算する場合に比べ、遥かに高速に演算できる。
【０１３８】
ここで、実際の実利用例を示す。本実例では、コンテンツデータベース５に、２０種類の被写体（人、犬、猫、車、飛行機、バス等）を写した１２１９５枚の画像を登録した。特徴量としては、色ヒストグラム、テクスチャ特徴、形状特徴量の３つを利用し、それぞれ上記非特許文献１の方法に基づいて３２ビットの単一特徴量ハッシュ値を生成した後、これを用いてＶ＝３２（ビット）の複数特徴量ハッシュ値を生成する複数特徴量ハッシュ関数を求めた。
【０１３９】
図６は、コンテンツデータベース５に登録されている画像とは異なる、５００枚の画像をクエリとし、ハミング距離による類似コンテンツ発見を実施した場合の精度を報告したものである。なお、ここでの精度は、距離の最も近い５０枚の画像の内、クエリに撮影された被写体と同じ被写体を検索できた枚数の割合である。８ビットおよび３２ビットの単一特徴量／複数特徴量ハッシュ値を用いた場合の精度を示している。
【０１４０】
上記図６から、本発明の実施の形態による複数特徴量ハッシュ値は、従来の単一特徴量ハッシュ値の中から、情報量の高い成分を効果的に抽出し、一つの複数特徴量ハッシュ値として構成することによって、従来の単一特徴量ハッシュ値のみの場合に比べ、同ビット数でありながら格段に高精度な類似コンテンツ発見ができることがわかる。
【０１４１】
なお、本発明は、上述した実施形態に限定されるものではなく、この発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。本実施形態の主要な特徴を満たす範囲内において、任意の用途と構成を取ることができることは言うまでもない。
【０１４２】
例えば、上記実施の形態における単一特徴量ハッシュ関数生成部３２、単一特徴量ハッシュ値生成部３６、複数特徴量ハッシュ関数生成部３８、及び複数特徴量ハッシュ値生成部４０は分離可能であり、各々を別々の装置としてもよい。
【０１４３】
また、上記第１の実施の形態における、単一特徴量ハッシュ関数生成部３２、及び複数特徴量ハッシュ関数生成部３８と、複数特徴量ハッシュ値生成部４０とを別々の装置として構成してもよい。その場合には、単一特徴量ハッシュ関数生成部３２、単一特徴量ハッシュ値生成部３６、及び複数特徴量ハッシュ関数生成部３８を含んでハッシュ関数生成装置を構成し、単一特徴量ハッシュ値生成部３６、及び複数特徴量ハッシュ値生成部４０を含んでハッシュ値生成装置を構成する。
【０１４４】
また、本実施の形態の情報処理装置及び情報処理システムは、記憶部３４（８４，１３４）を備えている場合について説明したが、例えば記憶部３４（８４，１３４）が情報処理装置及び情報処理システムの外部装置に設けられ、情報処理装置及び情報処理システムは、外部装置と通信手段を用いて通信することにより、記憶部３４（８４，１３４）を参照するようにしてもよい。
【０１４５】
また、本願明細書中において、プログラムが予めインストールされている実施形態として説明したが、当該プログラムを、コンピュータ読み取り可能な記録媒体に格納して提供することも可能である。
例えば、前述した実施形態における複数特徴量ハッシュ関数生成部、複数特徴量ハッシュ値生成部をコンピュータで実現するようにしてもよい。その場合、この機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現してもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでもよい。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであってもよく、ＰＬＤ（Programmable Logic Device）やＦＰＧＡ（Field Programmable Gate Array）等のハードウェアを用いて実現されるものであってもよい。
【０１４６】
また、上述の情報処理装置及び情報処理システムは、内部にコンピュータシステムを有しているが、「コンピュータシステム」は、ＷＷＷシステムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。
【０１４７】
以上、図面を参照して本発明の実施の形態を説明してきたが、上記実施の形態は本発明の例示に過ぎず、本発明が上記実施の形態に限定されるものではないことは明らかである。したがって、本発明の技術思想及び範囲を逸脱しない範囲で構成要素の追加、省略、置換、その他の変更を行ってもよい。
【符号の説明】
【０１４８】
１  情報処理装置
２，７，１２  入力部
３，８，１３  演算部
４，９，１４  出力部
５，１０  コンテンツデータベース
６     サーバ装置
１１   クライアント装置
３０，８０，１３０   特徴抽出部
３２，８２    単一特徴量ハッシュ関数生成部
３４，８４，１３４   記憶部
３６，８６，１３６   単一特徴量ハッシュ値生成部
３８，８８    複数特徴量ハッシュ関数生成部
４０，９０，１４０   複数特徴量ハッシュ値生成部
２００  情報処理システム
【図１】
2015201041.tif 000008
【図２】
2015201041.tif 000009
【図３】
2015201041.tif 000010
【図４】
2015201041.tif 000011
【図５】
2015201041.tif 000012
【図６】
2015201041.tif 000013