JP2007334402A - Server, system and method for retrieving clustered vector data - Google Patents
Server, system and method for retrieving clustered vector data Download PDFInfo
- Publication number
- JP2007334402A JP2007334402A JP2006162105A JP2006162105A JP2007334402A JP 2007334402 A JP2007334402 A JP 2007334402A JP 2006162105 A JP2006162105 A JP 2006162105A JP 2006162105 A JP2006162105 A JP 2006162105A JP 2007334402 A JP2007334402 A JP 2007334402A
- Authority
- JP
- Japan
- Prior art keywords
- vector data
- cluster
- search
- clusters
- key
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】高次元ベクトルデータを対象とした類似検索において、クラスタリングによって高速処理を実装した場合、一般には、全件を参照した検索結果と一致する保証はない。高い精度を求めると、多くのクラスタの参照が必要となり、迅速な応答を実現できない。
【解決手段】検索エンジンが一回に参照するクラスタ数を一定とした上で、検索エンジンとアプリケーションとの間で、検索結果、及び、参照されたクラスタに関する情報を送受信する。検索エンジンは、既に参照されたクラスタに関する処理を省略し、さらに一定個数のクラスタに関する処理を実行することによって、一定の応答時間で、より精度の高い検索結果を構成することが可能となる。
【選択図】図4In a similar search for high-dimensional vector data, when high-speed processing is implemented by clustering, there is generally no guarantee that the search results refer to all cases. When high accuracy is required, many clusters need to be referred to, and a quick response cannot be realized.
A search engine and an application transmit and receive search results and information related to the referenced cluster, with a fixed number of clusters referenced by the search engine at a time. The search engine omits the processing related to the already referenced clusters and further executes the processing related to a certain number of clusters, thereby making it possible to construct a more accurate search result with a constant response time.
[Selection] Figure 4
Description
本発明は、計算機上でのベクトルデータの検索に関する。 The present invention relates to retrieval of vector data on a computer.
ベクトルデータの検索として一般的なのは、地図データ等の空間位置情報に基づく検索である。この場合、ベクトルデータの次元数は、高々2〜数次元程度となる。これに対して、画像・映像等を対象とする類似検索では、各データを特徴付けるデータとして、数10次元〜数100次元のベクトルが用いられる。類似検索では、検索のキーとなるデータと、ベクトル空間中で距離が小さいデータの検索、すなわち、ベクトル空間中での最近接検索が行われる。例えば、静止画像の類似検索では、画像中の色分布のヒストグラム等が、データを特徴付ける特徴量ベクトルとして用いられる。 A general search for vector data is a search based on spatial position information such as map data. In this case, the number of dimensions of the vector data is about 2 to several dimensions at most. On the other hand, in a similar search for images / videos, vectors of several tens of dimensions to several hundreds of dimensions are used as data characterizing each data. In the similar search, a search for data serving as a search key and data having a short distance in the vector space, that is, a closest search in the vector space is performed. For example, in a similarity search of still images, a histogram of color distribution in the image is used as a feature vector that characterizes data.
最近接検索では、ベクトル間の距離を知る必要がある。距離計算の対象データ数をN、特徴量ベクトルの次元数をMとすれば、検索キーデータと距離計算の対象データとの間でN回の距離計算が必要となり、かつ、各距離計算に必要となる時間は、Mに比例する。従って、最近接検索を線形探索で実現した場合、1回の検索時間のN×Mに比例した計算時間が必要となる。 In the nearest neighbor search, it is necessary to know the distance between vectors. If the number of target data for distance calculation is N and the number of dimensions of the feature vector is M, N distance calculations are required between the search key data and the target data for distance calculation, and each distance calculation is required. Is proportional to M. Therefore, when the closest search is realized by a linear search, a calculation time proportional to N × M of one search time is required.
最近接検索の処理を高速化する手法として、検索キーデータに応じて距離計算の対象データを絞り込む方法が複数提案されている。多次元インデキシングと総称される一群の手法は、データベースの分野で利用されているバランス木の概念を多次元空間の処理に拡張したものである。多次元インデキシングでは、空間中の領域が木構造で管理される。そして、検索キーデータが与えられると、その検索キーデータを含む領域が定義されたリーフをLog Nのオーダで検索する。一方、パターン認識の分野では、距離が近いもの同士を予め分類しておく、クラスタリングに基づく高速化がしばしば用いられる。具体的な分類の手法としては、k-means法が一般的である。 As a technique for speeding up the nearest neighbor search process, a plurality of methods for narrowing the target data for distance calculation according to the search key data have been proposed. A group of techniques collectively referred to as multidimensional indexing is an extension of the concept of balanced trees used in the field of databases to multidimensional space processing. In multidimensional indexing, regions in space are managed in a tree structure. When the search key data is given, the leaf in which the area including the search key data is defined is searched with the order of Log N. On the other hand, in the field of pattern recognition, speeding up based on clustering is often used in which objects that are close to each other are classified in advance. As a specific classification method, the k-means method is common.
一方、非特許文献1は、高次元で分布する確率ベクトルに関する解析によって、通常の確率分布で成立するある条件の下で、任意の点と他の標本分布中の中との最小距離と最大距離との比が、空間の高次元化に伴い1に収束すること、すなわち、全ての標本点間の距離の差が無くなって行くことを示した。従って、上記の各種高速化手法が、高次元空間の処理で、一般的な意味で良好な効果を生むことは困難であり、通常は、その性能は線形探索に劣るものとなる、と結論付けている。ただし、非特許文献1は、標本の分布が一様構造ではなく、クラスタ構造を持つ場合は、クラスタリング処理が有効性を発揮することも指摘している。
対象となるデータに対して適切な特徴量ベクトルが抽出されていると仮定すれば、標本分布は、ある程度のクラスタ構造を持っていると想定される。従って、そこから適切にクラスタ構造を抽出することが出来れば、クラスタリングに基づく検索の高速化が期待できる。ただし、実際にどの程度の高速化が可能かは、存在しているクラスタが互いにどの程度分離しているか、及び、検索キーとクラスタとの関係に依存する。 Assuming that an appropriate feature vector is extracted for the target data, the sample distribution is assumed to have a certain degree of cluster structure. Therefore, if a cluster structure can be appropriately extracted therefrom, it is possible to expect a high-speed search based on clustering. However, how much speed can actually be increased depends on how far the existing clusters are separated from each other and the relationship between the search key and the clusters.
例えば、データ全体がNc個のクラスタに分類されており、各クラスタには、それを構成するメンバ(すなわち、各クラスタに含まれるデータ)の平均ベクトルが保存されているものとする。検索時には、まず、検索キーのベクトルと各クラスタの平均ベクトルとの距離が計算される。次に、その距離が小さい順序にクラスタを参照していき、各クラスタのメンバと検索キーとの距離計算を行うことによって、類似検索の結果、すなわち、検索キー近傍のデータを取得する。 For example, it is assumed that the entire data is classified into Nc clusters, and each cluster stores an average vector of members (that is, data included in each cluster). When searching, first, the distance between the search key vector and the average vector of each cluster is calculated. Next, the clusters are referred to in ascending order of the distance, and the distance between the members of each cluster and the search key is calculated to obtain the result of the similarity search, that is, the data near the search key.
真の検索結果は、全数検索(すなわち、全クラスタの全メンバを対象とする検索)を行った場合の結果である。次に、上記の手続きにおいて、幾つのクラスタを参照すれば、真の結果と一致する結果を得られるか、について検討する。 The true search result is a result when an exhaustive search (that is, a search for all members of all clusters) is performed. Next, in the above procedure, it is examined how many clusters can be referred to obtain a result that matches the true result.
クラスタ間の分離が良く、かつ、検索キーが何れかのクラスタの平均ベクトルの近傍にある場合は、少数個のクラスタを参照するだけで十分であろう。仮に、最近接クラスタのメンバ数が、要求される検索結果数より十分大きければ、一つのクラスタのみの参照で済むかも知れない。逆に、検索キーが、クラスタ境界付近に位置する場合は、少なくとも、その境界に接するクラスタを参照する必要が生じる。また、検索キー近傍のクラスタの分離が悪い場合は、多数のクラスタを参照する必要が生じる。 If the separation between clusters is good and the search key is near the average vector of any cluster, it will be sufficient to reference a small number of clusters. If the number of members of the nearest cluster is sufficiently larger than the required number of search results, it may be necessary to refer to only one cluster. Conversely, when the search key is located near the cluster boundary, it is necessary to refer to at least a cluster in contact with the boundary. Also, when the separation of clusters near the search key is poor, it is necessary to refer to a large number of clusters.
実際の検索時には、真の結果は未知である。従って、真の結果になるべく近い結果を得たければ、なるべく多くのクラスタを参照する必要がある。しかし、あまり多数のクラスタを参照すると、線形探索と同等の計算量となってしまうため、検索の高速化は実現しない。このことは、クラスタリングではなく、多次元インデキシングを用いた場合も同様である。この場合、多数のリーフを参照することになる。 During the actual search, the true result is unknown. Therefore, it is necessary to refer to as many clusters as possible in order to obtain a result as close as possible to the true result. However, if too many clusters are referenced, the amount of calculation is equivalent to that of linear search, so that the search speed cannot be increased. The same applies to the case where multidimensional indexing is used instead of clustering. In this case, a large number of leaves are referred to.
さらに、クラスタリング及び多次元インデキシングのいずれが用いられる場合にも、データとの距離計算以外の処理が必要となる。すなわち、クラスタリングでは、クラスタ平均との距離計算、多次元インデキシングでは、木構造を辿る際の領域判定が必要である。また、大量のデータへのアクセスに関しては、一般に、単純な線形探索の方が効率的である。従って、これらの高速化手法は、少なくとも、アルゴリズム評価のレベルで十分な有効性を示す必要がある。 Furthermore, when clustering or multidimensional indexing is used, processing other than the calculation of the distance to the data is required. That is, in clustering, distance calculation with the cluster average and multidimensional indexing require area determination when tracing a tree structure. In general, a simple linear search is more efficient for accessing a large amount of data. Therefore, it is necessary that these speed-up methods have sufficient effectiveness at least at the level of algorithm evaluation.
現在、類似検索を必要とする多くの分野で、扱うべきデータ量が増大しており、線形探索に代わる高速な検索が必要とされている。従って、上述した問題点を克服する高速検索技術がますます必要となっている。 Currently, in many fields that require similar search, the amount of data to be handled is increasing, and high-speed search instead of linear search is required. Accordingly, there is an increasing need for high-speed search technology that overcomes the above-mentioned problems.
実際の類似検索の利用を考えた場合、必ずしも、真の結果を正確に知る必要がなく、それよりも、アプリケーション上での迅速な応答が要求される場合が多い。本発明では、クラスタリングに基づいた検索エンジンにおいて、検索エンジンとそれを使用するアプリケーションが以下のようなデータを送受信することによって、類似検索を行うアプリケーションにとって最適な処理系を実現する。 When considering the use of an actual similarity search, it is not always necessary to know the true result accurately, and a quick response on the application is often required. In the present invention, in a search engine based on clustering, a search engine and an application using the search engine transmit and receive the following data, thereby realizing an optimum processing system for an application that performs a similar search.
検索エンジンは、クライアントのアプリケーションから検索要求を受けると、所定の個数のクラスタを参照して類似検索を実行し、取得した類似検索の結果をアプリケーション側に返す。この際、検索エンジンは、検索のために参照したクラスタに関する情報も合わせてアプリケーション側に渡す。アプリケーション側に返された検索結果は、一般に、上位、すなわち、高類似度の結果の信頼性は高いが、下位の結果の信頼性は低い。アプリケーション側が、より真の結果に近い検索結果を必要とする場合、再度、同一の検索条件での検索要求をエンジン側に発行する。この際、アプリケーションは、以前に取得した検索結果及び以前に参照したクラスタに関する情報も合わせて検索エンジンに送信する。検索エンジンは、以前に参照したクラスタに関する処理を省略し、より低類似度の所定の個数のクラスタを参照し、クラスタメンバのデータに関する類似検索処理を行う。その結果、以前の検索結果よりも高類似度のデータを発見した場合、検索エンジンは、検索結果を更新し、参照したクラスタの情報とともに、検索結果をアプリケーション側に返す。このような処理を繰り返すことによって、アプリケーションは、必要に応じて、より精度の高い類似検索の結果を取得することが可能となる。 When the search engine receives a search request from the client application, the search engine performs a similar search with reference to a predetermined number of clusters, and returns the acquired similar search result to the application side. At this time, the search engine also passes the information about the cluster referred for the search to the application side. The search result returned to the application side is generally high in reliability of the high-order, that is, high-similarity results, but low in reliability of the low-order results. When the application side needs a search result that is closer to the true result, it issues a search request under the same search condition to the engine side again. At this time, the application also transmits the search result acquired previously and information about the previously referenced cluster to the search engine. The search engine omits the process related to the previously referred cluster, refers to a predetermined number of clusters having a lower similarity, and performs a similar search process regarding the data of the cluster members. As a result, when data having a higher similarity than the previous search result is found, the search engine updates the search result and returns the search result to the application side together with the information of the referenced cluster. By repeating such processing, the application can acquire the result of the similarity search with higher accuracy as necessary.
より具体的には、本願で開示する代表的な発明は、データを入出力するインターフェースと、前記インターフェースに接続されるプロセッサと、前記プロセッサに接続される一つ以上の記憶装置と、を備える検索サーバにおいて、前記記憶装置には、各々が複数のクラスタのいずれかに含まれる複数の第1ベクトルデータと、前記複数の第1ベクトルデータの前記クラスタごとの代表値と、が格納され、前記プロセッサは、第2ベクトルデータを含む検索要求を受信すると、受信した前記第2ベクトルデータをキーとして前記代表値を検索し、前記第2ベクトルデータとの距離が近い前記代表値を含む前記クラスタから順に、第1の所定の数の前記クラスタに含まれる複数の第1ベクトルデータを、前記第2ベクトルデータをキーとして検索し、前記検索された第1ベクトルデータのうち、前記第2ベクトルデータとの距離が近い第2の所定の数の前記第1ベクトルデータを、前記インターフェースを介して出力することを特徴とする。 More specifically, a representative invention disclosed in the present application includes an interface for inputting and outputting data, a processor connected to the interface, and one or more storage devices connected to the processor. In the server, the storage device stores a plurality of first vector data each included in any of a plurality of clusters, and representative values for the clusters of the plurality of first vector data, and the processor Receives the search request including the second vector data, searches the representative value using the received second vector data as a key, and sequentially starts from the cluster including the representative value that is close to the second vector data. A plurality of first vector data included in the first predetermined number of clusters are searched using the second vector data as a key. Of the first vector data the search, the first vector data of a predetermined number of distance second close between the second vector data, and outputs through the interface.
検索エンジン側においては、1回の検索要求に対して常に一定個数のクラスタのみが参照されるため、ほぼ一定の応答時間が実現される。アプリケーション側においては、その利用の文脈に応じて、要求する検索精度を制御可能であるため、エンドユーザにとって最適な処理系を構成することが可能となる。 On the search engine side, only a fixed number of clusters are always referred to for a single search request, so that a substantially constant response time is realized. On the application side, the required search accuracy can be controlled in accordance with the usage context, so that it is possible to configure an optimum processing system for the end user.
以下、本発明の実施の一形態として、画像を対象とした類似検索システムについて説明する。 Hereinafter, a similarity search system for an image will be described as an embodiment of the present invention.
図1は、本発明の実施の形態の類似検索システムの構成を示すブロック図である。 FIG. 1 is a block diagram showing the configuration of the similarity search system according to the embodiment of this invention.
検索エンジンが稼動するサーバ計算機110は、通信基盤120を経由して、アプリケーションプログラムが稼動するクライアント計算機130と接続され、クライアント計算機130に検索等のサービスを提供する。
The
通信基盤120は、サーバ計算機110とクライアント計算機130とを接続するネットワーク(例えば、IPネットワーク)である。
The
サーバ計算機110は、少なくとも、相互に接続されたインターフェース(I/F)151、CPU152、メモリ153及びハードディスク154を備える。
The
I/F151は、通信基盤120に接続され、サーバ計算機110とクライアント計算機130の間の通信に使用される。
The I / F 151 is connected to the
CPU152は、メモリ153に格納されたプログラムを実行するプロセッサである。
The
メモリ153は、CPU152によって実行されるプログラム及びCPU152によって参照されるデータを格納する記憶装置である。本実施の形態のメモリ153は、いわゆる主記憶装置であり、例えば、ランダムアクセス可能な半導体記憶装置である。本実施の形態のメモリ153は、少なくとも、検索サーバプロセス111を実現するためのサーバ・プログラム及びデータを格納する。
The
ハードディスク154は、一つ以上のハードディスクドライブ(HDD)からなる記憶装置である。本実施の形態のハードディスク154は、画像サーバ140に格納された画像の特徴量ベクトルに関する情報を特徴量データ114及びクラスタ管理情報115として格納する。
The
特徴量ベクトルとは、画像サーバ140に格納されている画像の特徴をベクトルデータとして数値化したものである。特徴量ベクトルは、従来から知られている種々の方法によって算出することができる。
The feature amount vector is obtained by digitizing the feature of an image stored in the
本実施の形態において、各特徴量ベクトルは、複数のクラスタのいずれかに分類される。相互に距離が近い特徴量ベクトルは、同じクラスタに分類されることが望ましい。特徴量ベクトルは、どのような方法でクラスタに分類されてもよいが、本実施の形態では、k-means法によって分類される。 In the present embodiment, each feature vector is classified into one of a plurality of clusters. It is desirable that feature vectors that are close to each other are classified into the same cluster. The feature amount vector may be classified into clusters by any method, but in the present embodiment, it is classified by the k-means method.
一つの特徴量データ114は、一つのクラスタに分類された一つ以上の画像を識別するデータIDと、そのIDによって識別される画像データの特徴量ベクトルと、の組を含む。なお、各クラスタに分類された画像及び特徴ベクトルは、クラスタメンバとも記載される。
One
クラスタ管理情報115は、各クラスタを識別するクラスタIDと、そのクラスタIDによって識別されるクラスタの代表値と、の組を含む。
The
本実施の形態において、各クラスタの代表値とは、各クラスタに含まれる特徴量ベクトルの平均ベクトル(クラスタ平均)である。しかし、平均ベクトル以外の値がクラスタの代表値として使用されてもよい。例えば、平均ベクトルに近接するクラスタメンバの特徴量ベクトルが使用されてもよいし、他の統計的な代表値、例えば、最頻値、中央値等が使用されてもよい。k-means法による最適化の結果、各クラスタが完全に分離している場合、各特徴量ベクトルは、その特徴量ベクトルと最も距離が近い代表値を含むクラスタに含まれる。 In the present embodiment, the representative value of each cluster is an average vector (cluster average) of feature quantity vectors included in each cluster. However, a value other than the average vector may be used as the representative value of the cluster. For example, the feature vector of cluster members close to the average vector may be used, or other statistical representative values such as the mode value and the median value may be used. As a result of optimization by the k-means method, when each cluster is completely separated, each feature vector is included in a cluster including a representative value closest to the feature vector.
なお、本実施の形態のハードディスク154は、光ディスク装置、フラッシュメモリのような半導体記憶装置、又は、その他のいかなる種類の記憶装置によって置き換えられてもよい。
Note that the
画像サーバ140は、画像データを格納する記憶装置(図示省略)を備え、通信基盤120に接続される計算機である。
The
サーバ計算機110内の検索サーバプロセス111は、クラスタリングされた(すなわち、クラスタに分類された)検索対象を管理している。システム稼動時には、クラスタ管理情報115は、サーバ計算機のメモリ153内にクラスタ管理情報112として展開されている。各クラスタ情報113として、各クラスタID、そのIDによって識別されるクラスタの代表値である平均ベクトル、及び、クラスタメンバを識別するデータID列等が格納されている。各クラスタメンバの特徴量ベクトルは、特徴量データ114として一括してハードディスク154上で管理される。このため、メモリ153内のクラスタ情報113として、さらに、各クラスタメンバの特徴量ベクトルを格納したハードディスク上の位置が格納されている。
The
なお、クラスタ管理情報112は、ハードディスク154上に記録されたクラスタ管理情報のコピーである。このため、クラスタに対する更新が生じた場合、クラスタ管理情報112だけでなく、ハードディスク154上のクラスタ管理情報115も更新される。しかし、検索処理においてクラスタ管理情報115が直接参照されることはない。
The
クライアント計算機130は、通信基盤120に接続され、アプリケーションプログラム(図示省略)が稼動する計算機である。図1には二つのクライアント計算機130を示すが、本類似検索システムは任意の数のクライアント計算機130を備えてもよい。
The
クライアント計算機130は、いかなる構成の計算機であってもよい。図1には、典型的なクライアント計算機130の構成を示す。すなわち、図1のクライアント計算機130は、CPU131、メモリ132、I/F133、入力装置134及び出力装置135を備える。
The
CPU131は、メモリ132に格納されたプログラムを実行するプロセッサである。
The
メモリ132は、CPU131によって実行されるプログラム等を格納する記憶装置である。メモリ132は、少なくとも、アプリケーションプログラム(図示省略)を格納する。
The memory 132 is a storage device that stores programs executed by the
I/F133は、通信基盤120に接続され、クライアント計算機130とサーバ計算機110との間の通信に使用されるインターフェースである。
The I /
入力装置134は、クライアント計算機130のユーザから入力を受け付ける装置である。入力装置134は、例えば、キーボード、ポインティングデバイス又は画像スキャナ等を含んでもよい。
The
出力装置135は、クライアント計算機130のユーザに情報を表示する装置である。具体的には、例えば、類似検索の結果として取得された画像が出力装置135に表示される。出力装置135は、例えばCRT又は液晶ディスプレイのような画像表示装置である。
The
次に、本類似検索システムにおけるデータ登録時の処理について説明する。 Next, processing at the time of data registration in the similar search system will be described.
本システムでは、k-means法に基づいたクラスタリングを採用している。ただし、データの登録ごとに、全データのクラスタリングを行ったのでは、実用的な処理時間で登録処理を行うことは不可能である。本システムでは、新規データ登録時に、そのデータと距離が近いクラスタを、近接クラスタとして所定の個数検索し、検索された近接クラスタに関してk-means法の最適化を実行する。また、各クラスタのメンバのハードディスク上の格納領域を、物理的にも連続的に確保するために、クラスタ生成時に所定の量のディスク領域を確保する。それに従い、各クラスタメンバの最大数も制限される。 This system uses clustering based on the k-means method. However, if all data is clustered for each data registration, it is impossible to perform the registration process in a practical processing time. In this system, when new data is registered, a predetermined number of clusters having a distance close to that data are searched as neighboring clusters, and optimization of the k-means method is executed for the retrieved neighboring clusters. In addition, in order to continuously and physically secure storage areas on the hard disks of the members of each cluster, a predetermined amount of disk area is secured at the time of cluster generation. Accordingly, the maximum number of each cluster member is also limited.
図2は、本発明の実施の形態においてデータ登録時に実行される処理を示すフローチャートである。 FIG. 2 is a flowchart showing processing executed at the time of data registration in the embodiment of the present invention.
図2に示す処理は、検索サーバプロセス111を実現するサーバ・プログラムの一部として実行される。従って、図2に示す処理は、CPU152によって実行される。
The process shown in FIG. 2 is executed as a part of a server program that implements the
CPU152は、登録対象の新規データxを与えられると、まず、近接クラスタを検索し、近接クラスタの集合C*を取得する(210)。具体的には、CPU152は、各クラスタの平均ベクトルと新規データxとを比較し、新規データxと距離が近い平均ベクトルによって代表されるクラスタから順に、所定の数のクラスタを近接クラスタの集合C*として取得する。
When given the new data x to be registered, the
次に、CPU152は、近接クラスタの集合C*の中の最近接クラスタc*(すなわち、新規データxと最も距離が近い平均ベクトルによって代表されるクラスタ)に、新規データxを追加する(220)。
Next, the
次に、CPU152は、パラメータt及びパラメータiを、それぞれ、「0」及び「1」に初期化する(221、222)。パラメータtは、k-means法の更新の反復回数を計数するために使用される。パラメータiは、近接クラスタの集合C*に要素として含まれるクラスタを指示するために使用される。
Next, the
その後、ステップ230以降に示す、k-means法による最適化のループに入る。
Thereafter, an optimization loop based on the k-means method shown in
具体的には、CPU152は、近接クラスタの集合C*の要素である各クラスタについて(230)、クラスタのメンバ数が制限M_maxを超えるか否かを判定する(231)。
Specifically, the
具体的には、CPU152は、ステップ230において、パラメータiが集合C*の要素数以下であるか否かを判定する。ステップ230において、パラメータiが集合C*の要素数以下であると判定された場合、CPU152は、集合C*のi番目の要素であるクラスタcを対象として(234)、クラスタcのメンバ数がM_maxを超えるか否かを判定する(231)。なお、最適化ループに入った時点では、新規データxが追加された最近接クラスタc*以外のクラスタは、メンバ数制限を超えないことが前提となる。
Specifically,
仮に最近接クラスタc*のメンバ数がM_maxを超えた場合、CPU152は、そのクラスタを2分割し(232)、新たに生成されたクラスタdを近接クラスタの集合C*の要素に加える(233)。クラスタを2分割する方法としては、種々の方法が考えられる。ここでは、そのクラスタ内のベクトル分布に関して主軸を求め、各メンバのベクトルの主軸への射影が、クラスタ平均ベクトルの射影のどちら側に存在するかを判定することによって、メンバを二つのクラスタに群分けする。
If the number of members of the closest cluster c * exceeds M_max, the
ステップ233が実行された後、CPU152の処理は、ステップ231に戻る。ステップ231では、分割後のクラスタのメンバ数がM_maxを超えているか否かが判定される。分割後のクラスタのメンバ数がM_maxを超えていると判定された場合、そのクラスタをさらに分割するために、処理はステップ232に進む。一方、分割後のクラスタのメンバ数がM_maxを超えていないと判定された場合、次のクラスタについてステップ231の判定を実行するために、CPU152は、パラメータiの値に1を加算して(235)、ステップ230に戻る。
After
ステップ230において、パラメータiが集合C*の要素数を超えたと判定された場合、集合C*の要素である全てのクラスタのメンバ数がM_max以内であることが確認された。この場合、CPU152は、k-means法による最適化の反復回数tをチェックする(240)。
In
本システムにおいて、図2に示す最適化は、あくまでクラスタの部分集合を対象としたものであり、クラスタ全体での最適化を意味しない。また、データの追加は、その後も繰り返し行われることを想定しており、その度に最適化が実行される。従って、ある時点での最適化を極端に重視する必要はなく、反復の最大数t_maxは、数回程度で十分である。 In this system, the optimization shown in FIG. 2 is intended only for a subset of clusters, and does not mean optimization for the entire cluster. Further, it is assumed that the addition of data is repeatedly performed thereafter, and optimization is executed each time. Therefore, it is not necessary to place an extreme importance on optimization at a certain point in time, and it is sufficient that the maximum number of iterations t_max is several times.
ステップ240において、反復回数を示すパラメータtが反復の最大数t_max以上であると判定された場合、k-means法による最適化が所定の回数実行されたため、図2の処理が終了する。あるいは、ステップ240において、集合C*が変化していないと判定された場合、さらに最適化を実行する必要がないと考えられる。従って、この場合も、図2の処理が終了する。
If it is determined in
一方、ステップ240において、反復回数を示すパラメータtが反復の最大数t_maxより小さく、かつ、集合C*が変化していると判定された場合、クラスタの最適化を実行する必要があるため、CPU152は、k-means法によって集合C*を更新する(250)。
On the other hand, if it is determined in
ステップ250の処理は、通常のk-means法と同様である。すなわち、近接クラスタに含まれる全データは、その時点での最も近接したクラスタ平均を持つクラスタに配分される。これによって、各近接クラスタのメンバ、及び、クラスタ平均が更新され、ステップ230に戻る。最適化ループに入った時点とは異なり、今回は、大きくクラスタの状態が変化した場合、複数のクラスタがメンバ数の上限を超える可能性がある。また、2分割しただけでは不十分であるため、再度分割が必要となる場合、あるいは、新たに生成されたクラスタが上限を超える場合も生じる可能性がある。このため、CPU152は、全てのクラスタのメンバ数が上限M_max以下となるように処理(ステップ230からステップ235)した後、ステップ240に移行する。ステップ240で、反復数が最大数t_maxに達したか、あるいは、近接クラスタの集合C*の状態に全く変化がない場合、処理を終了する。
The process of
図2に示した一連の処理は、メモリ153上の作業領域で実行され、最終的な近接クラスタの状態が、ハードディスク154上に保存される。このハードディスク154上への保存時には、オプションとして、以下の機能が用意されている。
The series of processing shown in FIG. 2 is executed in the work area on the
一般に、類似性が高いクラスタは、更新時、及び、検索時に同時に参照される可能性が高い。従って、類似性が高いクラスタ同士が、ハードディスク上でなるべく近傍に集まるように配列すれば、ディスク走査の負荷を低減できるはずである。 In general, a cluster having high similarity is highly likely to be referred to at the time of update and search. Therefore, if the clusters having high similarity are arranged as close to each other as possible on the hard disk, the disk scanning load should be reduced.
式(1)は、クラスタ位置の再配列の手続きを定義するためのエネルギー関数である。Ncは、クラスタ数、v_iは、i番目の位置にあるクラスタの平均ベクトルを表す。本エネルギー関数は、相前後する位置にあるクラスタ平均の2乗距離の総和として定義されている。 Equation (1) is an energy function for defining a cluster position rearrangement procedure. Nc represents the number of clusters, and v_i represents an average vector of clusters at the i-th position. This energy function is defined as the sum of the squared distances of the cluster averages at successive positions.
ただし、両端の位置、すなわち、1番目の位置とNc番目の位置での境界条件は、両端で折り返しを行った形式で定義している。具体的には、存在しない0番目の位置のクラスタの平均ベクトルv_0の代わりに、2番目の位置のクラスタの平均ベクトルv_2が用いられる。また、存在しないNc+1番目の位置のクラスタの平均ベクトルv_Nc+1の代わりに、Nc-1番目の位置のクラスタの平均ベクトルv_Nc-1が用いられる。この時、i番目の位置にあるクラスタとj番目の位置にあるクラスタを交換した場合のエネルギー関数の変化量は、式(2)によって算出される。ただし、j>iとする。 However, the boundary conditions at the positions at both ends, that is, the first position and the Nc-th position are defined in a form in which folding is performed at both ends. Specifically, the average vector v_2 of the cluster at the second position is used instead of the average vector v_0 of the cluster at the zeroth position that does not exist. Further, instead of the average vector v_Nc + 1 of the non-existing Nc + 1-th cluster, the average vector v_Nc-1 of the Nc-1-th cluster is used. At this time, the amount of change in the energy function when the cluster at the i-th position and the cluster at the j-th position are exchanged is calculated by Expression (2). However, j> i.
上記のエネルギー変化量に基づき、エネルギー関数が減少するように配列内のクラスタ位置を更新すれば、配列中で隣り合う位置に存在するクラスタ同士の距離が相対的に小さい状態が実現できる。 If the cluster positions in the array are updated so that the energy function is reduced based on the energy change amount, a state in which the distance between clusters existing at adjacent positions in the array is relatively small can be realized.
図3は、本発明の実施の形態において実行されるクラスタ位置の再配列の処理を示すフローチャートである。 FIG. 3 is a flowchart showing cluster position rearrangement processing executed in the embodiment of the present invention.
図3に示す処理は、検索サーバプロセス111を実現するサーバ・プログラムの一部として実行される。従って、図3に示す処理は、CPU152によって実行される。
The process shown in FIG. 3 is executed as part of a server program that implements the
まず、CPU152は、現在更新対象となっている近接クラスタの集合C*から、式(1)によって算出されるエネルギーの減少量が最大となるクラスタの組を探す(310)。
First, the
次に、CPU152は、ステップ310の条件に該当するクラスタの組を発見したか否かを判定する(320)。
Next, the
該当するクラスタの組が発見されない場合、エネルギーを減少させる位置の交換が存在しない(言い換えると、現在のクラスタの配列のエネルギーが最も小さい)。この場合、各クラスタは最適に配置されていると考えられるため、処理を終了する。 If no such cluster set is found, there is no exchange of positions that reduces energy (in other words, the current cluster array has the lowest energy). In this case, since each cluster is considered to be optimally arranged, the processing ends.
一方、該当するクラスタの組が発見された場合、CPU152は、その位置を交換することによって配列を更新し(330)、次のクラスタの組を探すためにステップ310に戻る。最終的には、こうして得られた配列上の位置に従って、クラスタメンバの特徴量ベクトルをハードディスク154上へ保存する。
On the other hand, if a corresponding cluster set is found, the
次に、本システムにおける検索処理について説明する。 Next, search processing in this system will be described.
図4は、本発明の実施の形態の類似検索における、クライアント・サーバ間の情報の流れ、及び、各プログラム内での処理の概略を示す説明図である。 FIG. 4 is an explanatory diagram showing an outline of information flow between the client and the server and processing in each program in the similarity search according to the embodiment of this invention.
クライアント・プログラムは、クライアント計算機130のメモリ132に格納され、CPU131によって実行されるアプリケーションプログラムである。CPU131は、必要に応じて入力装置134及び出力装置135を制御しながら、図4に示すクライアント側の処理を実行する。一方、サーバ・プログラムは、サーバプロセス111を実現するプログラムであり、サーバ計算機110のメモリ153に格納され、CPU152によって実行される。
The client program is an application program that is stored in the memory 132 of the
また、以下の説明においてクライアント・プログラムからサーバ・プログラムに送信されるデータ、及び、サーバ・プログラムからクライアント・プログラムに返されるデータは、実際には、I/F133、通信基盤120及びI/F151を介して送受信される。
In the following description, data transmitted from the client program to the server program and data returned from the server program to the client program are actually transmitted to the I /
クライアント計算機のユーザは、入力装置134を使用して、検索要求を入力することができる。ユーザからの要求(401)を受け付けたクライアント・プログラムは、類似検索のキーとなるベクトルデータ(以下、キーデータ)を検索条件として含む検索要求を、サーバ・プログラムに送信する(402)。
A user of the client computer can input a search request using the
サーバ・プログラムは、まず、クラスタを対象とした類似検索を実行する(403)。以下、これをクラスタ間検索処理と呼ぶ。クラスタ間検索処理によって、キーデータと全クラスタの平均ベクトルとの間の距離計算が実行され、距離が小さい(すなわち、近い)順序にソートされた所定の個数Rc個のクラスタからなる配列が得られる。 The server program first executes a similarity search for the cluster (403). Hereinafter, this is referred to as an intercluster search process. The inter-cluster search process calculates the distance between the key data and the average vector of all clusters, and obtains an array consisting of a predetermined number of Rc clusters sorted in the order of small (ie, close) distance. .
次に、このソートされたクラスタ配列中のメンバを参照し、各クラスタメンバの特徴量ベクトルとキーデータとの間の距離計算を実行することによって、類似検索の結果を導出する(404)。具体的には、ソートされたRc個のクラスタの全メンバの特徴量ベクトルとキーデータとの間の距離を計算し、その距離が小さい順にクラスタメンバをソートする。以下、この処理をクラスタ内検索処理と呼ぶ。 Next, by referring to the members in the sorted cluster array and calculating the distance between the feature vector of each cluster member and the key data, the result of the similarity search is derived (404). Specifically, the distance between the feature vector of all members of the sorted Rc clusters and the key data is calculated, and the cluster members are sorted in ascending order of the distance. Hereinafter, this processing is referred to as intra-cluster search processing.
サーバ・プログラムは、類似検索の結果を、クライアント・プログラムに返す(405)。クライアント・プログラムに返される類似検索の結果は、少なくとも、キーデータとの距離が近いものから順に、所定の個数のクラスタメンバの識別子を含む。この際、サーバ・プログラムは、実際に参照されたクラスタ(すなわち、類似検索が終了したクラスタ)に関する情報を類似検索の結果に付加して返す。以下、前回までの類似検索の際に実際に参照されたクラスタに関する情報を「参照クラスタ情報」と記載する。検索結果及び参照クラスタ情報については、後で図5及び図6を参照して説明する。 The server program returns the result of the similarity search to the client program (405). The result of the similarity search returned to the client program includes identifiers of a predetermined number of cluster members in order from the one closest to the key data. At this time, the server program returns information about the cluster actually referred to (that is, the cluster for which the similar search has been completed) added to the result of the similar search. Hereinafter, the information about the cluster actually referred to in the previous similar search is referred to as “reference cluster information”. Search results and reference cluster information will be described later with reference to FIGS.
検索結果を受信したクライアント・プログラムは、検索結果の表示等の処理を実行する(406)。例えば、クライアント・プログラムは、受信した検索結果に含まれる識別子によって識別される画像を、出力装置135に表示してもよい。検索結果の表示の例については、後で図8を参照して説明する。
The client program that has received the search result executes processing such as display of the search result (406). For example, the client program may display an image identified by an identifier included in the received search result on the
その後、再度、ユーザから同一条件の検索要求を受け付けると(407)、クライアント・プログラムは、検索条件とともに、以前取得した参照クラスタ情報及び検索結果を、検索要求としてサーバ・プログラムに送信する(408)。 After that, when a search request with the same condition is received from the user again (407), the client program transmits the previously acquired reference cluster information and search result together with the search condition to the server program as a search request (408). .
検索要求を受信すると、サーバ・プログラムは、再びクラスタ間検索処理を実行する(409)。この際、サーバ・プログラムは、参照クラスタ情報を用いて、参照済みのクラスタに関する距離計算を省略することができる。ステップ409の検索の結果、前回検索されたクラスタ数RcにさらにRc個加えたRc×2個のクラスタが、各クラスタの平均ベクトルとキーデータとの間の距離が小さい順にソートされる。その結果、ソートされたRc×2個のクラスタからなる配列が得られる。
When the search request is received, the server program executes the inter-cluster search process again (409). At this time, the server program can omit the distance calculation regarding the referenced cluster by using the reference cluster information. As a result of the search in
次のクラスタ内検索処理(410)において、サーバ・プログラムは、前回参照された上位Rc個のクラスタのメンバの検索を省略し、Rc+1位からRc×2位までの順位にあるRc個のクラスタについて、キーデータを用いてクラスタメンバとの類似検索を実行し、その検索結果を前回の検索結果とマージする。具体的には、今回得られた検索結果と前回得られた検索結果を合わせて、それらの検索結果であるクラスタメンバをキーデータとの間の距離が近い順にソートする。 In the next intra-cluster search process (410), the server program skips the search for the members of the top Rc clusters that were referenced last time, and the Rc items in the rank from Rc + 1 to Rc × 2 For the cluster, the key data is used to perform a similarity search with cluster members, and the search result is merged with the previous search result. Specifically, the search results obtained this time and the search results obtained last time are combined, and the cluster members that are the search results are sorted in order of increasing distance from the key data.
サーバ・プログラムは、こうして更新された検索結果と、Rc×2個の参照クラスタに関する情報とを、クライアント・プログラムに返す(411)。 The server program returns the search result updated in this way and the information related to Rc × 2 reference clusters to the client program (411).
以下、同様の処理を繰り返すことによって、参照クラスタの個数が増えていく。これによって、クライアント・プログラムは、より高い精度の検索結果を、ユーザからの要求に応じて、逐次的に取得することができる。1回の検索要求に応じて新たに検索されるクラスタの数は一定(Rc個)である。そして、各クラスタのメンバ数には上限(M_max)がある。このため、1回の検索要求に応じた検索処理に要する時間は、一定の上限を超えることがない。各クラスタのメンバ数が概ね同じであれば、1回の検索要求に応じた検索処理に要する時間も概ね同じとなる。 Thereafter, the number of reference clusters increases by repeating similar processing. As a result, the client program can sequentially obtain search results with higher accuracy in response to a request from the user. The number of clusters newly searched in response to one search request is constant (Rc). There is an upper limit (M_max) for the number of members in each cluster. For this reason, the time required for the search processing corresponding to one search request does not exceed a certain upper limit. If the number of members of each cluster is substantially the same, the time required for the search processing corresponding to one search request is also approximately the same.
図5は、本発明の実施の形態の参照クラスタ情報の説明図である。 FIG. 5 is an explanatory diagram of the reference cluster information according to the embodiment of this invention.
具体的には、図5は、例えば図4のステップ405、408及び411において、クライアント・プログラムとサーバ・プログラムの間で送受信される参照クラスタ情報の説明図である。 Specifically, FIG. 5 is an explanatory diagram of reference cluster information transmitted / received between the client program and the server program in, for example, steps 405, 408, and 411 of FIG.
各クラスタは、各クラスタを識別するクラスタIDによって管理されている。参照クラスタ情報は、タイムスタンプ510、既に検索のために参照されたクラスタを識別するクラスタIDの列、及び、各クラスタの平均ベクトルとキーデータとの間の距離を示す情報を含む。タイムスタンプ510には、その参照クラスタ情報が生成された時刻が記録される。
Each cluster is managed by a cluster ID that identifies each cluster. The reference cluster information includes a
なお、図5において、各クラスタIDと距離の組は、距離の値が昇順となるように整列される。すなわち、距離の値が最も小さいクラスタIDが参照クラスタ情報の先頭となる。 In FIG. 5, the pairs of cluster IDs and distances are aligned so that the distance values are in ascending order. That is, the cluster ID having the smallest distance value is the head of the reference cluster information.
図6は、本発明の実施の形態の検索結果の説明図である。 FIG. 6 is an explanatory diagram of search results according to the embodiment of this invention.
具体的には、図6は、例えば図4のステップ405、408及び411において、クライアント・プログラムとサーバ・プログラムの間で送受信される検索結果の説明図である。 Specifically, FIG. 6 is an explanatory diagram of search results transmitted and received between the client program and the server program in, for example, steps 405, 408, and 411 of FIG.
検索結果は、クラスタ内検索処理の結果として得られたクラスタメンバを識別するデータIDの列、及び、各クラスタメンバの特徴量ベクトルとキーデータとの間の距離を示す情報を含む。 The search result includes a data ID column for identifying the cluster member obtained as a result of the intra-cluster search process, and information indicating the distance between the feature quantity vector of each cluster member and the key data.
なお、図5と同様、図6のデータIDと距離の組は、距離の値が昇順となるように整列される。 As in FIG. 5, the pairs of data IDs and distances in FIG. 6 are aligned so that the distance values are in ascending order.
図7は、本発明の実施の形態のサーバ・プログラムにおいて実行されるクラスタ内検索処理を示すフローチャートである。 FIG. 7 is a flowchart showing intra-cluster search processing executed in the server program according to the embodiment of this invention.
図7の処理は、図4のステップ404及び410において実行される。従って、図7の処理は、サーバ・プログラムの一部として、サーバ計算機110のCPU152によって実行される。
The process of FIG. 7 is executed in
最初に、処理の概要を説明する。 First, an outline of the process will be described.
ステップ710の判定は、クラスタ間検索によって得られたクラスタ配列の先頭から、参照済みのクラスタをスキップするための判定である。クラスタのメンバ及びクラスタの順序に変更がない場合、クラスタ間検索の結果は不変である。この場合、参照済みクラスタを対象としたクラスタ内検索処理の結果は、既に取得した結果と同じになるはずである。従って、この場合、参照済みクラスタを対象としたクラスタ内検索処理を省略することができる。
The determination in
ただし、データの更新処理によって、クラスタ全体の状態が変わった場合、クラスタ間検索の結果は、変わってしまう可能性がある。例えば、クラスタに新たなメンバが追加された場合(図2参照)、さらに、クラスタの順序が変更された場合(図3参照)、それらのクラスタについては、クラスタ内検索処理を実行する必要がある。クラスタ内検索処理を省略できるか否かの判定が、ステップ720において実行される。
However, if the status of the entire cluster changes due to data update processing, the inter-cluster search result may change. For example, when a new member is added to the cluster (see FIG. 2), and when the order of the clusters is changed (see FIG. 3), it is necessary to execute a search process within the cluster for those clusters. . A determination is made in
ステップ730以降のループにおいて、参照済みクラスタを除く所定のRc個のクラスタのメンバを対象とする類似検索が実行される。類似検索のために最後に参照された後に状態が変わってしまったクラスタがある場合、そのクラスタは参照済みクラスタに含まれない。
In a loop after
次に、処理の詳細を説明する。 Next, details of the processing will be described.
以下の説明において、配列Aは、参照クラスタ情報によって示されるクラスタの配列に相当する。配列Bは、クラスタ間検索処理の結果として得られた配列に相当する。例えば、図7の処理が図4のステップ410において実行される場合、ステップ408においてクライアント・プログラムから送信された参照クラスタ情報(1)が示すクラスタの配列が配列Aに相当し、ステップ409のクラスタ間検索処理の結果が配列Bに相当する。また、パラメータi及びjは、配列A又はBに含まれる要素を示すために使用される。
In the following description, the array A corresponds to the array of clusters indicated by the reference cluster information. The array B corresponds to the array obtained as a result of the intercluster search process. For example, when the process of FIG. 7 is executed in
最初に、サーバ・プログラムは、パラメータiの値を「0」に初期化する(701)。 First, the server program initializes the value of the parameter i to “0” (701).
次に、サーバ・プログラムは、パラメータiの値が配列Aの要素数以下であるか否かを判定する(710)。 Next, the server program determines whether or not the value of the parameter i is less than or equal to the number of elements in the array A (710).
ステップ710において、パラメータiの値が配列Aの要素数以下であると判定された場合、次に、サーバ・プログラムは、クラスタA[i]とクラスタB[i]が同一であるか否かを判定する(720)。
If it is determined in
クラスタはクラスタIDによって管理される。従って、A[i]とB[i]のクラスタIDが異なる場合、これらのクラスタは同一でないと判定される。さらに、A[i]とB[i]のクラスタIDが同一であっても、状態が異なる場合がある。したがって、ステップ720の判定のために、タイムスタンプ510が参照される。A[i]とB[i]のクラスタIDが同一でも、A[i]に関するタイムスタンプ510が示す時刻以降にB[i]が更新されていた場合、これらのクラスタは異なるクラスタであると判定される。
A cluster is managed by a cluster ID. Therefore, when the cluster IDs of A [i] and B [i] are different, it is determined that these clusters are not the same. Furthermore, even if the cluster IDs of A [i] and B [i] are the same, the states may be different. Therefore, the
ステップ720において、A[i]とB[i]が異なるクラスタであると判定された場合、クラスタB[i]の状態は、最後に参照された後で更新されている。この場合、クラスタB[i]及びその下位のクラスタを対象とするクラスタ内検索処理を実行するため、サーバ・プログラムはステップ722に進む。
If it is determined in
一方、ステップ720において、A[i]とB[i]が同一のクラスタであると判定された場合、参照済みクラスタであるB[i]を対象とするクラスタ内検索処理は、省略することができる。この場合、次の要素について判定するため、サーバ・プログラムは、パラメータiの値を1加算して(721)、ステップ710に戻る。
On the other hand, if it is determined in
ステップ710において、パラメータiの値が配列Aの要素数を超えると判定された場合、クラスタB[i]及びそれより下位のクラスタは、まだクラスタ内検索処理の対象になったことがない。この場合、クラスタB[i]及びその下位のクラスタを対象とするクラスタ内検索処理を実行するため、サーバ・プログラムはステップ722に進む。
If it is determined in
新たに参照すべきクラスタの開始位置(すなわち、ステップ722の時点のB[i])が確定したら、サーバ・プログラムは、そのクラスタから始まるRc個のクラスタに関してクラスタ内検索処理を実行する。 When the start position of a cluster to be newly referred to (that is, B [i] at the time of step 722) is determined, the server program executes an intra-cluster search process for Rc clusters starting from the cluster.
具体的には、サーバ・プログラムは、ステップ722において、パラメータjの値を「1」に初期化する。
Specifically, in
次に、サーバ・プログラムは、パラメータjの値が、所定の参照クラスタ数Rc以下であるか否かを判定する(730)。 Next, the server program determines whether or not the value of the parameter j is equal to or less than a predetermined reference cluster number Rc (730).
ステップ730において、パラメータjの値がRc以下であると判定された場合、まだRc個のクラスタを対象とするクラスタ内検索処理が終了していない。この場合、サーバ・プログラムは、クラスタB[i+j]を対象とするクラスタ内検索処理を実行する(740)。具体的には、サーバ・プログラムは、クラスタB[i+j]のメンバとキーデータとの間の距離を計算する。
If it is determined in
次に、サーバ・プログラムは、既に取得した検索結果に、クラスタB[i+j]から得られた結果をマージすることによって、検索結果を更新する(750)。ここで、既に取得した検索結果とは、クライアント・プログラムから送信された検索要求に含まれる検索結果(例えば、図4のステップ408に示す検索結果(1))である。具体的には、サーバ・プログラムは、既に取得した検索結果であるクラスタメンバに、ステップ740において検索されたクラスタのメンバを追加し、それらのクラスタメンバを、検索キーデータからの距離が小さい順にソートする。
Next, the server program updates the search result by merging the result obtained from the cluster B [i + j] with the already obtained search result (750). Here, the already acquired search result is a search result included in the search request transmitted from the client program (for example, search result (1) shown in
次に、サーバ・プログラムは、次のクラスタについて処理するため、パラメータjの値を1加算して(751)、ステップ730に戻る。 Next, in order to process the next cluster, the server program adds 1 to the value of the parameter j (751) and returns to step 730.
ステップ730において、パラメータjの値がRcを超えると判定された場合、Rc個のクラスタを対象とするクラスタ内検索処理が終了した。この場合、サーバ・プログラムは、処理を終了する。
If it is determined in
次に、本システムにおけるユーザに対する検索結果の表示について説明する。 Next, display of search results for the user in this system will be described.
図8は、本発明の実施の形態において表示される検索結果表示画面の状態遷移の例の説明図である。 FIG. 8 is an explanatory diagram of an example of the state transition of the search result display screen displayed in the embodiment of the present invention.
図1から図7を参照して説明したように、本実施の形態のサーバ・プログラムは、クライアント・プログラムから送信されたベクトルデータをキーとして、多数のベクトルデータを対象とする類似検索を実行する。そして、サーバ・プログラムは、検索結果をクライアント・プログラムに返す。クライアント・プログラムは、検索結果であるベクトルデータ自体を表示してもよいが、ベクトルデータに関連付けられたデータを表示してもよい。 As described with reference to FIGS. 1 to 7, the server program according to the present embodiment executes a similarity search for a large number of vector data using the vector data transmitted from the client program as a key. . Then, the server program returns the search result to the client program. The client program may display the vector data itself as a search result, but may display data associated with the vector data.
本実施の形態において、検索対象のベクトルデータは、画像の特徴量ベクトルである。この場合、クライアント・プログラムは、検索によって得られた特徴量ベクトル自体を表示するのではなく、その特徴量ベクトルに対応する画像を検索結果として表示する。特徴量ベクトルに対応する画像は、画像サーバ140に格納されている。
In the present embodiment, the vector data to be searched is an image feature vector. In this case, the client program does not display the feature vector obtained by the search but displays an image corresponding to the feature vector as a search result. An image corresponding to the feature vector is stored in the
図6に示すように、サーバ・プログラムからクライアント・プログラムに送信される検索結果がデータIDを含む場合、クライアント・プログラムは、受信したデータIDによって識別される画像を画像サーバ140から取得して、検索結果として出力装置135に表示する。
As shown in FIG. 6, when the search result transmitted from the server program to the client program includes a data ID, the client program acquires an image identified by the received data ID from the
図8には、検索によって得られた特徴量ベクトルに対応する画像を、検索結果として表示する画面の例を示す。なお、図8の画面は、クライアント計算機の出力装置135に表示される。
FIG. 8 shows an example of a screen that displays an image corresponding to the feature vector obtained by the search as a search result. The screen in FIG. 8 is displayed on the
図8の例では、検索結果の最大数を100件とし、1画面上に20件ずつ画像を表示する画面構成となっている。画面上の表示は、20件だけであるが、クライアント・プログラムは、サーバ・プログラムに対して、特徴量ベクトルとキーデータとの間の類似性が高い上位100件の検索結果を常に要求するよう設定されている。 In the example of FIG. 8, the maximum number of search results is 100, and the screen configuration displays 20 images on one screen. Although only 20 items are displayed on the screen, the client program always requests the server program for the top 100 search results having high similarity between the feature vector and the key data. Is set.
図8は、類似検索結果表示画面810、820、830及び840が順次表示される例を示す。各画面810等は、検索結果811及びボタン812等を含む。検索結果811は、検索結果である画像、又は、その画像を縮小したサムネイル画像である。
FIG. 8 shows an example in which similar search result display screens 810, 820, 830, and 840 are sequentially displayed. Each
検索結果表示の初期画面810には、検索結果100件中の1位から20位までが、特徴量ベクトルとキーデータとの間の類似性が高い順序に配列され、表示されている(811)。初期画面810の表示は、図4のステップ406に相当する。従って、このとき表示される検索結果は、図4のステップ405における検索結果(1)に相当する。
On the
初期画面810には、さらに、ボタン812及び813が表示される。ボタン812は、検索結果の最初の20件(すなわち、1位から20位までの検索結果)を表示する要求を受け付けるボタンである。一方、ボタン813は、次の20件(すなわち、21位から40位までの検索結果)を表示する要求を受け付けるボタンである。
On the
初期画面には、最初の20件が表示されている。このため、ユーザは、ボタン812を操作することができない。この場合、ボタン812は、ボタン813と異なる態様(例えば、異なる色彩又は形状)で表示される。
The initial 20 items are displayed on the initial screen. For this reason, the user cannot operate the
ここで、ユーザがボタン813を操作すると、再度、クライアント・プログラムが検索要求をサーバに送信する。入力装置がマウスを含む場合、ボタン813の操作は、マウスクリックであってもよい。ユーザによるボタン813の操作が図4のステップ407に相当し、その結果送信される検索要求がステップ408に相当する。サーバ・プログラムは、受信した検索要求に従って、類似検索処理を実行し、その結果をクライアント・プログラムに返す(図4のステップ409、410及び411)。
Here, when the user operates the
その結果、クライアント・プログラムは、更新された100件の検索結果を取得する。検索結果取得後、画面810は画面820に遷移する。本システムでは、上位の検索結果は相対的に安定しており、通常の場合、画面820には、更新された検索結果中の21位から40位までの画像が、類似性が高い順序で表示される。
As a result, the client program acquires 100 updated search results. After obtaining the search results, the
ただし、検索結果の更新の結果、上位20位以内に変動が生じる場合も当然ある。この場合、画面820には、更新された検索結果中の上位40位以内の画像で、かつ、まだ画面810に表示されていない画像が、類似性が高い順に20件表示される。例えば、更新された検索結果中の4位と8位の画像が、以前の検索結果中の20位以内に含まれていなかった場合、画面820に表示される検索結果は、先頭に、4位、次に8位の画像が表示され、その後に、21位から38位までの画像が表示される。この場合、39位と40位の画像は画面820に表示されない。
However, as a result of updating the search result, there are naturally cases where fluctuation occurs within the top 20 positions. In this case, on the
画面820には、ボタン821、822及び823が表示される。ボタン821及び822の機能は、それぞれ、画面810のボタン812及び813と同等である。ボタン823は、画面820に表示されている検索結果の次の20件(すなわち、41位から60位までの検索結果)を表示する要求を受け付けるボタンである。従って、ユーザがボタン821を操作すると、上位20位までの検索結果表示に戻る。ユーザがボタン823を操作すると、41位から60位までの検索結果が表示される。ユーザは、ボタン822を操作することができない。
On the
例えば、ユーザがボタン821をクリックすると、画面820は画面830に遷移する。この際には、検索結果は更新されない。画面830に表示されている検索結果の画像は、画像810に表示されているものと全く同一である。しかし、画面830に表示されているボタンの数は、画面820と同じである。
For example, when the user clicks the
具体的には、画面830には、ボタン831、832及び833が表示される。これらのボタンの機能は、それぞれ、画面820のボタン821、822及び823と同等である。ただし、画面810のボタン812と同様、ユーザは、ボタン831を操作することができない。
Specifically,
その後、ユーザが、まだ表示されていない下位の検索結果の表示を順次要求すると、上記と同様の手順によって検索結果が更新され、ボタンの数が増加する。最終的に81位から100位までの検索結果を表示する画面840に至るまで、上記の処理が実行される。画面840には、81位から100位までの検索結果の画像と、五つのボタン841から845が表示される。ボタン841から843の機能は、それぞれ、画面820のボタン821から823と同等である。ボタン844は、61位から80位までの検索結果の表示を要求するためのボタンである。ボタン845は、81位から100位までの検索結果の表示を要求するためのボタンである。
Thereafter, when the user sequentially requests display of lower-order search results that are not yet displayed, the search results are updated by the same procedure as described above, and the number of buttons increases. The above processing is executed until the
仮に、画面810において、はじめから、41位以降の検索結果の表示を要求するボタンが表示される場合、例えば、41位から60位までの検索結果の表示が要求される場合がある。この要求がなされた時点で、21位から40位までの検索結果もまだ表示されていない。このため、サーバ・プログラムは、21位から40位までの検索結果を表示するためのRc個のクラスタを対象とするクラスタ内検索処理と、41位から60位までの検索結果を表示するための次のRc個のクラスタを対象とするクラスタ内検索処理とを実行する必要がある。言い換えると、サーバ・プログラムは、1回の検索要求に応じて、Rc×2個のクラスタを対象とするクラスタ内検索処理を実行する必要がある。その結果、Rc個のクラスタを対象とするクラスタ内検索処理が実行される場合と比較して、1回の検索要求に対する応答時間が長くなる。
If, on the
一方、図8に示すユーザインタフェースによれば、上位の検索結果が表示された場合のみ、その表示された検索結果の下位に連続する検索結果の表示要求を受け付けることが許可される。例えば、最初に上位20位までの20件の検索結果を表示することが要求されたとき、その要求に応じて表示される画面810には、1位から20位までの検索結果が表示される。しかし、この画面810には、次の20件(すなわち21位から40位まで)の表示を要求するためのボタン813が表示されるが、41位以降の検索結果の表示を要求するボタンは表示されない。ボタン813が操作され、21位から40位までの検索結果が一度表示されると、その後、41位から60位までの検索結果を表示するボタン823、833又は843が表示される(画面820、830又は840)。このため、サーバ・プログラムは、Rc個を超える数のクラスタを対象とする検索要求を受けることがない。このため、サーバ・プログラムは、1回の検索要求に対して、概ね一定の応答時間内に検索結果を返すことができる。
On the other hand, according to the user interface shown in FIG. 8, only when a higher-order search result is displayed, it is permitted to accept a display request for a search result continuous below the displayed search result. For example, when it is requested to display 20 search results from the top 20 first, the search results from 1st to 20th are displayed on the
上記画面構成の特徴は、検索結果の表示範囲指定に制約を設け、ある範囲の表示が、その一つ上位の範囲が表示された後に、はじめて可能になるようにした点である。この制約は、上位から順番に見ていく、という、通常に行われるユーザ操作を妨げるものではなく、そのような操作を自然に促すものである。特に、類似性に限らず何かしらの基準でソートされたデータを見る場合、上位から順番に内容を確認していくのが、操作の流れとしては最も自然である。従って、操作性の点でユーザに対して不満を与えることはない。また、不用な機能が除かれている分、より分かり易い画面となっている。 A feature of the above screen configuration is that a restriction is imposed on the display range designation of the search result, and a certain range can be displayed only after the upper range is displayed. This restriction does not prevent a user operation that is normally performed to look in order from the top, but naturally encourages such an operation. In particular, when viewing data sorted according to some criteria, not limited to similarity, it is the most natural operation flow to check the contents in order from the top. Therefore, there is no dissatisfaction with the user in terms of operability. In addition, since unnecessary functions are removed, the screen is easier to understand.
図8に示す画面による検索結果表示は、類似検索結果の順位を正確に反映するものではない。また、最終的な検索結果の上位100件に含まれているにも関わらず、検索結果として表示されない画像も、稀には存在する。まず、順位に関して言えば、類似検索の場合、目的は類似したデータを閲覧することであり、正確な順位は、ユーザにとって特に意味のある情報とは言えない。従って、ユーザにとって特に不都合は生じない。検索結果の内容に関しては、先述したように、本システムでは、上位の検索結果は相対的に安定しており、表示から外れるデータは、検索結果中で類似性が低い方のデータとなる。類似検索では、類似性が高いデータに対してユーザが関心を持っている、と想定されるので、これも、ユーザにとっての不都合とはならない。 The search result display on the screen shown in FIG. 8 does not accurately reflect the rank of similar search results. In addition, there are rarely images that are not displayed as search results even though they are included in the top 100 final search results. First, regarding the ranking, in the case of the similar search, the purpose is to browse similar data, and the accurate ranking is not particularly meaningful information for the user. Therefore, there is no particular inconvenience for the user. Regarding the contents of the search results, as described above, in this system, the higher-order search results are relatively stable, and the data out of the display is the data with the lower similarity in the search results. In the similarity search, since it is assumed that the user is interested in data having high similarity, this is also not inconvenient for the user.
一方、図8のような画面構成と異なり、大量の検索結果、例えば、上位1000件を表示するようなユーザインタフェースも存在する。このような大量のデータを表示する方法に関しては、特開2000−29885号公報及び特開2004−62356号公報に記載されている。大量のデータを表示する場合、画像データの転送に時間を要するため、一度に全画像が表示されることはない。この場合、検索結果の更新は、所定の時間間隔で自動的に実行される。検索結果が更新された時点で、クライアント・プログラムが表示するべき画像も更新される。更新によって検索結果から外れたデータは、画面上からも除去される。この自動更新は、使用者が、別の検索条件を指定するまで繰り返される。この方式を採用した場合、画面上には、常に最新の検索結果が表示されることになる。また、自動更新による表示画像の変動は、更新回数に応じて減少し、アプリケーション側が新たに取得する必要がある画像の数も減少する。従って、不必要に通信負荷等が生じることはない。 On the other hand, unlike the screen configuration shown in FIG. 8, there is a user interface that displays a large amount of search results, for example, the top 1000 items. A method for displaying such a large amount of data is described in Japanese Patent Application Laid-Open Nos. 2000-29885 and 2004-62356. When displaying a large amount of data, since it takes time to transfer the image data, all images are not displayed at once. In this case, the search result is automatically updated at predetermined time intervals. When the search result is updated, the image to be displayed by the client program is also updated. Data deviating from the search result due to the update is also removed from the screen. This automatic update is repeated until the user specifies another search condition. When this method is adopted, the latest search result is always displayed on the screen. In addition, the fluctuation of the display image due to the automatic update decreases according to the number of updates, and the number of images that the application side needs to newly acquire also decreases. Therefore, an unnecessary communication load or the like does not occur.
以上の本発明の実施の形態は、検索対象のベクトルデータが画像の特徴量ベクトルである場合を例として説明したが、本発明は、いかなる種類のベクトルデータの検索に対しても適用することができる。 In the above embodiment of the present invention, the case where the vector data to be searched is the feature vector of the image has been described as an example. However, the present invention can be applied to search for any kind of vector data. it can.
以上、本発明の実施の形態によれば、検索対象のベクトルデータが予めクラスタに分類され、各クラスタの代表値が定められる。任意のベクトルデータをキーとする検索要求が発行された場合、キーデータとの距離が近い代表値によって代表される所定の数のクラスタのみを対象として、類似検索が実行される。このため、高速な類似検索を実現することができる。各クラスタが、相互に類似するベクトルデータによって構成される場合、1回目の検索にある程度の精度を期待することができる。1回目の検索要求に応じた検索によって目的のデータを取得できなかった場合、前回と同一のベクトルデータをキーとする検索要求を繰り返し発行することによって、類似検索の対象クラスタの範囲が順次拡大される。その結果、検索要求を繰り返すごとに、検索精度が向上する。ユーザは、必要な精度の検索結果を得るまで検索要求を繰り返し発行することができる。検索要求を繰り返す場合、既に検索が実行されたクラスタを対象とする類似検索が省略される。このため、類似検索の対象の範囲を拡大しても、1回の検索要求に対応して実際に類似検索が実行されるクラスタの数を一定とすることができる。その結果、検索要求に対する応答時間が一定の値以下に抑えられる。 As described above, according to the embodiment of the present invention, the vector data to be searched is classified into clusters in advance, and the representative value of each cluster is determined. When a search request using arbitrary vector data as a key is issued, a similarity search is executed only for a predetermined number of clusters represented by representative values that are close to the key data. For this reason, a high-speed similarity search can be realized. When each cluster is composed of mutually similar vector data, a certain degree of accuracy can be expected for the first search. If the target data could not be acquired by the search according to the first search request, the range of target clusters for the similar search is sequentially expanded by repeatedly issuing a search request using the same vector data as the previous key. The As a result, the search accuracy improves each time the search request is repeated. The user can issue a search request repeatedly until a search result with a required accuracy is obtained. When the search request is repeated, a similar search for a cluster that has already been searched is omitted. For this reason, even if the range of the target of the similar search is expanded, the number of clusters in which the similar search is actually executed in response to one search request can be made constant. As a result, the response time to the search request is suppressed to a certain value or less.
110 サーバ計算機。
111 検索サーバプロセス。
112 クラスタ管理情報
113 クラスタ情報
114 クラスタメンバの特徴量データ
115 記録されたクラスタ管理情報
120 通信基盤
130 クライアント計算機
131、152 CPU
132、153 メモリ
133、151 インターフェース
134 入力装置
135 出力装置
154 ハードディスク
210 近接クラスタの取得
220 最近接クラスタへのデータ追加
230 近接クラスタ要素数に関するループの判定部分
231 クラスタメンバ数のチェック
232 クラスタの分割
233 クラスタの追加
240 k-means法の反復回数のチェック
250 k-means法の実行
310 配置交換する組の探索
320 組が発見できたか否かの判定
330 クラスタ配列の更新
401 ユーザ入力
402 クライアントからサーバへの送信情報(初回)
403 クラスタ間検索処理
404 クラスタ内検索処理
405 サーバからクライアントへの返信情報(初回)
406 検索結果表示
407 ユーザ入力
408 クライアントからサーバへの送信情報(2回目)
409 クラスタ間検索処理
410 クラスタ内検索処理
411 サーバからクライアントへの返信情報(2回目)
510 タイムスタンプ
710 参照済みクラスタ数の判定
720 クラスタ同一性の判定
730 新規参照するクラスタ数の判定
740 クラスタ内での類似検索
750 検索結果の更新
810 類似画像検索結果表示画面/1位から20位
811 検索結果
812、821、831、841 1位から20位を表示するためのボタン
813、822、832、842 21位から40位を表示するためのボタン
820 類似画像検索結果表示画面/21位から40位
823、833、843 41位から60位を表示するためのボタン
830 類似画像検索結果再表示画面/1位から20位
831 表示する順位を切り替えるボタンの列
821 1位から20位を表示するためのボタン
840 類似画像検索結果表示画面/81位から100位
841 表示する順位を切り替えるボタンの列
844 61位から80位を表示するためのボタン
845 81位から100位を表示するためのボタン
110 Server computer.
111 Search server process.
112
132, 153
403
406
409
510
Claims (20)
前記記憶装置には、各々が複数のクラスタのいずれかに含まれる複数の第1ベクトルデータと、前記複数の第1ベクトルデータの前記クラスタごとの代表値と、が格納され、
前記プロセッサは、
第2ベクトルデータを含む検索要求を受信すると、受信した前記第2ベクトルデータをキーとして前記代表値を検索し、
前記第2ベクトルデータとの距離が近い前記代表値を含む前記クラスタから順に、第1の所定の数の前記クラスタに含まれる複数の第1ベクトルデータを、前記第2ベクトルデータをキーとして検索し、
前記検索された第1ベクトルデータのうち、前記第2ベクトルデータとの距離が近い第2の所定の数の前記第1ベクトルデータを、前記インターフェースを介して出力することを特徴とする検索サーバ。 In a search server comprising an interface for inputting and outputting data, a processor connected to the interface, and one or more storage devices connected to the processor,
The storage device stores a plurality of first vector data each included in one of a plurality of clusters, and representative values for the clusters of the plurality of first vector data,
The processor is
When the search request including the second vector data is received, the representative value is searched using the received second vector data as a key,
A plurality of first vector data included in a first predetermined number of the clusters are searched in order from the cluster including the representative value that is close to the second vector data using the second vector data as a key. ,
A search server characterized in that a second predetermined number of the first vector data having a short distance to the second vector data among the searched first vector data is output via the interface.
前記第2ベクトルデータと、前記第2ベクトルデータをキーとした前記第1ベクトルデータの検索が終了した前記クラスタを示す情報と、を含む検索要求を受信すると、前記受信した情報によって示されるクラスタ以外の前記クラスタの前記代表値を、前記第2ベクトルデータをキーとして検索し、
前記受信した情報によって示されるクラスタ以外の前記クラスタのうち、前記第2ベクトルデータとの距離が近い前記代表値を含む前記クラスタから順に、前記第1の所定の数の前記クラスタに含まれる複数の前記第1ベクトルデータを、前記第2ベクトルデータをキーとして検索することを特徴とする請求項1に記載の検索サーバ。 The processor is
When a search request including the second vector data and information indicating the cluster for which the search for the first vector data has been completed using the second vector data as a key is received, other than the cluster indicated by the received information The representative value of the cluster of the second vector data as a key, and
Among the clusters other than the cluster indicated by the received information, a plurality of the clusters included in the first predetermined number of the clusters in order from the cluster including the representative value that is close to the second vector data. The search server according to claim 1, wherein the first vector data is searched using the second vector data as a key.
前記第2ベクトルデータと、前記第2ベクトルデータをキーとした前記第1ベクトルデータの検索が終了した前記クラスタを示す情報と、を含む検索要求を受信すると、前記受信した情報によって示されるクラスタ以外の前記クラスタの前記代表値を、前記第2ベクトルデータをキーとして検索し、
前記受信した情報によって示されるクラスタ以外の前記クラスタのうち、前記第2ベクトルデータとの距離が近い前記代表値を含む前記クラスタから順に、前記第1の所定の数の前記クラスタに含まれる複数の前記第1ベクトルデータを、前記第2ベクトルデータをキーとして検索することを特徴とする請求項4に記載の検索サーバ。 The processor is
When a search request including the second vector data and information indicating the cluster for which the search for the first vector data has been completed using the second vector data as a key is received, other than the cluster indicated by the received information The representative value of the cluster of the second vector data as a key, and
Among the clusters other than the cluster indicated by the received information, a plurality of the clusters included in the first predetermined number of the clusters in order from the cluster including the representative value that is close to the second vector data. The search server according to claim 4, wherein the first vector data is searched using the second vector data as a key.
前記第1記憶装置は、ディスク記憶装置であり、
前記第2記憶装置は、ランダムアクセス可能な記憶装置であることを特徴とする請求項1に記載の検索サーバ。 The one or more storage devices include a first storage device that stores the first vector data, and a second storage device that stores the representative value,
The first storage device is a disk storage device;
The search server according to claim 1, wherein the second storage device is a randomly accessible storage device.
前記検索サーバは、前記ネットワークに接続されるインターフェースと、前記インターフェースに接続されるプロセッサと、前記プロセッサに接続される一つ以上の記憶装置と、を備え、
前記記憶装置には、各々が複数のクラスタのいずれかに含まれる複数の第1ベクトルデータと、前記複数の第1ベクトルデータの前記クラスタごとの代表値と、が格納され、
前記端末計算機は、第2ベクトルデータの入力を受け付けると、前記受け付けた第2ベクトルデータを含む検索要求を、前記ネットワークを介して前記検索サーバに送信し、
前記プロセッサは、
前記インターフェースを介して前記第2ベクトルデータを含む検索要求を受信すると、受信した前記第2ベクトルデータをキーとして前記代表値を検索し、
前記第2ベクトルデータとの距離が近い前記代表値を含む前記クラスタから順に、第1の所定の数の前記クラスタに含まれる複数の第1ベクトルデータを、前記第2ベクトルデータをキーとして検索し、
前記検索された第1ベクトルデータのうち、前記第2ベクトルデータとの距離が近い第2の所定の数の前記第1ベクトルデータを、前記インターフェースを介して出力し、
前記端末装置は、前記検索サーバから前記第1ベクトルデータを受信すると、前記受信した第1ベクトルデータ又は前記受信した第1ベクトルデータに関連付けられたデータを検索結果として表示することを特徴とする検索システム。 In a search system comprising a terminal computer and a search server connected via a network,
The search server includes an interface connected to the network, a processor connected to the interface, and one or more storage devices connected to the processor,
The storage device stores a plurality of first vector data each included in one of a plurality of clusters, and representative values for the clusters of the plurality of first vector data,
When the terminal computer receives the input of the second vector data, the terminal computer transmits a search request including the received second vector data to the search server via the network,
The processor is
When a search request including the second vector data is received via the interface, the representative value is searched using the received second vector data as a key,
A plurality of first vector data included in a first predetermined number of the clusters are searched in order from the cluster including the representative value that is close to the second vector data using the second vector data as a key. ,
Out of the searched first vector data, a second predetermined number of the first vector data having a short distance to the second vector data is output via the interface;
The terminal device, when receiving the first vector data from the search server, displays the received first vector data or data associated with the received first vector data as a search result. system.
前記第2ベクトルデータと、前記第2ベクトルデータをキーとした前記第1ベクトルデータの検索が終了した前記クラスタを示す情報と、を含む検索要求を受信すると、前記受信した情報によって示されるクラスタ以外の前記クラスタの前記代表値を、前記第2ベクトルデータをキーとして検索し、
前記受信した情報によって示されるクラスタ以外の前記クラスタのうち、前記第2ベクトルデータとの距離が近い前記代表値を含む前記クラスタから順に、前記第1の所定の数の前記クラスタに含まれる複数の前記第1ベクトルデータを、前記第2ベクトルデータをキーとして検索することを特徴とする請求項7に記載の検索システム。 The processor is
When a search request including the second vector data and information indicating the cluster for which the search for the first vector data has been completed using the second vector data as a key is received, other than the cluster indicated by the received information The representative value of the cluster of the second vector data as a key, and
Among the clusters other than the cluster indicated by the received information, a plurality of the clusters included in the first predetermined number of the clusters in order from the cluster including the representative value that is close to the second vector data. The search system according to claim 7, wherein the first vector data is searched using the second vector data as a key.
前記第2ベクトルデータと、前記第2ベクトルデータをキーとした前記第1ベクトルデータの検索が終了した前記クラスタを示す情報と、を含む検索要求を受信すると、前記受信した情報によって示されるクラスタ以外の前記クラスタの前記代表値を、前記第2ベクトルデータをキーとして検索し、
前記受信した情報によって示されるクラスタ以外の前記クラスタのうち、前記第2ベクトルデータとの距離が近い前記代表値を含む前記クラスタから順に、前記第1の所定の数の前記クラスタに含まれる複数の前記第1ベクトルデータを、前記第2ベクトルデータをキーとして検索することを特徴とする請求項10に記載の検索システム。 The processor is
When a search request including the second vector data and information indicating the cluster for which the search for the first vector data has been completed using the second vector data as a key is received, other than the cluster indicated by the received information The representative value of the cluster of the second vector data as a key, and
Among the clusters other than the cluster indicated by the received information, a plurality of the clusters included in the first predetermined number of the clusters in order from the cluster including the representative value that is close to the second vector data. The search system according to claim 10, wherein the first vector data is searched using the second vector data as a key.
前記第1記憶装置は、ディスク記憶装置であり、
前記第2記憶装置は、ランダムアクセス可能な記憶装置であることを特徴とする請求項7に記載の検索システム。 The one or more storage devices include a first storage device that stores the first vector data, and a second storage device that stores the representative value,
The first storage device is a disk storage device;
The search system according to claim 7, wherein the second storage device is a randomly accessible storage device.
前記第2の所定の数の検索結果の表示要求を受け付けると、前記検索要求を前記検索サーバに送信し、
前記第2の所定の数の検索結果を、前記第2ベクトルデータと前記第1ベクトルデータとの間の距離が近い順に表示し、
前記第2の所定の数の検索結果を表示した場合のみ、前記表示された検索結果の下位に連続する前記第2の所定の検索結果の表示要求の受け付けを許可されることを特徴とする請求項13に記載の検索システム。 The terminal device
Upon receiving a display request for the second predetermined number of search results, the search request is transmitted to the search server;
Displaying the second predetermined number of search results in ascending order of distance between the second vector data and the first vector data;
Only when the second predetermined number of search results are displayed, reception of a display request for the second predetermined search result that is consecutively lower than the displayed search results is permitted. Item 14. The search system according to Item 13.
前記記憶装置には、各々が複数のクラスタのいずれかに含まれる複数の第1ベクトルデータと、前記複数の第1ベクトルデータの前記クラスタごとの代表値と、が格納され、
前記方法は、
第2ベクトルデータを含む検索要求を受信すると、受信した前記第2ベクトルデータをキーとして前記代表値を検索し、
前記第2ベクトルデータとの距離が近い前記代表値を含む前記クラスタから順に、第1の所定の数の前記クラスタに含まれる複数の第1ベクトルデータを、前記第2ベクトルデータをキーとして検索し、
前記検索された第1ベクトルデータのうち、前記第2ベクトルデータとの距離が近い第2の所定の数の前記第1ベクトルデータを、前記インターフェースを介して出力することを特徴とする方法。 A computer comprising: an interface for inputting / outputting data; a processor connected to the interface; and one or more storage devices connected to the processor;
The storage device stores a plurality of first vector data each included in one of a plurality of clusters, and representative values for the clusters of the plurality of first vector data,
The method
When the search request including the second vector data is received, the representative value is searched using the received second vector data as a key,
A plurality of first vector data included in a first predetermined number of the clusters are searched in order from the cluster including the representative value that is close to the second vector data using the second vector data as a key. ,
A method of outputting, via the interface, a second predetermined number of the first vector data having a short distance from the second vector data among the searched first vector data.
前記第2ベクトルデータと、前記第2ベクトルデータをキーとした前記第1ベクトルデータの検索が終了した前記クラスタを示す情報と、を含む検索要求を受信すると、前記受信した情報によって示されるクラスタ以外の前記クラスタの前記代表値を、前記第2ベクトルデータをキーとして検索し、
前記受信した情報によって示されるクラスタ以外の前記クラスタのうち、前記第2ベクトルデータとの距離が近い前記代表値を含む前記クラスタから順に、前記第1の所定の数の前記クラスタに含まれる複数の前記第1ベクトルデータを、前記第2ベクトルデータをキーとして検索することを特徴とする請求項15に記載の方法。 The method
When a search request including the second vector data and information indicating the cluster for which the search for the first vector data has been completed using the second vector data as a key is received, other than the cluster indicated by the received information The representative value of the cluster of the second vector data as a key, and
Among the clusters other than the cluster indicated by the received information, a plurality of the clusters included in the first predetermined number of the clusters in order from the cluster including the representative value that is close to the second vector data. The method according to claim 15, wherein the first vector data is searched using the second vector data as a key.
前記第2ベクトルデータと、前記第2ベクトルデータをキーとした前記第1ベクトルデータの検索が終了した前記クラスタを示す情報と、を含む検索要求を受信すると、前記受信した情報によって示されるクラスタ以外の前記クラスタの前記代表値を、前記第2ベクトルデータをキーとして検索し、
前記受信した情報によって示されるクラスタ以外の前記クラスタのうち、前記第2ベクトルデータとの距離が近い前記代表値を含む前記クラスタから順に、前記第1の所定の数の前記クラスタに含まれる複数の前記第1ベクトルデータを、前記第2ベクトルデータをキーとして検索することを特徴とする請求項18に記載の方法。 The method
When a search request including the second vector data and information indicating the cluster for which the search for the first vector data has been completed using the second vector data as a key is received, other than the cluster indicated by the received information The representative value of the cluster of the second vector data as a key, and
Among the clusters other than the cluster indicated by the received information, a plurality of the clusters included in the first predetermined number of the clusters in order from the cluster including the representative value that is close to the second vector data. 19. The method according to claim 18, wherein the first vector data is searched using the second vector data as a key.
前記第1記憶装置は、ディスク記憶装置であり、
前記第2記憶装置は、ランダムアクセス可能な記憶装置であることを特徴とする請求項15に記載の方法。 The one or more storage devices include a first storage device that stores the first vector data, and a second storage device that stores the representative value,
The first storage device is a disk storage device;
The method of claim 15, wherein the second storage device is a randomly accessible storage device.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006162105A JP5137339B2 (en) | 2006-06-12 | 2006-06-12 | Server, system and method for retrieving clustered vector data |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006162105A JP5137339B2 (en) | 2006-06-12 | 2006-06-12 | Server, system and method for retrieving clustered vector data |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2007334402A true JP2007334402A (en) | 2007-12-27 |
JP5137339B2 JP5137339B2 (en) | 2013-02-06 |
Family
ID=38933857
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006162105A Active JP5137339B2 (en) | 2006-06-12 | 2006-06-12 | Server, system and method for retrieving clustered vector data |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5137339B2 (en) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009294855A (en) * | 2008-06-04 | 2009-12-17 | Hitachi Ltd | Similar data retrieval system |
JP2010009332A (en) * | 2008-06-27 | 2010-01-14 | Denso It Laboratory Inc | Image-retrieving database device, image-retrieving database management method and program |
JP4438014B1 (en) * | 2008-11-06 | 2010-03-24 | 株式会社ネイクス | Harmful customer detection system, method thereof and harmful customer detection program |
JP2011107795A (en) * | 2009-11-13 | 2011-06-02 | Hitachi Ltd | Image retrieval system |
JP2011158980A (en) * | 2010-01-29 | 2011-08-18 | Brother Industries Ltd | Consumer information processing apparatus |
CN106127241A (en) * | 2016-06-17 | 2016-11-16 | 中国电子科技集团公司第二十八研究所 | One is combined related cases sorting technique and categorizing system of combining related cases |
US9626421B2 (en) | 2007-09-21 | 2017-04-18 | Hasso-Plattner-Institut Fur Softwaresystemtechnik Gmbh | ETL-less zero-redundancy system and method for reporting OLTP data |
JP2018133004A (en) * | 2017-02-16 | 2018-08-23 | 日本電信電話株式会社 | Abnormality detection system and abnormality detection method |
JP2019049909A (en) * | 2017-09-11 | 2019-03-28 | ヤフー株式会社 | Generating device, generating method, and generating program |
US10373014B2 (en) | 2015-04-20 | 2019-08-06 | Hitachi, Ltd. | Object detection method and image search system |
JP2019219906A (en) * | 2018-06-20 | 2019-12-26 | 日本電信電話株式会社 | Information processing apparatus, information exchange system, information processing method and information processing program |
CN111914142A (en) * | 2020-07-30 | 2020-11-10 | 重庆电子工程职业学院 | Time-interval memory information retrieval system |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06251156A (en) * | 1993-02-26 | 1994-09-09 | Canon Inc | Pattern recognizing device |
JPH086971A (en) * | 1994-06-16 | 1996-01-12 | Xerox Corp | Thesaurus creation method |
JP2000137732A (en) * | 1998-11-04 | 2000-05-16 | Fuji Xerox Co Ltd | Retrieval device, retrieval method and computer readable recording medium recorded with retrieval program |
JP2001084252A (en) * | 1999-09-10 | 2001-03-30 | Mitsubishi Electric Corp | System and method for retrieving similar document and computer-readable recording medium with similar document retrieval program recorded thereon |
JP2003316819A (en) * | 2002-04-22 | 2003-11-07 | Shinkichi Himeno | Object classification researching device and program for executing it |
JP2004185259A (en) * | 2002-12-03 | 2004-07-02 | Renesas Technology Corp | Storage image managing device and program |
JP2004310199A (en) * | 2003-04-02 | 2004-11-04 | Terukazu Kanazawa | Document classification method and document classification program |
JP2006031460A (en) * | 2004-07-16 | 2006-02-02 | Advanced Telecommunication Research Institute International | Data search method and computer program |
-
2006
- 2006-06-12 JP JP2006162105A patent/JP5137339B2/en active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06251156A (en) * | 1993-02-26 | 1994-09-09 | Canon Inc | Pattern recognizing device |
JPH086971A (en) * | 1994-06-16 | 1996-01-12 | Xerox Corp | Thesaurus creation method |
JP2000137732A (en) * | 1998-11-04 | 2000-05-16 | Fuji Xerox Co Ltd | Retrieval device, retrieval method and computer readable recording medium recorded with retrieval program |
JP2001084252A (en) * | 1999-09-10 | 2001-03-30 | Mitsubishi Electric Corp | System and method for retrieving similar document and computer-readable recording medium with similar document retrieval program recorded thereon |
JP2003316819A (en) * | 2002-04-22 | 2003-11-07 | Shinkichi Himeno | Object classification researching device and program for executing it |
JP2004185259A (en) * | 2002-12-03 | 2004-07-02 | Renesas Technology Corp | Storage image managing device and program |
JP2004310199A (en) * | 2003-04-02 | 2004-11-04 | Terukazu Kanazawa | Document classification method and document classification program |
JP2006031460A (en) * | 2004-07-16 | 2006-02-02 | Advanced Telecommunication Research Institute International | Data search method and computer program |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10713253B2 (en) | 2007-09-21 | 2020-07-14 | Sap Se | ETL-less zero-redundancy system and method for reporting OLTP data |
US12001433B2 (en) | 2007-09-21 | 2024-06-04 | Sap Se | ETL-less zero-redundancy system and method for reporting OLTP data |
US11461331B2 (en) | 2007-09-21 | 2022-10-04 | Sap Se | ETL-less zero-redundancy system and method for reporting OLTP data |
US9626421B2 (en) | 2007-09-21 | 2017-04-18 | Hasso-Plattner-Institut Fur Softwaresystemtechnik Gmbh | ETL-less zero-redundancy system and method for reporting OLTP data |
JP2009294855A (en) * | 2008-06-04 | 2009-12-17 | Hitachi Ltd | Similar data retrieval system |
JP2010009332A (en) * | 2008-06-27 | 2010-01-14 | Denso It Laboratory Inc | Image-retrieving database device, image-retrieving database management method and program |
JP4438014B1 (en) * | 2008-11-06 | 2010-03-24 | 株式会社ネイクス | Harmful customer detection system, method thereof and harmful customer detection program |
JP2010113167A (en) * | 2008-11-06 | 2010-05-20 | Neikusu:Kk | Harmful customer detection system, its method and harmful customer detection program |
JP2011107795A (en) * | 2009-11-13 | 2011-06-02 | Hitachi Ltd | Image retrieval system |
JP2011158980A (en) * | 2010-01-29 | 2011-08-18 | Brother Industries Ltd | Consumer information processing apparatus |
US10373014B2 (en) | 2015-04-20 | 2019-08-06 | Hitachi, Ltd. | Object detection method and image search system |
CN106127241A (en) * | 2016-06-17 | 2016-11-16 | 中国电子科技集团公司第二十八研究所 | One is combined related cases sorting technique and categorizing system of combining related cases |
JP2018133004A (en) * | 2017-02-16 | 2018-08-23 | 日本電信電話株式会社 | Abnormality detection system and abnormality detection method |
JP2019049909A (en) * | 2017-09-11 | 2019-03-28 | ヤフー株式会社 | Generating device, generating method, and generating program |
JP2019219906A (en) * | 2018-06-20 | 2019-12-26 | 日本電信電話株式会社 | Information processing apparatus, information exchange system, information processing method and information processing program |
JP7119630B2 (en) | 2018-06-20 | 2022-08-17 | 日本電信電話株式会社 | Information processing device, information exchange system, information processing method and information processing program |
CN111914142A (en) * | 2020-07-30 | 2020-11-10 | 重庆电子工程职业学院 | Time-interval memory information retrieval system |
CN111914142B (en) * | 2020-07-30 | 2023-07-04 | 重庆电子工程职业学院 | Time-division memory information retrieval system |
Also Published As
Publication number | Publication date |
---|---|
JP5137339B2 (en) | 2013-02-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5137339B2 (en) | Server, system and method for retrieving clustered vector data | |
US7962500B2 (en) | Digital image retrieval by aggregating search results based on visual annotations | |
KR100385528B1 (en) | Multidimensional data clustering and dimension reduction for indexing and searching | |
CN101882149B (en) | Reorder and improve the dependency of Search Results | |
KR101700352B1 (en) | Generating improved document classification data using historical search results | |
JP4634214B2 (en) | Method and system for identifying image relevance by utilizing link and page layout analysis | |
Drosou et al. | Diverse set selection over dynamic data | |
JP5155025B2 (en) | Similar data search system | |
WO2008051882A2 (en) | Personal music recommendation mapping | |
US20120158716A1 (en) | Image object retrieval based on aggregation of visual annotations | |
Zhou et al. | Real-time context-aware social media recommendation | |
CN118211038B (en) | Multidimensional data processing analysis method, device, system and storage medium | |
Budgaga et al. | A framework for scalable real‐time anomaly detection over voluminous, geospatial data streams | |
JP5337673B2 (en) | Image search system | |
CN115587877A (en) | Live E-commerce platform commodity content intelligent pushing management system based on big data | |
WO2020014124A1 (en) | Data exploration as search over automated pre-generated plot objects | |
Zhao et al. | Monochromatic and bichromatic ranked reverse boolean spatial keyword nearest neighbors search | |
Han et al. | Ranking the big sky: efficient top-k skyline computation on massive data | |
Bansal et al. | Ad-hoc aggregations of ranked lists in the presence of hierarchies | |
JP6065001B2 (en) | Data search device, data search method, and data search program | |
Zekri et al. | Optimized image retrieval system in Oracle DBMS | |
Zhang et al. | PARROT: pattern-based correlation exploitation in big partitioned data series | |
JP2020109689A (en) | Retrieval need evaluation device, retrieval need evaluation system, and retrieval need evaluation method | |
KR100426341B1 (en) | System for searching an appointed web site | |
Huiskes | Aspect-based relevance learning for image retrieval |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20090121 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20110316 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110329 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110524 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120104 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120227 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120309 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120828 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20121016 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20121106 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20121113 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5137339 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20151122 Year of fee payment: 3 |