(57)【特許請求の範囲】
【請求項１】
データの特徴を表すデータ点をクラスタリングするためのクラスタリング装置であって、
木構造インデックスが格納されるインデックスＤＢと、
入力された新規データ点を受け付けるデータ点受付部と、
前記木構造インデックスを、前記ルートノードから、クラスタに対応するリーフノードへ辿ることによって、前記新規データ点が属すべきクラスタを検索するクラスタ検索部と、
前記新規データ点と、検索された前記リーフノードに対応する前記クラスタの中心点との距離が固定値未満である場合に、前記新規データ点を、前記クラスタに属させ、前記固定値以上である場合に、新たなクラスタを生成して、その新たに生成したクラスタに前記新規データ点を属させるデータ追加部と
を備えており、
さらに、前記データ追加部は、
前記木構造インデックスを辿ることによって検索されたリーフノードが属する内部ノードに含まれる全リーフノードの個数を数える処理と、
前記全リーフノードの個数が規定値未満であれば、検索された前記リーフノードと並列に、前記新たなクラスタに対応するリーフノードを生成する処理と、
前記全リーフノードの個数が規定値以上であれば、検索された前記リーフノードの下層に、前記新たなクラスタに対応するリーフノードを生成する処理と
を行う構成となっている、データ点のクラスタリング装置。
【請求項２】
前記データ点受付部は、
受け付けた一つの前記新規データ点が初回のデータか否かを判定する処理と、
前記新規データ点が初回のデータであった場合には、前記木構造インデックスにおけるルートノードに、当該一つの新規データ点を属させる処理と
を行う構成となっている請求項１に記載のクラスタリング装置。
【請求項３】
前記データ追加部は、
前記クラスタ検索部によって前記ルートノードから前記リーフノードに向けて辿る過程で取得されたターゲットノードが内部ノードであるか否かを判定する処理と、
前記ターゲットノードが内部ノードであった場合に、当該内部ノードに属する各子ノードの中心点と前記新規データ点との距離を計算し、前記新規データ点にもっとも近い中心点を持つ子ノードに向けて辿り、ついでこの子ノードをターゲットノードとしてこのターゲットノードが内部ノードであるか否かを再び判定する処理と
を行う構成となっている請求項１又は２に記載のクラスタリング装置。
【請求項４】
前記データ点は、画像データの局所的な特徴を示す局所特徴量である、請求項１〜３のいずれか１項に記載のクラスタリング装置。
【請求項５】
処理部と記憶部とを用いて、データの特徴を表すデータ点をクラスタリングするためのクラスタリング方法であって、
入力されたデータ点を受け付けて前記記憶部に格納するステップと、
前記木構造インデックスを、前記ルートノードから、クラスタに対応するリーフノードへ辿ることによって、前記新規データ点が属すべきクラスタを、前記処理部により検索するステップと、
前記新規データ点と、検索された前記リーフノードに対応する前記クラスタの中心点との距離が固定値未満である場合に、前記新規データ点を、前記処理部により、前記クラスタに属させ、前記固定値以上である場合に、前記処理部により、新たなクラスタを生成して、その新たに生成したクラスタに前記新規データ点を属させるステップと
を備えており、
さらに、前記処理部は、
前記木構造インデックスを辿ることによって検索されたリーフノードが属する内部ノードに含まれる全リーフノードの個数を数えるステップと、
前記全リーフノードの個数が規定値未満であれば、検索された前記リーフノードと並列に、前記新たなクラスタに対応するリーフノードを生成するステップと、
前記全リーフノードの個数が規定値以上であれば、検索された前記リーフノードの下層に、前記新たなクラスタに対応するリーフノードを生成するステップと
を行う構成となっている、データ点のクラスタリング方法。
【請求項６】
請求項５に記載の各ステップをコンピュータで実行させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ検索のためのクラスタを生成する装置及び方法に関するものである。特に、本発明は、木構造型のインデックスを利用してクラスタリングを行う技術に関するものである。
【背景技術】
【０００２】
従来から、画像の特徴量（特徴ベクトル）を検索キーとして、データベース中に格納された画像データを検索する処理が行われている（下記特許文献１参照）。この処理によれば、例えば、クエリ画像に類似した画像を検索することが可能になる。
【０００３】
画像検索の精度を上げるためには、まず、検索に用いられる特徴ベクトルの次元数を上げることが考えられる。しかしながら、それだけでは一般には不十分であり、検索精度向上のために、予め大量の画像データを学習して、クラスタリングすることが行われている。
【０００４】
クラスタリングには、一般に、ｋ−ＮＮ（ｋ近傍法）という識別手法が用いられる。この手法では、入力特徴量に最も近い順にｋ個のオブジェクト（特徴ベクトル）からの投票数を数え、投票数が多いオブジェクトが属するクラスタに、当該入力特徴量を属させるものである。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−３４４００５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、前記した大量の画像データの学習によるクラスタリングは、非常に時間を要するという問題がある。さらに、ｋ−ＮＮで生成したクラスタを用いた検索は、クラスタ数が多い場合には、時間がかかってしまうという問題もある。
【０００７】
本発明は、前記した状況に鑑みてなされたものである。本発明の主な目的は、データ点の分類を、木構造インデックスを生成しながら、簡単な手順で行うことが可能な装置又は方法を提供することである。
【課題を解決するための手段】
【０００８】
本発明は、以下のいずれかの項目に記載の構成とされている。
【０００９】
（項目１）
データの特徴を表すデータ点をクラスタリングするためのクラスタリング装置であって、
木構造インデックスが格納されたインデックスＤＢと、
入力された新規データ点を受け付けるデータ点受付部と、
前記新規データ点が属すべきクラスタを、前記木構造インデックスを用いて検索するクラスタ検索部と、
前記新規データ点と、検索された前記クラスタの中心点との距離が固定値未満である場合に、前記新規データ点を、前記クラスタに属させ、前記固定値以上である場合に、新たなクラスタを生成して、その新たに生成したクラスタに前記新規データ点を属させるデータ追加部と
を備える、データ点のクラスタリング装置。
【００１０】
（項目２）
前記データ追加部は、前記新たなクラスタを、検索された前記クラスタの下層に生成する構成となっている、項目１に記載のクラスタリング装置。
【００１１】
（項目３）
前記データ追加部は、前記新たなクラスタを、検索された前記クラスタと並列に生成する構成となっている、項目１に記載のクラスタリング装置。
【００１２】
（項目４）
前記データ点は、画像データの特徴を示す特徴ベクトルである、項目１〜３のいずれか１項に記載のクラスタリング装置。
【００１３】
（項目５）
処理部と記憶部とを用いて、データの特徴を表すデータ点をクラスタリングするためのクラスタリング方法であって、
入力されたデータ点を受け付けて前記記憶部に格納するステップと、
前記新規データ点が属すべきクラスタを、前記処理部により、木構造インデックスを用いて検索するステップと、
前記新規データ点と、検索された前記クラスタの中心点との距離が固定値未満である場合に、前記新規データ点を、前記処理部により、前記クラスタに属させ、前記固定値以上である場合に、前記処理部により、新たなクラスタを生成して、その新たに生成したクラスタに前記新規データ点を属させるステップと
を備える、データ点のクラスタリング方法。
【００１４】
（項目６）
項目５に記載の各ステップをコンピュータで実行させるためのコンピュータプログラム。
【００１５】
このコンピュータプログラムは、適宜な記録媒体（例えばＣＤ−ＲＯＭやＤＶＤディスクのような光学的な記録媒体、ハードディスクやフレキシブルディスクのような磁気的記録媒体、あるいはＭＯディスクのような光磁気記録媒体）に格納することができる。このコンピュータプログラムは、インターネットなどの通信回線を介して伝送されることができる。
【発明の効果】
【００１６】
本発明によれば、データ点の分類を、木構造インデックスを生成しながら、比較的に簡便な手順で行うことが可能となる。
【図面の簡単な説明】
【００１７】
【図１】本発明の一実施形態におけるクラスタリング装置をネットワークに接続した状態を示す説明図である。
【図２】本発明の一実施形態におけるクラスタリング方法を説明するためのフローチャートである。
【図３】クラスタリングに伴って生成される木構造インデックスを説明するための説明図である。
【図４】クラスタリングを説明するための説明図である。
【図５】リーフノードを検索する手順を説明するためのフローチャートである。
【図６】新しいクラスタを生成する手順を説明するためのフローチャートである。
【図７】生成された木構造インデックスの一例を示す説明図である。
【発明を実施するための形態】
【００１８】
（本実施形態の構成）
本発明の第１実施形態に係るクラスタリング装置の構成を、図１に基づいて説明する。このクラスタリング装置１は、サーバとして実装されており、ネットワーク２に接続されている。ネットワーク２には、クライアント端末３がさらに接続されている。
【００１９】
ネットワーク２は、例えばインターネットである。ネットワーク２は、この例では、クライアント端末３とクラスタリング装置１とを接続して、これらの間での通信を可能にするものである。
【００２０】
クライアント端末３は、ネットワーク２を介してクラスタリング装置１に接続することにより、所定の入出力動作を行うことができるようになっている。
【００２１】
クラスタリング装置１は、データの特徴を表すデータ点をクラスタリングする機能を備えている。クラスタリング装置１は、具体的には、インデックスＤＢ１１と、データ点受付部１２と、クラスタ検索部１３と、データ追加部１４とを有している。
【００２２】
インデックスＤＢ１１は、木構造インデックスを格納するものである。インデックスＤＢ１１は、ハードディスクなどの適宜な記憶手段の内部に格納される。
【００２３】
データ点受付部１２は、例えばクライアント端末３から入力された新規データ点を受け付けるものである。ここで、新規データ点とは、例えば、画像特徴量を示す特徴ベクトルである。あるいは、新規データ点は、１枚の画像中の部分画像に対応する特徴ベクトルである。ただし、新規データ点が、他の種類のデータ（例えば音声データ）に対応する特徴量であっても良い。
【００２４】
クラスタ検索部１３は、新規データ点が属すべきクラスタを、インデックスＤＢ１１に格納された木構造インデックスを用いて検索するものである。
【００２５】
データ追加部１４は、新規データ点と、検索されたクラスタの中心点との距離が固定値未満である場合に、新規データ点をクラスタに属させ、固定値以上である場合に、新たなクラスタを生成して、その新たに生成したクラスタに新規データ点を属させる構成となっている。
【００２６】
クラスタリング装置１の動作は以下においてさらに詳しく説明する。
【００２７】
（本実施形態におけるクラスタリング手法）
次に、図２〜図７をさらに参照して、本実施形態におけるクラスタリング手法を詳しく説明する。
【００２８】
（図２のステップＳＡ−１）
まず、クラスタリング装置１は、木構造インデックスの起点となるルートノードを生成して、インデックスＤＢ１１に格納する。この明細書では、ルートノード自体も木構造インデックスという概念に含まれるものとする。
【００２９】
（図２のステップＳＡ−２）
つぎに、まず、データ点受付部１２が、クライアント端末３から入力された初回のデータ点Ｄ０を受け付けた場合の動作を説明する。データ点Ｄ０を受け付けた場合、データ点受付部１２は、データ点Ｄ０をインデックスＤＢ（記憶部）に格納し、さらに、ステップＳＡ−２−１において、初回のデータかどうかを確認する。ルートノードが空である場合、初回のデータ受付であると判定できる。
【００３０】
初回のデータ入力である場合は、ステップＳＡ−２−２において、ルートノードの中心を入力データ点とし、この入力データ点をルートノードに属させる。この状態を図３（ａ）及び図４（ａ）に示す。
【００３１】
ついで、データ点受付部１２は、クライアント端末３から入力された次のデータ点Ｄ１を受け付けて、インデックスＤＢ（記憶部に対応）１１に格納する。なお、データ点受付部１２が受け付けた各データ点を記憶する記憶部としては、インデックスＤＢに限らず、他の適宜な記憶手段であってもよい。なお、初回より後のデータ点入力については、ステップＳＡ−２−１での判断がＮｏとなるので、ステップＳＡ−３に進むことになる。
【００３２】
（図２のステップＳＡ−３）
ついで、クラスタ検索部（処理部に対応）１３により、新規データ点Ｄ１が属すべきクラスタを、木構造インデックスを用いて検索する。この検索の手順を、図５をさらに参照しながら説明する。
【００３３】
（図５のステップＳＢ−１）
まず、ターゲットノード（初期状態ではルートノード）が内部ノードかどうかを判定する。内部ノードとは、子ノードを持つノードである。
【００３４】
（図５のステップＳＢ−２）
ターゲットノードが内部ノードでなければ、当該ターゲットノードをリーフノードとして特定する。その後の動作はステップＳＡ−４に進む（後述）。初回の検索では、ルートノードは内部ノードではないので、ルートノードがリーフノードとして特定される。
【００３５】
（図５のステップＳＢ−３）
ターゲットノードが内部ノードであれば、当該内部ノードに属する各子ノードの中心点と、入力データ点との距離を計算する。
【００３６】
（図５のステップＳＢ−４）
ついで、入力データ点に最も近い子ノードをターゲットノードとし、ステップＳＢ−１に戻る。これにより、入力データ点に最も近い中心点を持つリーフノードを検索することができる。
【００３７】
（図２のステップＳＡ−４）
ついで、検索されたリーフノード（つまりクラスタ）の中心点と、入力データ点との距離が、既定の固定値未満であるかどうかを、データ追加部（処理部に対応）１４により判断する。
【００３８】
（図２のステップＳＡ−５）
検索されたリーフノードの中心点と、入力データ点との距離が、既定の固定値未満であれば、新規データ点Ｄ１を、データ追加部（処理部に相当）１４により、検索されたクラスタに属させる。ノードＮ１に新規データ点Ｄ１を追加した状態を図３（ｂ）に示す。さらに、ノードＮ１に対応するクラスタにデータ点Ｄ１を追加した状態を図４（ｂ）に示す。
【００３９】
（図２のステップＳＡ−６）
検索されたリーフノードの中心点と、入力データ点との距離が、既定の固定値以上である場合（つまり、ステップＳＡ−４での判断がＮｏのとき）は、データ追加部（処理部に相当）１４により、新たなクラスタを生成して、その新たに生成したクラスタに新規データ点を属させる。新たなクラスタ生成の具体例は後述する。
【００４０】
（図２のステップＳＡ−７）
他の新たな入力データ点を取得したときは、ステップＳＡ−３に戻り、そうでないときはクラスタリング生成を終了する。
【００４１】
（クラスタ生成の具体例）
ステップＳＡ−７で新規データ点Ｄ２を新たに取得すると、前記した処理を繰り返すことにより、図３（ｃ）に示す新規データ点Ｄ２をノードＮ１にさらに属させることができる。
【００４２】
つぎに、新規クラスタを生成する手順を、新規データ点Ｄ３を取得した場合を例にしてさらに説明する。新規データ点Ｄ３の場合、検索されたリーフノードの中心点と、入力データ点との距離が、既定の固定値以上となる（つまり、ステップＳＡ−４での判断がＮｏとなる）。すると、ステップＳＡ−６に移行する。このステップＳＡ−６での詳しい手順を、図６を参照して説明する。
【００４３】
（図６のステップＳＣ−１）
まず、検索されたリーフノードが属する内部ノードに含まれる全リーフノードの個数を数える。ただし、検索されたリーフノードがルートノードである場合はこのステップは省略し、ステップＳＣ−３に移行する。
【００４４】
（図６のステップＳＣ−２）
ステップＳＣ−１で数えたリーフノードの個数が規定値（例えば３）未満であれば、検索されたリーフノードと並列に、新たなクラスタを生成して、新規ノードをこの新たなクラスタに属させる。
【００４５】
（図６のステップＳＣ−３）
前記した新規データ点Ｄ３の場合、検索されたリーフノードがルートノードなので、以下のように処理する。すなわち、検索されたリーフノードＮ１を包含する内部ノードを新たに生成する。この明細書では、新たに生成された内部ノード（図示の例ではルートノード）をＮ１と称し、検索されたリーフノード（元のリーフノードＮ１）をＮ２と称することにする。この新たな内部ノードＮ１の中心点は、元のリーフノードＮ１の中心点であったＤ０とする。検索されたリーフノードＮ２は新たな内部ノードＮ１に属する。この作業は、実質的に、検索されたリーフノードＮ１の下に新たにリーフノードＮ２を生成して、リーフノードＮ１を内部ノードとし、リーフノードＮ１の内容を新たなリーフノードＮ２の内容とすることに相当する。
【００４６】
（図６のステップＳＣ−４）
さらに、生成された新たな内部ノードＮ１に、リーフノードＮ２との兄弟ノードであるリーフノードＮ３を新たに生成し、そして、新規データ点Ｄ３をこのリーフノードＮ３に属させる。この状態を図３（ｄ）に示す。このように、本実施形態では、検索されたリーフノードＮ１の下に新たにリーフノードＮ３を生成して、このリーフノードＮ３に新規データ点を属させることができる。
【００４７】
図３（ｅ）の新規データ点Ｄ４は、新規データ点Ｄ３から所定範囲内にあるので、ノードＮ３に属する。
【００４８】
図３（ｅ）の新規データ点Ｄ５は、検索されたリーフノード（例えばノードＮ３）から所定距離以上離れているので、前記したステップＳＣ−１に進む。すると、ステップＳＣ−１で計算されたリーフノードの個数は２個であり、これは規定値未満（この例では規定値は３）である。よって、前記したステップＳＣ−２に進み、検索されたリーフノードＮ３と並列に、内部ノードＮ１内に新たなノード（すなわちクラスタ）Ｎ４を生成する。そして、このノードＮ４の中心を新規データ点Ｄ５とし、このデータ点Ｄ５をノードＮ４に属させる。
【００４９】
同様にして、図３（ｆ）の新規データ点Ｄ６は、前記の手順でノードＮ４に属するものである。図３（ｇ）の新規データ点Ｄ７は、検索されたリーフノード（例えばノードＮ４）の中心との距離が固定値以上なので、図６のステップＳＣ−１に進む。ここで、検索されたリーフノードＮ４が属する内部ノードＮ１に含まれる全リーフノードの個数は、既に３個であり、この値は規定値（この例では３）以上に該当する。したがって、ステップＳＣ−３に進み、前記した手順に沿って、新たな内部ノードＮ４を生成し、検索されたリーフノードＮ４（これはこの明細書ではリーフノードＮ５とされる）の兄弟ノードとなる新たなリーフノードＮ６を生成する。リーフノードＮ６は、入力データ点Ｄ７を中心点としたクラスタとする。つまり、リーフノードＮ６は、検索されたリーフノードＮ４の下に生成されることになる。そして、入力データ点Ｄ７をこのリーフノードＮ６に属させる。以降、同様にして、木構造インデックスをたどりながら、新規データのクラスタリングが可能である。
【００５０】
したがって、本実施形態では、学習データ（新規データ）が属すべきクラスタを検索しながら、比較的に簡便な手順で、木構造インデックスを生成していくことができる。生成された木構造インデックスの一例を図７に示す。
【００５１】
また、前記実施形態のクラスタリング方法によれば、大量にクラスタ（リーフノード）が生成されても、木構造を辿っていくことにより、一部のノードを参照するだけで、クラスタリングが可能となる。したがって、この方法は、クラスタリングの処理が簡易であり、高速に実施することができる。
【００５２】
また、本実施形態の方法は、いわゆるbag of featuresにおける局所特徴量のクラスタリングとして使用することができる。つまり、一枚の画像から抽出した複数の部分画像の特徴量である局所特徴量（ベクトルデータ）を新規データとして、前記の方法でクラスタリングすることにより、大量の局所特徴量についての木構造インデックスを生成することができる。さらに、生成された木構造インデックスを、局所特徴量についての転置ファイルとして用いることができ、局所特徴量の検索を高速化することができるという利点もある。
【００５３】
（クラスタ識別処理）
前記の処理により生成された木構造インデックスを用いたクラスタ識別処理は、以下のように実行出来る。
（１）ルートノードをターゲットノードとする。
（２）ターゲットノードが内部ノードならば、子ノードの中心点との距離を算出して、最も近い子ノードをターゲットノードとして（２）に戻る。
（３）ターゲットノードがリーフノードならば当該のリーフノードが識別されたクラスタとなる。
【００５４】
前記したように、本実施形態では、学習データ（新規データ）が属すべきクラスタを検索しながら、比較的に簡便な手順で、木構造インデックスを生成していくことができるという利点がある。さらに、生成されたインデックスを利用した検索も可能になる。
【００５５】
さらに、本実施形態のデータ追加部１４は、新たなクラスタを、検索されたクラスタの下層に生成する構成とされているので、内部ノードにおける子ノードの数を減らすことができ、探索が簡易化するという利点がある。
【００５６】
また、データ追加部１４が、新たなクラスタを、検索されたクラスタと並列に生成する場合は、木構造の深さを浅くすることができるという利点がある。
【００５７】
なお、クラスタに属するデータ点（類似データ点）が必要であれば、リーフノードに属するデータ点を取得できる。
【００５８】
前記した各実施形態の動作は、コンピュータに適宜のコンピュータソフトウエアを組み込むことにより実施することができる。
【００５９】
なお、本発明の内容は、前記実施形態に限定されるものではない。本発明は、特許請求の範囲に記載された範囲内において、具体的な構成に対して種々の変更を加えうるものである。
【００６０】
例えば、前記した各構成要素は、機能ブロックとして存在していればよく、独立したハードウエアとして存在しなくても良い。また、実装方法としては、ハードウエアを用いてもコンピュータソフトウエアを用いても良い。さらに、本発明における一つの機能要素が複数の機能要素の集合によって実現されても良く、本発明における複数の機能要素が一つの機能要素により実現されても良い。
【００６１】
また、機能要素は、物理的に離間した位置に配置されていてもよい。この場合、機能要素どうしがネットワークにより接続されていても良い。グリッドコンピューティングにより機能を実現し、あるいは機能要素を構成することも可能である。
【符号の説明】
【００６２】
１  サーバ（クラスタリング装置）
２  ネットワーク
３  クライアント端末
１１  インデックスＤＢ
１２  データ点受付部
１３  クラスタ検索部
１４  データ追加部
【図１】
0005265656.tif 000002
【図２】
0005265656.tif 000003
【図３】
0005265656.tif 000004
【図４】
0005265656.tif 000005
【図５】
0005265656.tif 000006
【図６】
0005265656.tif 000007
【図７】
0005265656.tif 000008