(57)【要約】【課題】検索結果が正確で高速な多次元データのデータ検索装置等を提供する。【解決手段】指定された検索条件を特徴量に基づいて検索対象データと同じ次元数の検索質問ベクトルに変換し、一部の検索対象ベクトルについて検索質問ベクトルと検索対象ベクトルとの間の距離を演算して、検索質問ベクトルと距離的に近い距離値を所定の個数、あるいは距離が所定値以下のものを複数個保持し、検索対象ベクトルと検索質問ベクトルとの距離を求めるに際し、各次元毎の加算結果を、保持された距離の内最大値と比較し、これよりも小さい場合は次の次元の要素に対し加算を実行し、最大値より大きい場合は該ベクトルにつき以降の計算を中止して次の検索対象ベクトルに対する距離計算に移行し、該検索対象ベクトルに対し得られた距離と保持された距離の最大値とを比較し、計算された距離が小さい場合に、該計算された距離を最大値と入れ替えて保持する。【選択図】  図５
2005011042.tif 000002
【特許請求の範囲】
【請求項１】
複数の特徴に対し、これらの特徴に対する特徴量をベクトルで表現可能な検索対象の多次元のデータに対し、検索条件を指定して検索条件に合致あるいは近似するデータを抽出するデータ検索方法であって、
指定された検索条件を特徴量に基づいて検索対象データと同じ次元数の検索質問ベクトルに変換し、一部の検索対象ベクトルについて検索質問ベクトルと検索対象ベクトルとの間の距離を演算して、検索質問ベクトルと距離的に近い所定の個数の距離を保持するステップと、
検索対象ベクトルと検索質問ベクトルとの距離を求めるに際し、各ベクトルの各次元の要素毎に順次加算しながら計算するステップであって、各次元毎の加算結果を、前記保持された距離の内最大値と比較し、これよりも小さい場合は次の次元の要素に対し加算を実行し、最大値より大きい場合は該ベクトルにつき以降の計算を中止して次の検索対象ベクトルに対する距離計算に移行するステップと、
該検索対象ベクトルに対し得られた距離と前記保持された距離の最大値とを比較し、計算された距離が小さい場合に、該計算された距離を最大値と入れ替えて保持するステップと、
すべての検索対象ベクトルにつき距離計算を終えた時点で、保持された各距離に対応する検索対象ベクトルの多次元データを、検索結果として出力するステップと、
を備えることを特徴とするデータ検索方法。
【請求項２】
複数の特徴に対し、これらの特徴に対する特徴量をベクトルで表現可能な検索対象の多次元のデータに対し、検索条件を指定して検索条件に合致あるいは近似するデータを抽出するデータ検索方法であって、
指定された検索条件を特徴量に基づいて検索対象データと同じ次元数の検索質問ベクトルに変換し、一部の検索対象ベクトルについて検索質問ベクトルと検索対象ベクトルとの間の距離を演算して、検索質問ベクトルとの距離が所定範囲内である距離を保持するステップと、
検索対象ベクトルと検索質問ベクトルとの距離を求めるに際し、各ベクトルの各次元の要素毎に順次加算しながら計算するステップであって、各次元毎の加算結果を、前記保持された距離の内最大値と比較し、これよりも小さい場合は次の次元の要素に対し加算を実行し、最大値より大きい場合は該ベクトルにつき以降の計算を中止して次の検索対象ベクトルに対する距離計算に移行するステップと、
該検索対象ベクトルに対し得られた距離と前記保持された距離の最大値とを比較し、計算された距離が小さい場合に、該計算された距離を最大値と入れ替えて保持するステップと、
すべての検索対象ベクトルにつき距離計算を終えた時点で、保持された各距離に対応する検索対象ベクトルの多次元データを、検索結果として出力するステップと、
を備えることを特徴とするデータ検索方法。
【請求項３】
請求項１または２に記載のデータ検索方法であって、前記検索対象ベクトルと検索質問ベクトルとの距離を演算する前に、予め検索対象ベクトルを構成する各次元の要素の分散値に基づきベクトルの要素をソートし、分散値の大きい次元から順に前記検索対象ベクトルと検索質問ベクトルとの距離計算を行うことを特徴とするデータ検索方法。
【請求項４】
請求項１または２に記載のデータ検索方法であって、前記検索対象ベクトルと検索質問ベクトルとの距離を演算する前に、予めベクトルの座標系を主成分分析に基づき変換し、この座標系に変換されたベクトルに基づいて前記検索対象ベクトルと検索質問ベクトルとの距離計算を行うことを特徴とするデータ検索方法。
【請求項５】
請求項１から４のいずれかに記載のデータ検索方法であって、検索対象のデータがローカルもしくはネットワーク上に接続されたデータベースに保存されており、前記データベースに保存されたデータからデータ検索を行う方法であることを特徴とするデータ検索方法。
【請求項６】
請求項１から５のいずれかに記載のデータ検索方法であって、前記検索対象のデータが文書データ、静止画または動画である画像データ、音声データ、音楽データのいずれかもしくはこれらの組み合わせであることを特徴とするデータ検索方法。
【請求項７】
請求項１から５のいずれかに記載のデータ検索方法であって、前記データ検索が、画像のパターン認識であることを特徴とするデータ検索方法。
【請求項８】
複数の特徴に対し、これらの特徴に対する特徴量をベクトルで表現可能な検索対象の多次元のデータに対し、検索条件を指定して検索条件に合致あるいは近似するデータを抽出するデータ検索装置であって、
検索対象となる多次元のデータ群を保持するデータベースから検索したい条件を指定して、指定された検索条件を特徴量に基づいて検索対象データと同じ次元数の検索質問ベクトルに変換するための入力部と、
検索対象ベクトルと検索質問ベクトルとの距離を、各ベクトルの次元毎に計算する演算部と、
前記演算部で計算されたベクトルの距離を複数個保持するためのメモリ部と、
前記メモリ部で保持された複数の距離の最大値を抽出するための抽出部と、
前記演算部で計算されたベクトルの距離を前記抽出部で抽出される距離の最大値よりも小さい場合に、該計算された距離を最大値と入れ替えて前記メモリ部を更新するための更新部と、
検索対象ベクトルと検索質問ベクトルとの距離を、前記演算部で各ベクトルの次元毎に順次加算しながら計算する過程において、各次元毎の加算結果を、前記抽出部により抽出される最大値と比較し、これよりも小さい場合は次の次元につき加算を続行し、最大値以上の場合は該ベクトルにつき以降の計算を中止して次の検索対象ベクトルの計算に移行する演算中断部と、
を備えることを特徴とするデータ検索装置。
【請求項９】
複数の特徴に対し、これらの特徴に対する特徴量をベクトルで表現可能な検索対象の多次元のデータに対し、検索条件を指定して検索条件に合致あるいは近似するデータを抽出するデータ検索プログラムであって、コンピュータに、
指定された検索条件を特徴量に基づいて検索対象データと同じ次元数の検索質問ベクトルに変換し、一部の検索対象ベクトルについて検索質問ベクトルと検索対象ベクトルとの間の距離を演算して、検索質問ベクトルと距離的に近い所定の個数の距離を保持する機能と、
検索対象ベクトルと検索質問ベクトルとの距離を求めるに際し、各ベクトルの各次元の要素毎に順次加算しながら計算する機能であって、各次元毎の加算結果を、前記保持された距離の内最大値と比較し、これよりも小さい場合は次の次元の要素に対し加算を実行し、最大値より大きい場合は該ベクトルにつき以降の計算を中止して次の検索対象ベクトルに対する距離計算に移行する機能と、
該検索対象ベクトルに対し得られた距離と前記保持された距離の最大値とを比較し、計算された距離が小さい場合に、該計算された距離を最大値と入れ替えて保持する機能と、
すべての検索対象ベクトルにつき距離計算を終えた時点で、保持された各距離に対応する検索対象ベクトルの多次元データを、検索結果として出力する機能と、
を実現させることを特徴とするデータ検索プログラム。
【請求項１０】
複数の特徴に対し、これらの特徴に対する特徴量をベクトルで表現可能な検索対象の多次元のデータに対し、検索条件を指定して検索条件に合致あるいは近似するデータを抽出するデータ検索装置であって、
指定された検索条件を特徴量に基づいて検索対象データと同じ次元数の検索質問ベクトルに変換し、一部の検索対象ベクトルについて検索質問ベクトルと検索対象ベクトルとの間の距離を演算して、検索質問ベクトルとの距離が所定範囲内である距離を保持する機能と、
検索対象ベクトルと検索質問ベクトルとの距離を求めるに際し、各ベクトルの各次元の要素毎に順次加算しながら計算する機能であって、各次元毎の加算結果を、前記保持された距離の内最大値と比較し、これよりも小さい場合は次の次元の要素に対し加算を実行し、最大値より大きい場合は該ベクトルにつき以降の計算を中止して次の検索対象ベクトルに対する距離計算に移行する機能と、
該検索対象ベクトルに対し得られた距離と前記保持された距離の最大値とを比較し、計算された距離が小さい場合に、該計算された距離を最大値と入れ替えて保持する機能と、
すべての検索対象ベクトルにつき距離計算を終えた時点で、保持された各距離に対応する検索対象ベクトルの多次元データを、検索結果として出力する機能と、
を実現させることを特徴とするデータ検索プログラム。
【請求項１１】
前記請求項９または１０に記載のデータ検索プログラムを格納したコンピュータで読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、多次元データの検索を行うデータ検索方法、データ検索装置、データ検索プログラムおよびコンピュータで読み取り可能な記録媒体に関し、例えば画像検索、映像検索、音楽検索等のデータマッチングに応用可能なデータ検索方法、データ検索装置、データ検索プログラムおよびコンピュータで読み取り可能な記録媒体に関する。
【０００２】
【従来の技術】
近年のコンピュータ等電子計算機の高性能化、記憶容量の大容量化および低価格化により、情報の電子化、ＩＴ化の急速な普及が進み、電子化されたデータが利用される機会が飛躍的に増大した。電子化されたデータは紙のデータに比較して複製や加工、共有が容易であり、しかも検索の面等で優れている。特に最近ではインターネットの普及により、文書のみならず画像や映像、音声データ等のマルチメディアデータが頻繁に扱われるようになった。このような背景において、所望のデータやこれに類似するデータの検索や分類、整理等の技術が重要となっている。ここでは、マルチメディアデータの検索、データマイニング、パターン認識、機械学習、コンピュータ・ビジョン、統計データ解析等を含めてデータマッチングと呼ぶ。
【０００３】
データマッチングをコンピュータで行う際、マルチメディアデータはコンピュータ内部では特徴量のベクトルで表現することができる。特徴量のベクトルは、指定された検索条件に類似するデータをデータベース中から検索する際にも利用できる。図１に特徴量ベクトルを利用したマルチメディア・コンテンツ検索の一例を示す。類似検索を行う検索条件として特徴量のベクトルを指定すると、検索の実行は検索条件のベクトルとデータベース中のベクトルの距離を計算し、距離的に小さいものを検索結果として出力する。このように、条件として与えられたベクトルとの距離が小さいベクトルをデータベース中から検索することを、最近傍検索（ｎｅａｒｅｓｔ  ｎｅｉｇｈｂｏｒ  ｓｅａｒｃｈ）と呼ぶ。最近傍検索では、複数の特徴量を多次元ベクトルで表現し、ベクトル間の距離によりデータ同士の類似性を判定している。例えば、文書検索の場合には、索引語の重みベクトルで文書や検索条件を表現することができる。また画像の類似検索の場合には、カラーヒストグラム、テクスチャ特徴量、形状特徴量等から成る特徴量ベクトルにより画像データを表現する。
【０００４】
このような特徴量ベクトルに基づくコンテンツの類似検索として、線形探索が知られている。線形探索では、データベース中のすべてのデータに関する特徴量ベクトルを検索条件のベクトルと逐次的に比較するため、データベースの規模に比例した計算量が必要となる。計算量の増大は計算機側の処理の負担の増大、要処理時間の増大に繋がる。このため、データベースが大規模化した際の検索システムの処理効率に深刻な影響を及ぼすことになる。したがって、最近傍検索を効率的に行うための多次元インデキシング技術の開発が、重要な課題として従来より活発に研究されてきた（例えば特許文献１および２を参照）。
【０００５】
【特許文献１】
特開２００２−３１８８１８号公報
【特許文献２】
特開２００１−２０９６５１号公報
【０００６】
【発明が解決しようとする課題】
しかしながら、このような研究にも拘わらず決定的な方式は開発されていない。特徴量ベクトルの次元数は一般に非常に大きいため、高次元空間における効率的な多次元インデキシング技術の開発は容易でない。
【０００７】
例えば、ユークリッド空間における多次元インデキシング手法には、Ｒ−ｔｒｅｅ、ＳＳ−ｔｒｅｅ、ＳＲ−ｔｒｅｅ等が提案されている。また、より一般的な距離空間を対象にしたインデキシング手法としては、ＶＰ−ｔｒｅｅ、ＭＶＰ−ｔｒｅｅ、Ｍ−ｔｒｅｅ等が提案されている。これらのインデキシング手法は、多次元空間を階層的に分割することにより、探索範囲を限定することを基本としている。探索範囲を限定すれば、その分だけ計算量も少なくて済む。しかしながら、高次元空間では、ある点の最近点と最遠点との間に距離的な差が生じなくなるという現象が起こる。この「次元の呪い（ｃｕｒｓｅ  ｏｆ  ｄｉｍｅｎｓｉｏｎａｌｉｔｙ）」として知られる現象によって、探索する領域を限定することが困難となり、結果として線形探索に近い計算量が必要になってしまうという問題点がある。
【０００８】
高次元空間における上記の問題点に対処するために、近似的な最近傍検索についても研究が進められている。たとえば、ハッシュ法に基づく近似検索手法や空間充填曲線（ｓｐａｃｅ−ｆｉｌｌｉｎｇ  ｃｕｒｖｅ）を用いて、高次元空間の点を索引付けする手法等も提案されているが、実用化には至っていない。
【０００９】
一方、種々のメディアのデータが混在するクロスメディア情報検索では、一度の検索で所望の検索結果を得ることが困難であり、ユーザは複数回のやりとりによって所望の検索結果を得ることが多々ある。したがって、クロスメディア情報検索では特徴量ベクトルに基づく最近傍検索の実行回数が必然的に多くなってしまう。このような場合においては、高速な検索の要求が特に高い。
【００１０】
これに対して本発明者らは、１次元自己組織化マップを用いた高次元データの高速近傍検索方法を開発した（特願２００２−２０４３０６号）。この方法では、近似的な最近傍検索として１次元自己組織化マップを利用し、さらに２次記憶媒体へのアクセスを効率化することによって高効率かつ高速なデータマッチングを実現していた。しかしながら、上記の方法はあくまでも近似的な手法であって、検索結果に多少の誤差を伴う可能性を避けられないという問題があった。
【００１１】
また、従来の研究では線形検索では時間がかかりすぎるとして、線形検索以外の方法に注力される傾向があり、単純で基本的な線形検索方法自体の改善、見直しが進んでいないという背景があった。
【００１２】
本発明は、このような状況に鑑みてなされたものである。本発明の主な目的は、検索結果が正確であって且つ従来よりも高速な多次元データの検索を行うデータ検索装置、データ検索方法、データ検索プログラムおよびコンピュータで読み取り可能な記録媒体を提供することにある。
【００１３】
【課題を解決するための手段】
上記の目的を達成するために、本発明の請求項１に記載されるデータ検索方法は、複数の特徴に対し、これらの特徴に対する特徴量をベクトルで表現可能な検索対象の多次元のデータに対し、検索条件を指定して検索条件に合致あるいは近似するデータを抽出するデータ検索方法であって、指定された検索条件を特徴量に基づいて検索対象データと同じ次元数の検索質問ベクトルに変換し、一部の検索対象ベクトルについて検索質問ベクトルと検索対象ベクトルとの間の距離を演算して、検索質問ベクトルと距離的に近い所定の個数の距離を保持するステップと、検索対象ベクトルと検索質問ベクトルとの距離を求めるに際し、各ベクトルの各次元の要素毎に順次加算しながら計算するステップであって、各次元毎の加算結果を、前記保持された距離の内最大値と比較し、これよりも小さい場合は次の次元の要素に対し加算を実行し、最大値より大きい場合は該ベクトルにつき以降の計算を中止して次の検索対象ベクトルに対する距離計算に移行するステップと、該検索対象ベクトルに対し得られた距離と前記保持された距離の最大値とを比較し、計算された距離が小さい場合に、該計算された距離を最大値と入れ替えて保持するステップと、すべての検索対象ベクトルにつき距離計算を終えた時点で、保持された各距離に対応する検索対象ベクトルの多次元データを、検索結果として出力するステップとを備えることを特徴とする。
【００１４】
また、請求項２のデータ検索方法は、複数の特徴に対し、これらの特徴に対する特徴量をベクトルで表現可能な検索対象の多次元のデータに対し、検索条件を指定して検索条件に合致あるいは近似するデータを抽出するデータ検索方法であって、指定された検索条件を特徴量に基づいて検索対象データと同じ次元数の検索質問ベクトルに変換し、一部の検索対象ベクトルについて検索質問ベクトルと検索対象ベクトルとの間の距離を演算して、検索質問ベクトルとの距離が所定範囲内である距離を保持するステップと、検索対象ベクトルと検索質問ベクトルとの距離を求めるに際し、各ベクトルの各次元の要素毎に順次加算しながら計算するステップであって、各次元毎の加算結果を、前記保持された距離の内最大値と比較し、これよりも小さい場合は次の次元の要素に対し加算を実行し、最大値より大きい場合は該ベクトルにつき以降の計算を中止して次の検索対象ベクトルに対する距離計算に移行するステップと、該検索対象ベクトルに対し得られた距離と前記保持された距離の最大値とを比較し、計算された距離が小さい場合に、該計算された距離を最大値と入れ替えて保持するステップと、すべての検索対象ベクトルにつき距離計算を終えた時点で、保持された各距離に対応する検索対象ベクトルの多次元データを、検索結果として出力するステップとを備えることを特徴とする。
【００１５】
さらに、請求項３のデータ検索方法は、請求項１または２に記載のデータ検索方法であって、前記検索対象ベクトルと検索質問ベクトルとの距離を演算する前に、予め検索対象ベクトルを構成する各次元の要素の分散値に基づきベクトルの要素をソートし、分散値の大きい次元から順に前記検索対象ベクトルと検索質問ベクトルとの距離計算を行うことを特徴とする。
【００１６】
さらにまた、請求項４のデータ検索方法は、請求項１または２に記載のデータ検索方法であって、前記検索対象ベクトルと検索質問ベクトルとの距離を演算する前に、予めベクトルの座標系を主成分分析に基づき変換し、この座標系に変換されたベクトルに基づいて前記検索対象ベクトルと検索質問ベクトルとの距離計算を行うことを特徴とする。
【００１７】
さらにまた、請求項５のデータ検索方法は、請求項１から４のいずれかに記載のデータ検索方法であって、検索対象のデータがローカルもしくはネットワーク上に接続されたデータベースに保存されており、前記データベースに保存されたデータからデータ検索を行う方法であることを特徴とする。
【００１８】
さらにまた、請求項６のデータ検索方法は、請求項１から５のいずれかに記載のデータ検索方法であって、前記検索対象のデータが文書データ、静止画または動画である画像データ、音声データ、音楽データのいずれかもしくはこれらの組み合わせであることを特徴とする。
【００１９】
さらにまた、請求項７のデータ検索方法は、請求項１から５のいずれかに記載のデータ検索方法であって、前記データ検索が、画像のパターン認識であることを特徴とする。
【００２０】
また、請求項８のデータ検索装置は、複数の特徴に対し、これらの特徴に対する特徴量をベクトルで表現可能な検索対象の多次元のデータに対し、検索条件を指定して検索条件に合致あるいは近似するデータを抽出するデータ検索装置であって、検索対象となる多次元のデータ群を保持するデータベースから検索したい条件を指定して、指定された検索条件を特徴量に基づいて検索対象データと同じ次元数の検索質問ベクトルに変換するための入力部と、検索対象ベクトルと検索質問ベクトルとの距離を、各ベクトルの次元毎に計算する演算部と、前記演算部で計算されたベクトルの距離を複数個保持するためのメモリ部と、前記メモリ部で保持された複数の距離の最大値を抽出するための抽出部と、前記演算部で計算されたベクトルの距離を前記抽出部で抽出される距離の最大値よりも小さい場合に、該計算された距離を最大値と入れ替えて前記メモリ部を更新するための更新部と、検索対象ベクトルと検索質問ベクトルとの距離を、前記演算部で各ベクトルの次元毎に順次加算しながら計算する過程において、各次元毎の加算結果を、前記抽出部により抽出される最大値と比較し、これよりも小さい場合は次の次元につき加算を続行し、最大値以上の場合は該ベクトルにつき以降の計算を中止して次の検索対象ベクトルの計算に移行する演算中断部とを備えることを特徴とする。
【００２１】
さらに、請求項９のデータ検索プログラムは、複数の特徴に対し、これらの特徴に対する特徴量をベクトルで表現可能な検索対象の多次元のデータに対し、検索条件を指定して検索条件に合致あるいは近似するデータを抽出するデータ検索プログラムであって、コンピュータに、指定された検索条件を特徴量に基づいて検索対象データと同じ次元数の検索質問ベクトルに変換し、一部の検索対象ベクトルについて検索質問ベクトルと検索対象ベクトルとの間の距離を演算して、検索質問ベクトルと距離的に近い所定の個数の距離を保持する機能と、検索対象ベクトルと検索質問ベクトルとの距離を求めるに際し、各ベクトルの各次元の要素毎に順次加算しながら計算する機能であって、各次元毎の加算結果を、前記保持された距離の内最大値と比較し、これよりも小さい場合は次の次元の要素に対し加算を実行し、最大値より大きい場合は該ベクトルにつき以降の計算を中止して次の検索対象ベクトルに対する距離計算に移行する機能と、該検索対象ベクトルに対し得られた距離と前記保持された距離の最大値とを比較し、計算された距離が小さい場合に、該計算された距離を最大値と入れ替えて保持する機能と、すべての検索対象ベクトルにつき距離計算を終えた時点で、保持された各距離に対応する検索対象ベクトルの多次元データを、検索結果として出力する機能とを実現させることを特徴とする。
【００２２】
さらにまた、請求項１０のデータ検索プログラムは、複数の特徴に対し、これらの特徴に対する特徴量をベクトルで表現可能な検索対象の多次元のデータに対し、検索条件を指定して検索条件に合致あるいは近似するデータを抽出するデータ検索装置であって、指定された検索条件を特徴量に基づいて検索対象データと同じ次元数の検索質問ベクトルに変換し、一部の検索対象ベクトルについて検索質問ベクトルと検索対象ベクトルとの間の距離を演算して、検索質問ベクトルとの距離が所定範囲内である距離を保持する機能と、検索対象ベクトルと検索質問ベクトルとの距離を求めるに際し、各ベクトルの各次元の要素毎に順次加算しながら計算する機能であって、各次元毎の加算結果を、前記保持された距離の内最大値と比較し、これよりも小さい場合は次の次元の要素に対し加算を実行し、最大値より大きい場合は該ベクトルにつき以降の計算を中止して次の検索対象ベクトルに対する距離計算に移行する機能と、該検索対象ベクトルに対し得られた距離と前記保持された距離の最大値とを比較し、計算された距離が小さい場合に、該計算された距離を最大値と入れ替えて保持する機能と、すべての検索対象ベクトルにつき距離計算を終えた時点で、保持された各距離に対応する検索対象ベクトルの多次元データを、検索結果として出力する機能とを実現させることを特徴とする。
【００２３】
さらにまた、本発明の請求項１１に記載されるコンピュータで読み取り可能な記録媒体は、前記請求項９または１０に記載されるデータ検索プログラムを格納するものである。記録媒体には、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷやフレキシブルディスク、磁気テープ、ＭＯ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＤＶＤ−Ｒ、ＤＶＤ＋Ｒ、ＤＶＤ−ＲＷ、ＤＶＤ＋ＲＷ、Ｂｌｕ−ｒａｙ等の磁気ディスク、光ディスク、光磁気ディスク、半導体メモリその他のプログラムを格納可能な媒体が含まれる。さらにまた、プログラムには、上記記録媒体に格納されて配布されるものの他、インターネット等のネットワーク回線を通じてダウンロードによって配布される形態のものも含まれる。またプログラムに含まれる各処理や機能は、コンピュータで実行可能なプログラムソフトウエアにより実行してもよいし、各部の処理を所定のゲートアレイ（ＦＰＧＡ、ＡＳＩＣ）等のハードウエア、又はプログラムソフトウエアとハードウェアの一部の要素を実現する部分的ハードウエアモジュールとが混在する形式で実現してもよい。
【００２４】
【発明の実施の形態】
以下、本発明の実施の形態を図面に基づいて説明する。ただし、以下に示す実施の形態は、本発明の技術思想を具体化するためのデータ検索方法、データ検索装置、データ検索プログラムおよびコンピュータで読み取り可能な記録媒体を例示するものであって、本発明はデータ検索方法、データ検索装置、データ検索プログラムおよびコンピュータで読み取り可能な記録媒体を以下のものに特定しない。
【００２５】
また本明細書は、特許請求の範囲に示される部材を、実施の形態の部材に特定するものでは決してない。特に実施の形態に記載されている構成部品の寸法、材質、形状、その相対的配置等は特に特定的な記載がない限りは、本発明の範囲をそれのみに限定する趣旨ではなく、単なる説明例にすぎない。なお、各図面が示す部材の大きさや位置関係等は、説明を明確にするため誇張していることがある。さらに以下の説明において、同一の名称、符号については同一もしくは同質の部材を示しており、詳細説明を適宜省略する。さらに、本発明を構成する各要素は、複数の要素を同一の部材で構成して一の部材で複数の要素を兼用する態様としてもよいし、逆に一の部材の機能を複数の部材で分担して実現することもできる。
【００２６】
本明細書において、データ検索の対象となるデータには、テキスト等の文書データ、静止画または動画である画像データ、音楽や演奏、公演、スピーチ等の音声データといったマルチメディアデータが含まれる。またデータ検索には、文書や映像といった単独種類のデータもしくは複数種類のデータが混在するデータベース中からのマルチメディアデータの検索、データマイニング、パターン認識、機械学習、コンピュータ・ビジョン、統計データ解析等が含まれる。ここでデータマイニングとは、統計的・数理的な手法により、多様で大量のデータから自動的に有用な情報を発見する処理を指す。有用な情報には、データの傾向、パターン、相関関係、規則等が含まれる。データマイニングで使われる手法には、統計的データ解析、決定木、ニューラルネットワーク等があり、これらの手法ではデータを多次元のベクトルで表現することが多い。このような場合において、あるデータに類似したデータを探すための処理に、本発明のデータ検索を利用することができる。
【００２７】
［特徴量ベクトル］
本明細書において特徴量ベクトルには、電子データ（メディア・コンテンツ）の種類に応じて様々なものが設定できる。様々なメディア・コンテンツに従った検索を行う場合、データベース中に含まれるメディア全体の内容すなわちデータそのものを用いると、非常に大規模なデータを取り扱わなければならない。そのため、データコンテンツの内容を顕著に表す特徴量を使用する。特徴量は多次元ベクトル形式の特徴量ベクトルとして表す。ここで多次元について説明すると、データがｎ個の属性の性質を持ち、ｎ個の属性値の並びにより表現されるとき、このデータをｎ次元データと呼び、各データはｎ次元空間内に配置される。一般にｎが大きい場合を多次元データと呼び、各データを検索する際には多次元空間内を検索することとなる。
【００２８】
文書コンテンツを表す特徴量としては、文書内に出現する単語の内、文書内容を顕著に表す単語を索引語として抽出し、その索引語の頻度を特徴量として用いる。
【００２９】
画像コンテンツを表す特徴量としては、色情報、形状情報、テクスチャ情報が用いられる。色情報は、ＲＧＢ表色系やＣＩＥ  Ｌａｂ表色系等に従って画像内の色分布をヒストグラムに変換したものを多次元ベクトルとする。形状情報、テクスチャ情報は、Ｗａｖｅｌｅｔ変換等で周波数分解した値を多次元ベクトルとする。
【００３０】
映像コンテンツを表す特徴量としては、各画像間の動きベクトルの大きさを多次元ベクトルで表現し、映像の特徴量とする。
【００３１】
音楽コンテンツを表す特徴量としては、音楽内に現れる各音の音高を基に、音高の時間的推移や音高差の分布を多次元ベクトルで表現したものを特徴量として用いる。
【００３２】
また、多次元ベクトルでコンテンツ特徴量を表現し、コンテンツが類似したデータを検索する技術は、上記のマルチメディア情報検索分野だけに限らず、データマイニング、パターン認識、機械学習、コンピュータ・ビジョン、統計データ解析のような幅広い分野で利用されている。これらの分野では、データが有する様々な属性の値が、そのデータの特徴量として多次元ベクトルで表現されている。
【００３３】
本明細書においてデータ検索方法、データ検索装置、データ検索プログラムおよびコンピュータで読み取り可能な記録媒体は、データ検索を行うシステムそのもの、ならびにデータ検索に関連する入出力、表示、演算、通信その他の処理をハードウェア的に行う装置や方法に限定するものではない。ソフトウェア的に処理を実現する装置や方法も本発明の範囲内に包含する。例えば汎用の回路やコンピュータにソフトウェアやプログラム、プラグイン、オブジェクト、ライブラリ、アプレット、コンパイラ等を組み込んでデータ検索そのものあるいはこれに関連する処理を可能とした汎用あるいは専用のコンピュータ、ワークステーション、端末、携帯型電子機器、ＰＤＣやＣＤＭＡ、Ｗ−ＣＤＭＡ、ＦＯＭＡ（登録商標）、ＧＳＭ、ＩＭＴ２０００や第４世代等の携帯電話、ＰＨＳ、ＰＤＡ、ページャ、スマートフォンその他の電子デバイスも、本発明のデータ検索方法、データ検索装置、データ検索プログラムおよびコンピュータで読み取り可能な記録媒体の少なくともいずれかに含まれる。また本明細書においては、プログラム自体もデータ検索装置に含むものとする。
【００３４】
［接続、通信形態］
本発明の実施の形態において使用されるコンピュータ等の端末同士、およびサーバやこれらに接続される操作、制御、入出力、表示、各種処理その他のためのコンピュータ、あるいはプリンタ等その他の周辺機器との接続は、例えばＩＥＥＥ１３９４、ＲＳ−２３２ｘやＲＳ−４２２、ＵＳＢ、シリアルＡＴＡ等のシリアル接続、パラレル接続、あるいは１０ＢＡＳＥ−Ｔ、１００ＢＡＳＥ−ＴＸ、１０００ＢＡＳＥ−Ｔ等のネットワークを介して電気的に接続して通信を行うことができる。接続は有線を使った物理的な接続に限られず、ＩＥＥＥ８０２．１１ｘ、ＯＦＤＭ方式等の無線ＬＡＮやＢｌｕｅｔｏｏｔｈ等の電波、赤外線、光通信等を利用した無線接続等でもよい。さらにデータの交換や設定の保存等を行うための記録媒体には、メモリカードや磁気ディスク、光ディスク、光磁気ディスク、半導体メモリ等が利用できる。
【００３５】
［データ検索装置］
以下、本発明に係るデータ検索の一実施例として、マルチメディアデータの検索に利用した例を図２に基づいて説明する。この図に示すデータ検索装置１は汎用あるいは専用のコンピュータ等が利用でき、演算部２と主記憶部３と２次記憶部４を備える。演算部２はＣＰＵやＭＰＵ、システムＬＳＩやＩＣ等で構成され、特徴量ベクトルの距離計算やその他の必要な演算を実行する。演算部２は、後述する距離の最大値を抽出するための抽出部や、計算されたベクトルの距離を抽出部で抽出される距離の最大値とを比較し、必要に応じて値を入れ替えてメモリ部を更新する更新部、中間の演算結果に応じて演算中止を判断する演算中断部としても機能する。演算部２はこれらの処理が可能なようにハードウェア的に構成することもでき、または演算プログラムを実行させてソフトウェア的に実現させてもよい。主記憶部３は、高速な汎用もしくは組み込みメモリで構成され、ＳＤＲＡＭ、ＤＤＲＲＡＭ、ＲＤＲＡＭ、ＥＤＯＲＡＭ、ファーストページＲＡＭといったＲＡＭ等の半導体メモリが利用できる。主記憶部３は、演算部で計算されたベクトルの距離の内、距離が小さいものを所定の個数、あるいは距離が所定値以下のものを複数個保持するためのメモリ部として機能する。２次記憶部４はハードディスク（固定ディスク）等の二次記憶媒体で構成され、主記憶部３に比べ大容量のものを使用する。さらにデータ検索装置１には必要に応じてマウスやキーボード等の入力部５が接続される。
【００３６】
データベース６は、検索対象のデータを保存する記憶媒体であり、大容量のハードディスク等が利用される。一般にはサーバ側のホストコンピュータに内蔵あるいは接続されており、データ検索装置１と通信可能に接続されている。またデータベース６は、データ検索装置１内部に備えることもでき、さらに２次記憶部４と兼用することもできる。このように本発明は、データベースとの接続をネットワーク接続あるいはスタンドアロン接続の両方に対応できる。
【００３７】
データベース６中から所望のデータを検索するための検索条件の入力は、直接特徴量のベクトルを指定する他、予めキーワードを設定しておき、入力されたキーワードに応じた特徴量ベクトルに変換して検索条件とすることもできる。この変換はデータ検索装置１内部で行われるため、ユーザは特徴量ベクトルを意識することなくキーワードで検索することができる。
【００３８】
検索条件の入力は、データ検索装置１がスタンドアロンで運用される場合は、入力部５から入力される。またネットワークで運用される場合は、さらにネットワーク接続されたクライアント側のコンピュータや携帯電話等の端末７から入力する。ネットワーク接続としてはＬＡＮやＷＡＮ、インターネット等が利用できる。この形態では、データ検索装置１がサーチエンジンとして機能し、各端末から入力された検索条件に対して検索を行った結果をそれぞれの端末に出力する。
【００３９】
本発明の実施の形態では、上記のデータ検索装置１において、データベース６にアクセスし、演算部２がデータベース６に格納されている検索対象データを読み込み、検索対象データの所定の特徴量に基づいて多次元の検索対象ベクトルに変換して２次記憶部４に保存する。一方、入力部５から入力される検索条件を、同様に特徴量に基づいて検索対象データと同じ次元数の検索質問ベクトルに変換して２次記憶部４に保存する。そして、検索質問ベクトルと検索対象ベクトルとの距離を演算して、距離の小さいデータを近似すると判断する。例えば、演算された距離をソートして、ベクトル間距離が最も小さいものから順に、検索結果として出力する。
【００４０】
なお、検索対象の多次元データから検索対象ベクトルへの変換は、必ずしもデータ検索装置１において行う必要はなく、例えば予め変換された検索対象ベクトルをデータベース６に保存しておき、保存された検索対象ベクトルにデータ検索装置１がアクセスしてデータ検索を実行することもできる。この構成は、特にデータ検索装置１の処理能力が低い場合には有効であり、例えばネットワーク上に配置されたサーバ側でデータ変換済みの検索対象ベクトルを提供し、クライアント側のデータ検索装置１でアクセスすることで、軽快な動作が可能となる。
【００４１】
本実施の形態においては、線形検索を改良し、従来よりも計算量を大幅に少なくして短時間で演算を行うことができる。ここで、説明のため単純な線形検索によるデータ検索の一例を、図３にフローチャートで示す。この例では、ｎ次元の検索対象データのＮ個から、近似するデータをｋ個検索する。データの類否判断は、ベクトルの各次元の要素の差を２乗して加算し平方根をとるユークリッド距離に基づいて行う。また検索質問ベクトルをｑｕｅｒｙ、ｉ番目の検索対象ベクトルをｄａｔａ［ｉ］とする。
【００４２】
ステップＳ’１では、検索対象ベクトルの番号を示すｉの初期化を行う。これによって１番目の検索対象ベクトルｄａｔａ［１］からＮ番目の検索対象ベクトルｄａｔａ［Ｎ］までを演算する。またステップＳ’２では、検索質問ベクトルと検索対象ベクトルとの距離を各次元毎に加算する累積距離ｄｉｓｔの初期化を行う。さらにステップＳ’３では、ベクトルの次元番号を示すｊの初期化を行う。これによってｉ番目の検索対象ベクトルの１次元の値ｄａｔａ［ｉ］［１］からｎ次元の値ｄａｔａ［ｉ］［ｎ］までの演算が行われる。
【００４３】
ステップＳ’４では、具体的な距離を各次元毎に演算する。ここではｊ次元における累積距離ｄｉｓｔ、すなわち１次元からｊ次元までの各距離の２乗を累積加算した値を演算する。計算式は、｛（検索質問ベクトルのｊ次元の値ｑｕｅｒｙ［ｊ］）−（ｉ番目の検索対象ベクトルのｊ次元の値ｄａｔａ［ｉ］［ｊ］）｝２となる。そしてステップＳ’５でｊに１を加算し、さらにステップＳ’６でｊをｎと比較し、ｎより小さい場合はステップＳ’３に戻ることでｎ回ループを繰り返し、ｎ次元までの距離の２乗を累積加算して求める。そしてステップＳ’６でｊ≦ｎを満たさなくなったとき、すなわちｎ回のループを終えると、ステップＳ’７で累積距離ｄｉｓｔの平方根を求め、ｉ番目の検索対象ベクトルのユークリッド距離ｒｅｓｕｌｔ［ｉ］を演算し、各ｒｅｓｕｌｔ［ｉ］を保存する。そしてステップＳ’８でｉに１を加算し、ステップＳ’９でｉとＮを比較し、ｉ≦Ｎの場合はステップＳ’２に戻ることで、上記のループをＮ回、すなわちＮ個の検索対象ベクトルすべてについて演算する。そしてステップＳ’１０で各検索対象ベクトルのユークリッド距離ｒｅｓｕｌｔ［１］〜ｒｅｓｕｌｔ［Ｎ］をソートし、小さい順に並べることで、最も小さい値から検索結果として出力する。
【００４４】
この方法では、総当たりで正確な検索結果が得られる反面、ｎ次元の検索対象ベクトルをＮ個処理するため、ステップＳ’２からステップＳ’９までのループを繰り返す必要があり、Ｎ×ｎに比例する計算量が必要となる。従って、データの次元数やデータ数が増加するに伴い、処理数も膨大となる欠点があった。
【００４５】
そこで、本発明の実施の形態では、検索の正確さを維持しつつ計算数を低減するアルゴリズムを採用した。具体的には、検索対象ベクトルと検索質問ベクトルの距離演算において、ある次元において演算された距離が大きいものについては以降の計算をスキップし、次の検索対象ベクトルの演算に移行することで不要な計算を削除し、効率的な演算処理を行わせている。
【００４６】
なお、条件として与えられたベクトルと距離的に小さい検索対象ベクトルをｋ個データベース中から検索することをｋ近傍検索（ｋ−ｎｅａｒｅｓｔ  ｎｅｉｇｈｂｏｒ  ｓｅａｒｃｈ）と呼ぶ。また、条件として与えられたベクトルから距離ε以内にある検索対象ベクトルをデータベース中から検索することをε近傍検索（ε−ｎｅａｒｅｓｔ  ｎｅｉｇｈｂｏｒ  ｓｅａｒｃｈ）と呼ぶ。本発明はｋ近傍検索、ε近傍検索のいずれにも適用することができ、以下ではｋ近傍検索とε近傍検索を総称して最近傍検索と呼ぶこととする。
【００４７】
［実施例１］
この手法の一例を、図４および図５のフローチャートに基づいて説明する。この例においても、上記図３と同様にｎ次元の検索対象データのＮ個から、近似するデータをｋ個検索する場合を説明する。図４においては、まずｋ個分の検索対象ベクトルについて、検索質問ベクトルとのベクトル間距離を演算し、順位キューに格納すると共に先頭に距離の最大値を格納する。順位キューは主記憶部３のメモリ空間内に構成され、アドレス指定で管理される。そして図５ではｋ＋１以降の検索対象ベクトルについて距離演算を続行し、累積距離と順位キューの先頭とを比較する。このとき、累積距離が順位キュー先頭よりも大きい場合は、以降の演算を続行しても当該ベクトルのベクトル間距離が検索結果としてリストされるような近似データとなることはあり得ない。よって累積距離が順位キュー先頭よりも大きくなった時点で該ベクトルについての演算を打ち切り、次の検索対象ベクトルの演算に移行する。このようにベクトル間距離の大きい、類似しない検索対象ベクトルについては、一々距離を求めなくともデータ検索においては差し支えない。そしてこのような無駄な演算を省くことで、必要な演算量を減らして効率的にデータ検索を行うことができる。
【００４８】
本実施例では、距離計算における無駄な演算を検出するために順位キュー（ｐｒｉｏｒｉｔｙ  ｑｕｅｕｅ）を用いている。順位キューは、要素の挿入や最大値を削除するという操作を行うにあたって適切なデータ構造である。本実施例の形態では、検索対象ベクトルのＮ個から、検索質問ベクトルと距離的に近いｋ個を検索するが、この際順位キューは、検索質問ベクトルと検索対象ベクトルとの間の距離が既に計算されたもののうち、検索質問ベクトルと距離的に近いｋ個の距離だけを保持する。また、本実施例では、順位キューに保持されたｋ個の距離のうち、最大の値を持つものを順位キューの先頭に置くようにしている。さらに本実施の形態では、順位キューを実現するためにヒープ（ｈｅａｐ）を用いているが、これ以外にもリスト、２項キュー（ｂｉｎｏｍｉｎａｌ  ｑｕｅｕｅ）、ｐａｉｒｉｎｇ  ｈｅａｐ、Ｐ木（Ｐ−ｔｒｅｅ）、パゴダ（ｐａｇｏｄａ）といった他の順位キューの実現方法を本発明に適用することもできる。ヒープを始めとする順位キューの実現方法では、すべてのデータをソートすることなく、先頭に最大値を持つ要素を位置させることが容易に行えるという利点を持っているため、計算量的な面から望ましいデータ構造である。
【００４９】
以下、図４の手順について説明する。ステップＳ１では、検索対象ベクトルの番号を示すｉの初期化を行う。これによって１番目の検索対象ベクトルｄａｔａ［１］からＮ番目の検索対象ベクトルをｄａｔａ［Ｎ］までを演算する。
【００５０】
ステップＳ２では、検索質問ベクトルとｉ番目の検索対象ベクトルとの距離を演算するとともに、演算結果を順位キューに挿入する。ステップＳ３では、順位キューの先頭にベクトル間距離の最大値を位置させる。そしてステップＳ４でｉに１を加算し、さらにステップＳ５でｉをｋと比較し、ｋ以下の場合はステップＳ２に戻ることでｋ回ループを繰り返し、１〜ｋ番目までのｋ個の検索対象ベクトルにつき、ベクトル間距離を演算する。これによって、順位キューの先頭にｋ個のベクトル間距離の最大値が位置する。ここで順位キューに格納されたｋ個のベクトル間距離は、この時点での検索の候補値、すなわち仮の検索結果として保持される。
【００５１】
ｉがｋになるとステップＳ５から図５のステップＳ６に移行する。ステップＳ６では、検索質問ベクトルと検索対象ベクトルとの距離を各次元毎に加算する累積距離ｄｉｓｔの初期化を行う。次に、ステップＳ７では、ベクトルの次元番号を示すｊの初期化を行う。そしてステップＳ８では、検索質問ベクトルとｉ番目の検索対象ベクトルのｊ次元までの累積距離ｄｉｓｔを演算する。その計算式は、上記と同様｛（検索質問ベクトルのｊ次元の値ｑｕｅｒｙ［ｊ］）−（ｉ番目の検索対象ベクトルのｊ次元の値ｄａｔａ［ｉ］［ｊ］）｝２となる。
【００５２】
次にステップＳ９で、現在の累積距離ｄｉｓｔと、順位キューの先頭に位置する距離の最大値とを比較する。ここで累積距離ｄｉｓｔが既に順位キューの先頭値を超えている場合は、ｉ番目の検索対象ベクトルについての距離演算を中止し、ステップＳ１４に移行する。これによって、以降の次元番号についての距離演算が省略されるので、処理量が少なくなる。一方、累積距離ｄｉｓｔが順位キューの先頭値より小さい場合は、距離計算を続行するためステップＳ１０に移行し、ｊに１を加算し、ステップＳ１１でｊとｎを比較する。ｊがｎ以下の場合はステップＳ８に戻り、再び累積距離の演算を行うことで、１〜ｎ次元の距離の２乗和、すなわちユークリッド距離の２乗がベクトル間距離ｄｉｓｔとして求められる。なお、ここでは平方根の演算を省略しているが、平行根としてユークリッド距離を演算することもできる。
【００５３】
ステップＳ１２では、このようにして得られたベクトル間距離ｄｉｓｔを順位キューの先頭値と比較する。ここで演算されている検索対象ベクトルのベクトル間距離ｄｉｓｔが、順位キューの先頭値すなわち現在保持されているベクトル間距離の内の最大値よりも小さい場合は、検索しようとする類似データの新たな候補となるため、ステップＳ１３に移行して、演算されたベクトル間距離ｄｉｓｔを順位キューの先頭値と入れ替えて、順位キューに保存する。
【００５４】
一方、得られたベクトル間距離ｄｉｓｔが順位キュー先頭値以上の場合は、検索の候補対象外としてステップＳ１４にジャンプされる。ステップＳ１４では、ｉに１加算され、続くステップＳ１５でｉとＮとを比較する。ｉ≦Ｎの場合はステップＳ６に戻ることで上記のループを繰り返し、Ｎ個の検索対象ベクトルを最後まで演算する。そしてｉがＮを超えると、ステップＳ１６で順位キューの中の要素をソートし、順位キューに保持された各検索対象ベクトルを小さい順に並べて検索結果として出力する。
【００５５】
以上の方法によって、ステップＳ９からＳ１３にかかる距離演算について、検索結果の候補となり得ないことが明らかになった時点で計算を中止し、次の検索候補を調べる処理に移行するため、無駄な演算を省いて効率よくデータ検索を行うことができる。またこの方法では、最後に１回だけ順位キューの中の要素をソートするだけで良く、途中では順位キューを部分的に修正するのみであるため、演算を省力化できる。
【００５６】
さらに、上記の方法では不必要な計算であることが早い段階で検知できれば、それだけ多くの計算を削減でき処理がより効率的、高速となる。このように不要な計算が早期に検出できるような前処理として、以下の実施例２、３の手法が適用できる。
【００５７】
［実施例２：分散値による次元ソート］
実施例２の方法は、ベクトル間距離の計算を行う前に、予め検索対象ベクトルを構成する各次元の要素の分散値に基づきベクトルの要素をソートし、分散値の大きい次元から順にベクトル間距離計算を行わせる方法である。この方法では、Ｎ個あるｎ次元の検索対象ベクトルについて、各次元毎に分散値を求め、分散値の高い順に次元をソートして入れ替える。これによって、分散値の大きい次元が最初に計算されることになるので、累積距離も初期の計算で大きくなる傾向が期待でき、以降の計算をスキップできる可能性が高くなる。
【００５８】
［実施例３：主成分分析によるデータ変換］
実施例３の方法は、ベクトル間距離の計算を行う前に、予め検索対象ベクトルの座標系を主成分分析に基づき変換し、この座標系に変換されたベクトルに基づいてベクトル間距離の計算を行う方法である。主成分分析は、ＫＬ変換（Ｋａｒｈｕｎｅｎ−Ｌｏｅｖｅ変換）とも呼ばれており、多次元データの変動を最もよく表すような座標系を求めることができる。主成分分析では、多次元データの共分散行列を固有値分解することにより、固有ベクトルを新しい座標軸とするが、この際、固有値の大きい固有ベクトルに対応する座標軸ほど、データの分散が大きくなっている。固有値の大きい固有ベクトルから順番に第１主成分、第２主成分というように呼ぶが、まず第１主成分に対する座標値、次に第２主成分に対する座標値というようにして、予めデータを変換しておくことにより、ベクトル間距離の演算の際に以降の計算をスキップできる可能性を高くする。また、主成分分析は、新規データが付加された場合でも、当該新規データを各主成分に射影することにより、新しい座標値を容易に計算できるという利点もある。
【００５９】
上記の方法はいずれも前処理として、ベクトル間距離の演算前に検索対象ベクトルのデータ変換を実行している。これらのデータ変換には時間がかかり、特に主成分分析によるデータ変換は分散値による次元ソートよりも処理時間を要する。ただ、これらの処理は実際にデータ検索を実行する前に行っておくことができるため、データ検索に要する時間とは無関係である。予めデータの前処理を行い、その結果を保存しておくことで、実際のデータ検索に要する実時間を短縮できる。
【００６０】
なお本実施例では、データの変換方法として主成分分析（ＫＬ変換）を用いているが、ＫＬ変換に代わってウェーブレット変換、フーリエ変換、ウォルシュ・アダマール変換、離散コサイン変換、離散サイン変換等の直交変換を用いることも可能である。
【００６１】
［測定結果］
上記の方法を用いてデータ検索を行い、１検索質問に要した処理時間を測定した結果を表１および図６に示す。この例では、データベースとして５万件の画像データを用い、これらの画像データからＨＳＩ表色系での色情報のみを取り出し、特徴量とした。ＨＳＩは画像全体を３×３の部分画像に分割し、各部分画像に対してＨＳＩ特微量を４８次元、１９２次元、３８４次元、４３２次元に圧縮して検索対象ベクトルとした。また、Ｌａｂ−ｃｕｂｅ−５７６は、画像全体を縦横３×３に均等分割し、各分割画像の色情報をＬａｂ表色系に変換後、各分割画像毎にＬａｂ空間を４×４×４の６４個の部分空間に分割し、それぞれの部分空間に属する画素の頻度値を計算したものであり、画像全体としては６４×９＝５７６次元の特徴量となる。
【００６２】
一方、使用したデータ検索装置は、ＣＰＵに２．４ＧＨｚのＰｅｎｔｉｕｍ（登録商標）−ＩＶ、メモリが１０２４ｋバイトのコンピュータである。さらに、データ検索方法として、本発明の実施例に係る３つの方法と、比較例として３つの方法をそれぞれ行った。比較例としては、ユークリッド空間における多次元インデキシング手法であるＳＲ−ｔｒｅｅ、より一般的な距離空間を対象にしたインデキシング手法であるＶＰ−ｔｒｅｅ、および線形検索であるＬｉｎｅａｒを使用した。ＳＲ−ｔｒｅｅは、そのプログラムが公開されており、検索手法の比較のためのベースラインとして多用されている。また本発明の実施例としては、ベクトル間距離の計算と計算スキップを行う実施例１であるＦａｓｔ、上記Ｆａｓｔに加えて分散値による次元ソートを組み合わせた実施例２のＦａｓｔ−ＤＳＯＲＴ、およびＦａｓｔに加えて主成分分析によるデータ変換を組み合わせたＦａｓｔ−ＰＣＡを行った。図において、横軸に検索対象ベクトルの種別を、縦軸にＣＰＵの演算時間を示す。それぞれの棒グラフは、左からＳＲ−ｔｒｅｅ、ＶＰ−ｔｒｅｅ、Ｌｉｎｅａｒ、Ｆａｓｔ、Ｆａｓｔ−ＤＳＯＲＴ、Ｆａｓｔ−ＰＣＡを示している。
【００６３】
【表１】
2005011042.tif 000003
【００６４】
この図に示すように、いずれの特徴量に対する検索対象ベクトルに対しても、本発明の実施例に係るデータ検索方法は高速であることが明らかとなった。その差は、高次元になるほど顕著となる。例えば４８次元（ＨＳＩ）においては、ＳＲ−ｔｒｅｅで０．０８７ｓであったのに対し、Ｆａｓｔで０．０２７ｓ、Ｆａｓｔ−ＤＳＯＲＴで０．０２ｓ、Ｆａｓｔ−ＰＣＡで０．０１７ｓであり、検索速度の基準となるＳＲ−ｔｒｅｅに対しそれぞれ２．９６倍、４．００倍、４．７１倍の処理速度の向上が得られた。さらに高次元の５７６次元（Ｌａｂ−ｃｕｂｅ）においては、ＳＲ−ｔｒｅｅで１．５６４ｓであったのに対し、Ｆａｓｔで０．２３２ｓ、Ｆａｓｔ−ＤＳＯＲＴで０．０６１ｓ、Ｆａｓｔ−ＰＣＡで０．０３７ｓであり、それぞれ６．７４倍、２５．６４倍、４２．２７倍もの処理速度の向上が得られた。このように、高次元になる程高速化の効果が顕著に現れる。
【００６５】
また線形検索の高速化という面でも本発明の実施例に係る方法は効果を得ている。低次元の４８次元（ＨＳＩ）においては、Ｌｉｎｅａｒで０．１０２ｓであったのに比べ、Ｆａｓｔで３．７８倍、Ｆａｓｔ−ＤＳＯＲＴで５．１倍、Ｆａｓｔ−ＰＣＡで６倍の高速化が得られている。また高次元の５７６次元（Ｌａｂ−ｃｕｂｅ）においては、Ｌｉｎｅａｒで０．３８２ｓであったのに比べ、Ｆａｓｔで１．６５倍、Ｆａｓｔ−ＤＳＯＲＴで６．２６倍、Ｆａｓｔ−ＰＣＡで１０．３２倍の高速化が得られている。このように、従来低速で特に高次元の検索においては不適とされていた線形検索であるが、本発明の実施例を適用することによって実用レベルの速度に高速化することができ、正確な検索結果を得ることができる。
【００６６】
以上のように、本発明の実施例に係るデータ検索方法は、単純な線形検索のみならず、従来の多次元検索手法であるＶＰ−ｔｒｅｅやＳＲ−ｔｒｅｅと比しても遙かに高速であることが確認できた。また実験によれば、実施例１よりも実施例２、実施例２よりも実施例３が優れていることが確認された。特に実施例３の主成分分析によるデータ変換の前処理を行うことで、最も高速な検索速度が得られた。
【００６７】
上記の例では、線形検索によるデータ検索方法に応用したが、本発明は線形検索のみならず、ＳＲ−ｔｒｅｅ等木構造の計算にも応用できる。木構造の計算も線形検索と同様全データに総当たり式で演算する方法であるため、データ数が多くなると計算量が多くなり不適と考えられていたが、本発明を適用することによって計算量を削減でき、高速化を図ることが可能となる。
【００６８】
またベクトル間の距離尺度についても、種々のものを適用可能である。上記の実施例においてはユークリッド距離を用いたが、本発明はこれに限定されるものではなく、例えばＬｐノルムあるいはミンコフスキー距離と呼ばれるものをベクトル間の距離尺度として利用できる。Ｌｐノルムにおいてｐ＝２の場合がユークリッド距離に相当する。また本発明においては、ベクトル間の距離を計算する際に、ベクトルの各次元毎に順次加算するという操作を行っているが、これは一般のＬｐノルムにおいても直ちに適用できる。また、上記以外の距離尺度として、コサイン距離、内積、重み付きユークリッド距離、楕円体距離、マハラノビス距離等、様々なものがあるが、本発明はこれらの距離尺度に対しても適宜適用できる。
【００６９】
【発明の効果】
以上のように、本発明のデータ検索方法、データ検索装置、データ検索プログラムおよびコンピュータで読み取り可能な記録媒体によれば、極めて高速な検索が実現され、従来の単純な線形検索アルゴリズムに比べ、１／２０〜１／５０の計算量で最近傍検索を行うことができる。またこの方法であれば、近似的な手法でなく正確な検索結果を得ることができるので、検索結果に誤差も生じず、データ検索の信頼性も高い。さらに、特別なハードウェアの追加等が必要でなく、演算のアルゴリズムを変更するのみで適用できるので、既存の検索装置に容易に適用でき、安価に実装できるという利点もある。
【図面の簡単な説明】
【図１】特徴量ベクトルを利用したマルチメディア・コンテンツ検索の一例を示す概念図である。
【図２】本発明の一実施の形態に係るデータ検索装置の一例を示す概略ブロック図である。
【図３】線形検索の手順の一例を示すフローチャートである。
【図４】本発明の一実施の形態に係るデータ検索方法の一部を示すフローチャートである。
【図５】図４に続くデータ検索方法の手順を示すフローチャートである。
【図６】本発明の実施例に係るデータ検索方法および比較例の方法でデータ検索を行い、処理時間を測定した結果を示すグラフである。
【符号の説明】
１・・・データ検索装置
２・・・演算部
３・・・主記憶部
４・・・２次記憶部
５・・・入力部
６・・・データベース
７・・・端末
【図１】
2005011042.tif 000004
【図２】
2005011042.tif 000005
【図３】
2005011042.tif 000006
【図４】
2005011042.tif 000007
【図５】
2005011042.tif 000008
【図６】
2005011042.tif 000009