JP2024155177A - Information processing device, information processing method, and information processing program - Google Patents
Information processing device, information processing method, and information processing program Download PDFInfo
- Publication number
- JP2024155177A JP2024155177A JP2023069641A JP2023069641A JP2024155177A JP 2024155177 A JP2024155177 A JP 2024155177A JP 2023069641 A JP2023069641 A JP 2023069641A JP 2023069641 A JP2023069641 A JP 2023069641A JP 2024155177 A JP2024155177 A JP 2024155177A
- Authority
- JP
- Japan
- Prior art keywords
- search
- information
- information processing
- blob
- processing device
- 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.)
- Pending
Links
- 230000010365 information processing Effects 0.000 title claims abstract description 1030
- 238000003672 processing method Methods 0.000 title claims description 7
- 238000000034 method Methods 0.000 claims abstract description 592
- 238000012545 processing Methods 0.000 claims abstract description 585
- 230000008569 process Effects 0.000 claims abstract description 498
- 238000004364 calculation method Methods 0.000 claims description 94
- 238000000605 extraction Methods 0.000 claims description 40
- 239000013598 vector Substances 0.000 description 254
- 238000013139 quantization Methods 0.000 description 107
- 238000010586 diagram Methods 0.000 description 73
- 230000008685 targeting Effects 0.000 description 45
- 239000000284 extract Substances 0.000 description 34
- 239000000047 product Substances 0.000 description 32
- 101710190981 50S ribosomal protein L6 Proteins 0.000 description 27
- 101710135913 50S ribosomal protein L27 Proteins 0.000 description 18
- 230000006870 function Effects 0.000 description 17
- 101000575029 Bacillus subtilis (strain 168) 50S ribosomal protein L11 Proteins 0.000 description 12
- 102100035793 CD83 antigen Human genes 0.000 description 12
- 101000946856 Homo sapiens CD83 antigen Proteins 0.000 description 12
- 238000004891 communication Methods 0.000 description 12
- 102100027867 FH2 domain-containing protein 1 Human genes 0.000 description 11
- 101001060553 Homo sapiens FH2 domain-containing protein 1 Proteins 0.000 description 11
- 101001107782 Homo sapiens Iron-sulfur protein NUBPL Proteins 0.000 description 9
- 102100021998 Iron-sulfur protein NUBPL Human genes 0.000 description 9
- 101000592939 Bacillus subtilis (strain 168) 50S ribosomal protein L24 Proteins 0.000 description 8
- 101100072620 Streptomyces griseus ind2 gene Proteins 0.000 description 8
- 230000003287 optical effect Effects 0.000 description 8
- 239000004065 semiconductor Substances 0.000 description 8
- 101001101476 Bacillus subtilis (strain 168) 50S ribosomal protein L21 Proteins 0.000 description 7
- 230000002457 bidirectional effect Effects 0.000 description 7
- 102100030886 Complement receptor type 1 Human genes 0.000 description 5
- 101000727061 Homo sapiens Complement receptor type 1 Proteins 0.000 description 5
- 101000868279 Homo sapiens Leukocyte surface antigen CD47 Proteins 0.000 description 5
- 101000878605 Homo sapiens Low affinity immunoglobulin epsilon Fc receptor Proteins 0.000 description 5
- 101001106523 Homo sapiens Regulator of G-protein signaling 1 Proteins 0.000 description 5
- 102100032913 Leukocyte surface antigen CD47 Human genes 0.000 description 5
- 102100038007 Low affinity immunoglobulin epsilon Fc receptor Human genes 0.000 description 5
- 102100024616 Platelet endothelial cell adhesion molecule Human genes 0.000 description 5
- 102100021269 Regulator of G-protein signaling 1 Human genes 0.000 description 5
- 101001080597 Spinacia oleracea 50S ribosomal protein 5 alpha, chloroplastic Proteins 0.000 description 5
- 238000007796 conventional method Methods 0.000 description 5
- 101000946889 Homo sapiens Monocyte differentiation antigen CD14 Proteins 0.000 description 4
- 101000884271 Homo sapiens Signal transducer CD24 Proteins 0.000 description 4
- 102100035877 Monocyte differentiation antigen CD14 Human genes 0.000 description 4
- 102100038081 Signal transducer CD24 Human genes 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 101710115003 50S ribosomal protein L31, chloroplastic Proteins 0.000 description 3
- 102100024222 B-lymphocyte antigen CD19 Human genes 0.000 description 3
- 108700019909 BL 19 Proteins 0.000 description 3
- 102100032912 CD44 antigen Human genes 0.000 description 3
- -1 CD77 Proteins 0.000 description 3
- 102100032768 Complement receptor type 2 Human genes 0.000 description 3
- 102100031573 Hematopoietic progenitor cell antigen CD34 Human genes 0.000 description 3
- 101000980825 Homo sapiens B-lymphocyte antigen CD19 Proteins 0.000 description 3
- 101000868273 Homo sapiens CD44 antigen Proteins 0.000 description 3
- 101000941929 Homo sapiens Complement receptor type 2 Proteins 0.000 description 3
- 101000777663 Homo sapiens Hematopoietic progenitor cell antigen CD34 Proteins 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 101710114762 50S ribosomal protein L11, chloroplastic Proteins 0.000 description 2
- 102100022907 Acrosin-binding protein Human genes 0.000 description 2
- 102100027217 CD82 antigen Human genes 0.000 description 2
- 101000623061 Drosophila melanogaster 40S ribosomal protein S26 Proteins 0.000 description 2
- 101000608734 Helianthus annuus 11 kDa late embryogenesis abundant protein Proteins 0.000 description 2
- 102100026122 High affinity immunoglobulin gamma Fc receptor I Human genes 0.000 description 2
- 101000756551 Homo sapiens Acrosin-binding protein Proteins 0.000 description 2
- 101000914469 Homo sapiens CD82 antigen Proteins 0.000 description 2
- 101000913074 Homo sapiens High affinity immunoglobulin gamma Fc receptor I Proteins 0.000 description 2
- 101001078143 Homo sapiens Integrin alpha-IIb Proteins 0.000 description 2
- 101001046677 Homo sapiens Integrin alpha-V Proteins 0.000 description 2
- 101000935043 Homo sapiens Integrin beta-1 Proteins 0.000 description 2
- 101000738771 Homo sapiens Receptor-type tyrosine-protein phosphatase C Proteins 0.000 description 2
- 102100025306 Integrin alpha-IIb Human genes 0.000 description 2
- 102100022337 Integrin alpha-V Human genes 0.000 description 2
- 102100025304 Integrin beta-1 Human genes 0.000 description 2
- 102100037422 Receptor-type tyrosine-protein phosphatase C Human genes 0.000 description 2
- 230000001174 ascending effect Effects 0.000 description 2
- 238000010923 batch production Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 101710082414 50S ribosomal protein L12, chloroplastic Proteins 0.000 description 1
- 101710164994 50S ribosomal protein L13, chloroplastic Proteins 0.000 description 1
- 101710190962 50S ribosomal protein L9 Proteins 0.000 description 1
- 102100022749 Aminopeptidase N Human genes 0.000 description 1
- 101001105315 Bacillus subtilis (strain 168) 50S ribosomal protein L17 Proteins 0.000 description 1
- 101000682328 Bacillus subtilis (strain 168) 50S ribosomal protein L18 Proteins 0.000 description 1
- 101001093025 Geobacillus stearothermophilus 50S ribosomal protein L7/L12 Proteins 0.000 description 1
- 101000757160 Homo sapiens Aminopeptidase N Proteins 0.000 description 1
- 101000935040 Homo sapiens Integrin beta-2 Proteins 0.000 description 1
- 101001012154 Homo sapiens Inverted formin-2 Proteins 0.000 description 1
- 101100236208 Homo sapiens LTB4R gene Proteins 0.000 description 1
- 101001017969 Homo sapiens Leukotriene B4 receptor 2 Proteins 0.000 description 1
- 102100025390 Integrin beta-2 Human genes 0.000 description 1
- 102100030075 Inverted formin-2 Human genes 0.000 description 1
- 102100033374 Leukotriene B4 receptor 1 Human genes 0.000 description 1
- 102100033375 Leukotriene B4 receptor 2 Human genes 0.000 description 1
- 101100437750 Schizosaccharomyces pombe (strain 972 / ATCC 24843) blt1 gene Proteins 0.000 description 1
- 239000006227 byproduct Substances 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000001143 conditioned effect Effects 0.000 description 1
- 230000008094 contradictory effect Effects 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000003064 k means clustering Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000017105 transposition Effects 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】グループに応じて適切に検索処理を実行する。【解決手段】本願に係る情報処理装置は、データ検索の対象となる複数のオブジェクトを分類する複数の第1グループ、及び複数の第1グループの各々に属するオブジェクト群ごとに分類する1以上の第2グループとを示すグループ情報と、複数のオブジェクトに対する検索クエリとを取得する取得部と、複数の第1グループから選択された対象第1グループ群から一の第1グループを選択し、選択した一の第1グループに属する第2グループのうち、第2代表オブジェクトと検索クエリとの間の距離が短い方から順に一の第2グループを選択し、選択した一の第2グループに属するオブジェクトを対象オブジェクトとして検索クエリとの間の距離を算出し、対象オブジェクトと検索クエリとの各々との距離に基づいて、検索クエリに対応する近傍のオブジェクトを抽出する検索処理を実行する検索処理手順とを有する。【選択図】図47[Problem] Executing a search process appropriately according to a group. [Solution] The information processing device according to the present application has an acquisition unit that acquires group information indicating a plurality of first groups into which a plurality of objects to be the subject of a data search are classified and one or more second groups into which each of the plurality of first groups is classified into a group of objects belonging to each of the plurality of first groups, and a search query for the plurality of objects, and a search processing procedure that selects one first group from a target first group group selected from the plurality of first groups, selects one second group from among the second groups belonging to the selected one first group in order of the shortest distance between a second representative object and the search query, calculates the distance between the search query and an object belonging to the selected one second group as a target object, and executes a search process to extract a nearby object corresponding to the search query based on the distance between each of the target object and the search query. [Selected Figure] Fig. 47
Description
本発明は、情報処理装置、情報処理方法、及び情報処理プログラムに関する。 The present invention relates to an information processing device, an information processing method, and an information processing program.
従来、種々の情報を探索(検索)する技術が提供されている。例えば、検索対象に対応するノードがエッジにより連結されたグラフを生成し、生成したグラフを用いて検索を行う技術が提供されている。また、このような技術は、例えば画像検索等に用いられる。 Conventionally, techniques have been provided for searching (finding) various types of information. For example, a technique has been provided for generating a graph in which nodes corresponding to the search target are connected by edges, and performing a search using the generated graph. Such techniques are also used, for example, in image searches.
しかしながら、上記の従来技術では、検索処理の効率化の点では改善の余地がある。例えば、上記の従来技術では、グラフのエッジ数等を調整したりして、効率的な検索ができるグラフに変更することにより、検索処理の時間削減等の効率化を行っているが、グラフの変更により検索処理の効率化を図るには限界がある。そのため、例えば検索処理の高速化等、効率的な検索処理に利用可能な情報を生成するために、検索対象となるオブジェクトを分類するグループの概念を導入し、グループに応じて適切に検索処理を実行することが望まれている。 However, the above conventional technology has room for improvement in terms of the efficiency of search processing. For example, the above conventional technology improves efficiency by reducing the time required for search processing by adjusting the number of edges in the graph, etc., and changing the graph to one that allows for efficient searches, but there is a limit to how much the efficiency of search processing can be improved by changing the graph. For this reason, it is desirable to introduce the concept of groups that classify objects to be searched, and to execute search processing appropriately according to the group, in order to generate information that can be used for efficient search processing, such as speeding up search processing.
本願は、上記に鑑みてなされたものであって、グループに応じて適切に検索処理を実行する情報処理装置、情報処理方法、及び情報処理プログラムを提供することを目的とする。 The present application has been made in consideration of the above, and aims to provide an information processing device, an information processing method, and an information processing program that perform search processing appropriately according to the group.
本願に係る情報処理装置は、データ検索の対象となる複数のオブジェクトを分類する複数の第1グループ、及び前記複数の第1グループの各々に属するオブジェクト群ごとに分類する1以上の第2グループとを示すグループ情報と、前記複数のオブジェクトに対する検索クエリとを取得する取得部と、前記複数の第1グループから選択された対象第1グループ群から、前記対象第1グループ群の各々の第1代表オブジェクトと前記検索クエリとの間の距離が短い方から順に一の第1グループを選択し、選択した前記一の第1グループに属する第2グループのうち、第2代表オブジェクトと前記検索クエリとの間の距離が短い方から順に一の第2グループを選択し、選択した前記一の第2グループに属するオブジェクトを対象オブジェクトとして前記検索クエリとの間の距離を算出する算出処理を実行し、前記算出処理により算出した前記対象オブジェクトと前記検索クエリとの各々との距離に基づいて、前記検索クエリに対応する近傍のオブジェクトを抽出する検索処理を実行する検索処理部と、を備えることを特徴とする情報処理装置。を備えたことを特徴とする。 The information processing device according to the present application is characterized by comprising: an acquisition unit that acquires group information indicating a plurality of first groups into which a plurality of objects to be subjected to a data search are classified, and one or more second groups into which each of the object groups belonging to each of the plurality of first groups is classified, and a search query for the plurality of objects; and a search processing unit that selects one first group from a target first group group selected from the plurality of first groups in order of the shortest distance between a first representative object of each of the target first group groups and the search query, selects one second group from the second groups belonging to the selected one first group in order of the shortest distance between a second representative object and the search query, performs a calculation process to calculate the distance between the search query and an object belonging to the selected one second group as a target object, and performs a search process to extract a nearby object corresponding to the search query based on the distance between each of the target objects and the search query calculated by the calculation process.
実施形態の一態様によれば、グループに応じて適切に検索処理を実行することができるという効果を奏する。 According to one aspect of the embodiment, it is possible to perform search processing appropriately according to the group.
以下に、本願に係る情報処理装置、情報処理方法、及び情報処理プログラムを実施するための形態(以下、「実施形態」と呼ぶ)について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る情報処理装置、情報処理方法、及び情報処理プログラムが限定されるものではない。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略される。 Below, the information processing device, information processing method, and information processing program according to the present application will be described in detail with reference to the drawings. Note that the information processing device, information processing method, and information processing program according to the present application are not limited to these embodiments. In addition, the same parts in the following embodiments will be denoted by the same reference numerals, and duplicated descriptions will be omitted.
(実施形態)
〔1.第1の実施形態〕
〔1-1.情報処理〕
図1を用いて、第1の実施形態に係る情報処理の一例について説明する。図1は、第1の実施形態に係る情報処理の一例を示す図である。情報処理装置100は、データ検索の対象となる複数のオブジェクトをグラフ構造化したグラフインデックス(単に「グラフ」ともいう)を用いた検索処理を実行する。図1では、情報処理装置100がデータ検索の対象であるオブジェクトがベクトル化された各ベクトルに対応するノードがエッジで連結されたグラフを用いて近傍検索を行う場合の検索処理の一部を示す。情報処理装置100は、グラフの各ノードを検索対象のオブジェクトとして、グラフを辿って与えられた検索クエリ(ベクトル)の近傍のノードを探索する。情報処理装置100は、検索処理により、抽出する近傍のノードの数として指定された所定数(以下「検索数」ともいう)のノードを、検索クエリの近傍のノードとして抽出する。以下では、画像情報をデータ検索の対象とした場合を一例として説明するが、データ検索の対象は、動画情報や音声情報等の種々の対象であってもよい。
(Embodiment)
1. First embodiment
[1-1. Information Processing]
An example of information processing according to the first embodiment will be described with reference to FIG. 1. FIG. 1 is a diagram showing an example of information processing according to the first embodiment. The
情報処理装置100は、数百万~数億等の単位の膨大な画像情報に対応するノードを対象に検索処理を行うが、図面においてはその一部(図1ではノードN1等の数十個)のみを図示する。例えば、情報処理装置100は、図1中の空間情報SP1に示すように、ノードN1、N7、N9等に示すような複数のノード(ベクトル)に関する情報を取得する。このように「ノードN*(*は任意の数値)」と記載した場合、そのノードはノードID「N*」により識別されるノードであることを示す。例えば、「ノードN1」と記載した場合、そのノードはノードID「N1」により識別されるノードである。空間情報SP1中の白丸(〇)の各々が各ノードを示す。
The
図1中の空間情報SP1では、主に説明に関係するノードに符号を付すが、符号が付されていない白丸(〇)の各々もノードであり、図示するノード以外にも多数のノードが含まれる。また、各ノードは、各オブジェクト(検索対象)に対応する。例えば、画像から抽出された複数の局所特徴量のそれぞれがオブジェクトであってもよい。また、例えば、オブジェクト間の距離が定義された種々のデータがオブジェクトであってもよい。 In the spatial information SP1 in FIG. 1, nodes mainly related to the explanation are labeled, but each of the unlabeled white circles (◯) is also a node, and many other nodes are included in addition to the nodes shown in the figure. Also, each node corresponds to an object (search target). For example, each of multiple local features extracted from an image may be an object. Also, for example, various data in which the distance between objects is defined may be an object.
例えば図1中の空間情報SP1は、ユークリッド空間であってもよい。例えば、空間情報SP1は、オブジェクトのベクトルの次元数に対応し、100次元や1000次元等の多次元空間であるものとする。なお、図1では、空間情報SP1に示すように直積量子化によりベクトル(空間)が複数の部分領域(部分空間)に4分割された状態を概念的に図示するが、直積量子化の点については後述する。 For example, the spatial information SP1 in FIG. 1 may be a Euclidean space. For example, the spatial information SP1 corresponds to the number of dimensions of the object's vector, and is a multidimensional space of 100 dimensions, 1000 dimensions, etc. Note that FIG. 1 conceptually illustrates a state in which the vector (space) is divided into four partial regions (subspaces) by direct product quantization as shown in the spatial information SP1, but the direct product quantization will be described later.
空間情報SP1中のノードである白丸(〇)間を接続する点線がノード間を連結するエッジを示す。図1の例では、説明を簡単にするために、ノード間が無向(双方向)エッジ(以下単に「エッジ」ともいう)により連結される場合を示す。なお、ここでいう無向エッジとは、連結されたノード間を双方向にデータを辿ることができるエッジを意味する。例えば、ノードN1を示す白丸(〇)とノードN4を示す白丸(〇)との間は点線で接続されており、ノードN1とノードN4との間はエッジで連結されていることを示す。すなわち、空間情報SP1に示すグラフではノードN1とノードN4との間を双方向に辿ることが可能となる。具体的には、空間情報SP1ではノードN1からノードN4へ辿ることができ、かつノードN4からノードN1へ辿ることができる。 The dotted lines connecting the white circles (◯) that are nodes in the spatial information SP1 indicate edges that connect the nodes. In the example of FIG. 1, for the sake of simplicity, the nodes are connected by undirected (bidirectional) edges (hereinafter also simply referred to as "edges"). Note that an undirected edge here means an edge that allows data to be traced in both directions between the connected nodes. For example, a dotted line connects the white circle (◯) representing node N1 and the white circle (◯) representing node N4, indicating that node N1 and node N4 are connected by an edge. In other words, in the graph shown in the spatial information SP1, it is possible to trace between node N1 and node N4 in both directions. Specifically, in the spatial information SP1, it is possible to trace from node N1 to node N4, and from node N4 to node N1.
なお、図1の例では、図示の関係上、図示したノード間を連結するエッジのみを図示するが、図示したエッジ以外にも多数のエッジが含まれる。このように、図1中の空間情報SP1では、エッジの一部のみを図示するが、例えばk近傍グラフ(k-nearest neighbor graph)であるものとする。なお、空間情報SP1は、種々のグラフであってもよい。 In the example of FIG. 1, for ease of illustration, only the edges connecting the illustrated nodes are shown, but many other edges are included in addition to the edges shown. Thus, in the spatial information SP1 in FIG. 1, only a portion of the edges is shown, but it is assumed to be, for example, a k-nearest neighbor graph. Note that the spatial information SP1 may be various graphs.
また、グラフのエッジは、無向エッジに限らず、有向エッジであってもよい。有向エッジの場合、有向エッジの参照元となっているノードから参照先のノードへのみ辿ることができる。例えば、2つのノード間が、一方を参照元とし他方を参照先とする第1エッジ、及び一方を参照先とし他方を参照元とする第2エッジの2つの有向エッジで連結されている場合、その2つのノード間が無向(双方向)エッジで連結されて状態と同じ状態である。 In addition, the edges of a graph are not limited to undirected edges, and may be directed edges. In the case of a directed edge, it is only possible to trace from the node that is the reference source of the directed edge to the referenced node. For example, if two nodes are connected by two directed edges, a first edge with one as the reference source and the other as the reference destination, and a second edge with one as the reference destination and the other as the reference source, the state is the same as if the two nodes were connected by an undirected (bidirectional) edge.
ここから、図1を用いて検索処理について説明する。図1の例では、情報処理装置100は、空間情報SP1に示すようなグラフGR1を取得済みであるものとする。なお、情報処理装置100は、種々の従来技術を適宜用いてグラフGR1を生成してもよい。まず、検索処理の説明に先立ってベクトル(空間)の直積量子化について説明する。
From here, the search process will be described with reference to FIG. 1. In the example of FIG. 1, it is assumed that the
図1では、空間情報SP1に示すように直積量子化によりベクトル(空間)が4つの部分空間AR11~AR14に分割された状態を概念的に図示する。図1に示す部分空間AR11~AR14は、各ノード(オブジェクト)のベクトル間の距離等の説明のための概念的な図で示すが、各部分空間AR11~AR14は多次元空間となる。例えば、図1に示す部分空間AR11は、平面上に図示するため2次元の態様にて図示されるが、例えば100次元や1000次元等の多次元空間であるものとする。 Figure 1 conceptually illustrates a state in which a vector (space) is divided into four subspaces AR11 to AR14 by direct product quantization, as shown in spatial information SP1. The subspaces AR11 to AR14 shown in Figure 1 are shown in a conceptual diagram to explain the distance between vectors of each node (object), etc., but each of the subspaces AR11 to AR14 is a multidimensional space. For example, the subspace AR11 shown in Figure 1 is shown in a two-dimensional form in order to be illustrated on a plane, but it is assumed to be a multidimensional space with, for example, 100 dimensions or 1000 dimensions.
各部分空間AR11~AR14の各々は、4分割されるベクトルの各分割(部分ベクトル)に対応する空間を示す。なお、例えば100次元のベクトルを100分割しても良い。例えば、部分空間AR11は、ベクトルが4分割された4つの部分ベクトル(「サブベクトル」ともいう)のうち、先頭の部分ベクトル(「第1サブベクトル」ともいう)に対応する次元の空間(「第1サブ空間」ともいう)を示す。部分空間AR11は、ベクトルの先頭の分割位置に対応する部分空間(第1サブ空間)を示す。検索クエリQE1の場合、部分空間AR11は、先頭の部分ベクトル(第1サブベクトル)である第1部分クエリQE1-1に対応する空間である。 Each of the subspaces AR11 to AR14 indicates a space corresponding to each division (partial vector) of the vector divided into four. Note that, for example, a 100-dimensional vector may be divided into 100 parts. For example, the subspace AR11 indicates a dimensional space (also referred to as the "first subspace") corresponding to the first partial vector (also referred to as the "first subvector") of the four partial vectors (also referred to as "subvectors") obtained by dividing a vector into four. The subspace AR11 indicates a subspace (first subspace) corresponding to the first division position of the vector. In the case of the search query QE1, the subspace AR11 is a space corresponding to the first partial query QE1-1, which is the first partial vector (first subvector).
また、部分空間AR12は、ベクトルが4分割された4つの部分ベクトルのうち、先頭から2番目の部分ベクトル(「第2サブベクトル」ともいう)に対応する次元の空間(「第2サブ空間」ともいう)を示す。部分空間AR12は、ベクトルの先頭から2番目の分割位置に対応する部分空間(第2サブ空間)を示す。検索クエリQE1の場合、部分空間AR12は、先頭から2番目の部分ベクトル(第2サブベクトル)である第2部分クエリQE1-2に対応する空間である。 Furthermore, subspace AR12 indicates a dimensional space (also referred to as the "second subspace") corresponding to the second-first partial vector (also referred to as the "second subvector") out of the four partial vectors obtained by dividing a vector into four. Subspace AR12 indicates a subspace (second subspace) corresponding to the second-first division position of the vector. In the case of search query QE1, subspace AR12 is a space corresponding to the second-first partial query QE1-2, which is the second-first partial vector (second subvector).
また、部分空間AR13は、ベクトルが4分割された4つの部分ベクトルのうち、先頭から3番目の部分ベクトル(「第3サブベクトル」ともいう)に対応する次元の空間(「第3サブ空間」ともいう)を示す。部分空間AR13は、ベクトルの先頭から3番目の分割位置に対応する部分空間(第3サブ空間)を示す。検索クエリQE1の場合、部分空間AR13は、先頭から3番目の部分ベクトル(第3サブベクトル)である第3部分クエリQE1-3に対応する空間である。 Furthermore, subspace AR13 indicates a dimensional space (also referred to as the "third subspace") corresponding to the third partial vector from the top (also referred to as the "third subvector") out of the four partial vectors obtained by dividing a vector into four. Subspace AR13 indicates the subspace (third subspace) corresponding to the third division position from the top of the vector. In the case of search query QE1, subspace AR13 is a space corresponding to the third partial query QE1-3, which is the third partial vector (third subvector) from the top.
また、部分空間AR14は、ベクトルが4分割された4つの部分ベクトルのうち、先頭から4番目(すなわち最後尾)の部分ベクトル(「第4サブベクトル」ともいう)に対応する次元の空間(「第4サブ空間」ともいう)を示す。部分空間AR14は、ベクトルの先頭から4番目の分割位置に対応する部分空間(第4サブ空間)を示す。検索クエリQE1の場合、部分空間AR14は、先頭から4番目の部分ベクトル(第4サブベクトル)である第4部分クエリQE1-4に対応する空間である。 Furthermore, subspace AR14 indicates a dimensional space (also referred to as the "fourth subspace") corresponding to the fourth (i.e., last) partial vector from the beginning (also referred to as the "fourth subvector") of the four partial vectors obtained by dividing a vector into four. Subspace AR14 indicates the subspace (fourth subspace) corresponding to the fourth division position from the beginning of the vector. In the case of search query QE1, subspace AR14 is a space corresponding to the fourth partial query QE1-4, which is the fourth partial vector (fourth subvector) from the beginning.
なお、図1の例では、部分空間AR11~AR14を類似の形状で示すが、各部分空間AR11~AR14の形状は異なってもよいし、また各部分空間AR11~AR14における領域の分割態様も異なってもよい。また、ノード間のエッジによる接続関係は部分空間AR11~AR14で共通であるものとする。すなわち、グラフGR1は、空間情報SP1に対応するグラフであり、部分空間AR11~AR14で共通である。 In the example of Figure 1, the subspaces AR11 to AR14 are shown with similar shapes, but the shapes of the subspaces AR11 to AR14 may be different, and the division of the areas in each of the subspaces AR11 to AR14 may also be different. Also, the connection relationships between nodes via edges are assumed to be common to the subspaces AR11 to AR14. In other words, the graph GR1 is a graph that corresponds to the spatial information SP1, and is common to the subspaces AR11 to AR14.
また、図1の例では、分割された部分ベクトル(サブベクトル)ごとにルックアップテーブルが生成される。例えば、第1サブベクトル、第2サブベクトル、第3サブベクトル、及び第4サブベクトルの4つのサブベクトルごとにクラスタリングされ、個別にルックアップテーブル(コードブック情報)が生成される。 In the example of FIG. 1, a lookup table is generated for each divided partial vector (subvector). For example, the first subvector, the second subvector, the third subvector, and the fourth subvector are clustered, and a lookup table (codebook information) is generated for each subvector.
図1では、第1サブベクトルについては、部分空間AR11に示すように、コードブックCD11~CD19に対応する9個のグループにクラスタリングされ、コードブックCD11~CD19の各々に対応するベクトルが代表ベクトル(セントロイド)として算出される。例えば、ノードN7、N9等の第1サブベクトルはコードブックCD11に対応するグループにクラスタリングされることを示す。この場合、ノードN7、N9等の第1サブベクトルは距離の計算(算出)において、第1サブベクトルに対応するコードブック情報(「第1コードブック情報」ともいう)を用いて、コードブックCD11のベクトルにベクトル量子化される。 In FIG. 1, the first subvectors are clustered into nine groups corresponding to codebooks CD11 to CD19 as shown in subspace AR11, and vectors corresponding to each of the codebooks CD11 to CD19 are calculated as representative vectors (centroids). For example, the first subvectors of nodes N7, N9, etc. are shown to be clustered into a group corresponding to codebook CD11. In this case, in distance calculation, the first subvectors of nodes N7, N9, etc. are vector quantized into vectors of codebook CD11 using codebook information (also referred to as "first codebook information") corresponding to the first subvectors.
また、第2サブベクトルについては、コードブックCD21~CD24等(図2、図9参照)に対応する複数のグループにクラスタリングされ、コードブックCD21~CD24等の各々に対応するベクトルが代表ベクトル(セントロイド)として算出される。この場合、各ノードの第2サブベクトルは距離の計算(算出)において、第2サブベクトルに対応するコードブック情報(「第2コードブック情報」ともいう)を用いて、対応するコードブックのベクトルにベクトル量子化される。 The second subvectors are clustered into a number of groups corresponding to the codebooks CD21 to CD24 (see Figures 2 and 9), and a vector corresponding to each of the codebooks CD21 to CD24 is calculated as a representative vector (centroid). In this case, the second subvectors of each node are vector quantized into a vector of the corresponding codebook using the codebook information (also called "second codebook information") corresponding to the second subvector in the distance calculation.
第3サブベクトルについては、コードブックCD31~CD34等(図2、図9参照)に対応する複数のグループにクラスタリングされ、コードブックCD31~CD34等の各々に対応するベクトルが代表ベクトル(セントロイド)として算出される。この場合、各ノードの第3サブベクトルは距離の計算(算出)において、第3サブベクトルに対応するコードブック情報(「第3コードブック情報」ともいう)を用いて、対応するコードブックのベクトルにベクトル量子化される。 The third subvectors are clustered into a number of groups corresponding to the codebooks CD31 to CD34 (see Figures 2 and 9), and the vectors corresponding to each of the codebooks CD31 to CD34 are calculated as representative vectors (centroids). In this case, in the distance calculation, the third subvectors of each node are vector quantized into vectors of the corresponding codebooks using the codebook information (also called "third codebook information") corresponding to the third subvectors.
第4サブベクトルについては、コードブックCD41~CD44等(図2、図9参照)に対応する複数のグループにクラスタリングされ、コードブックCD24~CD44等の各々に対応するベクトルが代表ベクトル(セントロイド)として算出される。この場合、各ノードの第4サブベクトルは距離の計算(算出)において、第4サブベクトルに対応するコードブック情報(「第4コードブック情報」ともいう)を用いて、対応するコードブックのベクトルにベクトル量子化される。 The fourth subvectors are clustered into multiple groups corresponding to the codebooks CD41 to CD44 (see Figures 2 and 9), and the vectors corresponding to each of the codebooks CD24 to CD44 are calculated as representative vectors (centroids). In this case, in the distance calculation, the fourth subvectors of each node are vector quantized into vectors of the corresponding codebooks using the codebook information (also called "fourth codebook information") corresponding to the fourth subvector.
なお、代表ベクトルを求める処理等、コードブック情報の生成は、種々の技術を適宜用いて生成される。コードブック情報の生成については従来技術であるため詳細な説明を省略する。また、ルックアップテーブルについては上記に限らず、例えば、分割された部分ベクトル(サブベクトル)全体で1つのルックアップテーブル(コードブック情報)を用いてもよいが、この点については後述する。 The codebook information, including the process of determining the representative vector, is generated using various techniques as appropriate. The generation of the codebook information is a conventional technique, so a detailed explanation is omitted. The lookup table is not limited to the above, and for example, one lookup table (codebook information) may be used for all the divided partial vectors (sub-vectors), but this will be discussed later.
ここから、検索クエリQE1を対象とする検索処理を説明する。まず、情報処理装置100は、検索クエリQE1を取得する(ステップS11)。例えば、情報処理装置100は、ユーザが利用する端末装置10(図4参照)から検索クエリQE1を取得する。
Now, the search process targeting the search query QE1 will be described. First, the
そして、情報処理装置100は、検索クエリQE1であるベクトルを4分割する。すなわち、情報処理装置100は、検索クエリQE1を4つの部分クエリに分割する。図1では、情報処理装置100は、検索クエリQE1を、第1サブベクトルである第1部分クエリQE1-1、第2サブベクトルである第2部分クエリQE1-2、第3サブベクトルである第3部分クエリQE1-3、及び第4サブベクトルである第4部分クエリQE1-4との4つのサブベクトルに分割する。具体的には、情報処理装置100は、「45,23,2…」を第1部分クエリQE1-1とし、「127,34,5…」を第2部分クエリQE1-2とし、「20,98,110…」を第3部分クエリQE1-3とし、「12,45,4…」を第4部分クエリQE1-4とする。
Then, the
そして、情報処理装置100は、検索クエリQE1の各サブベクトルと、そのサブベクトルに対応するコードブックのベクトルとの間の距離を算出する。情報処理装置100は、図2のコードブック情報TB1~TB4に示すように、検索クエリQE1の各サブベクトルと各コードブックのベクトルとの間の距離(差分)を算出する。図2は、第1の実施形態に係るデータの一例を示す図である。
Then, the
コードブック情報TB1は、第1サブベクトルに対応する第1コードブック情報を示し、情報処理装置100は、第1サブベクトルに対応するコードブックCD11~CD19の各々のベクトルと、第1部分クエリQE1-1との間の距離を算出する。図2では、情報処理装置100は、コードブック情報TB1に示すように、コードブックCD11と第1部分クエリQE1-1との間の距離を距離DS11と算出する。同様に、情報処理装置100は、コードブックCD12~CD14等の各々と第1部分クエリQE1-1との間の距離を距離DS12~DS14等と算出する。
Codebook information TB1 indicates the first codebook information corresponding to the first subvector, and the
同様に、コードブック情報TB2~TB4の各々は、第2~第4サブベクトルの各々に対応する第2~第4コードブック情報を示す。情報処理装置100は、コードブック情報TB2に示すように、コードブックCD21~CD24等の各々と第2部分クエリQE1-2との間の距離を距離DS21~DS24等と算出する。情報処理装置100は、コードブック情報TB3に示すように、コードブックCD31~CD34等の各々と第3部分クエリQE1-3との間の距離を距離DS31~DS34等と算出する。情報処理装置100は、コードブック情報TB4に示すように、コードブックCD41~CD44等の各々と第4部分クエリQE1-4との間の距離を距離DS41~DS44等と算出する。
Similarly, each of the codebook information TB2 to TB4 indicates second to fourth codebook information corresponding to each of the second to fourth subvectors. As shown in the codebook information TB2, the
なお、図2では説明のため抽象的に示すが、距離DS11~DS44等は具体的な値であるものとする。距離は浮動小数点で表される値であるが、後述のSIMD(Single Instruction, Multiple Data)による高速化のためにscale-offset-compression(「https://www.unidata.ucar.edu/blogs/developer/entry/compression_by_scaling_and_offfset」等参照)により1バイト整数型に圧縮してもよい。情報処理装置100は、各コードブックとクエリとの間の距離算出を、検索クエリQE1を取得したタイミングで行ってもよいし、その情報が必要になったタイミングで行ってもよい。情報処理装置100は、検索処理において、コードブック情報TB1~TB4をルックアップテーブルとして用いて、各ノードと検索クエリQE1との間の距離、すなわち近似距離(「第1距離」ともいう)を算出する。このように、情報処理装置100は、検索処理において、グラフを探索する際には、各ノードと検索クエリとの間の真の距離(「第2距離」ともいう)ではなく、近似距離(第1距離)を計算し処理を行うことにより、効率的な検索処理を可能にすることができる。
Note that, although FIG. 2 shows the distances abstractly for the sake of explanation, the distances DS11 to DS44 are concrete values. The distances are values expressed as floating point numbers, but may be compressed to 1-byte integer type by scale-offset-compression (see, for example, "https://www.unidata.ucar.edu/blogs/developer/entry/compression_by_scaling_and_offfset") for speedup using SIMD (Single Instruction, Multiple Data) described later. The
情報処理装置100は、検索クエリQE1を対象とする検索処理を実行する(ステップS12)。情報処理装置100は、検索クエリQE1を対象として、グラフGR1を用いた図11に示すような検索処理を行うことにより、検索クエリQE1の検索結果を得る。図11に示す検索処理についての詳細は後述する。情報処理装置100は、検索クエリQE1を対象として検索処理を行うことにより、検索数のノードを検索クエリQE1の近傍のノードとして抽出する。
The
情報処理装置100は、検索クエリQE1を対象とする検索処理において、各ノードのうち、所定のノードをグラフGR1の検索の開始点(起点)となるノード(以下「起点ノード」ともいう)として選択する。例えば、情報処理装置100は、起点ノードを、木構造のインデックス等の所定のインデックスを用いて選択する。図1の例では、情報処理装置100は、起点ノードとして、ノードN7を選択するものとする。なお、図1では説明を簡単にするために、所定のインデックスを用いてノードN7のみを起点ノードとして選択する場合を示すが、情報処理装置100は、複数のノードを起点ノードとして選択してもよいし、ランダム等の様々な方法により起点ノードを選択してもよい。
In a search process targeting search query QE1,
ここで、情報処理装置100は、検索クエリQE1を対象とする検索処理において、一のノードからのエッジが連結されたノード(以下「接続ノード」ともいう)と検索クエリとの距離を並列化して算出する(ステップS13)。図1では、情報処理装置100は、一括処理情報LT1に示すように、ノードN7からのエッジが連結されたノード(接続ノード)であるノードN9、N12、N54、N85等については、検索クエリQE1との距離を並列化して算出する。
Here, in the search process targeting the search query QE1, the
例えば、ノードN9は、ノード情報INF1に示すように、第1サブベクトルがコードブックCD12、第2サブベクトルがコードブックCD23、第3サブベクトルがコードブックCD35、及び第4サブベクトルがコードブックCD47に対応付けられていることを示す。なお、変数CDのサイズはコードブックのサイズにより決定されるので、例えばコードブックサイズが16であれば、変数CDは4ビットで良いことになり、大幅なデータの圧縮が可能である。そのため、情報処理装置100は、コードブックCD12の距離DS12、コードブックCD23の距離DS23、コードブックCD35の距離DS35、及びコードブックCD47の距離DS47を用いて、ノードN9と、検索クエリQE1との距離を算出する。例えば、情報処理装置100は、コードブックCD12の距離DS12、コードブックCD23の距離DS23、コードブックCD35の距離DS35、及びコードブックCD47の距離DS47の合計を、ノードN9と検索クエリQE1との距離として算出する。
For example, as shown in the node information INF1, the node N9 indicates that the first subvector corresponds to the codebook CD12, the second subvector corresponds to the codebook CD23, the third subvector corresponds to the codebook CD35, and the fourth subvector corresponds to the codebook CD47. Note that the size of the variable CD is determined by the size of the codebook, so if the codebook size is 16, for example, the variable CD can be 4 bits, which allows for significant data compression. Therefore, the
例えば、ノードN12は、ノード情報INF2に示すように、第1サブベクトルがコードブックCD14、第2サブベクトルがコードブックCD29、第3サブベクトルがコードブックCD31、及び第4サブベクトルがコードブックCD45に対応付けられていることを示す。例えば、情報処理装置100は、コードブックCD14の距離DS14、コードブックCD29の距離DS29、コードブックCD31の距離DS31、及びコードブックCD45の距離DS45の合計を、ノードN12と検索クエリQE1との距離として算出する。同様に、情報処理装置100は、ノードN54のノード情報INF3を用いて、ノードN54と検索クエリQE1との距離を算出し、ノードN85のノード情報INF4を用いて、ノードN85と検索クエリQE1との距離を算出する。
For example, as shown in node information INF2, node N12 indicates that the first subvector corresponds to codebook CD14, the second subvector corresponds to codebook CD29, the third subvector corresponds to codebook CD31, and the fourth subvector corresponds to codebook CD45. For example, the
例えば、情報処理装置100は、SIMDの演算に関する並列化により、ノードN9、N12、N54、N85の各々と検索クエリQE1との距離を一括して算出する。これにより、情報処理装置100は、距離計算を並列化することにより、距離計算を高速化することでき、効率的な検索処理を可能にすることができる。
For example, the
なお、図1では説明を簡単にするために、4つのノードを対象として距離を並列化して算出する場合を示すが、並列化される数は、情報処理装置100の仕様に基づいて決定される。例えば、情報処理装置100がSIMDにより一括して処理できる数(「一括処理可能単位」ともいう)が「4」である場合、図1と同様の処理となるが、SIMDにより一括して処理できる数(一括処理可能単位)が「16」である場合、情報処理装置100は、16個のノードを対象として距離を並列化して算出する。また、一括処理可能単位が「32」である場合、情報処理装置100は、32個のノードを対象として距離を並列化して算出する。このように、情報処理装置100は、SIMDにより一括して処理できる数(一括処理可能単位)に対応する数のノードの距離計算を一括して行うことにより、効率的な検索処理を可能にすることができる。
Note that, for the sake of simplicity, FIG. 1 shows a case where distances are calculated in parallel for four nodes, but the number of nodes to be parallelized is determined based on the specifications of the
情報処理装置100は、上記のように複数のノードの距離計算を並列化して行いながら、検索クエリQE1を対象として、グラフGR1を用いた図11に示すような検索処理を行うことにより、検索数のノードを検索クエリQE1の近傍のノードとして抽出する。
The
上述のように、情報処理装置100は、ベクトル量子化された各ノードのベクトルと検索クエリとの間の近似距離(第1距離)を算出して、第1距離を用いて検索処理を行う事により、効率的な検索処理を可能にすることができる。また、情報処理装置100は、並列化可能な数のノードの距離計算を一括して行うことにより、効率的な検索処理を可能にすることができる。上記のように、情報処理装置100は、グラフのノードの複数の接続ノードとの近似距離を一括して計算することにより、限定されたメモリ領域(ルックアップテーブル)を繰り返し利用する(メモリキャッシュにのる)ので高速化が可能である。
As described above, the
また、図1の例では、情報処理装置100は、直積量子化により分割したベクトルを用いて検索処理を行うことにより、ベクトルを分割せずに検索処理を行う場合に比べて、より効率的な検索処理を可能にすることができる。例えば、情報処理装置100は、直積量子化により短いベクトル間の距離を算出することとなり、距離計算の対象となるベクトルのサイズを小さくできる。また、情報処理装置100は、距離計算時に利用するルックアップテーブルによりアクセスするメモリ空間を、分割されたサブベクトルのルックアップテーブルに限定することができる。情報処理装置100は、直積量子化により検索精度の低下を抑制しつつ、ベクトルサイズを削減することができる。なお、図1では、直積量子化が行われた場合の処理を説明したが、直積量子化が行われた場合は一例に過ぎず、情報処理装置100は、直積量子化を行われてないベクトルを用いて検索処理を行ってもよい。
In the example of FIG. 1, the
〔1-1-1.その他〕
上述した処理は一例に過ぎず、情報処理装置100は、効率的な検索処理の為に様々な情報や手法を用いて、検索処理を行ってもよい。この点について、各事項について詳述する。
[1-1-1. Others]
The above-described process is merely an example, and the
(エッジ(接続ノード)の格納態様)
各ノードに連結されるエッジ(接続ノード)の情報について、ノードでのエッジ(接続ノード)の格納態様(格納方法)には、例えば以下の第1格納態様及び第2格納態様の2種類が考えられるため、格納態様については、利用形態によって選択されてもよい。
(Storage of edges (connection nodes))
Regarding information on edges (connecting nodes) connected to each node, there are two possible storage modes (storage methods) for the edges (connecting nodes) at the node, for example, a first storage mode and a second storage mode as described below, and the storage mode may be selected depending on the usage pattern.
例えば、第1格納態様としては、各ノードには接続ノード(オブジェクト)のIDを対応付けて格納し、別のテーブルに直積量子化されたオブジェクトの情報を格納してもよい。例えば、図7及び図8に示すデータの格納態様が第1格納態様に対応する。第1格納態様の場合、メモリ使用量を削減できる。 For example, in a first storage mode, each node may be stored in association with the ID of the connecting node (object), and information on the object that has been subjected to the Cartesian product quantization may be stored in a separate table. For example, the data storage modes shown in Figures 7 and 8 correspond to the first storage mode. With the first storage mode, memory usage can be reduced.
また、例えば、第2格納態様としては、各ノードに直に量子化されたオブジェクトを持つ。第2格納態様の場合、あるノードの接続ノード(オブジェクト)が量子化された情報を各ノードに対応付けて記憶する。例えば、ノードN7の接続ノードであるノードN9、N12、N54、N85の各々の量子化された情報(図2中のノード情報INF1~INF4)がノードN7に対応付けて記憶されるデータの格納態様が第2格納態様に対応する。第2格納態様の場合、検索時にシーケンシャルにオブジェクトをアクセスするため速度低下が発生を抑制することができる。 In addition, for example, in the second storage mode, each node has a quantized object directly. In the case of the second storage mode, a connection node (object) of a certain node stores quantized information in association with each node. For example, the second storage mode corresponds to a data storage mode in which the quantized information (node information INF1 to INF4 in FIG. 2) of each of nodes N9, N12, N54, and N85, which are connection nodes of node N7, is stored in association with node N7. In the case of the second storage mode, objects are accessed sequentially during a search, so speed reduction can be suppressed.
(ルックアップテーブル)
上述した例では、分割したサブベクトルごとに個別にクラスタリングし、個々にルックアップテーブル(コードブック情報)を生成する場合を示したが、この場合に限らず、ルックアップテーブルについては任意の態様であってもよい。
(Lookup table)
In the above example, clustering is performed for each divided sub-vector, and a lookup table (codebook information) is generated for each sub-vector. However, this is not limited to the above case, and the lookup table may take any form.
例えば、全てのサブベクトルに対してクラスタリングし、一つのルックアップテーブルが生成されてもよい。上述した例では、例えば、第1サブベクトル、第2サブベクトル、第3サブベクトル、及び第4サブベクトルの4つのサブベクトル全体を対象にクラスタリングし、一つのルックアップテーブルが生成されてもよい。 For example, all subvectors may be clustered and one lookup table may be generated. In the above example, all four subvectors, the first subvector, the second subvector, the third subvector, and the fourth subvector, may be clustered and one lookup table may be generated.
また、個々のサブベクトルを部分的にマージして複数のクラスごとに、ルックアップテーブルが生成されてもよい。例えば、分散が類似しているサブベクトルをマージして複数のクラスを形成し、複数のクラスごとに、ルックアップテーブルが生成されてもよい。上述した例では、例えば、第1サブベクトル及び第3サブベクトルの2つのサブベクトの分散が類似し、第2サブベクトル及び第4サブベクトルの2つのサブベクトの分散が類似している場合、第1サブベクトル及び第3サブベクトルをマージして第1クラスとし、第2サブベクトル及び第4サブベクトルをマージして第2クラスとしてもよい。この場合、第1クラスのルックアップテーブル(コードブック情報)と、第2クラスのルックアップテーブル(コードブック情報)との2つのルックアップテーブルが生成されてもよい。 Also, individual subvectors may be partially merged to generate a lookup table for each of multiple classes. For example, subvectors with similar variances may be merged to form multiple classes, and a lookup table may be generated for each of the multiple classes. In the above example, for example, if the variances of two subvectors, the first subvector and the third subvector, are similar, and the variances of two subvectors, the second subvector and the fourth subvector, are similar, the first subvector and the third subvector may be merged to form the first class, and the second subvector and the fourth subvector may be merged to form the second class. In this case, two lookup tables may be generated: a lookup table (codebook information) for the first class and a lookup table (codebook information) for the second class.
(転置)
上述したデータの保持は一例に過ぎず、情報処理装置100は、効率的なデータ参照等が可能となるように、種々の態様によりデータを保持してもよい。例えば、情報処理装置100は、転置したデータを保持してもよい。この点について、図3を用いて説明する。図3は、第1の実施形態に係るデータの一例を示す図である。
(Transpose)
The above-mentioned data storage is merely an example, and the
例えば、ノード情報INF1~INF4に示すようにデータを保持し、ノード情報INF1~INF4を順次処理した場合、図2のステップS14に示すように、ルックアップテーブルであるコードブック情報TB1~TB4を繰り返し参照することとなる。 For example, if data is stored as shown in the node information INF1 to INF4 and the node information INF1 to INF4 is processed sequentially, the codebook information TB1 to TB4, which are lookup tables, will be repeatedly referenced as shown in step S14 of FIG. 2.
そこで、ステップS15に示すように、ノード情報INF1~INF4を転置した転置データTR1~TR4が生成される。例えば、情報処理装置100は、ノード情報INF1~INF4を転置した転置データTR1~TR4を生成する。
Therefore, as shown in step S15, transposed data TR1 to TR4 are generated by transposing the node information INF1 to INF4. For example, the
図3では、ノード情報INF1~INF4のうち、ノードN9、N12、N54、N85の第1サブベクトルに対応するコードブックの一覧である第1データTR1が生成される。具体的には、ノードN9の第1サブベクトルに対応するコードブックCD12、ノードN12の第1サブベクトルに対応するコードブックCD14、ノードN54の第1サブベクトルに対応するコードブックCD13、及びノードN85の第1サブベクトルに対応するコードブックCD18の一覧である第1データTR1が生成される。 In FIG. 3, first data TR1 is generated, which is a list of codebooks corresponding to the first subvectors of nodes N9, N12, N54, and N85 from among the node information INF1 to INF4. Specifically, first data TR1 is generated, which is a list of codebooks CD12 corresponding to the first subvector of node N9, codebook CD14 corresponding to the first subvector of node N12, codebook CD13 corresponding to the first subvector of node N54, and codebook CD18 corresponding to the first subvector of node N85.
同様に、ノード情報INF1~INF4のうち、ノードN9、N12、N54、N85の第2サブベクトルに対応するコードブックの一覧である第2データTR2が生成される。また、ノード情報INF1~INF4のうち、ノードN9、N12、N54、N85の第3サブベクトルに対応するコードブックの一覧である第3データTR3が生成される。ノード情報INF1~INF4のうち、ノードN9、N12、N54、N85の第4サブベクトルに対応するコードブックの一覧である第4データTR4が生成される。 Similarly, second data TR2 is generated which is a list of codebooks corresponding to the second subvectors of nodes N9, N12, N54, and N85 from among the node information INF1 to INF4. Third data TR3 is generated which is a list of codebooks corresponding to the third subvectors of nodes N9, N12, N54, and N85 from among the node information INF1 to INF4. Fourth data TR4 is generated which is a list of codebooks corresponding to the fourth subvectors of nodes N9, N12, N54, and N85 from among the node information INF1 to INF4.
なお、各転置データTR1~TR4の一覧のうち、何番目のデータがどのノードに対応するかの対応付けを示す対応付情報が生成される。図3の例では、各転置データTR1~TR4の一覧のうち、1番目(最初)のデータがノードN9に対応し、2番目のデータがノードN12に対応し、3番目のデータがノードN54に対応し、4番目(最後)のデータがノードN85に対応することを示す対応付情報が生成される。情報処理装置100は、対応付情報を参照することにより、各転置データTR1~TR4の一覧の各データが、どのノードに対応するかを特定することができる。例えば、情報処理装置100は、対応付情報を生成する。
In addition, correspondence information is generated that indicates which data in the list of each of the transposed data TR1 to TR4 corresponds to which node. In the example of FIG. 3, correspondence information is generated that indicates that the first (initial) data in the list of each of the transposed data TR1 to TR4 corresponds to node N9, the second data corresponds to node N12, the third data corresponds to node N54, and the fourth (last) data corresponds to node N85. By referring to the correspondence information, the
情報処理装置100は、ノード情報INF1~INF4を転置した転置データTR1~TR4を用いて処理を行う。例えば、情報処理装置100は、転置データTR1を用いてルックアップテーブルを参照する場合、コードブック情報TB1のみを参照することとなり、1つのコードブック情報TB1のみを参照することとなる。同様に、情報処理装置100は、転置データTR2を用いてルックアップテーブルを参照する場合、コードブック情報TB2のみを参照することとなり、1つのコードブック情報TB2のみを参照することとなる。転置データTR3、TR4についても同様に1つのコードブック情報のみを参照することとなる。これにより、情報処理装置100は、効率的にデータを参照することができるため、効率的な検索処理を可能にすることができる。
The
このように、一括距離計算時にサブクラス(サブベクトル等)ごとのルックアップテーブルの参照するように、ノードの近傍オブジェクト(接続ノード)のデータを転置し、サブクラスごとにまとめ上げた順番でデータをノードにもつことで、参照の局所性がさらに高まり、高速化が可能となる。 In this way, just as a lookup table for each subclass (subvector, etc.) is referenced when calculating distances in bulk, the data of the node's neighboring objects (connecting nodes) is transposed, and the nodes store the data in the order in which they were compiled for each subclass, further improving the locality of reference and enabling faster calculations.
なお、図3では説明を簡単にするために、4つのノードを対象として転置データを生成する場合を示すが、転置データを生成する単位(ノードの数)は、情報処理装置100の仕様に基づいて決定される。例えば、情報処理装置100の一括処理可能単位が「4」である場合、図3と同様の処理となるが、一括処理可能単位が「16」である場合、16個のノードを一つの単位として転置データが生成される。また、一括処理可能単位が「32」である場合、32個のノードを一つの単位として転置データが生成される。このように、情報処理装置100がSIMDにより一括して処理できる数(一括処理可能単位)に応じて生成される転置データを用いることで、情報処理装置100は、効率的にデータを参照することができるため、効率的な検索処理を可能にすることができる。
Note that, for the sake of simplicity, FIG. 3 shows a case where transposed data is generated for four nodes, but the unit (number of nodes) for generating the transposed data is determined based on the specifications of the
例えば、上述のような検索処理時の時間の多くは距離計算であるが、距離計算は上記のようなSIMDによる並列計算により高速化を図ることができる。このように距離計算を並列化した場合、オブジェクトデータをフェッチする時間が検索処理を占めることになる。このフェッチ時間を削減することができれば、さらなる高速化が実現される。なお、データをフェッチする時間を削減するにはプリフェッチを行う方法があるが、限界がある。 For example, most of the time during search processing as described above is taken up by distance calculation, but distance calculation can be sped up by parallel calculation using SIMD as described above. When distance calculation is parallelized in this way, the time spent fetching object data takes up the majority of the search processing. If this fetch time can be reduced, further speedups can be achieved. Note that prefetching can be used to reduce the time spent fetching data, but this has limitations.
一方、情報処理装置100は、上述のように参照の局所性を高め、効率的にデータを参照することを可能にすることにより、データのフェッチを抑制し、さらなる高速化を実現することができる。
On the other hand, the
(検索結果)
なお、上述した第2距離(真の距離)による検索結果を返す場合には、以下の第1の方法及び第2の方法の2つの方法が考えられる。
(Search results)
When returning search results based on the above-mentioned second distance (true distance), the following two methods, a first method and a second method, can be considered.
例えば、第1の方法としては、検索数を指定された検索数より多く探索し、探索終了時に、真の距離計算を行って距離でソートし、指定された検索数のオブジェクトを検索結果としてもよい。この場合、情報処理装置100は、指定された検索数(「第1数」ともいう)よりも多い数(「拡張検索数」ともいう)のノードを抽出するように、拡張検索数(「第2数」ともいう)を検索数として設定し、図11に示すような検索処理を行うことにより、拡張検索数のノード、すなわち指定された検索数よりも多い数のノードを近傍候補ノードとして抽出する。そして、情報処理装置100は、近傍候補ノードを対象として、第2距離(真の距離)を算出し、近傍候補ノードのうち、第2距離が短い方から第1数のノードを検索クエリの近傍のノードとして抽出する。
For example, as a first method, a search number greater than the specified search number may be searched, and when the search is completed, true distance calculation is performed to sort by distance, and the specified search number of objects may be used as the search result. In this case, the
また、例えば、第2の方法としては、探索中に、第1距離(近似距離)に基づいて、ノード(オブジェクト)が探索範囲内または検索範囲内に入った場合のみに、第2距離(真の距離)を計算し、近似距離を真の距離で置き換えることで、真の距離による検索結果を返してもよい。 Also, for example, as a second method, during a search, a second distance (true distance) may be calculated based on the first distance (approximate distance) only when a node (object) falls within the search range or the search range, and the approximate distance may be replaced with the true distance, thereby returning search results based on the true distance.
ここでいう、検索範囲は、図11中の「r」により規定される範囲であり、探索範囲は、図11中の検索範囲係数「ε」を用いた「r(1+ε)」により規定される範囲である。例えば、検索範囲に入った場合に第2距離(真の距離)を計算する場合、情報処理装置100は、ノードの第1距離(近似距離)が「r」以下となった場合に、そのノードの第2距離(真の距離)を算出する。また、探索範囲に入った場合に第2距離(真の距離)を計算する場合、情報処理装置100は、ノードの第1距離(近似距離)が「r(1+ε)」以下となった場合に、そのノードの第2距離(真の距離)を算出する。
The search range here is the range defined by "r" in FIG. 11, and the search range is the range defined by "r(1+ε)" using the search range coefficient "ε" in FIG. 11. For example, when calculating the second distance (true distance) when the node is within the search range, the
例えば、精度を高める場合、探索範囲に入った場合を条件としてもよい。また、処理の高速化を求める場合、検索範囲に入った場合を条件としてもよい。なお、上記は一例に過ぎず、いずれを条件とするかは、検索範囲係数「ε」の値や処理の目的などに応じて適宜設定されてもよい。 For example, if accuracy is to be improved, the condition may be when the object falls within the search range. Also, if speed is required, the condition may be when the object falls within the search range. Note that the above is merely an example, and which of the conditions is used may be set appropriately depending on the value of the search range coefficient "ε" and the purpose of the processing.
(ベクトル量子化)
なお、情報処理装置100は、特許文献3に示すように、2段階のベクトル量子化を行ってもよい。そして、情報処理装置100は、下記の式(1)により、検索クエリと各ノードとの距離を算出してもよい。
(Vector quantization)
The
ここで、上記式(1)中の左辺の値は、例えば、検索クエリとノードとの間の二乗距離を示す。また、例えば、上記式(1)中の「x」は、クエリに対応する。また、例えば、上記式(1)中の「y」は、ノードに対応する。また、例えば、上記式(1)の右辺中の「qc(y)」は、「y」の代表ベクトル(セントロイド)を示す。例えば、情報処理装置100は、上記式(1)中の「y」について、ノードのベクトルデータを有しない場合は、各ノードが属する部分領域のセントロイドの数値を用いてもよい。また、例えば、「y-qc(y)」は、残差ベクトルを示す。また、例えば、上記式(1)の右辺中の「qp」は、所定の量子化器(関数)を示す。
Here, the value on the left side of the above formula (1) indicates, for example, the squared distance between the search query and the node. Also, for example, "x" in the above formula (1) corresponds to the query. Also, for example, "y" in the above formula (1) corresponds to the node. Also, for example, "q c (y)" on the right side of the above formula (1) indicates the representative vector (centroid) of "y". For example, when the
また、例えば、上記式(1)の右辺中の「j」は、分割された空間の数であってもよい。例えば、図1の例では、上記式(1)の右辺中の「j」は、分割された空間の数「4」であってもよい。また、例えば、上記式(1)の右辺中の「uj()」は、括弧中のベクトル間の部分残差ベクトルを示す。例えば、情報処理装置100は、上記式(1)を用いて、各部分空間におけるクエリとノードとの間の二乗距離を算出し、合算することにより、クエリとノードとの距離を算出してもよい。
Also, for example, "j" on the right side of the above formula (1) may be the number of divided spaces. For example, in the example of FIG. 1, "j" on the right side of the above formula (1) may be the number of divided spaces, "4". Also, for example, "u j ()" on the right side of the above formula (1) indicates a partial residual vector between the vectors in parentheses. For example, the
〔1-2.情報処理システムの構成〕
図4に示すように、情報処理システム1は、端末装置10と、情報提供装置50と、情報処理装置100とが含まれる。端末装置10と、情報提供装置50と、情報処理装置100とは所定のネットワークNを介して、有線または無線により通信可能に接続される。図4は、第1の実施形態に係る情報処理システムの構成例を示す図である。なお、図4に示した情報処理システム1には、複数台の端末装置10や、複数台の情報提供装置50や、複数台の情報処理装置100が含まれてもよい。
1-2. Configuration of information processing system
As shown in Fig. 4, the
端末装置10は、ユーザによって利用される情報処理装置である。端末装置10は、ユーザによる種々の操作を受け付ける。なお、以下では、端末装置10をユーザと表記する場合がある。すなわち、以下では、ユーザを端末装置10と読み替えることもできる。なお、上述した端末装置10は、例えば、スマートフォンや、タブレット型端末や、ノート型PC(Personal Computer)や、デスクトップPCや、携帯電話機や、PDA(Personal Digital Assistant)等により実現される。
The
情報提供装置50は、ユーザ等に種々の情報提供を行うための情報が格納された情報処理装置である。例えば、情報提供装置50は、ウェブサーバ等の種々の外部装置から収集した文字情報等に基づくオブジェクトIDが格納される。例えば、情報提供装置50は、ユーザ等に画像検索サービスを提供する情報処理装置である。例えば、情報提供装置50は、画像検索サービスを提供するための各情報が格納される。例えば、情報提供装置50は、画像検索サービスの対象となる画像に対応するベクトル情報を情報処理装置100に提供する。また、情報提供装置50は、クエリを情報処理装置100に送信することにより、情報処理装置100からクエリに対応する画像を示すオブジェクトID等を受信する。
The information providing device 50 is an information processing device that stores information for providing various information to users, etc. For example, the information providing device 50 stores object IDs based on character information, etc. collected from various external devices such as web servers. For example, the information providing device 50 is an information processing device that provides an image search service to users, etc. For example, the information providing device 50 stores various pieces of information for providing the image search service. For example, the information providing device 50 provides the
情報処理装置100は、検索サービスを提供するコンピュータである。情報処理装置100は、検索クエリに対応する指定された検索数のオブジェクトを検索結果として提供する。情報処理装置100は、検索対象となるノード(オブジェクト)がエッジで連結されたグラフを用いて、検索クエリの近傍のノード(オブジェクト)を検索結果として提供する。情報処理装置100は、複数のオブジェクトの各々に対応するノード群がエッジにより連結されたグラフを用いて、検索クエリの近傍のノードを検索する検索処理において、所定の基準により選択された複数のノードと検索クエリとの距離を、ベクトル量子化がされた複数のノードのベクトル情報を用いて算出する。
The
例えば、情報処理装置100は、端末装置10からクエリ(検索クエリ)を受信すると、検索クエリに類似する対象(オブジェクト)を検索し、検索結果を端末装置に提供する。また、例えば、情報処理装置100が端末装置に提供するデータは、画像情報等のデータ自体であってもよいし、URL(Uniform Resource Locator)等の対応するデータを参照するための情報であってもよい。また、検索クエリや検索対象(オブジェクト)は、画像、音声、テキストデータなど、如何なる種類のデータであってもよい。
For example, when the
〔1-3.情報処理装置の構成〕
次に、図5を用いて、第1の実施形態に係る情報処理装置100の構成について説明する。図5は、第1の実施形態に係る情報処理装置100の構成例を示す図である。図5に示すように、情報処理装置100は、通信部110と、記憶部120と、制御部130とを有する。なお、情報処理装置100は、情報処理装置100の管理者等から各種操作を受け付ける入力部(例えば、キーボードやマウス等)や、各種情報を表示するための表示部(例えば、液晶ディスプレイ等)を有してもよい。
1-3. Configuration of information processing device
Next, the configuration of the
(通信部110)
通信部110は、例えば、NIC(Network Interface Card)等によって実現される。そして、通信部110は、ネットワーク(例えば図4中のネットワークN)と有線または無線で接続され、端末装置10や情報提供装置50との間で情報の送受信を行う。
(Communication unit 110)
The communication unit 110 is realized by, for example, a network interface card (NIC) etc. The communication unit 110 is connected to a network (for example, network N in FIG. 4 ) by wire or wirelessly, and transmits and receives information between the
(記憶部120)
記憶部120は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。第1の実施形態に係る記憶部120は、図5に示すように、オブジェクト情報記憶部121と、グラフ情報記憶部122と、量子化情報記憶部123と、コードブック情報記憶部124とを有する。
(Memory unit 120)
The
(オブジェクト情報記憶部121)
第1の実施形態に係るオブジェクト情報記憶部121は、オブジェクトに関する各種情報を記憶する。例えば、オブジェクト情報記憶部121は、オブジェクトIDやベクトルデータを記憶する。図6は、第1の実施形態に係るオブジェクト情報記憶部の一例を示す図である。図6に示すオブジェクト情報記憶部121は、「オブジェクトID」、「ベクトル情報」といった項目が含まれる。
(Object information storage unit 121)
The object
「オブジェクトID」は、オブジェクトを識別するための識別情報を示す。また、「ベクトル情報」は、オブジェクトIDにより識別されるオブジェクトに対応するベクトル情報を示す。すなわち、図6の例では、オブジェクトを識別するオブジェクトIDに対して、オブジェクトに対応するベクトルデータ(ベクトル情報)が対応付けられて登録されている。 "Object ID" indicates identification information for identifying an object. Furthermore, "vector information" indicates vector information corresponding to an object identified by an object ID. That is, in the example of FIG. 6, vector data (vector information) corresponding to an object is registered in association with an object ID that identifies the object.
例えば、図6の例では、オブジェクトID「OB1」により識別されるオブジェクト(対象)は、「10,24,51,2・・・」の多次元のベクトル情報が対応付けられることを示す。 For example, in the example of Figure 6, the object (target) identified by the object ID "OB1" is associated with multi-dimensional vector information of "10, 24, 51, 2...".
なお、オブジェクト情報記憶部121は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
The object
(グラフ情報記憶部122)
第1の実施形態に係るグラフ情報記憶部122は、グラフに関する各種情報を記憶する。例えば、グラフ情報記憶部122は、生成したグラフを記憶する。図7は、第1の実施形態に係るグラフ情報記憶部の一例を示す図である。図7に示すグラフ情報記憶部122は、「ノードID」、「オブジェクトID」、および「接続ノード情報」といった項目を有する。
(Graph information storage unit 122)
The graph
「ノードID」は、グラフにおける各ノード(対象)を識別するための識別情報を示す。また、「オブジェクトID」は、オブジェクトを識別するための識別情報を示す。なお、ノードIDとオブジェクトIDが共通である場合、「ノードID」にオブジェクトIDが記憶され、グラフ情報記憶部122に「オブジェクトID」の項目は含まれてなくてもよい。例えば、オブジェクトIDとノードIDとして用いる場合、「ノードID」にオブジェクトIDが記憶され、グラフ情報記憶部122に「オブジェクトID」の項目は含まれてなくてもよい。
"Node ID" indicates identification information for identifying each node (object) in the graph. Also, "object ID" indicates identification information for identifying an object. Note that if the node ID and object ID are the same, the object ID is stored in "node ID", and the graph
また、「接続ノード情報」は、対応するノードから辿ることができるノード(参照先のノード)に関する情報を示す。例えば、「接続ノード情報」には、「参照先」といった情報が含まれる。「参照先」は、エッジにより連結され、そのノードから辿ることができる参照先(ノード)を識別するための情報を示す。すなわち、図7の例では、ノードを識別するノードID(オブジェクトID)に対して、そのノードからエッジにより辿ることができる参照先(ノード)が対応付けられて登録されている。なお、「接続ノード情報」には、参照先に接続されるエッジを識別するための情報(エッジID)等が含まれてもよい。 Furthermore, "connection node information" indicates information about nodes (reference nodes) that can be traced from the corresponding node. For example, "connection node information" includes information such as "reference destination." "Reference destination" indicates information for identifying a reference destination (node) that is connected by an edge and can be traced from that node. That is, in the example of Figure 7, a node ID (object ID) that identifies a node is associated with a reference destination (node) that can be traced from that node by an edge and is registered. Note that "connection node information" may also include information (edge ID) for identifying an edge connected to a reference destination.
図7の例では、ノードID「N1」により識別されるノード(ノードN1)は、オブジェクトID「OB1」により識別されるオブジェクト(対象)に対応することを示す。また、ノードN1からは、ノードID「N4」により識別されるノード(ノードN4)にエッジが連結されており、ノードN1からノードN4へ辿ることができることを示す。 In the example of Figure 7, the node (node N1) identified by the node ID "N1" corresponds to the object (target) identified by the object ID "OB1". In addition, an edge is connected from node N1 to the node (node N4) identified by the node ID "N4", indicating that it is possible to trace from node N1 to node N4.
また、ノードID「N2」により識別されるノード(ノードN2)は、オブジェクトID「OB2」により識別されるオブジェクト(対象)に対応することを示す。また、ノードN2からは、ノードID「N6」により識別されるノード(ノードN6)にエッジが連結されており、ノードN2からノードN6へ辿ることができることを示す。 This also indicates that the node identified by the node ID "N2" (node N2) corresponds to the object (target) identified by the object ID "OB2". In addition, an edge is connected from node N2 to the node identified by the node ID "N6" (node N6), indicating that it is possible to trace from node N2 to node N6.
また、ノードID「N7」により識別されるノード(ノードN7)は、オブジェクトID「OB7」により識別されるオブジェクト(対象)に対応することを示す。また、ノードN7からは、ノードN9、N12、N54、N85にエッジが連結されており、ノードN2からノードN9、N12、N54、N85の各々へ辿ることができることを示す。 This also indicates that the node identified by the node ID "N7" (node N7) corresponds to the object (target) identified by the object ID "OB7". In addition, edges are connected from node N7 to nodes N9, N12, N54, and N85, indicating that it is possible to trace from node N2 to each of nodes N9, N12, N54, and N85.
なお、グラフ情報記憶部122は、上記に限らず、目的に応じて種々の情報を記憶してもよい。例えば、グラフ情報記憶部122は、各ノード(ベクトル)間を連結するエッジの長さが記憶されてもよい。すなわち、グラフ情報記憶部122は、各ノード(ベクトル)間の距離を示す情報が記憶されてもよい。なお、グラフ情報記憶部122は、上記に限らず、種々のデータ構造によりグラフ情報を記憶してもよい。
The graph
また、グラフは、クエリを入力とし、グラフ中のエッジを辿ることによりノードを探索し、クエリに類似するノードを抽出し出力するプログラムモジュールを含んでもよい。すなわち、グラフは、グラフを用いて検索処理を行うプログラムモジュールとしての利用が想定されるものであってもよい。例えば、グラフGR1は、クエリとしてベクトルデータが入力された場合に、そのベクトルデータに類似するベクトルデータに対応するノードをグラフ中から抽出し、出力するプログラムであってもよい。例えば、グラフGR1は、クエリ画像に対応する類似画像を検索するプログラムモジュールとして利用されるデータであってもよい。例えば、グラフGR1は、入力されたクエリに基づいて、グラフにおいてそのクエリに類似するノードを抽出し、出力するよう、コンピュータを機能させる。 The graph may also include a program module that takes a query as input, searches for nodes by tracing edges in the graph, and extracts and outputs nodes similar to the query. That is, the graph may be intended to be used as a program module that performs search processing using the graph. For example, the graph GR1 may be a program that, when vector data is input as a query, extracts from the graph nodes corresponding to vector data similar to the vector data, and outputs the nodes. For example, the graph GR1 may be data used as a program module that searches for similar images corresponding to a query image. For example, the graph GR1 causes a computer to function to extract and output nodes in the graph that are similar to the query, based on the input query.
(量子化情報記憶部123)
第1の実施形態に係る量子化情報記憶部123は、割当処理に関する各種情報を記憶する。図8は、第1の実施形態に係る量子化情報記憶部の一例を示す図である。図8の例では、量子化情報記憶部123には、「ノードID」、「オブジェクトID」、および「量子化情報」といった項目を有する。
(Quantization information storage unit 123)
The quantization
「ノードID」は、グラフにおける各ノード(対象)を識別するための識別情報を示す。また、「オブジェクトID」は、オブジェクトを識別するための識別情報を示す。なお、ノードIDとオブジェクトIDが共通である場合、「ノードID」にオブジェクトIDが記憶され、量子化情報記憶部123に「オブジェクトID」の項目は含まれてなくてもよい。
"Node ID" indicates identification information for identifying each node (object) in the graph. Also, "object ID" indicates identification information for identifying an object. Note that if the node ID and object ID are the same, the object ID is stored in "node ID", and the quantization
また、「量子化情報」は、各ノード(オブジェクト)の量子化されたベクトルの情報を示す。例えば、「量子化情報」には、「要素」、「コードブックID」といった情報が含まれる。「要素」は、対応するオブジェクトのベクトルにおける配置を示す。図8の例では、「要素」には、「#1」、「#2」、「#3」、「#4」が含まれる場合を示す。この場合、各ノード(オブジェクト)のベクトルは4分割され、各分割された部分ベクトルがコードブックにより量子化されることを示す。なお、分割数は4に限らず、例えば分割数が6の場合、「要素」には、「#1」、「#2」、「#3」、「#4」、「#5」、「#6」が含まれる。「コードブックID」は、各要素(部分ベクトル)に対応するコードブックを識別するための情報を示す。 The "quantization information" indicates information on the quantized vector of each node (object). For example, the "quantization information" includes information such as "element" and "codebook ID". "Element" indicates the arrangement of the vector of the corresponding object. In the example of FIG. 8, "element" includes "#1", "#2", "#3", and "#4". In this case, the vector of each node (object) is divided into four, and each divided partial vector is quantized by the codebook. Note that the number of divisions is not limited to four, and for example, if the number of divisions is six, "element" includes "#1", "#2", "#3", "#4", "#5", and "#6". "Codebook ID" indicates information for identifying the codebook corresponding to each element (partial vector).
図8の例では、ノードN9(オブジェクトOB9)のベクトルは、4分割された部分ベクトルのうち、先頭の部分ベクトルがコードブックID「CD12」により識別されるコードブック(コードブックCD12)により量子化されることを示す。また、ノードN9(オブジェクトOB9)のベクトルは、4分割された部分ベクトルのうち、先頭から2番目の部分ベクトルがコードブックID「CD23」により識別されるコードブック(コードブックCD23)により量子化されることを示す。 In the example of FIG. 8, the vector of node N9 (object OB9) indicates that of the four divided partial vectors, the first partial vector is quantized by a codebook (codebook CD12) identified by a codebook ID "CD12". Also, the vector of node N9 (object OB9) indicates that of the four divided partial vectors, the second from the top is quantized by a codebook (codebook CD23) identified by a codebook ID "CD23".
また、ノードN9(オブジェクトOB9)のベクトルは、4分割された部分ベクトルのうち、先頭から3番目の部分ベクトルがコードブックID「CD35」により識別されるコードブック(コードブックCD35)により量子化されることを示す。また、ノードN9(オブジェクトOB9)のベクトルは、4分割された部分ベクトルのうち、先頭から4番目(すなわち最後尾)の部分ベクトルがコードブックID「CD47」により識別されるコードブック(コードブックCD47)により量子化されることを示す。 The vector of node N9 (object OB9) indicates that the third partial vector from the top of the four partial vectors is quantized by a codebook (codebook CD35) identified by a codebook ID "CD35". The vector of node N9 (object OB9) indicates that the fourth partial vector from the top (i.e., the last partial vector) of the four partial vectors is quantized by a codebook (codebook CD47) identified by a codebook ID "CD47".
なお、量子化情報記憶部123は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
The quantization
(コードブック情報記憶部124)
第1の実施形態に係るコードブック情報記憶部124は、コードブックに関する各種情報を記憶する。例えば、コードブック情報記憶部124は、コードブックIDや各コードブックのベクトル情報を記憶する。図9は、第1の実施形態に係るコードブック情報記憶部の一例を示す図である。図9の例では、コードブック情報記憶部124は、各コードブックとベクトルとの対応付けを示すルックアップテーブルを記憶する場合を一例として示す。
(Codebook Information Storage Unit 124)
The codebook
コードブック情報記憶部124は、4分割された部分ベクトルのうち、先頭の部分ベクトルを量子化するために用いるコードブック情報TB1、4分割された部分ベクトルのうち、先頭から2番目の部分ベクトルを量子化するために用いるコードブック情報TB2を記憶する。また、コードブック情報記憶部124は、4分割された部分ベクトルのうち、先頭から3番目の部分ベクトルを量子化するために用いるコードブック情報TB3、4分割された部分ベクトルのうち、先頭から4番目(すなわち最後尾)の部分ベクトルを量子化するために用いるコードブック情報TB4等を記憶する。
The codebook
図9の例では、コードブック情報TB1には、コードブックID「CD11」により識別されるコードブック(コードブックCD11)やコードブックID「CD12」により識別されるコードブック(コードブックCD12)等のコードブック情報を記憶する。例えば、コードブックCD11は、「5,13・・・」の多次元のベクトル情報が対応付けられることを示す。また、コードブックCD12は、「27,51・・・」の多次元のベクトル情報が対応付けられることを示す。 In the example of FIG. 9, codebook information TB1 stores codebook information such as a codebook identified by a codebook ID "CD11" (codebook CD11) and a codebook identified by a codebook ID "CD12" (codebook CD12). For example, codebook CD11 indicates that it is associated with multidimensional vector information of "5, 13...". Also, codebook CD12 indicates that it is associated with multidimensional vector information of "27, 51...".
なお、コードブック情報記憶部124は、上記に限らず、目的に応じて種々の情報を記憶してもよい。例えば、コードブック情報記憶部124は、各コードブックと検索クエリとの差分(距離)を示す情報を記憶してもよい。
The codebook
(制御部130)
図5の説明に戻って、制御部130は、コントローラ(controller)であり、例えば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)やGPU(Graphics Processing Unit)等によって、情報処理装置100内部の記憶装置に記憶されている各種プログラム(情報処理プログラムの一例に相当)がRAMを作業領域として実行されることにより実現される。また、制御部130は、コントローラであり、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実現される。
(Control unit 130)
Returning to the explanation of Fig. 5, the
図5に示すように、制御部130は、取得部131と、生成部132と、検索処理部133と、提供部134とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部130の内部構成は、図5に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
As shown in FIG. 5, the
(取得部131)
取得部131は、各種情報を取得する。例えば、取得部131は、記憶部120から各種情報を取得する。例えば、取得部131は、オブジェクト情報記憶部121や、グラフ情報記憶部122や、量子化情報記憶部123や、コードブック情報記憶部124等から各種情報を取得する。また、取得部131は、各種情報を外部の情報処理装置から取得する。取得部131は、端末装置10や情報提供装置50から各種情報を取得する。
(Acquisition unit 131)
The
取得部131は、グラフを取得する。例えば、情報処理装置100は、図1中の空間情報SP1を取得してもよい。例えば、情報処理装置100は、情報提供装置50等の外部装置からグラフを取得してもよい。
The
取得部131は、データ検索の対象となる複数のオブジェクトに対する検索クエリを取得する。例えば、取得部131は、検索クエリQE1に関する情報を取得する。例えば、取得部131は、画像検索に関する検索クエリを取得する。例えば、取得部131は、利用する端末装置10からクエリを取得する。例えば、取得部131は、利用する端末装置10からクエリを受け付けた情報提供装置50からクエリを取得する。
The
(生成部132)
生成部132は、各種情報を生成する。例えば、生成部132は、記憶部120に記憶された情報(データ)から各種情報(データ)を生成する。例えば、生成部132は、オブジェクト情報記憶部121や、グラフ情報記憶部122や、量子化情報記憶部123や、コードブック情報記憶部124等に記憶された情報(データ)から各種情報を生成する。
(Generation unit 132)
The generating
生成部132は、グラフ情報記憶部122に示すようなグラフを生成してもよい。例えば、生成部132は、空間情報SP1を生成する。また、生成部132は、量子化情報記憶部123に示すようなベクトル量子化に関する情報を生成してもよい。例えば、生成部132は、ノードN1(オブジェクトOB1)等の各オブジェクトがベクトル量子化された情報を生成する。また、生成部132は、コードブック情報記憶部124に示すようなコードブックに関する情報を生成してもよい。生成部132は、コードブックのルックアップテーブルを生成してもよい。例えば、生成部132は、コードブック情報TB1~TB4のような、コードブックに関する情報を生成する。なお、情報処理装置100がグラフ情報記憶部122、量子化情報記憶部123、コードブック情報記憶部124に示す情報を、情報提供装置50等の外部装置から取得する場合、情報処理装置100は、生成部132を有しなくてもよい。
The generating
(検索処理部133)
検索処理部133は、オブジェクトに関する検索サービスを提供する。検索処理部133は、各種情報を探索する。検索処理部133は、各種情報を検索する。例えば、検索処理部133は、グラフを探索することにより、オブジェクトを検索する。例えば、検索処理部133は、取得部131により取得されたクエリが取得された場合、グラフを探索することにより、クエリに類似するオブジェクトを検索する。例えば、検索処理部133は、グラフを探索することにより、クエリに類似するオブジェクトを抽出する。例えば、検索処理部133は、図11に示すような処理手順に基づいて、グラフを探索することにより、クエリに類似するオブジェクトを抽出する。なお、情報処理装置100は、検索サービスを提供しない場合、検索処理部133を有しなくてもよい。
(Search Processing Unit 133)
The
検索処理部133は、検索処理において各種情報を選択する。検索処理部133は、検索処理において各種情報を抽出する。検索処理部133は、検索処理において各種情報を判定する。検索処理部133は、検索処理において各種情報を決定する。検索処理部133は、検索処理において各種情報を変更する。検索処理部133は、検索処理において各種情報を更新する。
The
検索処理部133は、複数のオブジェクトの各々に対応するノード群がエッジにより連結されたグラフを用いて、検索クエリの近傍のノードを検索する検索処理において、所定の基準により選択された複数のノードと検索クエリとの距離を、ベクトル量子化がされた複数のノードのベクトル情報を用いて算出する。検索処理部133は、複数のノードと検索クエリとの距離の算出を並列化して一括で行う。検索処理部133は、情報処理装置100の仕様に基づいて決定される一括処理数の複数のノードと検索クエリとの距離の算出を並列処理する。
In a search process in which a group of nodes corresponding to each of a plurality of objects are connected by edges to search for nodes near the search query, the
検索処理部133は、複数のノードの各々が対応する代表ベクトルに対応付けられたコードブックを用いて、複数のノードと検索クエリとの距離を算出する。検索処理部133は、一のノードからのエッジが連結された複数のノードと検索クエリとの距離を算出する。検索処理部133は、複数のノードと複数のノードの各々が対応付けられた代表ベクトルを示す参照用情報が一のノードに対応付けて記憶されたノード情報を用いて、複数のノードと検索クエリとの距離を算出する。
The
検索処理部133は、直積量子化により、各々が複数の部分ベクトルに分割された複数のノードのベクトル情報を用いて、複数のノードと検索クエリとの距離を算出する。検索処理部133は、複数のノードの各々が分割された複数の部分ベクトルの分割位置ごとのベクトルに対応する代表ベクトルに対応付けられた複数のコードブックを用いて、複数のノードと検索クエリとの距離を算出する。検索処理部133は、複数のノードと複数のノードの各々の複数の部分ベクトルの各々が対応付けられた代表ベクトルを示す参照用情報が一のノードに対応付けて記憶されたノード情報を用いて、複数のノードと検索クエリとの距離を算出する。
The
検索処理部133は、複数のノードの各々に、各ノードの複数の部分ベクトルの各々が対応付けられた代表ベクトルの一覧が対応付けられた参照用情報を用いて、複数のノードと検索クエリとの距離を算出する。検索処理部133は、複数のノードの各々の複数の部分ベクトルの各々が対応する代表ベクトルが、分割位置ごとに一覧で並ぶ転置情報と、複数のノードの各々が一覧で対応する位置を示す対応付情報とを含む参照用情報を用いて、複数のノードと検索クエリとの距離を算出する。検索処理部133は、複数のノードの各々の複数の部分ベクトルの各々が対応する代表ベクトルに対応付けられた一のコードブックを用いて、複数のノードと検索クエリとの距離を算出する。
The
検索処理部133は、検索処理において処理対象となったノードのうち、所定のノードを対象として、ベクトル量子化がされた距離である第1距離とは異なり、ベクトル量子化がされていない第2距離を算出する。検索処理部133は、検索処理において検索クエリの近傍のノードとして抽出するノードの第1数よりも多い数である第2数のノードを近傍候補ノードとして抽出し、近傍候補ノードを対象として第2距離を算出する。検索処理部133は、近傍候補ノードのうち、第2距離が短い方から第1数のノードを検索クエリの近傍のノードとして抽出する。
The
検索処理部133は、第1距離が所定の閾値以内であるノードを対象として第2距離を算出する。検索処理部133は、近傍のノードとして抽出する対象範囲を示す検索範囲内のノードを対象として第2距離を算出する。検索処理部133は、検索処理の対象範囲を示す探索範囲内のノードを対象として第2距離を算出する。
The
(提供部134)
提供部134は、各種情報を提供する。例えば、提供部134は、端末装置10や情報提供装置50に各種情報を送信する。例えば、提供部134は、検索クエリに対応するオブジェクトIDを検索結果として提供する。提供部134は、検索結果を端末装置10へ送信する。提供部134は、検索処理部133により検索されたオブジェクトIDを、検索クエリに対応する検索結果として端末装置10へ提供する。
(Providing Unit 134)
The providing
また、提供部134は、検索処理部133により検索されたオブジェクトIDを情報提供装置50へ提供してもよい。例えば、提供部134は、検索処理部133が検索により抽出したオブジェクトIDを情報提供装置50へ提供する。提供部134は、検索処理部133により抽出されたオブジェクトIDをクエリに対応するベクトルを示す情報として情報提供装置50に提供する。
The providing
〔1-4.情報処理のフロー〕
次に、図10を用いて、第1の実施形態に係る情報処理システム1による情報処理の手順について説明する。図10は、第1の実施形態に係る情報処理の一例を示すフローチャートである。
[1-4. Information processing flow]
Next, a procedure of information processing by the
図10に示すように、情報処理装置100は、データ検索の対象となる複数のオブジェクトに対する検索クエリを取得する(ステップS101)。図1の例では、情報処理装置100は、検索クエリQE1を取得する。
As shown in FIG. 10, the
そして、情報処理装置100は、複数のオブジェクトの各々に対応するノード群がエッジにより連結されたグラフを用いて、検索クエリの近傍のノードを検索する検索処理において、所定の基準により選択された複数のノードと検索クエリとの距離を、ベクトル量子化がされた複数のノードのベクトル情報を用いて算出する(ステップS102)。図1の例では、情報処理装置100は、複数のノードN9、N12、N54、N85と前記検索クエリQE1との距離を、ベクトル量子化がされた複数のノードN9、N12、N54、N85のベクトル情報を用いて算出する。
Then, in a search process in which a group of nodes corresponding to each of a plurality of objects is connected by edges to search for nodes near the search query, the
〔1-5.検索処理例〕
ここで、第1の実施形態に係る検索処理の一例について、図11を一例として説明する。図11は、第1の実施形態に係る検索処理の一例を示すフローチャートである。以下に説明する検索処理は、情報処理装置100の検索処理部133によって行われる。また、以下でいうオブジェクトは、ノードと読み替えてもよい。なお、以下では、情報処理装置100(検索処理部133)が検索処理を行う。なお、検索サービスを提供しない場合、情報処理装置100は検索処理部133を有しなくてもよい。以下で説明する処理の検索クエリは、追加ノードや対象ノードやユーザが指定したオブジェクト等であってもよい。
[1-5. Search processing example]
Here, an example of the search process according to the first embodiment will be described with reference to FIG. 11 as an example. FIG. 11 is a flowchart showing an example of the search process according to the first embodiment. The search process described below is performed by the
ここでは、近傍オブジェクト集合N(G,y)は、ノードyに付与されているエッジにより関連付けられている近傍のオブジェクトの集合である。「G」は、所定のグラフデータ(例えば、空間情報SP1に示すグラフGR1等)であってもよい。例えば、情報処理装置100は、k近傍検索処理を実行する。
Here, the neighborhood object set N(G, y) is a set of nearby objects associated with the edge attached to node y. "G" may be a predetermined graph data (e.g., graph GR1 shown in spatial information SP1). For example, the
例えば、情報処理装置100は、超球の半径rを∞(無限大)に設定し(ステップS300)、既存のオブジェクト集合から部分集合Sを抽出する(ステップS301)。例えば、情報処理装置100は、ルートノードとして選択されたオブジェクト(ノード)を部分集合Sとして抽出してもよい。また、例えば、超球とは、検索範囲を示す仮想的な球である。なお、ステップS301において抽出されたオブジェクト集合Sに含まれるオブジェクトは、同時に検索結果のオブジェクト集合Rの初期集合にも含められる。
For example, the
次に、情報処理装置100は、オブジェクト集合Sに含まれるオブジェクトの中で、検索クエリオブジェクトをyとするとオブジェクトyとの距離が最も短いオブジェクトを抽出し、オブジェクトsとする(ステップS302)。例えば、情報処理装置100は、ルートノードとして選択されたオブジェクト(ノード)のみがSの要素の場合には、結果的にルートノードがオブジェクトsとして抽出される。次に、情報処理装置100は、オブジェクトsをオブジェクト集合Sから除外する(ステップS303)。
Next, the
次に、情報処理装置100は、オブジェクトsとオブジェクトyとの距離d(s,y)がr(1+ε)を超えるか否かを判定する(ステップS304)。ここで、εは拡張要素であり、r(1+ε)は、探索範囲(この範囲内のノードのみを探索する。検索範囲よりも大きくすることで精度を高めることができる)の半径を示す値である。オブジェクトsとオブジェクトyとの距離d(s,y)がr(1+ε)を超える場合(ステップS304:Yes)、情報処理装置100は、オブジェクト集合Rをオブジェクトyの近傍オブジェクト集合として出力し(ステップS305)、処理を終了する。
Next, the
オブジェクトsと検索クエリオブジェクトyとの距離d(s,y)がr(1+ε)を超えない場合(ステップS304:No)、情報処理装置100は、オブジェクトsの近傍オブジェクト集合N(G,s)の要素であるオブジェクトの中からオブジェクト集合Cに含まれないオブジェクトを一つ選択し、選択したオブジェクトuを、オブジェクト集合Cに格納する(ステップS306)。オブジェクト集合Cは、重複検索を回避するために便宜上設けられるものであり、処理開始時には空集合に設定される。
If the distance d(s, y) between object s and search query object y does not exceed r(1+ε) (step S304: No), the
次に、情報処理装置100は、オブジェクトuとオブジェクトyとの距離d(u,y)がr(1+ε)以下であるか否かを判定する(ステップS307)。オブジェクトuとオブジェクトyとの距離d(u,y)がr(1+ε)以下である場合(ステップS307:Yes)、情報処理装置100は、オブジェクトuをオブジェクト集合Sに追加する(ステップS308)。また、オブジェクトuとオブジェクトyとの距離d(u,y)がr(1+ε)以下ではない場合(ステップS307:No)、情報処理装置100は、ステップS309の判定(処理)を行う。
Next, the
次に、情報処理装置100は、オブジェクトuとオブジェクトyとの距離d(u,y)がr以下であるか否かを判定する(ステップS309)。オブジェクトuとオブジェクトyとの距離d(u,y)がrを超える場合(ステップS309:No)、情報処理装置100は、ステップS315の判定(処理)を行う。すなわち、オブジェクトuとオブジェクトyとの距離d(u,y)がr以下ではない場合、情報処理装置100は、ステップS315の判定(処理)を行う。
Next, the
オブジェクトuとオブジェクトyとの距離d(u,y)がr以下である場合(ステップS309:Yes)、情報処理装置100は、オブジェクトuをオブジェクト集合Rに追加する(ステップS310)。そして、情報処理装置100は、オブジェクト集合Rに含まれるオブジェクト数がksを超えるか否かを判定する(ステップS311)。所定数ksは、任意に定められる自然数である。例えば、ksは、検索数や抽出対象数であってもよい。また、例えば、範囲検索等において抽出するオブジェクト数の上限を設けない場合、ksは、無限大に設定されてもよい。例えば、ks=4等であってもよい。オブジェクト集合Rに含まれるオブジェクト数がksを超えない場合(ステップS311:No)、情報処理装置100は、ステップS313の判定(処理)を行う。
If the distance d(u, y) between object u and object y is equal to or less than r (step S309: Yes), the
オブジェクト集合Rに含まれるオブジェクト数がksを超える場合(ステップS311:Yes)、情報処理装置100は、オブジェクト集合Rに含まれるオブジェクトの中でオブジェクトyとの距離が最も長い(遠い)オブジェクトを、オブジェクト集合Rから除外する(ステップS312)。
If the number of objects included in object set R exceeds ks (step S311: Yes), the
次に、情報処理装置100は、オブジェクト集合Rに含まれるオブジェクト数がksと一致するか否かを判定する(ステップS313)。オブジェクト集合Rに含まれるオブジェクト数がksと一致しない場合(ステップS313:No)、情報処理装置100は、ステップS315の判定(処理)を行う。また、オブジェクト集合Rに含まれるオブジェクト数がksと一致する場合(ステップS313:Yes)、情報処理装置100は、オブジェクト集合Rに含まれるオブジェクトの中でオブジェクトyとの距離が最も長い(遠い)オブジェクトと、オブジェクトyとの距離を、新たなrに設定する(ステップS314)。
Next, the
そして、情報処理装置100は、オブジェクトsの近傍オブジェクト集合N(G,s)の要素であるオブジェクトから全てのオブジェクトを選択してオブジェクト集合Cに格納し終えたか否かを判定する(ステップS315)。オブジェクトsの近傍オブジェクト集合N(G,s)の要素であるオブジェクトから全てのオブジェクトを選択してオブジェクト集合Cに格納し終えていない場合(ステップS315:No)、情報処理装置100は、ステップS306に戻って処理を繰り返す。
Then, the
オブジェクトsの近傍オブジェクト集合N(G,s)の要素であるオブジェクトから全てのオブジェクトを選択してオブジェクト集合Cに格納し終えた場合(ステップS315:Yes)、情報処理装置100は、オブジェクト集合Sが空集合であるか否かを判定する(ステップS316)。オブジェクト集合Sが空集合でない場合(ステップS316:No)、情報処理装置100は、ステップS302に戻って処理を繰り返す。また、オブジェクト集合Sが空集合である場合(ステップS316:Yes)、情報処理装置100は、オブジェクト集合Rを出力し、処理を終了する(ステップS317)。例えば、情報処理装置100は、オブジェクト集合Rに含まれるオブジェクト(ノード)を追加ノード(入力オブジェクトy)に対応する近傍ノードとして選択してもよい。例えば、情報処理装置100は、オブジェクト集合Rに含まれるオブジェクト(ノード)を対象ノード(入力オブジェクトy)に対応する近傍ノードとして抽出(選択)してもよい。また、例えば、情報処理装置100は、オブジェクト集合Rに含まれるオブジェクト(ノード)を検索クエリ(入力オブジェクトy)に対応する検索結果として、検索を行った端末装置等へ提供してもよい。
When all objects that are elements of the neighborhood object set N(G,s) of object s have been selected and stored in the object set C (step S315: Yes), the
〔2.第2の実施形態〕
ここから、第2の実施形態について説明する。第2の実施形態は、クラスタリングなどにより近傍オブジェクトをグルーピングし、各グループ(以下「ブロブ」ともいう)を一括して距離計算を行う対象とする。すなわち、第2の実施形態では、ブロブ単位で一括距離計算を行う。なお、第1の実施形態と同様の点については、適宜説明を省略する。第2の実施形態においては、情報処理システム1は、情報処理装置100に代えて、情報処理装置100Aを有する。
2. Second embodiment
From here, the second embodiment will be described. In the second embodiment, nearby objects are grouped by clustering or the like, and each group (hereinafter also referred to as "blob") is subjected to a collective distance calculation. That is, in the second embodiment, collective distance calculation is performed in units of blobs. Note that the description of the same points as in the first embodiment will be omitted as appropriate. In the second embodiment, the
〔2-1.情報処理〕
まず、図12を用いて、第2の実施形態に係る情報処理の概要を説明する。図12は、第2の実施形態に係る情報処理の一例を示す図である。
[2-1. Information Processing]
First, an overview of information processing according to the second embodiment will be described with reference to Fig. 12. Fig. 12 is a diagram showing an example of information processing according to the second embodiment.
図12の例では、情報処理装置100Aは、空間情報SP21に示すようなグラフGR21を取得済みであるものとする。例えば図1中の空間情報SP21は、ユークリッド空間であってもよい。例えば、空間情報SP21は、オブジェクトのベクトルの次元数に対応し、100次元や1000次元等の多次元空間であるものとする。なお、図12の例では、説明を簡単にするために直積量子化が行われていない図を基に説明するが、図1と同様にベクトル(空間)の直積量子化が行われてもよい。 In the example of FIG. 12, it is assumed that the information processing device 100A has already acquired a graph GR21 as shown in spatial information SP21. For example, the spatial information SP21 in FIG. 1 may be a Euclidean space. For example, the spatial information SP21 corresponds to the number of dimensions of the vector of the object, and is a multidimensional space of 100 dimensions, 1000 dimensions, etc. Note that, in the example of FIG. 12, for the sake of simplicity, the explanation will be based on a diagram in which direct product quantization has not been performed, but direct product quantization of vectors (space) may also be performed as in FIG. 1.
まず、図12で示す各情報について説明する。図12の空間情報SP21中のノードである白丸(〇)間を接続する点線がノード間を連結するエッジを示す。図12では、図1と同様に無向エッジを例として示すが、グラフGR21のエッジは、無向エッジに限らず、有向エッジであってもよい。なお、ノートやエッジについては図1と同様であるため詳細な説明は省略する。 First, each piece of information shown in FIG. 12 will be explained. The dotted lines connecting the white circles (◯), which are nodes in the spatial information SP21 in FIG. 12, indicate edges that connect the nodes. As in FIG. 1, FIG. 12 shows an example of an undirected edge, but the edges of the graph GR21 are not limited to undirected edges and may be directed edges. Note that the nodes and edges are the same as in FIG. 1, so a detailed explanation will be omitted.
図12の空間情報SP21において、直線で囲まれた領域はクラスタリングなどで近傍のオブジェクトがまとめ上げられた(グループ化された)ものであり、領域をブロブと称する。以下で示す例ではブロブが一括距離計算の処理単位となる。図12は、ブロブBL1~BL10の10個の領域(ブロブ)にクラスタリングされた場合を示す。例えば、ブロブBL1は、ノードN7、N9、N85、N126等の複数のノードが属するブロブであることを示す。なお、ブロブBL1~BL10中の黒い点は、各ブロブのセントロイド(代表ベクトル)を示す。 In the spatial information SP21 in Figure 12, the areas surrounded by straight lines are nearby objects grouped together by clustering or the like, and the areas are called blobs. In the example shown below, the blob is the processing unit for the batch distance calculation. Figure 12 shows a case where the objects are clustered into 10 areas (blobs), blobs BL1 to BL10. For example, blob BL1 indicates that it is a blob to which multiple nodes, such as nodes N7, N9, N85, and N126, belong. The black dots in blobs BL1 to BL10 indicate the centroids (representative vectors) of each blob.
なお、ブロブBL1~BL10は、クラスタリング等に関する種々の手法を適宜用いて生成される。例えば、ブロブに分類するためのクラスタリングは、k-meansクラスタリングでもよい。また、例えば、ブロブに分類するためのクラスタリングは、k-meansでの一回のイテレーション(アサイン)で各クラスタの中心座標(平均)で得られたセントロイドを次のイテレーションに使うのではなく、その代わりに、各セントロイドに最も近いオブジェクトにセントロイドを置き換えてから、次のイテレーションを行ってもよい。この場合、k-meansで得られる最終的なクラスタのセントロイドは既存のオブジェクト、つまり、ノードとなる。これにより、クラスタ(ブロブ)と各ノードのエッジ(近傍ノード)が一致する傾向が高まり、検索性能をさらに向上させることができる。 Note that the blobs BL1 to BL10 are generated using various techniques related to clustering, etc., as appropriate. For example, the clustering for classifying into blobs may be k-means clustering. Also, for example, the clustering for classifying into blobs may be performed by replacing the centroids with the objects closest to each centroid before performing the next iteration, rather than using the centroids obtained from the center coordinates (average) of each cluster in one iteration (assignment) of k-means in the next iteration. In this case, the centroid of the final cluster obtained by k-means becomes an existing object, that is, a node. This increases the tendency for the clusters (blobs) and the edges (neighboring nodes) of each node to match, further improving search performance.
図12の例では、情報処理装置100Aは、空間情報SP21に示すように、複数のノード(オブジェクト)をクラスタリングすることにより、分類した複数のブロブBL1~BL10の情報を用いて、検索処理を行う。 In the example of FIG. 12, the information processing device 100A performs search processing using information on multiple blobs BL1 to BL10 that have been classified by clustering multiple nodes (objects) as shown in the spatial information SP21.
ここから、検索クエリQE2を対象とする検索処理を説明する。まず、情報処理装置100Aは、検索クエリQE2を取得する(ステップS21)。例えば、情報処理装置100Aは、ユーザが利用する端末装置10(図4参照)から検索クエリQE2を取得する。 Now, the search process targeting the search query QE2 will be described. First, the information processing device 100A acquires the search query QE2 (step S21). For example, the information processing device 100A acquires the search query QE2 from the terminal device 10 (see FIG. 4) used by the user.
そして、情報処理装置100Aは、検索クエリQE2のベクトルと、コードブックのベクトルとの間の距離を算出する。図示は省略するが直積量子化を行っていない場合、情報処理装置100Aは、検索クエリQE2のベクトルと、ベクトル全体を量子化するためのコードブックのベクトルとの間の距離(差分)を算出する。そして、情報処理装置100Aは、検索クエリQE2のベクトルと各コードブックのベクトルとの間の距離(差分)を、各コードブックを識別するための情報に対応付けてコードブック情報TB21として保持する。なお、直積量子化を行っている場合、情報処理装置100Aは、図1と同様に、図2のコードブック情報TB1~TB4に示すように、検索クエリQE2の各サブベクトルと各コードブックのベクトルとの間の距離(差分)を算出する。なお、検索クエリのベクトルとコードブックのベクトルとの距離算出は、図1、図2等と同様であるため詳細な説明は省略する。 Then, the information processing device 100A calculates the distance between the vector of the search query QE2 and the vector of the codebook. Although not shown, when the direct product quantization is not performed, the information processing device 100A calculates the distance (difference) between the vector of the search query QE2 and the vector of the codebook for quantizing the entire vector. Then, the information processing device 100A stores the distance (difference) between the vector of the search query QE2 and the vector of each codebook as the codebook information TB21 in association with information for identifying each codebook. Note that, when the direct product quantization is performed, the information processing device 100A calculates the distance (difference) between each sub-vector of the search query QE2 and the vector of each codebook, as shown in the codebook information TB1 to TB4 in FIG. 2, in the same manner as in FIG. 1. Note that the calculation of the distance between the vector of the search query and the vector of the codebook is the same as in FIG. 1, FIG. 2, etc., and therefore a detailed description is omitted.
情報処理装置100Aは、検索クエリQE2を対象とする検索処理を実行する(ステップS22)。情報処理装置100Aは、検索クエリQE2を対象として、グラフGR21を用いた図16に示すような検索処理を行うことにより、検索クエリQE2の検索結果を得る。図16に示す検索処理についての詳細は後述する。情報処理装置100Aは、検索クエリQE2を対象として検索処理を行うことにより、検索数のノードを検索クエリQE2の近傍のノードとして抽出する。 The information processing device 100A executes a search process targeting the search query QE2 (step S22). The information processing device 100A performs a search process as shown in FIG. 16 using the graph GR21 targeting the search query QE2, thereby obtaining search results for the search query QE2. Details of the search process shown in FIG. 16 will be described later. The information processing device 100A performs a search process targeting the search query QE2, thereby extracting the number of search nodes as nodes in the vicinity of the search query QE2.
情報処理装置100Aは、検索クエリQE2を対象とする検索処理において、各ノードのうち、所定のノードをグラフGR21の検索の起点となるノード(起点ノード)として選択する。図12の例では、情報処理装置100Aは、起点ノードとして、ノードN9を選択するものとする。図12の例では、情報処理装置100Aは、例えば、ノードN9を処理対象として検索処理を開始する。 In a search process targeting search query QE2, information processing device 100A selects a specific node from among the nodes as a node (starting node) that will be the starting point of a search of graph GR21. In the example of FIG. 12, information processing device 100A selects node N9 as the starting node. In the example of FIG. 12, information processing device 100A starts a search process targeting node N9, for example.
ここで、情報処理装置100Aは、検索クエリQE2を対象とする検索処理において、処理対象となるノードが属するブロブに属する複数のノードと検索クエリとの距離を並列化して算出する(ステップS23)。図12では、情報処理装置100Aは、一括処理情報LT2に示すように、処理対象となるノードN9が属するブロブBL1に属するノードであるノードN7、N9、N85、N126等については、検索クエリQE2との距離を並列化して算出する。 Here, in the search process targeting the search query QE2, the information processing device 100A calculates in parallel the distance between the search query and multiple nodes belonging to the blob to which the node to be processed belongs (step S23). In FIG. 12, as shown in the batch processing information LT2, the information processing device 100A calculates in parallel the distance between the search query QE2 and nodes N7, N9, N85, N126, etc., which are nodes belonging to the blob BL1 to which the node N9 to be processed belongs.
情報処理装置100Aは、コードブック情報TB21が示す各コードブックと検索クエリQE2との間の距離を用いて、ノードN7、N9、N85、N126の各々と検索クエリQE2との距離を算出する。例えば、情報処理装置100Aは、コードブック情報TB21を参照して、ノードN7のベクトルに対応するコードブックの距離を、ノードN7と検索クエリQE2との距離として算出する。なお、直積量子化が行われている場合の距離算出は、図1、図2等と同様であるため詳細な説明は省略する。 The information processing device 100A calculates the distance between each of the nodes N7, N9, N85, and N126 and the search query QE2 by using the distance between each codebook indicated in the codebook information TB21 and the search query QE2. For example, the information processing device 100A refers to the codebook information TB21 and calculates the distance of the codebook corresponding to the vector of the node N7 as the distance between the node N7 and the search query QE2. Note that the distance calculation when direct product quantization is performed is similar to that in Figures 1 and 2, and therefore a detailed description will be omitted.
なお、一括処理可能単位については、情報処理装置100の場合と同様に、情報処理装置100Aの仕様に基づいて決定される。例えば、情報処理装置100AがSIMDにより一括して処理できる数(一括処理可能単位)が「4」である場合、図1と同様に、4個のノードを対象として距離を並列化して算出する。例えば、情報処理装置100Aは、SIMDの演算に関する並列化により、ノードN7、N9、N85、N126の各々と検索クエリQE2との距離を一括して算出する。これにより、情報処理装置100Aは、距離計算を並列化することにより、距離計算を高速化することでき、効率的な検索処理を可能にすることができる。また、情報処理装置100Aは、グラフGR21を用いて、ノードN7からのエッジが接続されたノード(例えばノードN12、N64)を辿り、それらのノードが属するブロブ(例えばブロブBL2、BL3)を対象とした一括距離計算を行って、検索処理を行う。なお、情報処理装置100Aは、検索処理において、同じブロブが繰り返し一括距離計算の対象となることを抑制するが詳細は後述する。
The batch processable unit is determined based on the specifications of the information processing device 100A, as in the case of the
なお、図12では説明を簡単にするために、4つのノードを対象として距離を並列化して算出する場合を示すが、並列化される数は、情報処理装置100Aの仕様に基づいて決定される。この点についても図1、図2等と同様であるため、詳細な説明は省略する。また、情報処理装置100Aは、図3に示す例と同様に、転置データを用いてもよい。 For simplicity's sake, FIG. 12 shows a case where distances are calculated in parallel for four nodes, but the number of nodes to be parallelized is determined based on the specifications of the information processing device 100A. This is also the same as in FIG. 1, FIG. 2, etc., so a detailed description will be omitted. The information processing device 100A may also use transposed data, as in the example shown in FIG. 3.
上述のように、情報処理装置100Aは、ベクトル量子化された各ノードのベクトルと検索クエリとの間の近似距離(第2距離)を算出して、第2距離を用いて検索処理を行う事により、効率的な検索処理を可能にすることができる。また、情報処理装置100Aは、並列化可能な数のノードの距離計算を一括して行うことにより、効率的な検索処理を可能にすることができる。上記のように、情報処理装置100Aは、ブロブを一括処理の単位として一括して計算することにより、効率的な検索処理を可能にすることができる。 As described above, the information processing device 100A can enable efficient search processing by calculating the approximate distance (second distance) between the vector of each vector-quantized node and the search query, and performing search processing using the second distance. Furthermore, the information processing device 100A can enable efficient search processing by collectively performing distance calculations for a number of nodes that can be parallelized. As described above, the information processing device 100A can enable efficient search processing by collectively calculating blobs as a unit of batch processing.
情報処理装置100Aは、検索処理において、グラフGR21を辿り処理対象となるノードを対象に上述した処理を行うことにより、検索数のノードを検索クエリQE2の近傍のノードとして抽出する。例えば、情報処理装置100Aは、情報処理装置100と同様に、上述した第1の方法及び第2の方法のいずれかにより検索結果を得る。
In the search process, the information processing device 100A traverses the graph GR21 and performs the above-mentioned process on the nodes to be processed, thereby extracting the number of searched nodes as nodes in the vicinity of the search query QE2. For example, the information processing device 100A, like the
上述した処理は一例に過ぎず、情報処理装置100Aは、効率的な検索処理の為に様々な情報や手法を用いて、検索処理を行ってもよい。この点について、各事項について詳述する。例えば、情報処理装置100Aは、各ブロブに属するノードの数が、情報処理装置100がSIMDにより一括して処理できる数(一括処理可能単位)になるように、クラスタリングを行い、ブロブを生成してもよい。
The above-described process is merely an example, and the information processing device 100A may perform search processing using various information and methods for efficient search processing. Each item in this regard will be described in detail. For example, the information processing device 100A may perform clustering and generate blobs so that the number of nodes belonging to each blob is a number that the
また、情報処理装置100Aは、ブロブに関する情報を用いて、重複した処理が行われることを抑制してもよい。情報処理装置100Aは、ブロブ単位にそのブロブの距離計算を行ったかを示すブロブ距離計算フラグ(以下単に「フラグ」ともいう)、および各オブジェクトがどのブロブに属するかを示すテーブルを有してもよい。この場合、情報処理装置100Aは、フラグにより各ブロブが処理済であるか否かを管理してもよい。例えば、情報処理装置100Aは、近傍ノードを逐一処理する直前にノードが属するブロブをテーブルにより特定し、そのブロブが一括距離計算済みかをフラグで判断し、未計算の場合には、一括計算を行い、個々のノードの処理を行ってもよい。この点については、図15や図16においても説明する。これにより、情報処理装置100Aは、重複した処理が行われることを抑制することができる。 The information processing device 100A may also use information about blobs to prevent duplicated processing. The information processing device 100A may have a blob distance calculation flag (hereinafter also simply referred to as a "flag") indicating whether or not a distance calculation has been performed for each blob, and a table indicating which blob each object belongs to. In this case, the information processing device 100A may use the flag to manage whether or not each blob has been processed. For example, the information processing device 100A may use a table to identify the blob to which the node belongs just before processing the neighboring nodes one by one, determine whether or not the blob has been subjected to a collective distance calculation using the flag, and if not, perform collective calculation and process each node. This point will also be described in FIG. 15 and FIG. 16. This allows the information processing device 100A to prevent duplicated processing.
〔2-2.情報処理装置の構成〕
次に、図13を用いて、第2の実施形態に係る情報処理装置100Aの構成について説明する。図13は、第2の実施形態に係る情報処理装置の構成例を示す図である。図13に示すように、情報処理装置100Aは、通信部110と、記憶部120Aと、制御部130Aとを有する。なお、情報処理装置100Aにおいて、情報処理装置100と同様の点は適宜説明を省略する。
2-2. Configuration of information processing device
Next, the configuration of the information processing device 100A according to the second embodiment will be described with reference to Fig. 13. Fig. 13 is a diagram showing an example of the configuration of the information processing device according to the second embodiment. As shown in Fig. 13, the information processing device 100A has a communication unit 110, a
(記憶部120A)
記憶部120Aは、例えば、RAM、フラッシュメモリ等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。第2の実施形態に係る記憶部120Aは、図13に示すように、オブジェクト情報記憶部121と、グラフ情報記憶部122と、量子化情報記憶部123Aと、コードブック情報記憶部124と、ブロブ情報記憶部125とを有する。
(
The
(量子化情報記憶部123A)
第2の実施形態に係る量子化情報記憶部123Aは、割当処理に関する各種情報を記憶する。図14は、第2の実施形態に係る量子化情報記憶部の一例を示す図である。図14の例では、量子化情報記憶部123Aには、「ノードID」、「オブジェクトID」、「ブロブID」、および「量子化情報」といった項目を有する。
(Quantization
The quantization
「ノードID」は、グラフにおける各ノード(対象)を識別するための識別情報を示す。また、「オブジェクトID」は、オブジェクトを識別するための識別情報を示す。なお、ノードIDとオブジェクトIDが共通である場合、「ノードID」にオブジェクトIDが記憶され、量子化情報記憶部123Aに「オブジェクトID」の項目は含まれてなくてもよい。
"Node ID" indicates identification information for identifying each node (object) in the graph. Also, "object ID" indicates identification information for identifying an object. Note that if the node ID and object ID are the same, the object ID is stored in "node ID", and the quantization
「ブロブID」は、ノード(オブジェクト)が属するブロブを識別するための情報を示す。 "Blob ID" indicates information for identifying the blob to which the node (object) belongs.
また、「量子化情報」は、各ノード(オブジェクト)の量子化されたベクトルの情報を示す。例えば、「量子化情報」には、「要素」、「コードブックID」といった情報が含まれる。「要素」は、対応するオブジェクトのベクトルにおける配置を示す。図14の例では、「要素」には、「#1」、「#2」、「#3」、「#4」が含まれる場合を示す。この場合、各ノード(オブジェクト)のベクトルは4分割され、各分割された部分ベクトルがコードブックにより量子化されることを示す。 Furthermore, "quantization information" indicates information on the quantized vector of each node (object). For example, "quantization information" includes information such as "element" and "codebook ID". "Element" indicates the arrangement of the corresponding object in the vector. In the example of Figure 14, "element" indicates the case where "#1", "#2", "#3", and "#4" are included. In this case, the vector of each node (object) is divided into four, and each divided partial vector is quantized by the codebook.
図14の例では、ノードN1(オブジェクトOB1)は、ブロブID「BL9」により識別されるブロブ(ブロブBL9)に属することを示す。例えば、直積量子化によりベクトルが4分割される場合、ノードN1の量子化情報には、図8に示すノードN1の量子化情報示す4つのコードブックと同様の情報が格納される。また、例えば、直積量子化が行われない場合、ノードN1の量子化情報には、ノードN1のベクトルを量子化するための、1つのコードブックを示す情報が記憶される。 In the example of FIG. 14, node N1 (object OB1) belongs to a blob (blob BL9) identified by blob ID "BL9". For example, if a vector is divided into four by product quantization, the quantization information of node N1 stores information similar to the four codebooks shown in the quantization information of node N1 shown in FIG. 8. Also, for example, if product quantization is not performed, the quantization information of node N1 stores information indicating one codebook for quantizing the vector of node N1.
なお、量子化情報記憶部123Aは、上記に限らず、目的に応じて種々の情報を記憶してもよい。
The quantization
(ブロブ情報記憶部125)
第2の実施形態に係るブロブ情報記憶部125は、ブロブに関する情報を記憶する。例えば、ブロブ情報記憶部125は、各ブロブに対応付けられたオブジェクトを識別する各種情報を記憶する。図15は、第2の実施形態に係るブロブ情報記憶部の一例を示す図である。図15の例では、ブロブ情報記憶部125は、「ブロブID」、「ノードID」、「ベクトル情報」といった項目が含まれる。
(Blob information storage unit 125)
The blob
「ブロブID」は、ブロブを識別するための識別情報を示す。また、「ノードID」は、ブロブIDにより識別されるブロブに対応付けられたノード(オブジェクト)を示す。「ベクトル情報」は、ブロブのベクトル情報を示す。例えば、「ベクトル情報」は、ブロブのセントロイドに対応するベクトルを示す。 "Blob ID" indicates identification information for identifying a blob. Furthermore, "Node ID" indicates a node (object) associated with the blob identified by the blob ID. "Vector information" indicates vector information of the blob. For example, "vector information" indicates a vector corresponding to the centroid of the blob.
図15に示す例では、ブロブID「BL1」により識別されるブロブ(ブロブBL1)に対応付けられたノード(オブジェクト)は、ノードN7、N9、N85、N126等であることを示す。ブロブBL1は、「51,4,102,33・・・」の多次元のベクトル情報が対応付けられることを示す。 In the example shown in FIG. 15, the nodes (objects) associated with the blob (blob BL1) identified by the blob ID "BL1" are nodes N7, N9, N85, N126, etc. This indicates that multi-dimensional vector information of "51, 4, 102, 33..." is associated with blob BL1.
また、ブロブID「BL9」により識別されるブロブ(ブロブBL9)に対応付けられたノード(オブジェクト)は、ノードN1、N4、N5等であることを示す。ブロブBL9は、「12,55,12,6・・・」の多次元のベクトル情報が対応付けられることを示す。 It also indicates that the nodes (objects) associated with the blob (blob BL9) identified by the blob ID "BL9" are nodes N1, N4, N5, etc. It indicates that multi-dimensional vector information of "12, 55, 12, 6..." is associated with blob BL9.
なお、ブロブ情報記憶部125は、上記に限らず、目的に応じて種々の情報を記憶してもよい。ブロブ情報記憶部125は、各ブロブが距離計算の処理対象となったか否かを示すフラグを記憶してもよい。例えば、ブロブ情報記憶部125は、距離計算の対象として処理されていないことを示す値(「未処理フラグ値」ともいう)と、距離計算の対象として処理されたことを示す値(「処理済フラグ値」ともいう)とのいずれかを各ブロブのフラグの値に設定する。例えば、ブロブ情報記憶部125は、検索処理開始時に各ブロブのフラグの値を、そのブロブを対象としての距離計算が未処理であることを示す値(例えば0)に設定し、距離計算の対象となったブロブのフラグの値を、距離計算が処理済みであることを示す値(例えば1)に変更する。
The blob
例えば、情報処理装置100Aは、処理対象となったブロブのフラグの値を参照して、そのブロブについて一括距離計算の処理を実行するか否かを判定する。情報処理装置100Aは、各ブロブのフラグの値を参照し、そのブロブのフラグの値が未処理フラグ値である場合は、そのブロブが一括距離計算の処理前であると判定して、そのブロブに属するノードの一括距離計算を実行する。一方、情報処理装置100Aは、そのブロブのフラグの値が処理済フラグ値である場合は、そのブロブが一括距離計算の処理済みであると判定して、そのブロブに属するノードの一括距離計算を行わない。 For example, information processing device 100A refers to the flag value of the blob being processed and determines whether or not to perform a batch distance calculation process for that blob. Information processing device 100A refers to the flag value of each blob, and if the flag value of that blob is an unprocessed flag value, it determines that the blob has not yet been subjected to batch distance calculation and performs a batch distance calculation for the nodes belonging to that blob. On the other hand, if the flag value of that blob is a processed flag value, information processing device 100A determines that the blob has already been subjected to batch distance calculation and does not perform a batch distance calculation for the nodes belonging to that blob.
(制御部130A)
図13の説明に戻って、制御部130Aは、コントローラ(controller)であり、例えば、CPUやMPUやGPU等によって、情報処理装置100A内部の記憶装置に記憶されている各種プログラム(情報処理プログラムの一例に相当)がRAMを作業領域として実行されることにより実現される。また、制御部130Aは、コントローラであり、例えば、ASICやFPGA等の集積回路により実現される。
(Control unit 130A)
Returning to the explanation of Fig. 13, the control unit 130A is a controller, and is realized, for example, by a CPU, an MPU, a GPU, etc., executing various programs (corresponding to an example of an information processing program) stored in a storage device inside the information processing device 100A using a RAM as a working area. The control unit 130A is also a controller, and is realized, for example, by an integrated circuit such as an ASIC or an FPGA.
図13に示すように、制御部130Aは、取得部131と、生成部132Aと、検索処理部133Aと、提供部134とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部130Aの内部構成は、図13に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
As shown in FIG. 13, the control unit 130A has an
(生成部132A)
生成部132Aは、生成部132と同様に各種情報を生成する。
(
The generating
生成部132Aは、量子化情報記憶部123に示すようなベクトル量子化に関する情報を生成してもよい。例えば、生成部132は、ノードN1(オブジェクトOB1)がブロブBL9に属することを示す情報を生成する。また、生成部132は、ブロブ情報記憶部125に示すようなブロブに関する情報を生成してもよい。例えば、生成部132は、ブロブBL1には、ノードN7、N9、N85、N126等が属することを示す情報を生成する。なお、情報処理装置100がグラフ情報記憶部122、量子化情報記憶部123A、コードブック情報記憶部124、ブロブ情報記憶部125に示す情報を、情報提供装置50等の外部装置から取得する場合、情報処理装置100は、生成部132Aを有しなくてもよい。
The generating
(検索処理部133A)
検索処理部133Aは、検索処理部133と同様に検索処理に関する各種処理を行う。
(
The
検索処理部133Aは、複数のオブジェクトの各々に対応するノード群を対象として、検索クエリの近傍のノードを検索する検索処理において、複数のオブジェクトを分類した複数のブロブの情報を用いて、一のブロブに属する複数のノードと検索クエリとの距離を、ベクトル量子化された複数のノードのベクトル情報を用いて算出する。検索処理部133Aは、複数のノードと検索クエリとの距離の算出を並列化して一括で行う。検索処理部133Aは、情報処理装置100Aの仕様に基づいて決定される一括処理数の複数のノードと検索クエリとの距離の算出を並列処理する。
In a search process that searches for nodes near the search query, the
検索処理部133Aは、検索クエリが該当するブロブと隣接する一のブロブに属する複数のノードと検索クエリとの距離を算出する。検索処理部133Aは、複数のノードがエッジにより連結されたグラフを用いて、検索クエリの近傍のノードを検索する検索処理において、複数のノードと検索クエリとの距離を算出する。検索処理部133Aは、検索処理において処理対象となる対象ノードからのエッジが連結された接続ノードが属する一のブロブに属する複数のノードと検索クエリとの距離を算出する。
The
検索処理部133Aは、対象ノードが属するブロブ以外の一のブロブに属する複数のノードと検索クエリとの距離を算出する。検索処理部133Aは、複数のノードの各々から、複数のノードの各々が属するブロブ以外の他のブロブへ連結されたブロブ用グラフを用いて、検索クエリの近傍のノードを検索する検索処理において、複数のノードと検索クエリとの距離を算出する。検索処理部133Aは、複数のノードがエッジにより連結された変換前のグラフにおいて、複数のノードのうち一のノードからエッジが連結されたノードが属するブロブであって、一のノードが属するブロブ以外のブロブへ、一のノードからエッジを連結することにより生成された変換後のグラフであるブロブ用グラフを用いて、検索クエリの近傍のノードを検索する検索処理において、複数のノードと検索クエリとの距離を算出する。
The
検索処理部133Aは、検索処理において処理対象となる対象ノードからのエッジが連結されたブロブである一のブロブに属する複数のノードと検索クエリとの距離を算出する。検索処理部133Aは、既に処理対象となったブロブである処理済みブロブを示す情報を用いて、一のブロブを処理対象とするかを判定する。検索処理部133Aは、一のブロブが処理済みブロブである場合、一のブロブを処理対象としないと判定する。
The
検索処理部133Aは、検索処理において処理対象となったノードのうち、所定のノードを対象として、ベクトル量子化がされた距離である第1距離とは異なり、ベクトル量子化がされていない第2距離を算出する。検索処理部133Aは、検索処理において検索クエリの近傍のノードとして抽出するノードの第1数よりも多い数である第2数のノードを近傍候補ノードとして抽出し、近傍候補ノードを対象として第2距離を算出する。検索処理部133Aは、近傍候補ノードのうち、第2距離が短い方から第1数のノードを検索クエリの近傍のノードとして抽出する。
The
検索処理部133Aは、第1距離が所定の閾値以内であるノードを対象として第2距離を算出する。検索処理部133Aは、近傍のノードとして抽出する対象範囲を示す検索範囲内のノードを対象として第2距離を算出する。検索処理部133Aは、検索処理の対象範囲を示す探索範囲内のノードを対象として第2距離を算出する。
The
〔2-3.検索処理例〕
ここで、第2の実施形態に係る検索処理の一例について、図16を一例として説明する。図16は、第2の実施形態に係る検索処理の一例を示すフローチャートである。以下に説明する検索処理は、情報処理装置100Aの検索処理部133Aによって行われる。なお、図11等、第1の実施形態と同様の点については適宜説明を省略する。例えば、図16において、図11と同様の点は同じステップ番号を付すことにより、適宜説明を省略する。
[2-3. Search processing example]
Here, an example of the search process according to the second embodiment will be described with reference to FIG. 16. FIG. 16 is a flowchart showing an example of the search process according to the second embodiment. The search process described below is performed by the
ここでは、近傍オブジェクト集合N(G,y)は、ノードyに付与されているエッジにより関連付けられている近傍のオブジェクトの集合である。「G」は、所定のグラフデータ(例えば、空間情報SP21に示すグラフGR21等)であってもよい。例えば、情報処理装置100Aは、k近傍検索処理を実行する。 Here, the neighborhood object set N(G, y) is a set of nearby objects associated by edges attached to node y. "G" may be a predetermined graph data (e.g., graph GR21 shown in spatial information SP21). For example, the information processing device 100A executes a k-nearest neighbor search process.
例えば、図16に示す検索処理は、ステップS304の後にステップS304aに示す処理を行う点で、図11に示す検索処理と相違する。このように、図16に示す検索処理は、通常のグラフの探索で、まだ、アクセスしていないブロブに到達した場合にそのブロブ内のオブジェクト(ノード)とクエリとの距離を一括して計算し、各ノードの処理を行う。 For example, the search process shown in FIG. 16 differs from the search process shown in FIG. 11 in that the process shown in step S304a is performed after step S304. In this way, when the search process shown in FIG. 16 reaches a blob that has not yet been accessed in a normal graph search, it calculates the distance between the query and the objects (nodes) in that blob all at once, and processes each node.
具体的には、図16の検索処理においては、情報処理装置100Aは、オブジェクトsが属するブロブがまだ距離計算していない場合には、以下のすべて(図16中のステップS304a中の「-」に続けて示す4つの処理。以下「第1の処理」~「第4の処理」とする)を実行する(ステップS304a)。ステップS304aにおいて、情報処理装置100Aは、そのブロブ内のオブジェクトを一括距離計算する処理(第1の処理)を実行する。また、ステップS304aにおいて、情報処理装置100Aは、ブロブの距離計算フラグをセットする処理(第2の処理)を実行する。また、ステップS304aにおいて、情報処理装置100Aは、一括距離計算を行ったブロブ内のすべてのオブジェクトをCに格納する処理(第3の処理)を実行する。また、ステップS304aにおいて、情報処理装置100Aは、ブロブのすべてのオブジェクトをuとして逐一ステップS307からステップS314までの処理を行う処理(第4の処理)を実行する。その後、情報処理装置100Aは、ステップS306以降の処理を行う。 Specifically, in the search process of FIG. 16, if the information processing device 100A has not yet performed distance calculation for the blob to which the object s belongs, it executes all of the following (four processes shown following the "-" in step S304a in FIG. 16, hereinafter referred to as "first process" to "fourth process") (step S304a). In step S304a, the information processing device 100A executes a process of calculating the distance of the objects in the blob at once (first process). Also, in step S304a, the information processing device 100A executes a process of setting the distance calculation flag of the blob (second process). Also, in step S304a, the information processing device 100A executes a process of storing all objects in the blob for which the collective distance calculation has been performed in C (third process). Also, in step S304a, the information processing device 100A executes a process of performing the processes from step S307 to step S314 one by one, with all objects in the blob as u (fourth process). After that, the information processing device 100A performs the processes from step S306 onwards.
〔2-4.変形例〕
ここから、変形例について説明する。第2の実施形態に係る変形例においては、ブロブの概念を含むグラフを用いてもよい。例えば、第2の実施形態に係る変形例においては、ノードからのエッジによる参照先がブロブであるグラフを用いてもよい。なお、第1の実施形態や第2の実施形態と同様の点については、適宜説明を省略する。変形例に係る情報処理装置100Aは、グラフ情報記憶部122に代えて、グラフ情報記憶部122Aを有する。
2-4. Modified Examples
From here, a modified example will be described. In the modified example of the second embodiment, a graph including the concept of blobs may be used. For example, in the modified example of the second embodiment, a graph in which the reference destination of an edge from a node is a blob may be used. Note that the description of the same points as in the first and second embodiments will be omitted as appropriate. The information processing device 100A according to the modified example has a graph
〔2-4-1.情報処理〕
まず、図17を用いて、変形例に係る情報処理の概要を説明する。図17は、変形例に係る情報処理の一例を示す図である。
[2-4-1. Information processing]
First, an overview of information processing according to the modified example will be described with reference to Fig. 17. Fig. 17 is a diagram showing an example of information processing according to the modified example.
情報処理装置100Aは、ノード間をエッジで連結したグラフGR21を、ノードからのエッジによる参照先がブロブであるグラフGR31に変換する(ステップS31)。すなわち、情報処理装置100Aは、図17に示すように、通常のグラフであるグラフGR21から、ブロブの概念が導入されたグラフ(ブロブ用グラフ)であるグラフGR31を生成する。 The information processing device 100A converts the graph GR21, in which nodes are connected by edges, into a graph GR31 in which the reference destinations of the edges from the nodes are blobs (step S31). That is, as shown in FIG. 17, the information processing device 100A generates the graph GR31, which is a graph in which the concept of blobs has been introduced (a graph for blobs), from the graph GR21, which is a normal graph.
図17の例では、情報処理装置100Aは、空間情報SP31に示すように、ノードからブロブへの有向エッジを含むグラフGR31を生成する。なお、グラフGR31においては、各ノード間のエッジについては削除され、グラフGR31には、ノードからブロブへの有向エッジが含まれ、ノード間のエッジは含まれない。図17に示す矢印線は、矢元のノードから矢先のブロブへの有向エッジを示す。すなわち、図17に示す矢印線は、矢元のノードを参照元とし、矢先のブロブを参照先とする有向エッジを示す。例えば、図17では、ノードN1からは、ブロブBL8及びブロブBL10の2つのブロブへのエッジが連結されることを示す。 In the example of FIG. 17, the information processing device 100A generates a graph GR31 including directed edges from nodes to blobs as shown in the spatial information SP31. Note that in graph GR31, edges between each node are deleted, and graph GR31 includes directed edges from nodes to blobs, but does not include edges between nodes. The arrow line shown in FIG. 17 indicates a directed edge from the node at the origin of the arrow to the blob at the end of the arrow. In other words, the arrow line shown in FIG. 17 indicates a directed edge with the node at the origin of the arrow as the reference source and the blob at the end of the arrow as the reference destination. For example, FIG. 17 indicates that edges are connected from node N1 to two blobs, blob BL8 and blob BL10.
例えば、情報処理装置100Aは、各ノードのエッジを接続ノード(近傍ノード)へのエッジから接続ノードが属するブロブへのエッジに変換する。なお、情報処理装置100Aは、各ノード自身が属するブロブへのエッジは生成しない。図17の例では、情報処理装置100Aは、ノードN9とノードN126は同じブロブBL1に属するため、ノードN9からブロブBL1へのエッジ、及びノードN126からブロブBL1へのエッジは生成しない。一方、図17の例では、情報処理装置100Aは、ノードN9とノードN18は異なるブロブBL1、BL4に属するため、ノードN9からブロブBL4へのエッジ、及びノードN18からブロブBL1へのエッジを生成する。 For example, the information processing device 100A converts the edges of each node from edges to connecting nodes (nearby nodes) to edges to the blobs to which the connecting nodes belong. The information processing device 100A does not generate edges to the blobs to which each node itself belongs. In the example of FIG. 17, the information processing device 100A does not generate an edge from node N9 to blob BL1 and an edge from node N126 to blob BL1 because node N9 and node N126 belong to the same blob BL1. On the other hand, in the example of FIG. 17, the information processing device 100A generates an edge from node N9 to blob BL4 and an edge from node N18 to blob BL1 because node N9 and node N18 belong to different blobs BL1 and BL4.
図17の例では、情報処理装置100Aは、空間情報SP31に示すように、ノード(オブジェクト)からブロブへの有向エッジを含むグラフGR31を用いて、検索処理を行う。例えば、情報処理装置100Aは、検索クエリQE2を対象として、グラフGR21を用いた図19に示すような検索処理を行うことにより、検索クエリQE2の検索結果を得る。図19に示す検索処理についての詳細は後述する。なお、図17での検索処理は、ブロブの概念を用いて検索処理を行う点で図12と共通し、エッジに関連する処理の点以外は、図12に示す検索処理と同様である。 In the example of FIG. 17, the information processing device 100A performs search processing using a graph GR31 including directed edges from nodes (objects) to blobs, as shown in the spatial information SP31. For example, the information processing device 100A performs search processing as shown in FIG. 19 using the graph GR21 for the search query QE2, thereby obtaining search results for the search query QE2. Details of the search processing shown in FIG. 19 will be described later. Note that the search processing in FIG. 17 is common to FIG. 12 in that it performs search processing using the concept of blobs, and is similar to the search processing shown in FIG. 12 except for the processing related to edges.
〔2-4-2.グラフ〕
次に、図18を用いて、変形例に係るグラフの概要を説明する。図18は、変形例に係るグラフ情報記憶部の一例を示す図である。例えば、図18に示すグラフ情報記憶部122Aは、ブロブの概念が導入されたグラフ(ブロブ用グラフ)を記憶する。図18に示すグラフ情報記憶部122Aは、「ノードID」、「オブジェクトID」、および「ブロブ情報」といった項目を有する。このように、変形例に係るグラフ情報記憶部122Aは、「接続ノード情報」に代えて、「ブロブ情報」を有する点で図7のグラフ情報記憶部122と相違する。なお、図7のグラフ情報記憶部122と同様の点については適宜説明を省略する。
2-4-2. Graph
Next, an overview of a graph according to a modified example will be described with reference to FIG. 18. FIG. 18 is a diagram showing an example of a graph information storage unit according to a modified example. For example, the graph
また、「ブロブ情報」は、対応するノードから辿ることができるブロブ(参照先のブロブ)に関する情報を示す。例えば、「ブロブ情報」には、「参照先」といった情報が含まれる。「参照先」は、エッジにより連結され、そのノードから辿ることができる参照先(ブロブ)を識別するための情報を示す。すなわち、図18の例では、ノードを識別するノードID(オブジェクトID)に対して、そのノードからエッジにより辿ることができる参照先(ブロブ)が対応付けられて登録されている。なお、「ブロブ情報」には、参照先に接続されるエッジを識別するための情報(エッジID)等が含まれてもよい。 Furthermore, "blob information" indicates information about blobs (reference blobs) that can be traced from the corresponding node. For example, "blob information" includes information such as "reference." "Reference" indicates information for identifying a reference (blob) that is connected by an edge and can be traced from the node. That is, in the example of Figure 18, a node ID (object ID) that identifies a node is associated with a reference (blob) that can be traced from the node by an edge and is registered. Note that "blob information" may also include information for identifying an edge connected to a reference (edge ID), etc.
図18の例では、ノードID「N1」により識別されるノード(ノードN1)は、オブジェクトID「OB1」により識別されるオブジェクト(対象)に対応することを示す。また、ノードN1からは、ブロブID「BL8」により識別されるブロブ(ブロブBL8)にエッジが連結されており、ノードN1からブロブBL8へ辿ることができることを示す。また、ノードN1からは、ブロブID「BL10」により識別されるブロブ(ブロブBL10)にエッジが連結されており、ノードN1からブロブBL10へ辿ることができることを示す。 In the example of FIG. 18, a node (node N1) identified by node ID "N1" corresponds to an object (target) identified by object ID "OB1". In addition, an edge is connected from node N1 to a blob (blob BL8) identified by blob ID "BL8", indicating that blob BL8 can be traced from node N1. In addition, an edge is connected from node N1 to a blob (blob BL10) identified by blob ID "BL10", indicating that blob BL10 can be traced from node N1.
また、ノードID「N2」により識別されるノード(ノードN2)は、オブジェクトID「OB2」により識別されるオブジェクト(対象)に対応することを示す。また、ノードN2からは、ブロブID「BL5」により識別されるブロブ(ブロブBL5)にエッジが連結されており、ノードN1からブロブBL5へ辿ることができることを示す。 This also shows that the node identified by node ID "N2" (node N2) corresponds to the object (target) identified by object ID "OB2". In addition, an edge is connected from node N2 to a blob identified by blob ID "BL5" (blob BL5), indicating that blob BL5 can be traced from node N1.
なお、グラフ情報記憶部122Aは、上記に限らず、目的に応じて種々の情報を記憶してもよい。
The graph
また、グラフは、クエリを入力とし、グラフ中のエッジを辿ることによりノードを探索し、クエリに類似するノードを抽出し出力するプログラムモジュールを含んでもよい。すなわち、グラフは、グラフを用いて検索処理を行うプログラムモジュールとしての利用が想定されるものであってもよい。例えば、グラフGR31は、クエリとしてベクトルデータが入力された場合に、そのベクトルデータに類似するベクトルデータに対応するノードをグラフ中から抽出し、出力するプログラムであってもよい。例えば、グラフGR31は、クエリ画像に対応する類似画像を検索するプログラムモジュールとして利用されるデータであってもよい。例えば、グラフGR31は、入力されたクエリに基づいて、グラフにおいてそのクエリに類似するノードを抽出し、出力するよう、コンピュータを機能させる。 The graph may also include a program module that takes a query as input, searches for nodes by tracing edges in the graph, and extracts and outputs nodes similar to the query. That is, the graph may be intended to be used as a program module that performs search processing using the graph. For example, the graph GR31 may be a program that, when vector data is input as a query, extracts from the graph nodes corresponding to vector data similar to the vector data, and outputs the nodes. For example, the graph GR31 may be data used as a program module that searches for similar images corresponding to a query image. For example, the graph GR31 causes a computer to function to extract and output nodes in the graph that are similar to the query, based on the input query.
〔2-4-3.検索処理例〕
ここから、変形例に係る検索処理の一例について、図19を一例として説明する。図19は、変形例に係る検索処理の一例を示すフローチャートである。以下に説明する検索処理は、情報処理装置100Aの検索処理部133Aによって行われる。なお、図11、図16等、第1の実施形態または第2の実施形態と同様の点については適宜説明を省略する。例えば、図19において、図11と同様の点は同じステップ番号を付すことにより、適宜説明を省略する。
[2-4-3. Search processing example]
From here, an example of a search process according to the modified example will be described with reference to FIG. 19. FIG. 19 is a flowchart showing an example of a search process according to the modified example. The search process described below is performed by the
図19では、集合N(G,y)は、ノードyに付与されているエッジにより関連付けられているブロブの集合である点で、図11及び図16の検索処理と相違する。図19では、N(G、s)およびCはブロブ集合となる。すなわち、図11での「近傍オブジェクト集合N」は、図19では、「ブロブ集合N」と読み替えられ、図11での「オブジェクト集合C」は、図19では、「ブロブ集合C」と読み替えられる。また、上記のブロブへの変更に関連する処理における「オブジェクト」の文言は、適宜「ブロブ」と読み替えられる。「G」は、ブロブの概念が導入されたグラフ(ブロブ用グラフ)データ(例えば、空間情報SP31に示すグラフGR31等)であってもよい。例えば、情報処理装置100Aは、k近傍検索処理を実行する。 19, set N(G,y) is a set of blobs associated with node y by an edge, which is different from the search process in FIG. 11 and FIG. 16. In FIG. 19, N(G,s) and C are blob sets. That is, the "nearby object set N" in FIG. 11 is replaced with "blob set N" in FIG. 19, and the "object set C" in FIG. 11 is replaced with "blob set C" in FIG. 19. In addition, the word "object" in the process related to the above change to blobs is replaced with "blob" as appropriate. "G" may be graph (blob graph) data in which the concept of blobs is introduced (for example, graph GR31 shown in spatial information SP31, etc.). For example, the information processing device 100A executes k-nearest neighbor search processing.
例えば、図19に示す検索処理は、図11からステップS306の処理が以下のように変更される。図19の検索処理においては、情報処理装置100Aは、N(G、s)の中からブロブ集合Cに含まれない、ブロブを一つ選択し、選択したブロブをブロブ集合Cに格納し、ブロブ内のオブジェクトを一括計算し、その集合をB(「対象ブロブ内オブジェクト集合B」ともいう)とする(ステップS306)。 For example, in the search process shown in Figure 19, the process of step S306 is changed from Figure 11 as follows. In the search process of Figure 19, the information processing device 100A selects one blob from N(G, s) that is not included in blob set C, stores the selected blob in blob set C, calculates the objects in the blob all at once, and sets this set to B (also called "set B of objects in target blob") (step S306).
また、図19に示す検索処理は、ステップS306の後にステップS306aに示す処理を行う点で、図11に示す検索処理と相違する。具体的には、図19の検索処理においては、情報処理装置100Aは、対象ブロブ内オブジェクト集合Bからオブジェクトuを一つ選択する(ステップS306a)。その後、情報処理装置100Aは、ステップS307以降の処理を行う。 The search process shown in FIG. 19 also differs from the search process shown in FIG. 11 in that the process shown in step S306a is performed after step S306. Specifically, in the search process in FIG. 19, the information processing device 100A selects one object u from the object set B in the target blob (step S306a). Thereafter, the information processing device 100A performs the processes from step S307 onwards.
また、図19に示す検索処理は、ステップS315の前にステップS314aに示す処理を行う点で、図11に示す検索処理と相違する。具体的には、図19の検索処理においては、情報処理装置100Aは、対象ブロブ内オブジェクト集合Bから全て選択したか否かを判定する(ステップS314a)。 The search process shown in FIG. 19 also differs from the search process shown in FIG. 11 in that the process shown in step S314a is performed before step S315. Specifically, in the search process in FIG. 19, the information processing device 100A determines whether or not all objects have been selected from the object set B within the target blob (step S314a).
対象ブロブ内オブジェクト集合Bから全て選択し終えた場合(ステップS314a:Yes)、情報処理装置100Aは、ステップS315の処理を行う。一方、対象ブロブ内オブジェクト集合Bから全て選択し終えていない場合(ステップS314a:No)、情報処理装置100Aは、ステップS306aに戻って処理を繰り返す。 If all objects have been selected from set B of objects in the target blob (step S314a: Yes), the information processing device 100A performs the process of step S315. On the other hand, if all objects have not been selected from set B of objects in the target blob (step S314a: No), the information processing device 100A returns to step S306a and repeats the process.
〔2-4-4.生成処理の他の例〕
上述した例では、各ノードのエッジを接続ノードへのエッジから接続ノードが属するブロブへのエッジに変換してブロブ用グラフを生成する場合を示したが、情報処理装置100Aは、様々な情報を適宜用いて、ブロブ用グラフを生成してもよい。例えば、情報処理装置100Aは、複数のオブジェクトを検索対象とする近傍検索インデックス(単に「インデックス」ともいう)を用いて、ブロブ用グラフを生成してもよい。なお、上述した内容と同様の点については適宜説明を省略する。
2-4-4. Other examples of generation processing
In the above example, a case has been shown in which the edge of each node is converted from an edge to a connecting node to an edge to a blob to which the connecting node belongs to generate a blob graph, but the information processing device 100A may generate a blob graph using various information as appropriate. For example, the information processing device 100A may generate a blob graph using a neighborhood search index (also simply called an "index") that searches multiple objects. Note that explanations of points similar to those described above will be omitted as appropriate.
ブロブ用グラフの生成の一例について図20を用いて説明する。図20は、変形例に係る情報処理の他の一例を示す図である。なお、以下では、インデックスの一例としてグラフを用いる場合を一例として説明するが、インデックスは、複数のオブジェクトを検索対象とするものであればどのようなものであってもよい。例えば、インデックスは、ハッシュテーブル等のハッシュに関する記述を利用したインデックス(ハッシュインデックス)、木構造を有するインデックス(ツリーインデックス)等であってもよい。 An example of generating a graph for blobs will be described with reference to FIG. 20. FIG. 20 is a diagram showing another example of information processing according to a modified example. Note that, although a graph is used as an example of an index below, the index may be any type of index as long as it searches multiple objects. For example, the index may be an index that uses a description related to hash such as a hash table (hash index), an index that has a tree structure (tree index), etc.
また、オブジェクトまたはそのオブジェクトに対応するノード(「オブジェクトノード」ともいう)を示す情報を第1情報と記載し、複数のオブジェクトを分類するために用いる情報を第2情報と記載する場合がある。また、ブロブを示す情報を第3情報と記載し、オブジェクトノードをエッジで連結したグラフを第4情報と記載する場合がある。例えば、図20中のグラフGR21は、オブジェクトノードであるノードN1等がエッジで連結されており、第4情報に対応する。また、図17中のグラフGR31及び図20中のグラフGR32は、第4情報とは異なり、オブジェクトノードとブロブとがエッジが連結されたブロブ用グラフ(「グループグラフ」ともいう)である。すなわち、グループグラフは、オブジェクトノードからブロブへエッジが連結され、オブジェクトノードを参照元とし、ブロブ(グループ)を参照先とするグラフである。 In addition, information indicating an object or a node corresponding to that object (also called an "object node") may be referred to as first information, and information used to classify multiple objects may be referred to as second information.In addition, information indicating a blob may be referred to as third information, and a graph in which object nodes are connected by edges may be referred to as fourth information. For example, graph GR21 in FIG. 20 corresponds to fourth information, in which object nodes such as node N1 are connected by edges.In addition, graph GR31 in FIG. 17 and graph GR32 in FIG. 20 are blob graphs (also called "group graphs") in which object nodes and blobs are connected by edges, unlike fourth information.In other words, a group graph is a graph in which edges are connected from object nodes to blobs, and the object nodes are the reference source and the blobs (groups) are the reference destination.
情報処理装置100Aは、オブジェクトノード間がエッジで連結したグラフGR21をインデックス(第4情報)として用いて、オブジェクトノードからのエッジによる参照先がブロブとなるグループグラフであるグラフGR32を生成する(ステップS41)。図20では、情報処理装置100Aは、空間情報SP32に示すように、ノードからブロブへの有向エッジを含むグラフGR32を生成する。 The information processing device 100A uses the graph GR21 in which object nodes are connected by edges as an index (fourth information) to generate a graph GR32, which is a group graph in which the reference destination of an edge from an object node is a blob (step S41). In FIG. 20, the information processing device 100A generates a graph GR32 that includes directed edges from nodes to blobs, as shown in the spatial information SP32.
例えば、情報処理装置100Aは、複数のオブジェクトから一のオブジェクトを選択し、グラフGR21を用いて一のオブジェクトの近傍オブジェクトを検索し、一のオブジェクトに対応する一のオブジェクトノードから、近傍オブジェクトが属する他のグループへエッジを連結する連結処理により、グラフGR32を生成する。例えば、情報処理装置100Aは、複数のオブジェクトからランダムに一のオブジェクトを選択し、選択した一のオブジェクトを対象に連結処理を行い、グラフGR32を生成する。 For example, the information processing device 100A selects one object from a plurality of objects, searches for nearby objects of the one object using the graph GR21, and generates the graph GR32 by a connection process that connects edges from one object node corresponding to the one object to other groups to which the nearby objects belong. For example, the information processing device 100A randomly selects one object from a plurality of objects, and performs a connection process on the selected one object to generate the graph GR32.
例えば、情報処理装置100Aは、以下のような処理(1-1)~(1-4)を行い、グラフGR32を生成する。なお、オブジェクトは、オブジェクトに対応するノードと読み替えてもよい。 For example, the information processing device 100A performs the following processes (1-1) to (1-4) to generate the graph GR32. Note that the term "object" may be interpreted as a node corresponding to the object.
(1-1):ランダムでオブジェクトNXを取得(選択)
(1-2):オブジェクトNXの近傍オブジェクトを定数k件検索
(1-3):各近傍オブジェクトの属するブロブを取得
(1-4):オブジェクトNXから取得したブロブへのエッジを生成
(1-1): Get Object NX at random (select)
(1-2): Search for k neighboring objects of object NX. (1-3): Obtain the blob to which each neighboring object belongs. (1-4): Generate an edge from object NX to the obtained blob.
例えば処理(1-1)では、情報処理装置100Aは、オブジェクト情報記憶部121に記憶された複数のオブジェクトからランダムに一のオブジェクトNXを取得する。
For example, in process (1-1), the information processing device 100A randomly acquires one object NX from multiple objects stored in the object
例えば処理(1-2)では、情報処理装置100Aは、図11に示すような検索処理を、オブジェクトNXを対象(クエリ)とし、グラフGR21を用いて行うことにより、k件(個)のオブジェクトをオブジェクトNXの近傍オブジェクトとして抽出する。 For example, in process (1-2), the information processing device 100A performs a search process as shown in FIG. 11 using the graph GR21 with the object NX as the target (query), thereby extracting k objects as objects near the object NX.
例えば処理(1-3)では、情報処理装置100Aは、ブロブ情報記憶部125に記憶されたブロブの情報を参照し、オブジェクトNXの近傍オブジェクト(ノード)が対応付けられたブロブを取得する。
For example, in process (1-3), the information processing device 100A refers to the blob information stored in the blob
例えば処理(1-4)では、情報処理装置100Aは、オブジェクトNXから取得したブロブへのエッジを生成する。例えば、情報処理装置100Aは、量子化情報記憶部123A中のオブジェクトNXに取得したブロブを示す情報を対応付けることにより、グラフGR32を生成する。
For example, in process (1-4), the information processing device 100A generates an edge from the object NX to the acquired blob. For example, the information processing device 100A generates the graph GR32 by associating information indicating the acquired blob with the object NX in the quantization
例えば、情報処理装置100Aは、上記の処理(1-1)~(1-4)を、処理対象となるオブジェクトが無くなるまで繰り返し行い、グラフGR32を生成する。なお、空間情報SP21に示すブロブを検索により生成している場合、ブロブの生成の際の検索結果を流用して、グラフGR32を生成してもよい。なお、ブロブを検索により生成する例については後述する。 For example, the information processing device 100A repeats the above processes (1-1) to (1-4) until there are no more objects to be processed, and generates the graph GR32. Note that, if the blobs indicated in the spatial information SP21 are generated by search, the search results when generating the blobs may be reused to generate the graph GR32. Note that an example of generating blobs by search will be described later.
例えば、情報処理装置100Aは、空間情報SP32に示すように、ノード(オブジェクト)からブロブへの有向エッジを含むグラフGR32を用いて、検索処理を行う。例えば、情報処理装置100Aは、検索クエリQE2を対象として、グラフGR32を用いた図19に示すような検索処理を行うことにより、検索クエリQE2の検索結果を得る。 For example, the information processing device 100A performs search processing using a graph GR32 that includes directed edges from nodes (objects) to blobs, as shown in the spatial information SP32. For example, the information processing device 100A performs search processing as shown in FIG. 19 using the graph GR32 for the search query QE2, thereby obtaining search results for the search query QE2.
また、上述した例では、クラスタリングによりブロブを生成する場合を示したが、ブロブは、クラスタリングに限らず、様々な方法により生成されてもよい。例えば、情報処理装置100Aは、インデックス等の第2情報を用いて、ブロブを示す情報(第3情報)を生成してもよい。 In addition, in the above example, a case where blobs are generated by clustering has been shown, but blobs may be generated by various methods other than clustering. For example, the information processing device 100A may generate information indicating a blob (third information) using second information such as an index.
情報処理装置100Aは、図21に示すような、グラフGR21をインデックスとして用いて、ブロブを示す第3情報を生成する。図21は、ブロブ情報の生成処理の一例を示す図である。図21の空間情報SP20は、空間情報SP21中のブロブの情報が生成される前の状態を示し、図21のグラフGR21は、図20のグラフGR21と同様のグラフである。なお、図21に示す処理は、後述する第1方法の一部を示すものであるが、詳細は後述する。 The information processing device 100A generates third information indicating a blob using a graph GR21 as an index, as shown in FIG. 21. FIG. 21 is a diagram showing an example of a process for generating blob information. Spatial information SP20 in FIG. 21 shows the state before the blob information in the spatial information SP21 is generated, and the graph GR21 in FIG. 21 is the same as the graph GR21 in FIG. 20. Note that the process shown in FIG. 21 shows part of a first method, which will be described later, and details of which will be described later.
例えば、情報処理装置100Aは、グラフGR21を用いた検索により、複数のオブジェクトを複数のブロブに分類する第3情報を生成する。例えば、情報処理装置100Aは、グラフGR21中の複数のノードから一のノード(「処理対象ノード」ともいう)を選択し、処理対象ノードにエッジで連結されたノードである近傍ノードのうち少なくとも一部のノードである分類対象ノード、及び処理対象ノードの各々に対応するオブジェクト群を一のグループに分類する分類処理により、第3情報を生成する。例えば、情報処理装置100Aは、複数のノードから所定の処理により処理対象ノードを選択し、選択した処理対象ノードを対象に分類処理を行い、第3情報を生成する。 For example, the information processing device 100A generates third information that classifies multiple objects into multiple blobs by searching using the graph GR21. For example, the information processing device 100A selects one node (also called a "processing target node") from multiple nodes in the graph GR21, and generates the third information by a classification process that classifies the classification target nodes, which are at least some of the neighboring nodes that are nodes connected to the processing target node by edges, and the object groups corresponding to each of the processing target nodes into one group. For example, the information processing device 100A selects the processing target nodes from multiple nodes by a predetermined process, performs classification processing on the selected processing target nodes, and generates the third information.
例えば、情報処理装置100Aは、ノードにエッジで連結された近傍ノード(接続ノード)の数に基づいて処理対象ノードを選択してもよい。例えば、情報処理装置100Aは、近傍ノードの数が大きい方から順に処理対象ノードを選択してもよい。近傍ノードの数が大きい方から順に処理対象ノードを選択し、ブロブを示す第3情報を生成する方法を「第1方法」ともいう。また、例えば、情報処理装置100Aは、近傍ノード(接続ノード)の数が小さい方から順に処理対象ノードを選択してもよい。近傍ノードの数が小さい方から順に処理対象ノードを選択し、ブロブを生成する方法を「第2方法」ともいう。また、例えば、情報処理装置100Aは、ランダムに処理対象ノードを選択してもよい。ランダムに処理対象ノードを選択し、ブロブを示す第3情報を生成する方法を「第3方法」ともいう。以下では、第1方法、第2方法、及び第3方法の各々の処理手順の概要を説明する。 For example, the information processing device 100A may select a processing target node based on the number of nearby nodes (connection nodes) connected to the node by an edge. For example, the information processing device 100A may select processing target nodes in descending order of the number of nearby nodes. The method of selecting processing target nodes in descending order of the number of nearby nodes and generating third information indicating a blob is also referred to as the "first method". Also, for example, the information processing device 100A may select processing target nodes in descending order of the number of nearby nodes (connection nodes). The method of selecting processing target nodes in descending order of the number of nearby nodes and generating a blob is also referred to as the "second method". Also, for example, the information processing device 100A may randomly select a processing target node. The method of randomly selecting a processing target node and generating third information indicating a blob is also referred to as the "third method". Below, an overview of the processing procedures of each of the first method, the second method, and the third method will be described.
〔2-4-4-1.第1方法〕
まず、第1方法について説明する。例えば、第1方法の場合、情報処理装置100Aは、以下のような処理(2-1)~(2-3)を行い、ブロブを示す第3情報を生成する。
[2-4-4-1. 1st method]
First, the first method will be described. For example, in the first method, the information processing device 100A performs the following processes (2-1) to (2-3) to generate third information indicating a blob. do.
(2-1):各ノードの近傍ノード数(エッジ数)が大きいものからノードNDを取得
(2-2):ノードNDの近傍ノード及びノードNDを一のブロブとする
(2-3):ブロブとしたノード及びそのノードのエッジを削除
(2-1): Obtain the node ND with the largest number of neighboring nodes (number of edges) for each node. (2-2): Set the neighboring nodes of node ND and node ND as one blob. (2-3): Delete the node and its edges that have been set as blobs.
例えば、情報処理装置100Aは、処理(2-1)~(2-3)を、すべてのノードにおいて実施する。 For example, the information processing device 100A performs processes (2-1) to (2-3) on all nodes.
例えば、処理(2-1)では、情報処理装置100Aは、グラフGR21を参照し、一のノードNDを順次取得する。情報処理装置100Aは、近傍ノードの数が大きい方から順に並べられたノードの一覧情報を用いて、一のノードNDを取得してもよい。 For example, in process (2-1), the information processing device 100A refers to the graph GR21 and sequentially acquires one node ND. The information processing device 100A may acquire one node ND using list information of nodes arranged in descending order of the number of neighboring nodes.
例えば処理(2-2)では、情報処理装置100Aは、処理対象となっているグラフ(グラフGR21等)を参照し、ノードNDの近傍ノード及びノードNDを一のブロブとする情報を生成する。なお、情報処理装置100Aは、すべての近傍ノードをブロブとするのではなく定数K以下の近傍ノードをブロブとしても良い。例えば、情報処理装置100Aは、ノードNDの全近傍ノードをノードNDとともにブロブとするのではなく、近傍ノードのうちK個の近傍ノード及びノードNDを一のブロブとしてもよい。 For example, in process (2-2), the information processing device 100A refers to the graph being processed (such as graph GR21) and generates information that treats the neighboring nodes of node ND and node ND as one blob. Note that the information processing device 100A may treat neighboring nodes up to a constant K as blobs, rather than treating all neighboring nodes as blobs. For example, the information processing device 100A may treat K of the neighboring nodes and node ND as one blob, rather than treating all neighboring nodes of node ND together with node ND as blobs.
例えば処理(2-3)では、情報処理装置100Aは、ノードが重複して選択されないように、処理(2-2)においてブロブとしたノード及びそのノードのエッジを削除する。例えば、情報処理装置100Aは、ブロブとしたノードが他のノードの近傍ノードであれば、その(エッジおよび)ノードを削除する。なお、上記の方法は一例に過ぎず、処理(2-3)は、エッジ等を削除する方法に限らず、ブロブを生成可能であればどのような方法であってもよい。例えば、情報処理装置100Aは、既にブロブに属しているノードのリストを保持して、除外するノードを管理する方法により、ブロブの生成を行ってもよい。例えば、情報処理装置100Aは、ブロブとしたノードに所定のフラグ(削除フラグ等)を立てることにより、既にブロブに属しているノードを管理してもよい。このように、フラグを用いる場合、情報処理装置100Aは、処理の際に各ノードのフラグを参照して、そのノードを処理対象とするかを判定する。 For example, in process (2-3), the information processing device 100A deletes the node that was set as a blob in process (2-2) and the edge of that node so that the node is not selected in duplicate. For example, if the node that was set as a blob is a neighboring node of another node, the information processing device 100A deletes the node (edge and) the node. Note that the above method is merely an example, and process (2-3) is not limited to a method of deleting edges, etc., and may be any method that can generate a blob. For example, the information processing device 100A may generate a blob by a method of holding a list of nodes that already belong to the blob and managing nodes to be excluded. For example, the information processing device 100A may manage nodes that already belong to the blob by setting a predetermined flag (deletion flag, etc.) on the node that was set as a blob. In this way, when using flags, the information processing device 100A refers to the flag of each node during processing to determine whether the node is to be processed.
上述した第1方法の具体例について図21を用いて説明する。図21では、情報処理装置100Aは、グラフGR21のうち、近傍ノードの数が最大の4個であるノードN7を取得する(ステップS51)。図21では、グラフGR21のうちノードN1も近傍ノードの数が4個であるが、情報処理装置100Aは、ノードN7を取得するものとする。なお、近傍ノードの数が同数のノードが複数ある場合、情報処理装置100Aは、その複数のノードからランダムにノードを取得してもよい。 A specific example of the first method described above will be described with reference to FIG. 21. In FIG. 21, the information processing device 100A acquires node N7 from graph GR21, which has the maximum number of neighboring nodes (four) (step S51). In FIG. 21, node N1 from graph GR21 also has four neighboring nodes, but the information processing device 100A acquires node N7. Note that when there are multiple nodes with the same number of neighboring nodes, the information processing device 100A may randomly acquire a node from the multiple nodes.
そして、情報処理装置100Aは、ノードN7の近傍ノードであるノードN9、N12、N54、N126の4個のノード及びノードN7の5個のノードを一のブロブBL11とする(ステップS52)。情報処理装置100Aは、ノードN7、N9、N12、N54、N126の5個のノードが一のブロブBL11に属することを示す第3情報BLT1を生成する。そして、情報処理装置100Aは、ノードN7、N9、N12、N54、N126の5個のノード及び各ノードのエッジをグラフGR21から削除する。これにより、空間情報SP20-1に示すように、グラフGR21はグラフGR21-1に更新される。 Then, the information processing device 100A sets the four nodes N9, N12, N54, and N126, which are neighboring nodes of node N7, and the five nodes of node N7, as one blob BL11 (step S52). The information processing device 100A generates third information BLT1 indicating that the five nodes N7, N9, N12, N54, and N126 belong to one blob BL11. The information processing device 100A then deletes the five nodes N7, N9, N12, N54, and N126 and the edges of each node from the graph GR21. As a result, the graph GR21 is updated to graph GR21-1, as shown in the spatial information SP20-1.
そして、情報処理装置100Aは、グラフGR21のうち、近傍ノードの数が4個であるノードN1を取得する(ステップS53)。そして、情報処理装置100Aは、ノードN1の近傍ノードであるノードN4、N5、N88、N99の4個のノード及びノードN1の5個のノードを一のブロブBL12とする(ステップS54)。情報処理装置100Aは、ノードN1、N4、N5、N88、N99の5個のノードが一のブロブBL12に属することを示す第3情報BLT2を生成する。そして、情報処理装置100Aは、ノードN1、N4、N5、N88、N99の5個のノード及び各ノードのエッジをグラフGR21-1から削除する。 Then, the information processing device 100A acquires node N1, which has four neighboring nodes, from graph GR21 (step S53). Then, the information processing device 100A sets the four neighboring nodes of node N1, nodes N4, N5, N88, and N99, and the five nodes of node N1, as one blob BL12 (step S54). The information processing device 100A generates third information BLT2 indicating that the five nodes, nodes N1, N4, N5, N88, and N99, belong to one blob BL12. Then, the information processing device 100A deletes the five nodes, nodes N1, N4, N5, N88, and N99, and the edges of each node from graph GR21-1.
情報処理装置100Aは、上述した処理を処理対象となるノードが無くなるまで繰り返し、複数のブロブを示す第3情報を生成する。 The information processing device 100A repeats the above-described process until there are no more nodes to process, and generates third information indicating multiple blobs.
〔2-4-4-2.第2方法〕
次に、第2方法について説明する。例えば、第2方法の場合、情報処理装置100Aは、以下のような処理(3-1)~(3-3)を行い、ブロブを示す第3情報を生成する。
[2-4-4-2. Second method]
Next, the second method will be described. For example, in the case of the second method, the information processing device 100A performs the following processes (3-1) to (3-3) to generate third information indicating a blob. Generate.
(3-1):各ノードの近傍ノード数(エッジ数)が小さいものからノードNDを取得
(3-2):ノードNDの近傍ノード及びノードNDを一のブロブとする
(3-3):ブロブとしたノード及びそのノードのエッジを削除
(3-1): Obtain the node ND with the smallest number of neighboring nodes (number of edges) for each node. (3-2): Set the neighboring nodes of node ND and node ND as one blob. (3-3): Delete the node and its edges that have been set as blobs.
例えば、情報処理装置100Aは、処理(3-1)~(3-3)を、すべてのノードにおいて実施する。 For example, the information processing device 100A performs processes (3-1) to (3-3) on all nodes.
例えば、処理(3-1)では、情報処理装置100Aは、グラフGR21を参照し、一のノードNDを順次取得する。情報処理装置100Aは、近傍ノードの数が小さい方から順に並べられたノードの一覧情報を用いて、一のノードNDを取得してもよい。 For example, in process (3-1), the information processing device 100A refers to the graph GR21 and sequentially acquires one node ND. The information processing device 100A may acquire one node ND using list information of nodes arranged in ascending order of the number of neighboring nodes.
例えば処理(3-2)では、情報処理装置100Aは、処理対象となっているグラフ(グラフGR21等)を参照し、ノードNDの近傍ノード及びノードNDを一のブロブとする情報を生成する。なお、情報処理装置100Aは、すべての近傍ノードをブロブとするのではなく定数K以下の近傍ノードをブロブとしても良い。例えば、情報処理装置100Aは、ノードNDの全近傍ノードをノードNDとともにブロブとするのではなく、近傍ノードのうちK個の近傍ノード及びノードNDを一のブロブとしてもよい。 For example, in process (3-2), the information processing device 100A refers to the graph being processed (such as graph GR21) and generates information that treats the neighboring nodes of node ND and node ND as one blob. Note that the information processing device 100A may treat neighboring nodes up to a constant K as blobs, rather than treating all neighboring nodes as blobs. For example, the information processing device 100A may treat K of the neighboring nodes and node ND as one blob, rather than treating all neighboring nodes of node ND together with node ND as blobs.
例えば処理(3-3)では、情報処理装置100Aは、ノードが重複して選択されないように、処理(3-2)においてブロブとしたノード及びそのノードのエッジを削除する。例えば、情報処理装置100Aは、ブロブとしたノードが他のノードの近傍ノードであれば、その(エッジおよび)ノードを削除する。なお、第2方法は、ノードの取得順が近傍ノード数(エッジ数)が小さい方から順である点以外は、第1方法と同様であるため、具体例等についての説明は省略する。例えば、処理(3-3)は、第1方法と同様に、エッジ等を削除する方法に限らず、ブロブを生成可能であればどのような方法であってもよい。例えば、情報処理装置100Aは、第1方法と同様に、既にブロブに属しているノードのリストを保持して、除外するノードを管理する方法により、ブロブの生成を行ってもよい。 For example, in process (3-3), the information processing device 100A deletes the node that was selected as a blob in process (3-2) and the edge of that node so that the node is not selected in duplicate. For example, if the node that was selected as a blob is a neighboring node of another node, the information processing device 100A deletes that node (and its edge). Note that the second method is similar to the first method except that the order in which the nodes are acquired is from the node with the smallest number of neighboring nodes (number of edges), and therefore a description of specific examples is omitted. For example, like the first method, process (3-3) is not limited to a method of deleting edges, etc., and may be any method that can generate a blob. For example, like the first method, the information processing device 100A may generate a blob by a method of holding a list of nodes that already belong to the blob and managing the nodes to be excluded.
〔2-4-4-3.第3方法〕
次に、第3方法について説明する。例えば、第3方法の場合、情報処理装置100Aは、以下のような処理(4-1)~(4-3)を行い、ブロブを示す第3情報を生成する。
[2-4-4-3. Third method]
Next, the third method will be described. For example, in the third method, the information processing device 100A performs the following processes (4-1) to (4-3) to generate third information indicating a blob. Generate.
(4-1):ランダムにノードNDを順次取得
(4-2):ノードNDの近傍ノード及びノードNDを一のブロブとする
(4-3):ブロブとしたノード及びそのノードのエッジを削除
(4-1): Randomly acquire nodes ND in sequence. (4-2): The neighboring nodes of node ND and node ND are treated as one blob. (4-3): The node treated as a blob and its edges are deleted.
例えば、情報処理装置100Aは、処理(4-1)~(4-3)を、すべてのノードにおいて実施する。なお、第3方法は、ノードの取得順がランダムである点以外は、第1方法及び第2方法と同様であり詳細な説明は省略する。例えば、情報処理装置100Aは、すべて同じエッジ数であればランダム順(第3方法)で第3情報の生成を実行してもよい。 For example, the information processing device 100A performs processes (4-1) to (4-3) on all nodes. Note that the third method is similar to the first and second methods except that the order in which the nodes are acquired is random, and detailed explanations are omitted. For example, the information processing device 100A may generate the third information in a random order (third method) if all the edges are the same.
〔2-4-4-4.第4方法〕
なお、上述した第1方法~第3方法は一例に過ぎず、情報処理装置100Aは、様々な処理によりブロブを生成してもよい。例えば、情報処理装置100Aは、複数のオブジェクトを検索対象とする近傍検索インデックス(インデックス)を用いた検索によりブロブを生成してもよい。インデックスを用いた検索によりブロブを生成する方法を「第4方法」ともいう。
[2-4-4-4. Fourth method]
The above-described first to third methods are merely examples, and the information processing device 100A may generate blobs by various processes. For example, the information processing device 100A may search for a plurality of objects. Alternatively, the blob may be generated by searching using a proximity search index (index) that searches the blob. The method of generating the blob by searching using the index is also referred to as a "fourth method."
以下、第4方法について説明する。なお、上述した内容と同様の点については適宜説明を省略する。以下では、インデックスの一例としてグラフを用いる場合を一例として説明するが、上述したようにインデックスは、複数のオブジェクトを検索対象とするものであればどのようなものであってもよい。例えば、インデックスは、ハッシュインデックス、ツリーインデックス等、どのようなインデックスであってもよい。 The fourth method will be described below. Note that the same points as those described above will not be described as appropriate. Below, an example will be described in which a graph is used as an index, but as described above, the index may be any type of index as long as it searches multiple objects. For example, the index may be any type of index, such as a hash index or a tree index.
ここから、図21に示すようなグラフGR21をインデックスとして用いた検索により、情報処理装置100Aがブロブを示す第3情報を生成する場合を説明する。例えば、情報処理装置100Aは、以下のような処理(5-1)~(5-4)を行い、グラフGR32を生成する。 Now, a case will be described in which the information processing device 100A generates third information indicating a blob by performing a search using the graph GR21 as shown in FIG. 21 as an index. For example, the information processing device 100A performs the following processes (5-1) to (5-4) to generate the graph GR32.
(5-1):ランダムでオブジェクトNXを取得(選択)
(5-2):オブジェクトNXの近傍オブジェクトを定数k件検索
(5-3):オブジェクトNXの近傍オブジェクト及びオブジェクトNXを一のブロブとする
(5-4):重複処理回避用の処理を実行
(5-1): Get Object NX at random (select)
(5-2): Search for k neighboring objects of object NX. (5-3): Treat the neighboring objects of object NX and object NX as one blob. (5-4): Execute a process to avoid duplicate processing.
例えば処理(5-1)では、情報処理装置100Aは、グラフGR21からランダムに一のオブジェクトNXを取得する。 For example, in process (5-1), the information processing device 100A randomly obtains one object NX from the graph GR21.
例えば処理(5-2)では、情報処理装置100Aは、図11に示すような検索処理を、オブジェクトNXを対象(クエリ)とし、グラフGR21を用いて行うことにより、k件(個)のオブジェクトをオブジェクトNXの近傍オブジェクトとして抽出する。なお、情報処理装置100Aは、すべてのオブジェクトをスキャン(検索)して、オブジェクトNXの近傍オブジェクトを抽出してもよい。 For example, in process (5-2), the information processing device 100A performs a search process as shown in FIG. 11 using the graph GR21 with the object NX as the target (query) to extract k objects as objects near the object NX. Note that the information processing device 100A may also scan (search) all objects to extract objects near the object NX.
例えば処理(5-3)では、情報処理装置100Aは、オブジェクトNXの近傍オブジェクトの近傍ノード及びオブジェクトNXを一のブロブとする情報を生成する。 For example, in process (5-3), the information processing device 100A generates information that treats the neighboring nodes of the neighboring objects of object NX and object NX as one blob.
例えば処理(5-4)では、情報処理装置100Aは、一のオブジェクトが重複して検索されたりする等により複数のブロブに属することとならないように、重複処理回避用の処理を実行する。例えば、情報処理装置100Aは、ブロブとしたオブジェクトをインデックスから削除する。例えば、情報処理装置100Aは、ブロブとしたオブジェクトをグラフGR21から削除する。 For example, in process (5-4), the information processing device 100A executes a process to avoid duplicate processing so that a single object does not belong to multiple blobs due to duplicate searches, etc. For example, the information processing device 100A deletes the object that has been set as a blob from the index. For example, the information processing device 100A deletes the object that has been set as a blob from the graph GR21.
なお、情報処理装置100Aは、上記に限らず、一のオブジェクトが複数のブロブに属することとならなければ、どのような方法により重複処理回避用の処理を行ってもよい。例えば、情報処理装置100Aは、ブロブとしたオブジェクトに所定のフラグ(削除フラグ等)を立てることにより、既にブロブに属しているオブジェクトが処理対象となることを抑制してもよい。このように、フラグを用いる場合、情報処理装置100Aは、処理の際に各オブジェクトのフラグを参照して、そのオブジェクトを処理対象とするかを判定する。例えば、情報処理装置100Aは、上述したグループグラフの生成に検索結果を利用する場合には、フラグを用いた方法により重複処理回避用の処理を行ってもよい。 The information processing device 100A may use any method to avoid duplicate processing as long as an object does not belong to multiple blobs, and is not limited to the above. For example, the information processing device 100A may prevent objects that already belong to a blob from being processed by setting a specified flag (such as a deletion flag) on the object that has been made a blob. In this way, when using flags, the information processing device 100A refers to the flag of each object during processing to determine whether the object should be processed. For example, when the information processing device 100A uses search results to generate the above-mentioned group graph, the information processing device 100A may use a method that uses flags to avoid duplicate processing.
〔2-4-5.変形例に係る情報処理装置〕
第2の実施形態の変形例に係る情報処理装置100Aにおいて取得部131は、以下の処理も行う。取得部131は、データ検索の対象となる複数のオブジェクトを示す第1情報と、複数のオブジェクトを分類するために用いる第2情報とを取得する。取得部131は、複数のオブジェクトを検索対象とするインデックスである第2情報を取得する。取得部131は、複数のオブジェクトの各々に対応する複数のノードがエッジにより連結されたグラフである第2情報を取得する。取得部131は、複数のオブジェクトを検索対象とするインデックスである第4情報を取得する。取得部131は、複数のオブジェクトの各々に対応する複数のオブジェクトノードがエッジにより連結されたグラフである第4情報を取得する。
2-4-5. Information processing device according to modified example
In the information processing device 100A according to the modified example of the second embodiment, the
また、第2の実施形態の変形例に係る情報処理装置100Aにおいて生成部132Aは、以下の処理も行う。生成部132Aは、取得部131により取得された第2情報を用いて、第1情報が示す複数のオブジェクトを分類し、複数のオブジェクトを対象とする検索処理において一括処理を行うために用いられる複数のグループを示す第3情報を生成する。生成部132Aは、第2情報を用いて、複数のオブジェクトを複数のグループに分類する第3情報を生成する。生成部132Aは、第2情報を用いた検索により、複数のオブジェクトを複数のグループに分類する第3情報を生成する。
In addition, in the information processing device 100A according to the modified example of the second embodiment, the
生成部132Aは、グラフ中の複数のノードから一のノードを選択し、一のノードにエッジで連結されたノードである近傍ノードのうち少なくとも一部のノードである分類対象ノード、及び一のノードの各々に対応するオブジェクト群を一のグループに分類する分類処理により、第3情報を生成する。生成部132Aは、一のノードの近傍ノードのうち所定の数のノードである分類対象ノード、及び一のノードの各々に対応するオブジェクト群を一のグループに分類する分類処理により、第3情報を生成する。生成部132Aは、一のノードの近傍ノードの全てである分類対象ノード、及び一のノードの各々に対応するオブジェクト群を一のグループに分類する分類処理により、第3情報を生成する。
The
生成部132Aは、複数のノードの各々にエッジで連結されたノードである近傍ノードの数に基づいて、複数のノードから一のノードを選択し、一のノードの分類対象ノード及び一のノードの各々に対応するオブジェクト群を一のグループに分類する分類処理により、第3情報を生成する。生成部132Aは、近傍ノードの数が大きい方から順に一のノードを選択し、一のノードの分類対象ノード及び一のノードの各々に対応するオブジェクト群を一のグループに分類する分類処理により、第3情報を生成する。生成部132Aは、近傍ノードの数が小さい方から順に一のノードを選択し、一のノードの分類対象ノード及び一のノードの各々に対応するオブジェクト群を一のグループに分類する分類処理により、第3情報を生成する。
The
生成部132Aは、複数のノードからランダムに一のノードを選択し、一のノードの分類対象ノード及び一のノードの各々に対応するオブジェクト群を一のグループに分類する分類処理により、第3情報を生成する。生成部132Aは、一のグループに分類された一のノードの分類対象ノード及び一のノードである処理済みノード群をグラフから除外し、処理済みノード群を除外した後のグラフを用いて、分類処理を繰り返すことにより、第3情報を生成する。生成部132Aは、処理済みノード群を除外した後のグラフを用いて、分類処理を複数のオブジェクトがいずれかのグループに分類されるまで繰り返すことにより、第3情報を生成する。生成部132Aは、各々に属するオブジェクトが相互に排他的な複数のグループを示す第3情報を生成する。
The
生成部132Aは、第4情報を用いて、複数のオブジェクトのうち少なくとも一部のオブジェクトに対応するノードであるオブジェクトノードから、複数のグループのうち、オブジェクトノードが属するグループ以外の他のグループへエッジが連結されたグループグラフを生成する。生成部132Aは、複数のオブジェクトから一のオブジェクトを選択し、第4情報を用いて複数のオブジェクトを対象に、一のオブジェクトの近傍オブジェクトを検索し、一のオブジェクトに対応する一のオブジェクトノードから、近傍オブジェクトが属する他のグループへエッジを連結する連結処理により、グループグラフを生成する。生成部132Aは、複数のオブジェクトからランダムに一のオブジェクトを選択し、一のオブジェクトの近傍オブジェクトを検索し、一のオブジェクトに対応する一のオブジェクトノードから、近傍オブジェクトが属する他のグループへエッジを連結する連結処理により、グループグラフを生成する。生成部132Aは、第4情報を用いて、グループグラフを生成する。
The
〔2-4-6.情報処理のフロー〕
次に、図22を用いて、変形例に係る情報処理の手順について説明する。図22は、変形例に係る情報処理の一例を示すフローチャートである。
[2-4-6. Information processing flow]
Next, a procedure of information processing according to the modified example will be described with reference to Fig. 22. Fig. 22 is a flowchart showing an example of information processing according to the modified example.
図22に示すように、情報処理装置100Aは、データ検索の対象となる複数のオブジェクトを示す第1情報を取得する(ステップS401)。例えば、情報処理装置100Aは、オブジェクト情報記憶部121から複数のオブジェクトを示す第1情報を取得する。
22, the information processing device 100A acquires first information indicating multiple objects to be subjected to data search (step S401). For example, the information processing device 100A acquires the first information indicating multiple objects from the object
また、情報処理装置100Aは、複数のオブジェクトを分類するために用いる第2情報を取得する(ステップS402)。例えば、情報処理装置100Aは、グラフ情報記憶部122Aからグラフを第2情報として取得する。
In addition, the information processing device 100A acquires second information used to classify the multiple objects (step S402). For example, the information processing device 100A acquires a graph from the graph
そして、情報処理装置100Aは、第2情報を用いて、第1情報が示す複数のオブジェクトを分類し、複数のオブジェクトを対象とする検索処理において一括処理を行うために用いられる複数のグループを示す第3情報を生成する(ステップS403)。例えば、情報処理装置100Aは、各々に属するオブジェクトが相互に排他的な複数のブロブを示す第3情報を生成する。 Then, the information processing device 100A uses the second information to classify the multiple objects indicated by the first information, and generates third information indicating multiple groups used for performing batch processing in a search process targeting multiple objects (step S403). For example, the information processing device 100A generates third information indicating multiple blobs whose objects are mutually exclusive.
〔3.第3の実施形態〕
上述した例では、オブジェクトに対応するノード(オブジェクトノード)間をエッジで連結したグラフ(「オブジェクトグラフ」ともいう)、オブジェクトノードとグループ(ブロブ)間をエッジで連結したグラフ(ブロブ用グラフ)の2種類のグラフを用いる説明したが、情報処理システム1は様々な種類のグラフを用いてもよい。例えば、情報処理システム1は、オブジェクトグラフ及びブロブ用グラフとは異なり、グループ(ブロブ)間を連結したグラフ(以下「グループ連結グラフ」または「ブロブ連結グラフ」ともいう)を生成し、ブロブ連結グラフを検索に用いてもよい。
3. Third embodiment
In the above example, two types of graphs are used: a graph in which nodes corresponding to objects (object nodes) are connected by edges (also called an "object graph"), and a graph in which object nodes and groups (blobs) are connected by edges (a graph for blobs), but the
この点について、以下、第3の実施形態として説明する。第3の実施形態においては、情報処理システム1は、情報処理装置100または情報処理装置100Aに代えて、情報処理装置100Bを有する。なお、第1の実施形態及び第2の実施形態等において上述した内容と同様の点については適宜説明を省略する。
This point will be described below as the third embodiment. In the third embodiment, the
情報処理装置100Bは、インデックス(インデックス情報)を用いて、一のオブジェクトが属する第1グループ(第1ブロブ)ら、一のオブジェクトの近傍オブジェクトが属する第2グループ(第2ブロブ)へエッジが連結されたグループ連結グラフを生成する。以下では、インデックスの一例としてグラフを用いる場合を一例として説明するが、上述したようにインデックスは、複数のオブジェクトを検索対象とするものであればどのようなものであってもよい。例えば、インデックスは、ハッシュインデックス、ツリーインデックス等、どのようなインデックスであってもよい。 The information processing device 100B uses the index (index information) to generate a group connection graph in which edges are connected from a first group (first blob) to which an object belongs to a second group (second blob) to which a neighboring object of the object belongs. In the following, a case where a graph is used as an example of an index will be described as an example, but as described above, the index may be any type of index as long as it searches multiple objects. For example, the index may be any type of index, such as a hash index or a tree index.
〔3-1.情報処理〕
まず、図23を用いて、第3の実施形態に係る情報処理の概要を説明する。図23は、第3の実施形態に係る情報処理の一例を示す図である。
[3-1. Information Processing]
First, an overview of information processing according to the third embodiment will be described with reference to Fig. 23. Fig. 23 is a diagram showing an example of information processing according to the third embodiment.
図23の例では、情報処理装置100Bは、空間情報SP21に示すようなグラフGR21を取得済みであるものとする。なお、情報処理装置100Bは、グラフ生成に関する様々な技術を適宜用いて、グラフGR21を生成してもよい。グラフGR21は図12等で示すグラフGR21と同様であるため説明を省略する。 In the example of FIG. 23, it is assumed that the information processing device 100B has already acquired a graph GR21 as shown in the spatial information SP21. Note that the information processing device 100B may generate the graph GR21 by appropriately using various graph generation techniques. The graph GR21 is similar to the graph GR21 shown in FIG. 12 etc., and therefore description thereof will be omitted.
情報処理装置100Bは、任意の方法により、ブロブBL1~BL10等を示す情報を生成する。情報処理装置100Bは、k-means等の任意のクラスタリングにより各ノードをブロブBL1~BL10のいずれかに分類してもよい。なお、情報処理装置100Bは、ブロブを生成可能であれば、どのような方法によりブロブを生成してもよい。例えば、情報処理装置100Bは、上述した第1方法~第4方法のいずれかの方法によりブロブBL1~BL10等を示す情報を生成してもよい。 The information processing device 100B generates information indicating blobs BL1 to BL10, etc., by any method. The information processing device 100B may classify each node into one of blobs BL1 to BL10 by any clustering method such as k-means. Note that the information processing device 100B may generate blobs by any method as long as it is possible to generate blobs. For example, the information processing device 100B may generate information indicating blobs BL1 to BL10, etc., by any of the first to fourth methods described above.
情報処理装置100Bは、空間情報SP21に示すようなグラフGR21及びブロブの情報を用いて、ブロブ連結グラフを生成する(ステップS61)。図23の例では、情報処理装置100Bは、空間情報SP41に示すように、ブロブ(第1ブロブ)と他のブロブ(第2ブロブ)との間をエッジで連結したブロブ連結グラフであるグラフGR41を生成する。図23に示す矢印線は、矢元のブロブ(第1ブロブ)から矢先のブロブ(第2ブロブ)への有向エッジを示す。すなわち、図23に示す矢印線は、矢元のブロブを参照元とし、矢先のブロブを参照先とする有向エッジを示す。例えば、図23では、ブロブBL1からは、ブロブBL2、ブロブBL3、ブロブBL4、ブロブBL5及びブロブBL8の5つのブロブへのエッジが連結されることを示す。 The information processing device 100B generates a blob connection graph using the graph GR21 and blob information as shown in the spatial information SP21 (step S61). In the example of FIG. 23, the information processing device 100B generates a graph GR41, which is a blob connection graph in which a blob (first blob) and another blob (second blob) are connected by edges as shown in the spatial information SP41. The arrow line shown in FIG. 23 indicates a directed edge from the blob at the origin of the arrow (first blob) to the blob at the tip of the arrow (second blob). In other words, the arrow line shown in FIG. 23 indicates a directed edge with the blob at the origin of the arrow as the reference source and the blob at the tip of the arrow as the reference destination. For example, FIG. 23 indicates that edges are connected from blob BL1 to five blobs, blob BL2, blob BL3, blob BL4, blob BL5, and blob BL8.
例えば、情報処理装置100Bは、グラフGR21を検索し、検索結果を基にグラフGR41を生成する。例えば、情報処理装置100Bは、以下のような処理(6-1)~(6-4)を行い、ブロブ連結グラフであるグラフGR41を生成する。なお、以下のオブジェクトは、オブジェクトに対応するノードと読み替えてもよい。 For example, the information processing device 100B searches the graph GR21 and generates a graph GR41 based on the search results. For example, the information processing device 100B performs the following processes (6-1) to (6-4) to generate the graph GR41, which is a blob-connected graph. Note that the following objects may be read as nodes corresponding to the objects.
(6-1):ランダムでオブジェクトNXを取得(選択)
(6-2):オブジェクトNXの近傍オブジェクトを定数k件検索
(6-3):各近傍オブジェクトの属するブロブを取得
(6-4):オブジェクトNXが属するブロブから取得したブロブへのエッジを生成
(6-1): Get Object NX at random (select)
(6-2): Search for k neighboring objects of object NX. (6-3): Obtain the blob to which each neighboring object belongs. (6-4): Generate an edge from the blob to which object NX belongs to the obtained blob.
例えば処理(6-1)では、情報処理装置100Bは、オブジェクト情報記憶部121に記憶された複数のオブジェクトからランダムに一のオブジェクトNXを取得する。
For example, in process (6-1), the information processing device 100B randomly acquires one object NX from multiple objects stored in the object
例えば処理(6-2)では、情報処理装置100Bは、図11に示すような検索処理を、オブジェクトNXを対象(クエリ)とし、グラフGR21を用いて行うことにより、k件(個)のオブジェクトをオブジェクトNXの近傍オブジェクトとして抽出する。 For example, in process (6-2), the information processing device 100B performs a search process as shown in FIG. 11 using the graph GR21 with the object NX as the target (query), thereby extracting k objects as objects near the object NX.
例えば処理(6-3)では、情報処理装置100Bは、ブロブ情報記憶部125に記憶されたブロブの情報を参照し、オブジェクトNXの近傍オブジェクト(ノード)が対応付けられたブロブを取得する。
For example, in process (6-3), the information processing device 100B refers to the blob information stored in the blob
例えば処理(6-4)では、情報処理装置100Bは、オブジェクトNXが属するブロブから取得したブロブへのエッジを生成する。情報処理装置100Bは、オブジェクトNXが属するブロブからすべての近傍オブジェクトの属するブロブへのエッジを生成する。例えば、情報処理装置100Bは、オブジェクトNXが属するブロブの参照先として取得したブロブを示す情報(ブロブID)を、オブジェクトNXが属するブロブを示す情報(ブロブID)に対応付けて、ブロブ連結グラフ情報記憶部126に登録することにより、グラフGR41を生成する。
For example, in process (6-4), the information processing device 100B generates an edge from the blob to which the object NX belongs to the acquired blob. The information processing device 100B generates edges from the blob to which the object NX belongs to the blobs to which all nearby objects belong. For example, the information processing device 100B generates graph GR41 by registering information (blob ID) indicating the blob acquired as a reference destination of the blob to which the object NX belongs, in association with information (blob ID) indicating the blob to which the object NX belongs, in the blob connection graph
例えば、情報処理装置100Bは、上記の処理(6-1)~(6-4)を、処理対象となるオブジェクトが無くなるまで繰り返し行い、グラフGR41を生成する。なお、情報処理装置100Bは、ブロブXの参照先としてブロブYが登録済みの場合、ブロブXに属するオブジェクトの近傍オブジェクトとして、ブロブYに属するオブジェクトが再度検索(抽出)されても、登録をスキップして各ブロブの参照先に同じブロブが重複して登録されることを抑制してもよい。 For example, the information processing device 100B repeats the above processes (6-1) to (6-4) until there are no more objects to be processed, and generates the graph GR41. Note that when blob Y has already been registered as a reference destination of blob X, even if an object belonging to blob Y is searched (extracted) again as a neighboring object of an object belonging to blob X, the information processing device 100B may skip the registration and prevent the same blob from being registered as a reference destination of each blob more than once.
例えば、情報処理装置100Bは、空間情報SP41に示すように、ブロブ間をエッジで連結するグラフGR41を用いて検索処理を行う。例えば、情報処理装置100Bは、検索クエリQE2を対象として、ブロブ連結グラフであるグラフGR41を用いた図27及び図28に示すような検索処理を行うことにより、検索クエリQE2の検索結果を得る。 For example, the information processing device 100B performs search processing using a graph GR41 that connects blobs with edges, as shown in the spatial information SP41. For example, the information processing device 100B performs search processing as shown in Figures 27 and 28 using the graph GR41, which is a blob-connected graph, for the search query QE2, thereby obtaining search results for the search query QE2.
上述したブロブ連結グラフの生成方法は一例に過ぎず、情報処理装置100Bは、様々な方法によりブロブ連結グラフを生成してもよい。例えば、情報処理装置100Bは、グラフを検索することなく、ブロブ連結グラフを生成してもよい。空間情報SP21に示すブロブを検索により生成している場合、ブロブの生成の際の検索結果を流用して、グラフGR41等のブロブ連結グラフを生成してもよい。 The above-described method of generating a blob connection graph is merely one example, and the information processing device 100B may generate a blob connection graph using various methods. For example, the information processing device 100B may generate a blob connection graph without searching a graph. If the blobs shown in the spatial information SP21 are generated by searching, the search results from the generation of the blobs may be reused to generate a blob connection graph such as graph GR41.
例えば、情報処理装置100Bは、グラフGR21でのオブジェクトノードの接続関係を、オブジェクトノードが属するブロブの接続関係に変換して、ブロブ連結グラフを生成してもよい。例えば、ブロブBL9に属するノードN1からはブロブBL8に属するノードN88及びブロブBL10に属するノードにエッジが連結されており、ブロブBL9に属するノードN4からはブロブBL7に属するノードにエッジが連結されている。そのため、情報処理装置100Bは、ブロブBL9から、ブロブBL7、ブロブBL8及びブロブBL10の3つのブロブへのエッジが連結されたブロブ連結グラフを生成する。このように、情報処理装置100Bは、オブジェクトノード間を連結するエッジを基に、ブロブ間をエッジで連結するブロブ連結グラフを生成してもよい。 For example, the information processing device 100B may convert the connection relationships of the object nodes in the graph GR21 into the connection relationships of the blobs to which the object nodes belong, to generate a blob connection graph. For example, an edge connects node N1 belonging to blob BL9 to node N88 belonging to blob BL8 and a node belonging to blob BL10, and an edge connects node N4 belonging to blob BL9 to a node belonging to blob BL7. Therefore, the information processing device 100B generates a blob connection graph in which edges are connected from blob BL9 to the three blobs BL7, blob BL8, and blob BL10. In this way, the information processing device 100B may generate a blob connection graph in which blobs are connected by edges based on edges connecting object nodes.
〔3-2.情報処理装置の構成〕
次に、図24を用いて、第3の実施形態に係る情報処理装置100Bの構成について説明する。図24は、第3の実施形態に係る情報処理装置の構成例を示す図である。図24に示すように、情報処理装置100Bは、通信部110と、記憶部120Bと、制御部130Bとを有する。なお、情報処理装置100Bにおいて、情報処理装置100または情報処理装置100Aと同様の点は適宜説明を省略する。
3-2. Configuration of information processing device
Next, the configuration of the information processing device 100B according to the third embodiment will be described with reference to Fig. 24. Fig. 24 is a diagram showing an example of the configuration of the information processing device according to the third embodiment. As shown in Fig. 24, the information processing device 100B has a communication unit 110, a
(記憶部120B)
記憶部120Bは、例えば、RAM、フラッシュメモリ等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。第3の実施形態に係る記憶部120Bは、図24に示すように、オブジェクト情報記憶部121と、グラフ情報記憶部122と、量子化情報記憶部123と、コードブック情報記憶部124と、ブロブ情報記憶部125と、ブロブ連結グラフ情報記憶部126とを有する。
(
The
(ブロブ連結グラフ情報記憶部126)
第3の実施形態に係るブロブ連結グラフ情報記憶部126は、ブロブ連結グラフに関する各種情報を記憶する。例えば、ブロブ連結グラフ情報記憶部126は、生成したブロブ連結グラフを記憶する。図25は、第3の実施形態に係るブロブ連結グラフ情報記憶部の一例を示す図である。図25に示すブロブ連結グラフ情報記憶部126は、「ブロブID」および「接続ブロブ情報」といった項目を有する。
(Blob connection graph information storage unit 126)
The blob connection graph
「ブロブID」は、グラフにおける各ブロブ(グループ)を識別するための識別情報を示す。「接続ブロブ情報」は、対応するブロブから辿ることができるブロブ(参照先のブロブ)に関する情報を示す。例えば、「接続ブロブ情報」には、「参照先」といった情報が含まれる。「参照先」は、エッジにより連結され、そのブロブから辿ることができる参照先(ブロブ)を識別するための情報を示す。すなわち、図25の例では、ブロブを識別するブロブIDに対して、そのブロブからエッジにより辿ることができる参照先(ブロブ)が対応付けられて登録されている。なお、「接続ブロブ情報」には、参照先に接続されるエッジを識別するための情報(エッジID)等が含まれてもよい。 "Blob ID" indicates identification information for identifying each blob (group) in the graph. "Connected blob information" indicates information about blobs (reference blobs) that can be traced from the corresponding blob. For example, "connected blob information" includes information such as "reference." "Reference" indicates information for identifying a reference (blob) that is connected by an edge and can be traced from that blob. That is, in the example of Figure 25, a reference (blob) that can be traced from that blob by an edge is registered in correspondence with a blob ID that identifies a blob. Note that "connected blob information" may also include information (edge ID) for identifying an edge connected to a reference.
図25の例では、ブロブID「BL1」により識別されるブロブ(ブロブBL1)からは、ブロブID「BL2」、「BL3」、「BL4」、「BL5」、「BL8」の各々により識別される5つのブロブにエッジが連結されていることを示す。すなわち、ブロブBL1からは、ブロブBL2、BL3、BL4、BL5、BL8の5つのブロブの各々へ辿ることができることを示す。 The example in FIG. 25 shows that edges connect the blob (blob BL1) identified by the blob ID "BL1" to five blobs identified by the blob IDs "BL2," "BL3," "BL4," "BL5," and "BL8." In other words, it shows that it is possible to trace from blob BL1 to each of the five blobs BL2, BL3, BL4, BL5, and BL8.
なお、ブロブ連結グラフ情報記憶部126は、上記に限らず、目的に応じて種々の情報を記憶してもよい。また、ブロブ連結グラフは、クエリを入力とし、ブロブ連結グラフ中のエッジを辿ることによりオブジェクト(オブジェクトノード)を探索し、クエリに類似するオブジェクトを抽出し出力するプログラムモジュールを含んでもよい。すなわち、ブロブ連結グラフは、ブロブ連結グラフを用いて検索処理を行うプログラムモジュールとしての利用が想定されるものであってもよい。例えば、ブロブ連結グラフであるグラフGR41は、クエリとしてベクトルデータが入力された場合に、そのベクトルデータに類似するベクトルデータに対応するオブジェクトをブロブ連結グラフにより抽出し、出力するプログラムであってもよい。例えば、グラフGR41は、クエリ画像に対応する類似画像を検索するプログラムモジュールとして利用されるデータであってもよい。例えば、グラフGR41は、入力されたクエリに基づいて、ブロブ連結グラフにおいてそのクエリに類似するオブジェクトを抽出し、出力するよう、コンピュータを機能させる。
The blob connection graph
(制御部130B)
図24の説明に戻って、制御部130Bは、コントローラ(controller)であり、例えば、CPUやMPUやGPU等によって、情報処理装置100B内部の記憶装置に記憶されている各種プログラム(情報処理プログラムの一例に相当)がRAMを作業領域として実行されることにより実現される。また、制御部130Bは、コントローラであり、例えば、ASICやFPGA等の集積回路により実現される。
(
Returning to the explanation of Fig. 24, the
図24に示すように、制御部130Bは、取得部131と、生成部132Bと、検索処理部133Bと、提供部134とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部130Bの内部構成は、図24に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
As shown in FIG. 24, the
第3の実施形態に係る取得部131は、データ検索の対象となる複数のオブジェクトが分類された複数のブロブを示すブロブ情報と、複数のオブジェクトを検索対象とするインデックスを示すインデックス情報とを取得する。取得部131は、複数のオブジェクトの各々に対応する複数のノードがエッジにより連結されたグラフを示すインデックス情報を取得する。取得部131は、クラスタリング処理により複数のオブジェクトが分類された複数のブロブを示すブロブ情報を取得する。取得部131は、各々に属するオブジェクトが相互に排他的な複数のブロブを示すブロブ情報を取得する。取得部131は、クエリを取得する。
The
(生成部132B)
生成部132Bは、生成部132または生成部132Aと同様に各種情報を生成する。
(Generation unit 132B)
The generating unit 132B generates various types of information in the same manner as the generating
生成部132Bは、取得部131により取得されたインデックス情報を用いて、複数のオブジェクトのうち一のオブジェクトが属する第1ブロブから、一のオブジェクトの近傍オブジェクトが属するブロブである第2ブロブへエッジが連結されたブロブ連結グラフを生成する。生成部132Bは、複数のオブジェクトから一のオブジェクトを選択し、インデックス情報を用いて複数のオブジェクトを対象に、一のオブジェクトの前近傍オブジェクトを検索し、一のオブジェクトが属する第1ブロブから、近傍オブジェクトが属する第2ブロブへエッジを連結することにより、ブロブ連結グラフを生成する。
The generating unit 132B uses the index information acquired by the acquiring
生成部132Bは、複数のオブジェクトからランダムに一のオブジェクトを選択し、一のオブジェクトの近傍オブジェクトを検索し、一のオブジェクトが属する第1ブロブから、近傍オブジェクトが属する第2ブロブへエッジを連結することにより、ブロブ連結グラフを生成する。生成部132Bは、グラフを用いて第1ブロブから第2ブロブへエッジが連結されたブロブ連結グラフを生成する。 The generation unit 132B randomly selects one object from the multiple objects, searches for nearby objects of the one object, and generates a blob connection graph by connecting edges from a first blob to which the one object belongs to a second blob to which the nearby object belongs. The generation unit 132B uses the graph to generate a blob connection graph in which edges are connected from the first blob to the second blob.
生成部132Bは、グラフを用いて、一のオブジェクトの近傍オブジェクトを検索し、一のオブジェクトが属する第1ブロブから、近傍オブジェクトが属する第2ブロブへエッジを連結することにより、ブロブ連結グラフを生成する。生成部132Bは、第1ブロブから、グラフにおいて一のオブジェクトに対応する一のノードにエッジで連結されたノードである近傍ノードに対応する近傍オブジェクトが属する第2ブロブへエッジを連結することにより、ブロブ連結グラフを生成する。 The generation unit 132B uses the graph to search for nearby objects of an object, and generates a blob connection graph by connecting an edge from a first blob to which the object belongs to a second blob to which the nearby object belongs. The generation unit 132B generates a blob connection graph by connecting an edge from the first blob to a second blob to which a nearby object belongs that corresponds to a nearby node that is a node connected by an edge to a node corresponding to the object in the graph.
生成部132Bは、第1ブロブから、第1ブロブの代表点である第1代表点と、第2ブロブの代表点である第2代表点との間をエッジで連結することにより、ブロブ連結グラフを生成する。生成部132Bは、第1ブロブのセントロイドである第1代表点と、第2ブロブのセントロイドである第2代表点との間をエッジで連結することにより、ブロブ連結グラフを生成する。生成部132Bは、第1ブロブに属するオブジェクトを基に算出される中心点である第1代表点と、第2ブロブに属するオブジェクトを基に算出される中心点である第2代表点との間をエッジで連結することにより、ブロブ連結グラフを生成する。 The generation unit 132B generates a blob connection graph by connecting, from the first blob, a first representative point that is a representative point of the first blob and a second representative point that is a representative point of the second blob with an edge. The generation unit 132B generates a blob connection graph by connecting, from the first blob, a first representative point that is a centroid of the first blob and a second representative point that is a centroid of the second blob with an edge. The generation unit 132B generates a blob connection graph by connecting, from the first representative point that is a center point calculated based on objects belonging to the first blob and the second representative point that is a center point calculated based on objects belonging to the second blob with an edge.
(検索処理部133B)
検索処理部133Bは、検索処理部133または検索処理部133Aと同様に検索処理に関する各種処理を行う。
(
The
検索処理部133Bは、生成部132Bにより生成されたブロブ連結グラフを用いた検索処理を行う。検索処理部133Bは、ブロブ連結グラフを用いて、検索クエリの近傍オブジェクトを検索する検索処理を行う。検索処理部133Bは、ブロブ連結グラフにおいてブロブ間を連結するエッジを辿ることにより、検索クエリの近傍オブジェクトを検索する検索処理を行う。
The
検索処理部133Bは、検索処理において、複数のブロブを示すブロブ情報を用いて、一のブロブに属するオブジェクトである対象オブジェクトと検索クエリとの距離を、ベクトル量子化された対象オブジェクトのベクトル情報を用いて算出する。検索処理部133Bは、対象オブジェクトと検索クエリとの距離の算出を並列化して一括で行う。検索処理部133Bは、情報処理装置の仕様に基づいて決定される一括処理数の対象オブジェクトと検索クエリとの距離の算出を並列処理する。
In the search process, the
〔3-3.情報処理のフロー〕
次に、図26を用いて、第3の実施形態に係る情報処理の手順について説明する。図26は、第3の実施形態に係る情報処理の一例を示すフローチャートである。
[3-3. Information processing flow]
Next, a procedure of information processing according to the third embodiment will be described with reference to Fig. 26. Fig. 26 is a flowchart showing an example of information processing according to the third embodiment.
図26に示すように、情報処理装置100Bは、データ検索の対象となる複数のオブジェクトが分類された複数のグループを示すグループ情報を取得する(ステップS501)。例えば、情報処理装置100Bは、データ検索の対象となる複数のオブジェクトに対応するノード(オブジェクトノード)が分類された複数のブロブを示すブロブ情報を取得する。 As shown in FIG. 26, the information processing device 100B acquires group information indicating a plurality of groups into which a plurality of objects to be the subject of the data search are classified (step S501). For example, the information processing device 100B acquires blob information indicating a plurality of blobs into which nodes (object nodes) corresponding to a plurality of objects to be the subject of the data search are classified.
情報処理装置100Bは、複数のオブジェクトを検索対象とするインデックスを示すインデックス情報を取得する(ステップS502)。例えば、情報処理装置100Bは、複数のオブジェクトに対応するノード(オブジェクトノード)がエッジで連結されたグラフをインデックスとして取得する。 The information processing device 100B acquires index information indicating an index for searching multiple objects (step S502). For example, the information processing device 100B acquires, as an index, a graph in which nodes (object nodes) corresponding to multiple objects are connected by edges.
情報処理装置100Bは、インデックス情報を用いて、複数のオブジェクトのうち一のオブジェクトが属する第1グループから、一のオブジェクトの近傍オブジェクトが属するグループである第2グループへエッジが連結されたグループ連結グラフを生成する(ステップS503)。例えば、情報処理装置100Bは、インデックス情報を用いて、複数のオブジェクトのうち一のオブジェクトが属する第1ブロブから、一のオブジェクトの近傍オブジェクトが属するブロブである第2ブロブへエッジが連結されたブロブ連結グラフを生成する。 The information processing device 100B uses the index information to generate a group connection graph in which edges are connected from a first group to which one of the multiple objects belongs to a second group to which a neighboring object of the one object belongs (step S503). For example, the information processing device 100B uses the index information to generate a blob connection graph in which edges are connected from a first blob to which one of the multiple objects belongs to a second blob to which a neighboring object of the one object belongs.
〔3-4.検索処理例〕
ここで、第3の実施形態に係る検索処理の一例について、図27及び図28を一例として説明する。図27及び図28は、第3の実施形態に係る検索処理の一例を示すフローチャートである。以下に説明する検索処理は、情報処理装置100Bの検索処理部133Bによって行われる。なお、第1の実施形態や第2の実施形態で説明した検索処理と同様の点については適宜説明を省略する。
[3-4. Search processing example]
Here, an example of the search process according to the third embodiment will be described with reference to Figs. 27 and 28. Figs. 27 and 28 are flowcharts showing an example of the search process according to the third embodiment. The search process described below is performed by the
図27及び図28では、N(G、s)およびCはブロブの集合(ブロブ集合)となる。また、「G」は、ブロブ間がエッジで連結されたグラフ(ブロブ連結グラフ)データ(例えば、空間情報SP41に示すグラフGR41等)であってもよい。例えば、情報処理装置100Bは、k近傍検索処理を実行する。 In Figures 27 and 28, N(G,s) and C are a set of blobs (blob set). "G" may also be graph (blob connection graph) data in which blobs are connected by edges (for example, graph GR41 shown in spatial information SP41). For example, information processing device 100B executes k-nearest neighbor search processing.
まず、図27に示す処理(メイン処理)について説明する。例えば、情報処理装置100Bは、超球の半径rを∞(無限大)に設定し、ブロブ集合Cを空集合(Φ)に設定する(ステップS601)。そして、情報処理装置100Bは、既存のブロブ集合(全てのブロブ)から部分ブロブ集合Bを抽出する(ステップS602)。例えば、情報処理装置100Bは、ルートノードとして選択されたオブジェクト(ノード)が属するブロブを部分ブロブ集合Bとして抽出してもよい。また、例えば、情報処理装置100Bは、ランダムにブロブを部分ブロブ集合Bとして抽出してもよい。 First, the process (main process) shown in FIG. 27 will be described. For example, the information processing device 100B sets the radius r of the hypersphere to ∞ (infinity) and sets the blob set C to an empty set (Φ) (step S601). Then, the information processing device 100B extracts a partial blob set B from the existing blob set (all blobs) (step S602). For example, the information processing device 100B may extract a blob to which an object (node) selected as the root node belongs as the partial blob set B. Also, for example, the information processing device 100B may randomly extract blobs as the partial blob set B.
そして、情報処理装置100Bは、判定処理を実行する(ステップS603)。情報処理装置100Bは、図28に示すステップS701~S717の判定処理を実行する。図28に示す判定処理の詳細については後述する。 Then, the information processing device 100B executes a determination process (step S603). The information processing device 100B executes the determination process of steps S701 to S717 shown in FIG. 28. Details of the determination process shown in FIG. 28 will be described later.
そして、情報処理装置100Bは、ブロブ集合Sに部分ブロブ集合Bを設定する(ステップS604)。 Then, the information processing device 100B sets the partial blob set B to the blob set S (step S604).
情報処理装置100Bは、ブロブ集合Sに含まれるブロブの中で最小のクエリ距離dのブロブsを選択する(ステップS605)。なお、ここでいう「クエリ距離」とは、ブロブ内の全てのオブジェクトとクエリオブジェクト(クエリ)間の中で最も短い距離である。例えば、情報処理装置100Bは、クエリ(検索クエリ)となるオブジェクトをyとすると、ブロブ集合Sのうち、オブジェクトyとのクエリ距離が最も短いブロブsを選択する。なお、クエリ距離は、上記に限らず、例えばクエリとブロブの代表点(セントロイド等)との間の距離であってもよい。そして、情報処理装置100Bは、ブロブ集合Sからブロブsを除外する(ステップS606)。 The information processing device 100B selects a blob s with the smallest query distance d from among the blobs included in the blob set S (step S605). Note that the "query distance" here is the shortest distance between all objects in the blob and the query object (query). For example, if an object that is a query (search query) is y, the information processing device 100B selects a blob s from the blob set S with the shortest query distance to object y. Note that the query distance is not limited to the above, and may be, for example, the distance between the query and the representative point (centroid, etc.) of the blob. Then, the information processing device 100B excludes the blob s from the blob set S (step S606).
そして、情報処理装置100Bは、ブロブsのクエリ距離dがr(1+ε)を超えるか否かを判定する(ステップS607)。ブロブsのクエリ距離dがr(1+ε)を超える場合(ステップS607:Yes)、情報処理装置100Bは、オブジェクト集合Rをオブジェクトyの近傍オブジェクト集合として出力し(ステップS608)、処理を終了する。 Then, the information processing device 100B determines whether the query distance d of the blob s exceeds r(1+ε) (step S607). If the query distance d of the blob s exceeds r(1+ε) (step S607: Yes), the information processing device 100B outputs the object set R as a neighborhood object set of the object y (step S608) and ends the process.
ブロブsのクエリ距離dがr(1+ε)を超えない場合(ステップS607:No)、情報処理装置100Bは、ブロブsがブロブ集合Cに含まれるかを判定する(ステップS609)。 If the query distance d of blob s does not exceed r(1+ε) (step S607: No), the information processing device 100B determines whether blob s is included in the blob set C (step S609).
ブロブsがブロブ集合Cに含まれる場合(ステップS609:Yes)、情報処理装置100Bは、ステップS605に戻って処理を繰り返す。 If blob s is included in blob set C (step S609: Yes), information processing device 100B returns to step S605 and repeats the process.
ブロブsがブロブ集合Cに含まれない場合(ステップS609:No)、情報処理装置100Bは、ブロブ集合Cにブロブsを追加する(ステップS610)。 If blob s is not included in blob set C (step S609: No), the information processing device 100B adds blob s to blob set C (step S610).
そして、情報処理装置100Bは、部分ブロブ集合Bにブロブsの近傍ブロブ集合N(G,s)を設定する(ステップS611)。近傍ブロブ集合N(G,s)は、例えばブロブsに関連付けられているブロブ(近傍のブロブ)の集合である。例えば、近傍ブロブ集合N(G,s)は、ブロブsからのエッジが連結されているブロブ(近傍のブロブ)の集合である。そして、情報処理装置100Bは、判定処理を実行する(ステップS612)。詳細は後述するが、例えば、情報処理装置100Bは、上述したステップS603と同様に、図28に示すステップS701~S717の判定処理を実行する。 Then, the information processing device 100B sets a neighborhood blob set N(G,s) of blob s in the partial blob set B (step S611). The neighborhood blob set N(G,s) is, for example, a set of blobs (neighboring blobs) associated with blob s. For example, the neighborhood blob set N(G,s) is a set of blobs (neighboring blobs) connected by edges from blob s. The information processing device 100B then executes a determination process (step S612). Details will be described later, but for example, the information processing device 100B executes the determination process of steps S701 to S717 shown in FIG. 28, similar to step S603 described above.
そして、情報処理装置100Bは、ブロブ集合Sが空集合(Φ)であるか否かを判定する(ステップS613)。ブロブ集合Sが空集合でない場合(ステップS613:No)、情報処理装置100Bは、ステップS605に戻って処理を繰り返す。また、ブロブ集合Sが空集合である場合(ステップS613:Yes)、情報処理装置100Bは、オブジェクト集合Rを出力し、処理を終了する(ステップS614)。例えば、情報処理装置100Bは、オブジェクト集合Rに含まれるオブジェクト(ノード)を追加ノード(入力オブジェクトy)に対応する近傍ノードとして選択してもよい。例えば、情報処理装置100Bは、オブジェクト集合Rに含まれるオブジェクト(ノード)を対象ノード(入力オブジェクトy)に対応する近傍ノードとして抽出(選択)してもよい。また、例えば、情報処理装置100Bは、オブジェクト集合Rに含まれるオブジェクト(ノード)を検索クエリ(入力オブジェクトy)に対応する検索結果として、検索を行った端末装置等へ提供してもよい。 Then, the information processing device 100B determines whether the blob set S is an empty set (Φ) (step S613). If the blob set S is not an empty set (step S613: No), the information processing device 100B returns to step S605 and repeats the process. Also, if the blob set S is an empty set (step S613: Yes), the information processing device 100B outputs the object set R and ends the process (step S614). For example, the information processing device 100B may select an object (node) included in the object set R as a nearby node corresponding to the added node (input object y). For example, the information processing device 100B may extract (select) an object (node) included in the object set R as a nearby node corresponding to the target node (input object y). Also, for example, the information processing device 100B may provide the object (node) included in the object set R to the terminal device that performed the search as a search result corresponding to the search query (input object y).
ここから、図28に示す処理(判定処理)について説明する。まず、情報処理装置100Bは、ブロブ集合Tに部分ブロブ集合Bを設定する(ステップS701)。 Now, the process (determination process) shown in FIG. 28 will be described. First, the information processing device 100B sets a partial blob set B in the blob set T (step S701).
そして、情報処理装置100Bは、ブロブ集合Tからブロブbを一つ取得し、ブロブ集合Tからブロブbを削除する(ステップS702)。そして、情報処理装置100Bは、判定処理に用いる変数であるminを∞(無限大)に設定する(ステップS703)。 Then, the information processing device 100B acquires one blob b from the blob set T, and deletes the blob b from the blob set T (step S702). Then, the information processing device 100B sets the variable min used in the determination process to ∞ (infinity) (step S703).
そして、情報処理装置100Bは、ブロブbからオブジェクトuを一つ取得し、ブロブbからオブジェクトuを削除する(ステップS704)。 Then, the information processing device 100B obtains one object u from blob b and deletes object u from blob b (step S704).
そして、情報処理装置100Bは、オブジェクトuとオブジェクトyとの距離d(u,y)がmin未満か否かを判定する(ステップS705)。 Then, the information processing device 100B determines whether the distance d(u, y) between objects u and y is less than min (step S705).
オブジェクトuとオブジェクトyとの距離d(u,y)がmin未満である場合(ステップS705:Yes)、情報処理装置100Bは、minの値を距離d(u,y)に設定(更新)し(ステップS706)、ステップS707の処理を行う。 If the distance d(u, y) between objects u and y is less than min (step S705: Yes), the information processing device 100B sets (updates) the value of min to the distance d(u, y) (step S706) and performs processing of step S707.
オブジェクトuとオブジェクトyとの距離d(u,y)がmin未満ではない場合(ステップS705:No)、情報処理装置100Bは、ステップS706の処理を行わず、ステップS707の処理を行う。 If the distance d(u, y) between object u and object y is not less than min (step S705: No), the information processing device 100B does not perform the process of step S706, but performs the process of step S707.
情報処理装置100Bは、オブジェクトuとオブジェクトyとの距離d(u,y)がr(1+ε)以下であるか否かを判定する(ステップS707)。 The information processing device 100B determines whether the distance d(u, y) between objects u and y is less than or equal to r(1+ε) (step S707).
オブジェクトuとオブジェクトyとの距離d(u,y)がr(1+ε)以下である場合(ステップS707:Yes)、情報処理装置100Bは、ブロブbをブロブ集合Sに追加し(ステップS708)、ステップS709の処理を行う。 If the distance d(u, y) between objects u and y is less than or equal to r(1+ε) (step S707: Yes), the information processing device 100B adds the blob b to the blob set S (step S708) and performs the processing of step S709.
オブジェクトuとオブジェクトyとの距離d(u,y)がr(1+ε)以下ではない場合(ステップS707:No)、情報処理装置100Bは、ステップS708の処理を行わず、ステップS709の処理を行う。 If the distance d(u, y) between object u and object y is not less than r(1+ε) (step S707: No), the information processing device 100B does not perform the process of step S708, but performs the process of step S709.
情報処理装置100Bは、オブジェクトuとオブジェクトyとの距離d(u,y)がr以下であるか否かを判定する(ステップS709)。 The information processing device 100B determines whether the distance d(u, y) between objects u and y is less than or equal to r (step S709).
オブジェクトuとオブジェクトyとの距離d(u,y)がr以下である場合(ステップS709:Yes)、情報処理装置100Bは、オブジェクトuをオブジェクト集合Rに追加し(ステップS710)、ステップS711の処理を行う。 If the distance d(u, y) between object u and object y is less than or equal to r (step S709: Yes), the information processing device 100B adds object u to object set R (step S710) and performs processing of step S711.
オブジェクトuとオブジェクトyとの距離d(u,y)がr以下ではない場合(ステップS709:No)、情報処理装置100Bは、ステップS710の処理を行わず、ステップS711の処理を行う。 If the distance d(u, y) between object u and object y is not less than r (step S709: No), the information processing device 100B does not perform the process of step S710, but performs the process of step S711.
情報処理装置100Bは、オブジェクト集合Rに含まれるオブジェクト数がksを超えるか否かを判定する(ステップS711)。所定数ksは、任意に定められる自然数である。例えば、ksは、検索数や抽出対象数であってもよい。また、例えば、範囲検索等において抽出するオブジェクト数の上限を設けない場合、ksは、無限大に設定されてもよい。例えば、ks=4等であってもよい。 The information processing device 100B determines whether the number of objects included in the object set R exceeds ks (step S711). The predetermined number ks is a natural number that is determined arbitrarily. For example, ks may be the number of searches or the number of objects to be extracted. Furthermore, for example, when no upper limit is set on the number of objects to be extracted in a range search or the like, ks may be set to infinity. For example, ks may be 4, etc.
オブジェクト集合Rに含まれるオブジェクト数がksを超える場合(ステップS711:Yes)、情報処理装置100Bは、オブジェクト集合Rに含まれるオブジェクトの中でオブジェクトyから最も遠いオブジェクトを、オブジェクト集合Rから除外し(ステップS712)、ステップS713の処理を行う。 If the number of objects included in object set R exceeds ks (step S711: Yes), information processing device 100B excludes from object set R the object that is farthest from object y among the objects included in object set R (step S712), and performs processing of step S713.
オブジェクト集合Rに含まれるオブジェクト数がksを超えない場合(ステップS711:No)、情報処理装置100Bは、ステップS712の処理を行わず、ステップS713の処理を行う。 If the number of objects included in object set R does not exceed ks (step S711: No), information processing device 100B does not perform processing in step S712, but performs processing in step S713.
情報処理装置100Bは、オブジェクト集合Rに含まれるオブジェクト数がksと一致するか否かを判定する(ステップS713)。 The information processing device 100B determines whether the number of objects included in the object set R matches ks (step S713).
オブジェクト集合Rに含まれるオブジェクト数がksと一致する場合(ステップS713:Yes)、情報処理装置100Bは、オブジェクト集合Rに含まれるオブジェクトの中でオブジェクトyから最も遠いオブジェクトと、オブジェクトyとの距離をrに設定し(ステップS714)、ステップS715の処理を行う。 If the number of objects included in object set R matches ks (step S713: Yes), information processing device 100B sets the distance between object y and the object farthest from object y among the objects included in object set R to r (step S714), and performs processing of step S715.
オブジェクト集合Rに含まれるオブジェクト数がksと一致しない場合(ステップS713:No)、情報処理装置100Bは、ステップS714の処理を行わず、ステップS715の処理を行う。 If the number of objects included in the object set R does not match ks (step S713: No), the information processing device 100B does not perform the process of step S714, but performs the process of step S715.
情報処理装置100Bは、ブロブbが空集合(Φ)であるか否かを判定する(ステップS715)。ブロブbが空集合でない場合(ステップS715:No)、情報処理装置100Bは、ステップS704に戻って処理を繰り返す。 The information processing device 100B determines whether or not the blob b is an empty set (Φ) (step S715). If the blob b is not an empty set (step S715: No), the information processing device 100B returns to step S704 and repeats the process.
また、ブロブbが空集合である場合(ステップS715:Yes)、情報処理装置100Bは、minを部分ブロブ集合B内のブロブbのブロブのクエリ距離とする(ステップS716)。例えば、情報処理装置100Bは、ブロブbの全てのオブジェクトとクエリとの間の距離のうち最も短い距離をクエリ距離としてminに設定する。 Also, if blob b is an empty set (step S715: Yes), the information processing device 100B sets min as the query distance of blob b in the partial blob set B (step S716). For example, the information processing device 100B sets min as the query distance, which is the shortest distance between all objects of blob b and the query.
情報処理装置100Bは、ブロブ集合Tが空集合(Φ)であるか否かを判定する(ステップS717)。ブロブ集合Tが空集合でない場合(ステップS717:No)、情報処理装置100Bは、ステップS702に戻って処理を繰り返す。 The information processing device 100B determines whether the blob set T is an empty set (Φ) (step S717). If the blob set T is not an empty set (step S717: No), the information processing device 100B returns to step S702 and repeats the process.
また、ブロブ集合Tが空集合である場合(ステップS717:Yes)、判定処理を終了する。 Also, if the blob set T is an empty set (step S717: Yes), the determination process ends.
〔3-5.変形例〕
ブロブ連結グラフは、上述した例に限らず様々な態様により構成されてもよい。例えば、ブロブ連結グラフは、各グループ(ブロブ)の代表点間がエッジで連結されたグラフであってもよい。この点について、以下、第3の実施形態に係る変形例として説明する。なお、第1の実施形態や第2の実施形態や第3の実施形態と同様の点については、適宜説明を省略する。第3の実施形態の変形例に係る情報処理装置100Bは、ブロブ情報記憶部125及びブロブ連結グラフ情報記憶部126に代えて、ブロブ情報記憶部125A及びブロブ連結グラフ情報記憶部126Aを有する。
3-5. Modified Examples
The blob connection graph may be configured in various ways, not limited to the above-mentioned example. For example, the blob connection graph may be a graph in which the representative points of each group (blob) are connected by edges. This point will be described below as a modified example of the third embodiment. Note that the description of the same points as the first, second, and third embodiments will be omitted as appropriate. The information processing device 100B according to the modified example of the third embodiment has a blob
〔3-5-1.情報処理〕
まず、図29を用いて、変形例に係る情報処理の概要を説明する。図29は、変形例に係るブロブ連結グラフ情報の一例を示す図である。図29の例ではブロブがクラスタリングにより生成されている場合を示す。
[3-5-1. Information Processing]
First, an overview of information processing according to the modified example will be described with reference to Fig. 29. Fig. 29 is a diagram showing an example of blob connection graph information according to the modified example. The example of Fig. 29 shows a case where blobs are generated by clustering.
図29の例では、情報処理装置100Bは、各ブロブのセントロイドを連結したブロブ連結グラフを生成する。情報処理装置100Bは、空間情報SP41に示すように、各ブロブBL1~BL10の各々に対応するセントロイドC1~C10をエッジで連結したブロブ連結グラフであるグラフGR42を生成する。情報処理装置100Bは、グラフ生成に関する種々の従来技術を適宜用いてグラフGR42を生成する。 In the example of FIG. 29, the information processing device 100B generates a blob connection graph that connects the centroids of each blob. The information processing device 100B generates graph GR42, which is a blob connection graph that connects the centroids C1 to C10 corresponding to each of the blobs BL1 to BL10 with edges, as shown in the spatial information SP41. The information processing device 100B generates graph GR42 by appropriately using various conventional techniques related to graph generation.
例えば、情報処理装置100Bは、ブロブBL1のセントロイドC1がブロブBL2のセントロイドC2、ブロブBL3のセントロイドC3、ブロブBL4のセントロイドC4、ブロブBL7のセントロイドC7、及びブロブBL8のセントロイドC8の5つのセントロイドにエッジで連結されたグラフGR42を生成する。また、例えば、情報処理装置100Bは、ブロブBL2のセントロイドC2が、ブロブBL1のセントロイドC1、ブロブBL3のセントロイドC3、及びブロブBL4のセントロイドC4の3つのセントロイドにエッジで連結されたグラフGR42を生成する。 For example, the information processing device 100B generates a graph GR42 in which the centroid C1 of blob BL1 is connected by edges to five centroids: the centroid C2 of blob BL2, the centroid C3 of blob BL3, the centroid C4 of blob BL4, the centroid C7 of blob BL7, and the centroid C8 of blob BL8. Also, for example, the information processing device 100B generates a graph GR42 in which the centroid C2 of blob BL2 is connected by edges to three centroids: the centroid C1 of blob BL1, the centroid C3 of blob BL3, and the centroid C4 of blob BL4.
なお、情報処理装置100Bは、どのような方法によりグラフGR42を生成してもよい。情報処理装置100Bは、様々なインデックスを用いて、グラフGR42を生成してもよい。例えば、情報処理装置100Bは、オブジェクトノードが連結されたグラフGR21を用いて、グラフGR42を生成してもよい。この場合、情報処理装置100Bは、図23中のグラフGR41と同様の処理によりグラフGR42を生成できるため、詳細な説明は省略する。例えば、情報処理装置100Bは、図23に示す例と同様の処理により、グラフGR42を生成してもよい。なお、グラフGR42は無向(双方向)エッジを一例として示すが、有向エッジであってもよい。 The information processing device 100B may generate the graph GR42 by any method. The information processing device 100B may generate the graph GR42 by using various indexes. For example, the information processing device 100B may generate the graph GR42 by using the graph GR21 in which object nodes are linked. In this case, the information processing device 100B can generate the graph GR42 by the same process as the graph GR41 in FIG. 23, so a detailed description will be omitted. For example, the information processing device 100B may generate the graph GR42 by the same process as the example shown in FIG. 23. Note that although the graph GR42 shows an undirected (bidirectional) edge as an example, it may be a directed edge.
このように、変形例に係る情報処理装置100Bは、セントロイドのグラフをブロブ連結グラフとして生成する。そして、情報処理装置100Bは、生成したブロブ連結グラフを用いてセントロイドで通常の検索を行い、距離計算はブロブ単位で行う。このように、情報処理装置100Bは、ブロブをセントロイドで代表させることで、簡便な処理とすることができる。なお、情報処理装置100Bは、ブロブがクラスタリングではない場合には、各ブロブに属するオブジェクトを基に中心点を算出し、算出した中心点を代表点として用いてもよい。 In this way, the information processing device 100B according to the modified example generates a centroid graph as a blob-linked graph. The information processing device 100B then performs a normal search with the centroids using the generated blob-linked graph, and performs distance calculations on a blob-by-blob basis. In this way, the information processing device 100B can simplify processing by representing blobs with centroids. Note that, when the blobs are not clustered, the information processing device 100B may calculate a center point based on the objects belonging to each blob, and use the calculated center point as the representative point.
図29の例では、情報処理装置100Bは、空間情報SP42に示すように、ブロブの代表点であるセントロイド間がエッジで連結されたグラフGR42を用いて、検索処理を行う。例えば、情報処理装置100Bは、検索クエリQE2を対象として、グラフGR21を用いた図27及び図28に示すような検索処理を行うことにより、検索クエリQE2の検索結果を得る。この点については、上述した例と同様であり詳細な説明は省略する。 In the example of FIG. 29, the information processing device 100B performs search processing using a graph GR42 in which centroids, which are representative points of blobs, are connected by edges, as shown in the spatial information SP42. For example, the information processing device 100B performs search processing as shown in FIG. 27 and FIG. 28 using the graph GR21 for the search query QE2, thereby obtaining search results for the search query QE2. This is similar to the example described above, and detailed description will be omitted.
〔3-5-2.情報〕
次に、図30及び図31を用いて、変形例に係る情報の概要を説明する。図30は、変形例に係るブロブ情報記憶部の一例を示す図である。図31は、変形例に係るブロブ連結グラフ情報記憶部の一例を示す図である。
3-5-2. Information
Next, an overview of information related to the modified example will be described with reference to Fig. 30 and Fig. 31. Fig. 30 is a diagram showing an example of a blob information storage unit related to the modified example. Fig. 31 is a diagram showing an example of a blob connection graph information storage unit related to the modified example.
まず、図30に示す変形例に係るブロブ情報記憶部125Aについて説明する。図30に示す変形例に係るブロブ情報記憶部125Aは、「ブロブID」、「ノードID」、「ベクトル情報」、および「セントロイドID」といった項目が含まれる。このように、変形例に係るブロブ情報記憶部125Aは、「セントロイドID」を有する点で図15のブロブ情報記憶部125と相違する。なお、図15のブロブ情報記憶部125と同様の点については適宜説明を省略する。
First, the blob
「セントロイドID」は、各ブロブのセントロイドを識別するための識別情報を示す。「ベクトル情報」は、ブロブの代表点であるセントロイドのベクトル情報を示す。 "Centroid ID" indicates identification information for identifying the centroid of each blob. "Vector information" indicates vector information of the centroid, which is the representative point of the blob.
図30に示す例では、ブロブID「BL1」により識別されるブロブBL1のセントロイドは、セントロイドID「C1」により識別されるセントロイド(セントロイドC1)であることを示す。ブロブID「BL9」により識別されるブロブBL9のセントロイドは、セントロイドID「C9」により識別されるセントロイド(セントロイドC9)であることを示す。 In the example shown in FIG. 30, the centroid of blob BL1 identified by blob ID "BL1" is the centroid (centroid C1) identified by centroid ID "C1". The centroid of blob BL9 identified by blob ID "BL9" is the centroid (centroid C9) identified by centroid ID "C9".
なお、ブロブ情報記憶部125Aは、上記に限らず、目的に応じて種々の情報を記憶してもよい。
The blob
次に、図31に示す変形例に係るブロブ連結グラフ情報記憶部126Aについて説明する。図30に示す変形例に係るブロブ連結グラフ情報記憶部126Aは、「セントロイドID」および「接続セントロイド情報」といった項目を有する。なお、図25のブロブ連結グラフ情報記憶部126と同様の点については適宜説明を省略する。
Next, the blob connection graph
「セントロイドID」は、グラフにおける各ブロブの代表点であるセントロイドを識別するための識別情報を示す。「接続セントロイド情報」は、対応するセントロイドから辿ることができるセントロイド(参照先のセントロイド)に関する情報を示す。例えば、「接続セントロイド情報」には、「参照先」といった情報が含まれる。「参照先」は、エッジにより連結され、そのセントロイドから辿ることができる参照先(セントロイド)を識別するための情報を示す。すなわち、図31の例では、セントロイドを識別するセントロイドIDに対して、そのセントロイドからエッジにより辿ることができる参照先(セントロイド)が対応付けられて登録されている。なお、「接続セントロイド情報」には、参照先に接続されるエッジを識別するための情報(エッジID)等が含まれてもよい。 "Centroid ID" indicates identification information for identifying a centroid, which is the representative point of each blob in the graph. "Connection centroid information" indicates information on a centroid (reference centroid) that can be traced from the corresponding centroid. For example, "connection centroid information" includes information such as "reference destination." "Reference destination" indicates information for identifying a reference destination (centroid) that is connected by an edge and can be traced from that centroid. That is, in the example of Figure 31, a centroid ID that identifies a centroid is associated with a reference destination (centroid) that can be traced from that centroid by an edge and is registered. Note that "connection centroid information" may also include information (edge ID) for identifying an edge connected to a reference destination.
図31の例では、セントロイドID「C1」により識別されるセントロイド(セントロイドC1)からは、セントロイドID「C2」、「C3」、「C4」、「C7」、「C8」の各々により識別される5つのセントロイドにエッジが連結されていることを示す。すなわち、セントロイドC1からは、セントロイドC2、C3、C4、C7、C8の5つのセントロイドの各々へ辿ることができることを示す。 The example in FIG. 31 shows that edges are connected from the centroid (centroid C1) identified by the centroid ID "C1" to five centroids identified by the centroid IDs "C2," "C3," "C4," "C7," and "C8." In other words, it shows that it is possible to trace from the centroid C1 to each of the five centroids, C2, C3, C4, C7, and C8.
なお、ブロブ連結グラフ情報記憶部126Aは、上記に限らず、目的に応じて種々の情報を記憶してもよい。また、ブロブ連結グラフは、クエリを入力とし、ブロブ連結グラフ中のエッジを辿ることによりオブジェクト(オブジェクトノード)を探索し、クエリに類似するオブジェクトを抽出し出力するプログラムモジュールを含んでもよい。すなわち、ブロブ連結グラフは、ブロブ連結グラフを用いて検索処理を行うプログラムモジュールとしての利用が想定されるものであってもよい。例えば、ブロブ連結グラフであるグラフGR42は、クエリとしてベクトルデータが入力された場合に、そのベクトルデータに類似するベクトルデータに対応するオブジェクトをブロブ連結グラフにより抽出し、出力するプログラムであってもよい。例えば、グラフGR42は、クエリ画像に対応する類似画像を検索するプログラムモジュールとして利用されるデータであってもよい。例えば、グラフGR42は、入力されたクエリに基づいて、ブロブ連結グラフにおいてそのクエリに類似するオブジェクトを抽出し、出力するよう、コンピュータを機能させる。
The blob connection graph
上述したように、各実施形態及び変形例において、情報処理システム1は、以下のような処理を実行する。例えば、情報処理システム1は、ベクトルのクラスタリングでブロブを生成する。例えば、情報処理システム1は、ブロブのセントロイドをノードとしてグラフインデックスを生成する。
As described above, in each embodiment and modification, the
例えば、情報処理システム1は、任意のベクトルを一定数取得して、直積量子化のクラスタリングを行う。つまり、情報処理システム1は、部分ベクトルに分割して、部分ベクトル単位にクラスタリングを行い、コードブックを生成する。
For example, the
例えば、情報処理システム1は、ブロブ単位に属するオブジェクトを直積量子化し、転置インデックスを生成する。例えば、情報処理システム1は、オブジェクトからブロブへのエッジを含むグラフ(ブロブ用グラフ)を生成する。例えば、情報処理システム1は、一般的な直積量子化の手法を用により近傍オブジェクトを検索する。ここでいう一般的な直積量子化の手法とは、例えば、オブジェクトとブロブのすべてのセントロイドとの距離を算出し上位一定数のブロブを取得した後に、ブロブ内のオブジェクトの距離を直積量子化で距離を求めて近傍オブジェクトを取得することであってもよい。なお、情報処理システム1は、上述したように、セントロイドのグラフを生成している場合はグラフを用いて一定数のブロブを検索して取得することが可能である。または、情報処理システム1は、上記した、オブジェクトからブロブへのエッジを含むグラフ(ブロブ用グラフ)ではなく、ブロブ間をエッジで連結したグラフ(ブロブ連結グラフ)を生成してもよい。
For example, the
〔4.第4の実施形態〕
上述した例では、オブジェクトを分類するグループの一例であるブロブを用いる場合を示したが、オブジェクトを分類するグループはブロブのみに限らず、オブジェクトを分類する様々なグラフが用いられてもよい。例えば、ブロブ(第1グループ)以外にもオブジェクトを量子化する単位となる第2グループであるクラスタが用いられてもよい。
4. Fourth embodiment
In the above example, a case where blobs are used as an example of groups for classifying objects has been shown, but groups for classifying objects are not limited to blobs, and various graphs for classifying objects may be used. For example, in addition to blobs (first group), clusters may be used as second groups that are units for quantizing objects.
この点について、以下、第4の実施形態として説明する。第4の実施形態においては、情報処理システム1は、情報処理装置100、情報処理装置100Aまたは情報処理装置100Bに代えて、情報処理装置100Cを有する。なお、第1の実施形態、第2の実施形態及び第3の実施形態等において上述した内容と同様の点については適宜説明を省略する。
This point will be described below as the fourth embodiment. In the fourth embodiment, the
情報処理装置100Cは、複数のオブジェクトを分類する複数のブロブを示すブロブ情報(第1グループ情報)と、ブロブとは異なる分類となるグループであるクラスタを示すクラスタ情報(第2グループ情報)とを生成する。 The information processing device 100C generates blob information (first group information) indicating multiple blobs that classify multiple objects, and cluster information (second group information) indicating clusters, which are groups that are classified differently from the blobs.
〔4-1.情報処理〕
まず、図32を用いて、第4の実施形態に係る情報処理の概要を説明する。図32は、第4の実施形態に係る情報処理の一例を示す図である。なお、図32では、情報処理装置100Cがオブジェクトを複数のブロブに分類し、そのブロブを基にクラスタに分類する場合を示すが、クラスタに分類した後にブロブに分類してもよいが、この点については後述する。
[4-1. Information Processing]
First, an overview of information processing according to the fourth embodiment will be described with reference to Fig. 32. Fig. 32 is a diagram showing an example of information processing according to the fourth embodiment. Fig. 32 shows a case where the information processing device 100C classifies objects into a plurality of blobs and classifies them into clusters based on the blobs, but it is also possible to classify objects into blobs after classifying them into clusters, which will be described later.
まず、情報処理装置100Cは、複数のオブジェクトを複数のブロブに分類するブロブ情報を生成する(ステップS71)。図32の例では、情報処理装置100Cは、任意の方法により、複数のオブジェクトをブロブBL1~BL10等に分類するブロブ情報を生成する。情報処理装置100Cは、k-means等の任意のクラスタリングにより各ノードをブロブBL1~BL10のいずれかに分類してもよい。なお、情報処理装置100Cは、ブロブを生成可能であれば、どのような方法によりブロブを生成してもよい。例えば、情報処理装置100Cは、グラフ等のインデックスを用いて、ブロブを生成してもよい。例えば、情報処理装置100Cは、上述した第1方法~第4方法等に任意のいずれかの方法によりブロブBL1~BL10等を示す情報を生成してもよい。 First, the information processing device 100C generates blob information that classifies a plurality of objects into a plurality of blobs (step S71). In the example of FIG. 32, the information processing device 100C generates blob information that classifies a plurality of objects into blobs BL1 to BL10, etc., by an arbitrary method. The information processing device 100C may classify each node into one of the blobs BL1 to BL10 by an arbitrary clustering method such as k-means. Note that the information processing device 100C may generate blobs by any method as long as it is possible to generate blobs. For example, the information processing device 100C may generate blobs using an index such as a graph. For example, the information processing device 100C may generate information indicating blobs BL1 to BL10, etc., by any of the above-mentioned first to fourth methods, etc.
なお、図32では、情報処理装置100Cは、空間情報SP41に示すように、ブロブ連結グラフであるグラフGR41を生成するが、グラフGR41を生成しなくてもよい。例えば、情報処理装置100Cは、グラフGR41を生成する場合、図23と同様の情報をもちいた処理によりグラフGR41を生成するが、図23での説明と同様であるため詳細な説明を省略する。 In FIG. 32, the information processing device 100C generates a graph GR41, which is a blob-connected graph, as shown in the spatial information SP41, but it is not necessary to generate the graph GR41. For example, when generating the graph GR41, the information processing device 100C generates the graph GR41 by processing using the same information as in FIG. 23, but as this is the same as the explanation in FIG. 23, a detailed explanation will be omitted.
そして、情報処理装置100Cは、複数のブロブを複数のクラスタに分類するクラスタ情報を生成する(ステップS72)。例えば、情報処理装置100Cは、任意の方法により、ブロブBL1~BL10等の複数のブロブを分類するクラスタを示すクラスタ情報を生成する。情報処理装置100Cは、k-means等の任意のクラスタリングによりブロブBL1~BL10等の複数のクラスタのいずれかに分類してもよい。なお、情報処理装置100Cは、ブロブを生成可能であれば、どのような方法によりブロブを生成してもよい。例えば、情報処理装置100Cは、グラフ等のインデックスを用いて、ブロブを生成してもよい。 Then, the information processing device 100C generates cluster information that classifies the multiple blobs into multiple clusters (step S72). For example, the information processing device 100C generates cluster information indicating clusters into which the multiple blobs, such as blobs BL1 to BL10, are classified by an arbitrary method. The information processing device 100C may classify the blobs, such as blobs BL1 to BL10, into one of the multiple clusters by an arbitrary clustering method such as k-means. Note that the information processing device 100C may generate blobs by any method as long as it is possible to generate blobs. For example, the information processing device 100C may generate blobs using an index such as a graph.
図32の例では、情報処理装置100Cは、ブロブBL1~BL10等のクラスタCL1~CL4等に分類するクラスタ情報を生成する。例えば、情報処理装置100Cは、ブロブBL1及びブロブBL7をクラスタCL1に分類する。すなわち、情報処理装置100Cは、ブロブBL1に属するオブジェクト、及びブロブBL7に属するオブジェクトをクラスタCL1に分類する。なお、図32及び図34では、ブロブの境界線がクラスタの境界線上にあるように図示したが、分割の方法によっては一致しない場合があり、また方法によっては空間が境界線で分割されるとも限らない。 In the example of FIG. 32, the information processing device 100C generates cluster information that classifies blobs BL1 to BL10 into clusters CL1 to CL4. For example, the information processing device 100C classifies blob BL1 and blob BL7 into cluster CL1. That is, the information processing device 100C classifies objects belonging to blob BL1 and objects belonging to blob BL7 into cluster CL1. Note that although the boundaries of blobs are illustrated as being on the boundaries of clusters in FIG. 32 and FIG. 34, they may not coincide depending on the division method, and the space is not necessarily divided by the boundaries depending on the method.
また、情報処理装置100Cは、ブロブBL2及びブロブBL4をクラスタCL2に分類する。すなわち、情報処理装置100Cは、ブロブBL2に属するオブジェクト、及びブロブBL4に属するオブジェクトをクラスタCL2に分類する。 In addition, the information processing device 100C classifies blob BL2 and blob BL4 into cluster CL2. That is, the information processing device 100C classifies the objects belonging to blob BL2 and the objects belonging to blob BL4 into cluster CL2.
また、情報処理装置100Cは、ブロブBL3、ブロブBL8及びブロブBL10をクラスタCL3に分類する。すなわち、情報処理装置100Cは、ブロブBL3に属するオブジェクト、ブロブBL8に属するオブジェクト、及びブロブBL10に属するオブジェクトをクラスタCL3に分類する。 In addition, the information processing device 100C classifies blobs BL3, BL8, and BL10 into cluster CL3. That is, the information processing device 100C classifies objects belonging to blob BL3, objects belonging to blob BL8, and objects belonging to blob BL10 into cluster CL3.
また、情報処理装置100Cは、ブロブBL5、ブロブBL6及びブロブBL9をクラスタCL4に分類する。すなわち、情報処理装置100Cは、ブロブBL5に属するオブジェクト、ブロブBL6に属するオブジェクト、及びブロブBL9に属するオブジェクトをクラスタCL4に分類する。 In addition, the information processing device 100C classifies blobs BL5, BL6, and BL9 into cluster CL4. That is, the information processing device 100C classifies the objects belonging to blob BL5, the objects belonging to blob BL6, and the objects belonging to blob BL9 into cluster CL4.
例えば、情報処理装置100Cは、クラスタ情報を用いて量子化に関する処理を実行する。情報処理装置100Cは、クラスタ情報を用いて複数のオブジェクトを対象とする量子化に関する処理を行う。例えば、情報処理装置100Cは、クラスタCL1~CL4の各々に属するオブジェクトごとに量子化を行うが、この点については後述する。 For example, the information processing device 100C uses the cluster information to perform processing related to quantization. The information processing device 100C uses the cluster information to perform processing related to quantization of multiple objects. For example, the information processing device 100C performs quantization for each object belonging to each of the clusters CL1 to CL4, which will be described later.
上記のように、情報処理装置100Cは、データ検索の対象となる複数のオブジェクトを分類する複数のブロブを示すブロブ情報と、複数のブロブとは異なる分類となる複数のクラスタを示すクラスタ情報とを生成する。これにより、情報処理装置100Cは、複数のオブジェクトを分類する2種類のグループを生成することができ、オブジェクトを分類するグループを生成することができる。 As described above, the information processing device 100C generates blob information indicating a plurality of blobs that classify a plurality of objects that are the subject of a data search, and cluster information indicating a plurality of clusters that are classified differently from the plurality of blobs. This allows the information processing device 100C to generate two types of groups that classify a plurality of objects, and to generate groups that classify objects.
〔4-1-1.他の処理例〕
なお、図32に示した処理は一例に過ぎず、情報処理装置100Cは、ブロブ情報及びクラスタ情報を生成可能であれば、どのような態様の処理により生成を行ってもよい。
[4-1-1. Other processing examples]
Note that the process shown in FIG. 32 is merely an example, and the information processing device 100C may perform generation by any type of process as long as it is capable of generating blob information and cluster information.
例えば、情報処理装置100Cは、クラスタに分類するクラスタ情報を生成した後に、ブロブに分類するブロブ情報を生成してもよい。この場合、情報処理装置100Cは、複数のオブジェクトをクラスタに分類するクラスタリングにより、各オブジェクトを複数のクラスタのいずれかの分類するクラスタ情報を生成してもよい。例えば、情報処理装置100Cは、k-means等の任意のクラスタリングにより各オブジェクトをクラスタCL1~CL4のいずれかに分類してもよい。 For example, the information processing device 100C may generate cluster information for classifying objects into clusters, and then generate blob information for classifying objects into blobs. In this case, the information processing device 100C may generate cluster information for classifying each object into one of multiple clusters by clustering that classifies multiple objects into clusters. For example, the information processing device 100C may classify each object into one of clusters CL1 to CL4 by any clustering method such as k-means.
そして、情報処理装置100Cは、クラスタCL1~CL4の少なくとも1つを分割し、二以上のブロブを生成することにより、ブロブを示すブロブ情報を生成してもよい。例えば、情報処理装置100Cは、各クラスタに属するオブジェクトをk-means等の任意のクラスタリングによってクラスタリングすることにより、各クラスタを分割しブロブを生成する。例えば、情報処理装置100Cは、クラスタCL1を2つのブロブに分割することにより、ブロブBL1及びブロブBL7を生成してもよい。例えば、情報処理装置100Cは、クラスタCL1に属しているオブジェクトをクラスタ数2でk-meansによりクラスタリングして、クラスタCL1を分割しブロブBL1及びブロブBL7を生成する。 The information processing device 100C may then generate blob information indicating the blobs by dividing at least one of the clusters CL1 to CL4 and generating two or more blobs. For example, the information processing device 100C may cluster objects belonging to each cluster by any clustering method such as k-means, thereby dividing each cluster and generating blobs. For example, the information processing device 100C may generate blobs BL1 and BL7 by dividing cluster CL1 into two blobs. For example, the information processing device 100C may cluster objects belonging to cluster CL1 by k-means with the number of clusters being 2, divide cluster CL1, and generate blobs BL1 and BL7.
例えば、情報処理装置100Cは、クラスタCL2を2つのブロブに分割することにより、ブロブBL2及びブロブBL4を生成してもよい。例えば、情報処理装置100Cは、クラスタCL3を3つのブロブに分割することにより、ブロブBL3、ブロブBL8及びブロブBL10を生成してもよい。例えば、情報処理装置100Cは、クラスタCL4を3つのブロブに分割することにより、ブロブBL5、ブロブBL6及びブロブBL9を生成してもよい。 For example, the information processing device 100C may generate blob BL2 and blob BL4 by dividing cluster CL2 into two blobs. For example, the information processing device 100C may generate blob BL3, blob BL8, and blob BL10 by dividing cluster CL3 into three blobs. For example, the information processing device 100C may generate blob BL5, blob BL6, and blob BL9 by dividing cluster CL4 into three blobs.
〔4-2.情報処理装置の構成〕
次に、図33を用いて、第4の実施形態に係る情報処理装置100Cの構成について説明する。図33は、第4の実施形態に係る情報処理装置の構成例を示す図である。図33に示すように、情報処理装置100Cは、通信部110と、記憶部120Cと、制御部130Bとを有する。なお、情報処理装置100Cにおいて、情報処理装置100、情報処理装置100Aまたは情報処理装置100Bと同様の点は適宜説明を省略する。
4-2. Configuration of information processing device
Next, the configuration of an information processing device 100C according to the fourth embodiment will be described with reference to FIG. 33. FIG. 33 is a diagram showing an example of the configuration of an information processing device according to the fourth embodiment. As shown in FIG. 33, the information processing device 100C has a communication unit 110, a storage unit 120C, and a
(記憶部120C)
記憶部120Cは、例えば、RAM、フラッシュメモリ等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。第4の実施形態に係る記憶部120Cは、図33に示すように、オブジェクト情報記憶部121と、グラフ情報記憶部122と、量子化情報記憶部123と、コードブック情報記憶部124と、ブロブ情報記憶部125と、ブロブ連結グラフ情報記憶部126と、クラスタ情報記憶部127とを有する。
(Memory unit 120C)
The storage unit 120C is realized by, for example, a semiconductor memory element such as a RAM or a flash memory, or a storage device such as a hard disk or an optical disk. As shown in Fig. 33 , the storage unit 120C according to the fourth embodiment has an object
第4の実施形態に係るクラスタ情報記憶部127は、第2グループであるクラスタに関する情報を記憶する。クラスタ情報記憶部127は、量子化の単位となるクラスタに関する情報を記憶する。クラスタ情報記憶部127は、各クラスタを識別する識別情報(クラスタID等)に、そのクラスタに属する第1グループであるブロブを示す情報(ブロブID等)を対応付けて記憶してもよい。また、クラスタ情報記憶部127は、各クラスタを識別する識別情報(クラスタID等)に、そのクラスタに属するオブジェクトを示す情報(オブジェクトID等)を対応付けて記憶してもよい。また、クラスタ情報記憶部127は、各クラスタを識別する識別情報(クラスタID等)に、そのクラスタのセントロイド等の基点を特定するための情報(基点ID等)及びそのベクトル等を対応付けて記憶してもよい。
The cluster
(制御部130C)
制御部130Cは、コントローラ(controller)であり、例えば、CPUやMPUやGPU等によって、情報処理装置100C内部の記憶装置に記憶されている各種プログラム(情報処理プログラムの一例に相当)がRAMを作業領域として実行されることにより実現される。また、制御部130Cは、コントローラであり、例えば、ASICやFPGA等の集積回路により実現される。
(
The
図33に示すように、制御部130Cは、取得部131と、生成部132Cと、検索処理部133Cと、提供部134とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部130Cの内部構成は、図33に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
As shown in FIG. 33, the
第4の実施形態に係る取得部131は、データ検索の対象となる複数のオブジェクトを示すオブジェクト情報を取得する。取得部131は、複数のオブジェクトを検索対象とするインデックスを示すインデックス情報を取得する。
The
取得部131は、データ検索の対象となる複数のオブジェクトを分類する複数のブロブと、複数のブロブとは異なる分類となるグループであって、複数のオブジェクトのうち、複数のブロブにおいて同じブロブに属するオブジェクトを同じグループに分類するグループである複数のクラスタとを示す処理用情報を取得する。取得部131は、複数のオブジェクトを分類する第1数のブロブと、複数のオブジェクトを第1数よりも少ない第2数に分類するクラスタとを示す処理用情報を取得する。取得部131は、複数のブロブのうち二以上のブロブの各々に属するオブジェクト群が一のクラスタに分類された複数のクラスタを示す処理用情報を取得する。
The
取得部131は、複数のオブジェクトを対象とする検索処理における一括処理である第1処理を実行するために用いられる複数のブロブを示す処理用情報を取得する。取得部131は、複数のオブジェクトを対象とする量子化に関する処理である第2処理を行うために用いられる複数のクラスタを示す処理用情報を取得する。
The
取得部131は、複数のブロブの各々を識別する複数の第1識別情報と、複数のクラスタの各々を識別する複数の第2識別情報とを対応付けた処理用情報を取得する。取得部131は、一の第2識別情報が二以上の第1識別情報に対応付けられた処理用情報を取得する。
The
取得部131は、複数のオブジェクトの各々が属するブロブの第1識別情報に対応付けられた処理用情報を取得する。取得部131は、複数のオブジェクトの各々が量子化された量子化後オブジェクト情報が第1識別情報に対応付けられた処理用情報を取得する。取得部131は、直積量子化により、複数のオブジェクトの各々に対応するベクトルを分割した各部分ベクトルを量子化するベクトル量子化により生成された量子化後オブジェクト情報が、第1識別情報に対応付けられた処理用情報を取得する。取得部131は、量子化に対応する各セントロイドの各部分領域に対応する各部分セントロイドに基づいて生成された量子化後オブジェクト情報が、第1識別情報に対応付けられた処理用情報を取得する。取得部131は、量子化に対応する各セントロイドと、当該各セントロイドの各部分領域内に対応する各部分セントロイドと、により生成される残差ベクトルに基づいて生成された量子化後オブジェクト情報が、第1識別情報に対応付けられた処理用情報を取得する。
The
(生成部132C)
生成部132Cは、生成部132、生成部132Aまたは生成部132Bと同様に各種情報を生成する。
(
The generating
生成部132Cは、取得部131により取得されたオブジェクト情報に基づいて、複数のオブジェクトを分類する複数のブロブを示すブロブ情報を生成する。生成部132Cは、複数のブロブとは異なる分類となるグループであって、複数のオブジェクトのうち、複数のブロブにおいて同じブロブに属するオブジェクトを同じグループに分類するグループである複数のクラスタを示すクラスタ情報を生成する。
The generating
生成部132Cは、複数のオブジェクトを第1数のブロブに分類するブロブ情報と、複数のオブジェクトを第1数よりも少ない第2数のクラスタに分類するクラスタ情報とを生成する。生成部132Cは、複数のブロブのうち二以上のブロブの各々に属するオブジェクト群が一のクラスタに分類された複数のクラスタを示すクラスタ情報を生成する。
The
生成部132Cは、複数のオブジェクトを対象とする検索処理において一括処理を行うために用いられる複数のブロブを示すブロブ情報を生成する。生成部132Cは、複数のオブジェクトに関する距離の算出を一括して行うために用いられる複数のブロブを示すブロブ情報を生成する。生成部132Cは、検索処理で用いられる検索クエリとオブジェクトとの距離の算出を並列処理するために用いられる複数のブロブを示すブロブ情報を生成する。
The
生成部132Cは、複数のオブジェクトを対象とする量子化に関する処理を行うために用いられる複数のクラスタを示すクラスタ情報を生成する。生成部132Cは、量子化の単位となる複数のクラスタを示すクラスタ情報を生成する。生成部132Cは、複数のオブジェクトの各々に対応するベクトルを量子化するために用いられる複数のクラスタを示すクラスタ情報を生成する。
The
生成部132Cは、複数のブロブの分類後に、複数のクラスタの分類を行う。生成部132Cは、複数のオブジェクトをクラスタリングすることにより複数のブロブを示すブロブ情報を生成する。生成部132Cは、インデックス情報を用いて、複数のブロブを示すブロブ情報を生成する。生成部132Cは、ブロブを示すブロブ情報を用いて、複数のクラスタを示すクラスタ情報を生成する。生成部132Cは、複数のブロブをクラスタリングすることにより複数のクラスタを示すクラスタ情報を生成する。
After classifying the multiple blobs, the
生成部132Cは、複数のクラスタの分類後に、複数のブロブの分類を行う。生成部132Cは、複数のオブジェクトをクラスタリングすることにより複数のクラスタを示すクラスタ情報を生成する。生成部132Cは、クラスタを示すクラスタ情報を用いて、複数のブロブを示すブロブ情報を生成する。生成部132Cは、複数のクラスタのうち、少なくとも一のクラスタを分割し、二以上のブロブを生成することにより、複数のブロブを示すブロブ情報を生成する。生成部132Cは、各第2グループに属するオブジェクトをクラスタリングすることにより、各第2グループを二以上の第1グループに分割することにより、複数の第1グループを示す第1グループ情報を生成する。
After classifying the multiple clusters, the
(検索処理部133C)
検索処理部133Cは、ブロブに属するオブジェクトを対象とする第1処理、及びクラスタに属するオブジェクトを対象とする第2処理を実行する処理部として機能する。検索処理部133Cは、検索処理部133、検索処理部133Aまたは検索処理部133Bと同様に検索処理に関する各種処理を行う。検索処理部133Cは、生成部132Cにより生成された情報を用いた処理を行う。
(
The
検索処理部133Cは、取得部131により取得された処理用情報を用いて、ブロブに属するオブジェクトを対象とする第1処理と、クラスタに属するオブジェクトを対象とする第2処理とを実行する。検索処理部133Cは、一のクラスタに属するオブジェクト群を対象に第2処理を実行する。検索処理部133Cは、一のブロブに属するオブジェクト群を対象に第1処理を実行する。
The
検索処理部133Cは、一のブロブに属するオブジェクト群を対象に距離の算出を一括して行う第1処理を実行する。検索処理部133Cは、一のブロブに属するオブジェクト群の各々と、検索処理で用いられる検索クエリとの距離の算出の並列処理である第1処理を実行する。
The
検索処理部133Cは、一のクラスタに属するオブジェクト群を対象に第2処理を実行する。検索処理部133Cは、一のクラスタに属するオブジェクト群を対象に量子化である第2処理を実行する。検索処理部133Cは、一のクラスタに属するオブジェクト群の各々に対応するベクトルを量子化する第2処理を実行する。
The
検索処理部133Cは、一のクラスタに二以上のブロブが属する場合、当該二以上のブロブに属するオブジェクト群を対象として第2処理を実行する。検索処理部133Cは、一のクラスタに二以上のブロブが属する場合、当該二以上のブロブに属する全オブジェクトを対象として量子化を実行する。
When two or more blobs belong to one cluster, the
検索処理部133Cは、処理用情報を参照して、第1処理と第2処理とを実行する。検索処理部133Cは、処理用情報を参照して処理対象となるオブジェクトを特定する。検索処理部133Cは、複数のオブジェクトを対象とする検索処理において、二以上の第1識別情報のうち、一の第1識別情報のブロブを対象として第1処理を行うとともに、一の第2識別情報のクラスタに関して検索処理において参照する参照用情報を生成した後、二以上の第1識別情報のうち、一の第1識別情報以外の他の第1識別情報の他のブロブを対象として第1処理を行い際は参照用情報を生成しない。
The
検索処理部133Cは、ブロブ連結グラフを用いた検索処理を行う。検索処理部133Cは、ブロブ連結グラフを用いて、検索クエリの近傍オブジェクトを検索する検索処理を行う。検索処理部133Cは、ブロブ連結グラフにおいてブロブ間を連結するエッジを辿ることにより、検索クエリの近傍オブジェクトを検索する検索処理を行う。
The
検索処理部133Cは、検索処理において、複数のブロブを示すブロブ情報を用いて、一のブロブに属するオブジェクトである対象オブジェクトと検索クエリとの距離を、ベクトル量子化された対象オブジェクトのベクトル情報を用いて算出する。検索処理部133Cは、対象オブジェクトと検索クエリとの距離の算出を並列化して一括で行う。検索処理部133Cは、情報処理装置の仕様に基づいて決定される一括処理数の対象オブジェクトと検索クエリとの距離の算出を並列処理する。
In the search process, the
検索処理部133Cは、ブロブ連結グラフを用い、図27及び図28に示す処理により検索処理を行う。例えば、検索処理部133Cは、空間情報SP51に示すように、ブロブ間をエッジで連結するグラフGR41を用いて検索処理を行う。例えば、検索処理部133Cは、検索クエリQE3を対象として、ブロブ連結グラフであるグラフGR41を用いた図27及び図28に示すような検索処理を行うことにより、検索クエリQE3の検索結果を得る。例えば、検索処理部133Cは、ブロブ連結グラフを辿ることにより、処理対象となったブロブについて第1処理を実行する。
The
検索処理部133Cは、処理対象となったブロブが属するクラスタについて、参照用情報が未生成である場合、参照用情報を生成する。例えば、検索処理部133Cは、距離のルックアップテーブル(LUT)を参照用情報として生成する。例えば、検索処理部133Cは、検索処理において、クラスタ単位に距離のルックアップテーブルを生成する。すなわち、検索処理部133Cは、検索処理において、ブロブ単位ではなく、クラスタ単位で、距離のルックアップテーブルを生成する。これにより、情報処理装置100Cは、検索時間の増大を抑制することができる。
If reference information has not been generated for the cluster to which the blob being processed belongs, the
検索処理部133Cは、生成した参照用情報を用いて、処理対象となったブロブに属するオブジェクトについて一括して距離計算を実行する。例えば、検索処理部133Cは、処理対象となったブロブが属するクラスタについて、参照用情報が生成済みである場合、参照用情報を生成しない。そして、検索処理部133Cは、既に生成済みである参照用情報を用いて、処理対象となったブロブに属するオブジェクトについて一括して距離計算を実行する。
The
〔4-3.処理及び情報例〕
ここから、第4の実施形態における処理や処理に用いる情報等の例について説明する。
[4-3. Examples of processing and information]
From here, examples of processing and information used in the processing in the fourth embodiment will be described.
まず、図34を用いて量子化に関する概念について説明する。図34は、第4の実施形態に係る量子化に関する概念図である。 First, the concept of quantization will be explained using FIG. 34. FIG. 34 is a conceptual diagram of quantization according to the fourth embodiment.
例えば、基点CL1は、クラスタCL1の量子化に用いられる基点を示す。この場合、基点CL1は、ブロブBL1及びブロブBL7を含むクラスタCL1のセントロイドを示す。また、例えば、基点CL2は、クラスタCL2の量子化に用いられる基点を示す。この場合、基点CL2は、ブロブBL2及びブロブBL4を含むクラスタCL2のセントロイドを示す。 For example, base point CL1 indicates the base point used for quantizing cluster CL1. In this case, base point CL1 indicates the centroid of cluster CL1 that includes blobs BL1 and BL7. Also, for example, base point CL2 indicates the base point used for quantizing cluster CL2. In this case, base point CL2 indicates the centroid of cluster CL2 that includes blobs BL2 and BL4.
例えば、基点CL3は、クラスタCL3の量子化に用いられる基点を示す。この場合、基点CL3は、ブロブBL3、ブロブBL8及びブロブBL10を含むクラスタCL3のセントロイドを示す。また、例えば、基点CL4は、クラスタCL4の量子化に用いられる基点を示す。この場合、基点CL4は、ブロブBL5、ブロブBL6及びブロブBL9を含むクラスタCL4のセントロイドを示す。 For example, base point CL3 indicates the base point used in quantizing cluster CL3. In this case, base point CL3 indicates the centroid of cluster CL3, which includes blobs BL3, BL8, and BL10. Also, for example, base point CL4 indicates the base point used in quantizing cluster CL4. In this case, base point CL4 indicates the centroid of cluster CL4, which includes blobs BL5, BL6, and BL9.
この場合、情報処理装置100Cは、4つのクラスタCL1~CL4の各々の中で残差ベクトルを求める。そして、情報処理装置100Cは、4つのクラスタCL1~CL4の各々の中で求めた残差ベクトルを用いて、量子化を行う。例えば、情報処理装置100Cは、クラスタCL1に属するオブジェクトについては基点CL1からの残差ベクトルを用いて、量子化を行う。残差ベクトルを用いた量子化についての詳細な説明は省略するが、情報処理装置100Cは、例えば特許文献3に示す技術などを適宜用いて、残差ベクトルを用いた量子化を行う。
In this case, the information processing device 100C finds a residual vector in each of the four clusters CL1 to CL4. Then, the information processing device 100C performs quantization using the residual vector found in each of the four clusters CL1 to CL4. For example, the information processing device 100C performs quantization using a residual vector from the base point CL1 for objects belonging to cluster CL1. A detailed description of quantization using residual vectors will be omitted, but the information processing device 100C performs quantization using residual vectors by appropriately using, for example, the technology shown in
なお、図34では図を用いて説明するために、ベクトルを部分ベクトルに分割していない状態を示すが、情報処理装置100Cは、直積量子化により分割された部分空間ごとに基点を導出し、導出した基点を基に残差ベクトルを用いて、量子化を行ってもよい。例えば、情報処理装置100Cは、ベクトルを4つの部分ベクトルに分割して直積量子化を行う場合、各部分ベクトルに対応する部分空間ごとに基点があり、その基点からの残差ベクトルを用いて、量子化を行う。 Note that in order to illustrate the invention, FIG. 34 shows a state in which the vector is not divided into partial vectors, but the information processing device 100C may derive a base point for each partial space divided by the Cartesian product quantization, and perform quantization using a residual vector based on the derived base point. For example, when the information processing device 100C divides a vector into four partial vectors and performs Cartesian product quantization, there is a base point for each subspace corresponding to each partial vector, and quantization is performed using a residual vector from the base point.
以下、図34を参照しつつ、情報処理装置100Cによるオブジェクトの量子化及び量子化による処理についての一例を説明する。図34では、クエリオブジェクト(検索クエリ)が検索クエリQE3である場合を一例として説明する。なお、以下で説明するオブジェクト(ベクトル)の量子化や直積量子化等において、特許文献3に開示された内容と同様の点については、詳細な説明を適宜省略する。
Below, an example of object quantization and quantization processing by the information processing device 100C will be described with reference to FIG. 34. In FIG. 34, a case where the query object (search query) is search query QE3 will be described as an example. Note that in the quantization and direct product quantization of objects (vectors) described below, detailed descriptions of points similar to those disclosed in
図34の空間情報SP52に示すように、検索クエリQE3と、ノードN7等のクラスタCL1に属する各オブジェクトに対応する各ベクトルとの距離は異なるが、情報処理装置100Cは、ノードN7等のクラスタCL1に属する各オブジェクトに対応するベクトルを用いない。この場合、検索クエリQE3と各ベクトルとの距離は、例えば検索クエリQE3とクラスタCL1の基点CL1に対応するベクトルとの距離とみなされることとなる。すなわち、クラスタCL1に属する各オブジェクトに対応するベクトルは、基点CL1に対応するベクトルに量子化される。具体的には、情報処理装置100Cは、基点CL1からの各ベクトルの差分である残差ベクトルを求めて、その残差ベクトルを直積量子化(さらに部分空間に分割して量子化)する。 As shown in the spatial information SP52 of FIG. 34, the distance between the search query QE3 and each vector corresponding to each object belonging to cluster CL1 such as node N7 is different, but the information processing device 100C does not use the vector corresponding to each object belonging to cluster CL1 such as node N7. In this case, the distance between the search query QE3 and each vector is regarded as, for example, the distance between the search query QE3 and the vector corresponding to the base point CL1 of cluster CL1. That is, the vector corresponding to each object belonging to cluster CL1 is quantized to a vector corresponding to the base point CL1. Specifically, the information processing device 100C obtains a residual vector, which is the difference between each vector from the base point CL1, and performs direct product quantization on the residual vector (further dividing into subspaces and quantizing).
例えば、情報処理装置100Cは、各クラスタをさらに複数の部分領域に分割し、複数の部分領域に対応する部分セントロイドをコードブックとして生成する。例えば、情報処理装置100Cは、各クラスタに関する残差ベクトルの情報に基づいて、各クラスタが分割された複数の部分領域に対応する部分セントロイドを生成してもよい。 For example, the information processing device 100C further divides each cluster into a plurality of partial regions, and generates partial centroids corresponding to the plurality of partial regions as a codebook. For example, the information processing device 100C may generate partial centroids corresponding to the plurality of partial regions into which each cluster is divided, based on information on the residual vector related to each cluster.
例えば、情報処理装置100Cは、各クラスタに含まれるオブジェクトの数に基づいて、各クラスタの部分領域の数を決定してもよいし、所定の設定値に基づいて部分領域の数を決定してもよい。例えば、情報処理装置100Cは、クラスタリングに関する種々の従来技術を適宜用いて、部分領域を決定してもよい。例えば、情報処理装置100Cは、クラスタCL1の各部分領域に含まれるオブジェクトとクラスタCL1の基点CL1から残差ベクトルを算出し、その残差ベクトルから部分領域の部分セントロイドを生成する。例えば、情報処理装置100Cは、クラスタの基点と、各部分領域の部分セントロイドとの残差ベクトルの情報を用いる。例えば、情報処理装置100Cは、クラスタCL1の基点CL1と、その各部分領域の部分セントロイドとの残差ベクトの情報を用いる。例えば、情報処理装置100Cは、各オブジェクトに対応付けてそのオブジェクトが属する部分領域の部分セントロイドの情報を記憶する。 For example, the information processing device 100C may determine the number of partial regions of each cluster based on the number of objects included in each cluster, or may determine the number of partial regions based on a predetermined setting value. For example, the information processing device 100C may determine partial regions by appropriately using various conventional technologies related to clustering. For example, the information processing device 100C calculates a residual vector from the objects included in each partial region of the cluster CL1 and the base point CL1 of the cluster CL1, and generates a partial centroid of the partial region from the residual vector. For example, the information processing device 100C uses information on the residual vector between the base point of the cluster and the partial centroid of each partial region. For example, the information processing device 100C uses information on the residual vector between the base point CL1 of the cluster CL1 and the partial centroid of each partial region. For example, the information processing device 100C stores information on the partial centroid of the partial region to which the object belongs in association with each object.
例えば、情報処理装置100Cは、上述した情報を用いることにより、各オブジェクトの位置をそのベクトルが属する部分領域のセントロイドの位置に量子化することができる。これにより、情報処理装置100Cは、検索クエリQE3と各オブジェクトとの距離を、検索クエリQE3と各オブジェクトが属する部分領域の部分セントロイドに対応するベクトルとの距離まで細部化することができる。 For example, by using the above-mentioned information, the information processing device 100C can quantize the position of each object to the position of the centroid of the partial region to which the vector belongs. This allows the information processing device 100C to refine the distance between the search query QE3 and each object to the distance between the search query QE3 and the vector corresponding to the partial centroid of the partial region to which each object belongs.
例えば、情報処理装置100Cは、各クラスタの基点のベクトルと、部分セントロイドに関する残差ベクトルとを示す情報とを用いる。これにより、情報処理装置100Cは、例えば検索クエリQE3に対して、部分セントロイドまでの距離を算出することができる。したがって、情報処理装置100Cは、例えば検索クエリQE3と各オブジェクトとの距離を、クラスタの基点よりもさらに近似した部分セントロイドまでの距離とすることができる。 For example, the information processing device 100C uses information indicating the vector of the base point of each cluster and the residual vector related to the partial centroid. This allows the information processing device 100C to calculate the distance to the partial centroid for, for example, search query QE3. Therefore, the information processing device 100C can determine the distance between, for example, search query QE3 and each object as the distance to a partial centroid that is even closer than the base point of the cluster.
なお、情報処理装置100Cは、各オブジェクトのベクトルを複数の部分ベクトルに分割して処理してもよい。すなわち、情報処理装置100Cは、いわゆる直積量子化に関する技術を用いて、処理を行ってもよい。この点については、上述した第1の実施形態等と同様であるため、重複する説明は適宜省略する。 The information processing device 100C may divide the vector of each object into multiple partial vectors for processing. That is, the information processing device 100C may perform processing using a technique related to so-called direct product quantization. This is similar to the first embodiment described above, and therefore redundant explanations will be omitted as appropriate.
例えば、図34の場合、情報処理装置100Cは、検索クエリQE3のベクトルを複数の部分ベクトル(「検索クエリQE3の部分ベクトル」ともいう)に分割する。この場合、空間情報SP52も複数の部分空間(「空間情報SP52の部分空間」ともいう)に分割される。例えば、情報処理装置100Cは、図1と同様に検索クエリQE3のベクトルを4分割してもよい。この場合、空間情報SP52も4つの部分空間に分割され、各クラスタが複数の部分空間に分割される。 For example, in the case of FIG. 34, the information processing device 100C divides the vector of search query QE3 into multiple partial vectors (also referred to as "partial vectors of search query QE3"). In this case, the spatial information SP52 is also divided into multiple subspaces (also referred to as "subspaces of spatial information SP52"). For example, the information processing device 100C may divide the vector of search query QE3 into four, as in FIG. 1. In this case, the spatial information SP52 is also divided into four subspaces, and each cluster is divided into multiple subspaces.
例えば、情報処理装置100Cは、4つの部分空間において各オブジェクトが属する領域に対応する部分セントロイド(コードブック)を示す情報を、各オブジェクトに対応付けて記憶する。例えば、情報処理装置100Cは、各オブジェクトに対応する4つのコードブックと検索クエリQE3との距離を合計することにより、各オブジェクトと検索クエリQE3との距離を算出する。 For example, the information processing device 100C stores information indicating a partial centroid (codebook) corresponding to the area to which each object belongs in the four subspaces in association with each object. For example, the information processing device 100C calculates the distance between each object and the search query QE3 by summing up the distances between the four codebooks corresponding to each object and the search query QE3.
次に、図35及び図36を用いて、転置インデックスの概要を説明する。図35は、第4の実施形態に係る転置インデックスの一例を示す図である。図36は、第4の実施形態に係る転置インデックスの具体例を示す図である。 Next, an overview of an inverted index will be described with reference to Figs. 35 and 36. Fig. 35 is a diagram showing an example of an inverted index according to the fourth embodiment. Fig. 36 is a diagram showing a specific example of an inverted index according to the fourth embodiment.
まず、図35に示す転置インデックスIND1について説明する。図35に示す転置インデックスIND1は、「ブロブID」、「クラスタID」、「量子化オブジェクト数」、「量子化オブジェクト#1」、「量子化オブジェクト#2」、「量子化オブジェクト#3」、および「量子化オブジェクト#4」等といった項目が含まれる。なお、図35では、「量子化オブジェクト#1」~「量子化オブジェクト#4」までの4つを図示するが、転置インデックスIND1には、「量子化オブジェクト#5」、「量子化オブジェクト#6」等、各ブロブに属するオブジェクト数に対応する数の項目が含まれる。
First, the transposed index IND1 shown in FIG. 35 will be described. The transposed index IND1 shown in FIG. 35 includes items such as "blob ID", "cluster ID", "number of quantized objects", "quantized
「ブロブID」は、第1グループであるブロブを識別するための識別情報を示す。「クラスタID」は、第2グループであるクラスタを識別するための識別情報を示す。「量子化オブジェクト数」は、ブロブに属するオブジェクト数を示す。「量子化オブジェクト#1」~「量子化オブジェクト#4」は、量子化されたオブジェクトを示す。例えば、「量子化オブジェクト#1」~「量子化オブジェクト#4」には、オブジェクトが直積量子化され、各部分ベクトルに対応するコードブックを示す情報の一覧が記憶される。
"Blob ID" indicates identification information for identifying a blob, which is the first group. "Cluster ID" indicates identification information for identifying a cluster, which is the second group. "Number of quantized objects" indicates the number of objects belonging to a blob. "
図35の例では、ブロブID「1」であるブロブは、クラスタID「2」であるクラスタに属し、属するオブジェクト数が4つであることを示す。また、ブロブID「1」であるブロブについて、「量子化オブジェクト#1」には「4、2、8、10」が格納され、そのオブジェクトが4つの部分ベクトルで構成され、それぞれコードブック「4」、「2」、「8」、「10」で量子化されていることを示す。例えば、ブロブID「1」の「量子化オブジェクト#1」に対応するオブジェクトについては、4つ分割された部分ベクトルのうち、最初の部分ベクトルがコードブック「4」で量子化され、2番目の部分ベクトルがコードブック「2」で量子化され、3番目の部分ベクトルがコードブック「8」で量子化され、最後の部分ベクトルがコードブック「10」で量子化されることを示す。
In the example of FIG. 35, a blob with blob ID "1" belongs to a cluster with cluster ID "2", and the number of objects belonging to the cluster is four. For a blob with blob ID "1", "
なお、転置インデックスIND1は、上記に限らず、目的に応じて種々の情報を記憶してもよい。例えば、転置インデックスIND1は、各量子化オブジェクトを示す情報(オブジェクトID等)を各量子化オブジェクトに対応付けて記憶してもよい。 The transposed index IND1 may store various information according to the purpose, not limited to the above. For example, the transposed index IND1 may store information indicating each quantized object (such as an object ID) in association with each quantized object.
次に、図36に示す転置インデックスIND2について説明する。図36は、図32に等に示す例と対応する転置インデックスの具体例を示す。なお、転置インデックスIND1と同様の点については適宜説明を省略する。図36に示す転置インデックスIND2は、「ブロブID」、「クラスタID」、「量子化オブジェクト数」、「量子化オブジェクト#1」等といった項目が含まれる。なお、図36では、「量子化オブジェクト#1」のみを図示するが、転置インデックスIND1と同様に各ブロブに属するオブジェクト数に対応する数の項目が含まれる。
Next, the transposed index IND2 shown in FIG. 36 will be described. FIG. 36 shows a specific example of a transposed index corresponding to the example shown in FIG. 32, etc. Note that the description of the same points as in the transposed index IND1 will be omitted as appropriate. The transposed index IND2 shown in FIG. 36 includes items such as "blob ID", "cluster ID", "number of quantized objects", "quantized
転置インデックスIND2では、図32に示す空間情報SP51と同様に、ブロブID「BL1」により識別されるブロブBL1は、クラスタID「CL1」であるクラスタCL1に属することを示す。また、ブロブBL1に属するオブジェクト数は、「NM1」であることを示す。なお、図36では「NM1」といった抽象的な符号で示すが、「量子化オブジェクト数」には、転置インデックスIND1と同様に具体的な数を示す値(例えば10や100等)が記憶される。 In the transposed index IND2, similar to the spatial information SP51 shown in FIG. 32, it is indicated that the blob BL1 identified by the blob ID "BL1" belongs to the cluster CL1, which has the cluster ID "CL1". It is also indicated that the number of objects belonging to the blob BL1 is "NM1". Note that although it is indicated by an abstract code such as "NM1" in FIG. 36, a value indicating a concrete number (e.g., 10 or 100) is stored in the "quantized object number" as in the transposed index IND1.
また、ブロブBL1は、「量子化オブジェクト#1」には「CD51、CD64、CD77、CD82」が格納され、そのオブジェクトが4つの部分ベクトルで構成され、それぞれコードブック「CD51」、「CD64」、「CD77」、「CD82」で量子化されていることを示す。
Blob BL1 also indicates that "
また、転置インデックスIND2では、図32に示す空間情報SP51と同様に、ブロブID「BL2」により識別されるブロブBL2は、クラスタID「CL2」であるクラスタCL2に属することを示す。また、転置インデックスIND2では、図32に示す空間情報SP51と同様に、ブロブID「BL7」により識別されるブロブBL7は、クラスタID「CL1」であるクラスタCL1に属することを示す。 Furthermore, in the transposed index IND2, similar to the spatial information SP51 shown in FIG. 32, it is indicated that the blob BL2 identified by the blob ID "BL2" belongs to the cluster CL2 with the cluster ID "CL2". Further, in the transposed index IND2, similar to the spatial information SP51 shown in FIG. 32, it is indicated that the blob BL7 identified by the blob ID "BL7" belongs to the cluster CL1 with the cluster ID "CL1".
なお、転置インデックスIND2は、上記に限らず、目的に応じて種々の情報を記憶してもよい。例えば、転置インデックスIND2は、各量子化オブジェクトを示す情報(オブジェクトID等)を各量子化オブジェクトに対応付けて記憶してもよい。このように、転置インデックスには、クラスタを識別する情報(クラスタID)が付与されており、情報処理装置100Cは、転置インデックスを用いて残差ベクトルを算出する。例えば、残差ベクトルはインデックスの生成および検索時に用いられるが、特許文献3等の従来技術における処理と同様であるため詳細な説明を適宜省略する。
The transposed index IND2 is not limited to the above, and may store various information depending on the purpose. For example, the transposed index IND2 may store information indicating each quantized object (such as an object ID) in association with each quantized object. In this way, the transposed index is assigned information identifying a cluster (cluster ID), and the information processing device 100C calculates a residual vector using the transposed index. For example, the residual vector is used when generating and searching an index, but detailed description will be omitted as appropriate because it is similar to the processing in conventional techniques such as
〔4-4.情報処理のフロー〕
次に、図37及び図38を用いて、第4の実施形態に係る情報処理の手順について説明する。図37及び図38は、第4の実施形態に係る情報処理の一例を示すフローチャートである。
[4-4. Information processing flow]
Next, a procedure of information processing according to the fourth embodiment will be described with reference to Fig. 37 and Fig. 38. Fig. 37 and Fig. 38 are flowcharts showing an example of information processing according to the fourth embodiment.
まず、図37について説明する。例えば、図37は、グループの生成処理の一例を示すフローチャートである。図37に示すように、情報処理装置100Cは、データ検索の対象となる複数のオブジェクトを示すオブジェクト情報を取得する(ステップS601)。例えば、情報処理装置100Cは、オブジェクト情報記憶部121から複数のオブジェクトを示すオブジェクト情報を取得する。
First, FIG. 37 will be described. For example, FIG. 37 is a flowchart showing an example of a group generation process. As shown in FIG. 37, the information processing device 100C acquires object information indicating multiple objects to be the target of data search (step S601). For example, the information processing device 100C acquires object information indicating multiple objects from the object
情報処理装置100Cは、オブジェクト情報に基づいて、複数のオブジェクトを分類する複数の第1グループを示す第1グループ情報を生成する(ステップS602)。例えば、情報処理装置100Cは、オブジェクト情報に基づいて、複数のオブジェクトを分類する複数のブロブを示すブロブ情報を生成する。 The information processing device 100C generates first group information indicating a plurality of first groups into which the plurality of objects are classified based on the object information (step S602). For example, the information processing device 100C generates blob information indicating a plurality of blobs into which the plurality of objects are classified based on the object information.
情報処理装置100Cは、複数の第1グループとは異なる分類となるグループであって、複数のオブジェクトのうち、複数の第1グループにおいて同じ第1グループに属するオブジェクトを同じグループに分類するグループである複数の第2グループを示す第2グループ情報を生成する(ステップS603)。例えば、情報処理装置100Cは、少なくとも1つのクラスタが2つ以上のブロブを含む複数のクラスタを示すクラスタ情報を生成する。なお、情報処理装置100Cは、ブロブと一対一に対応するクラスタを示すクラスタ情報を生成してもよい。 The information processing device 100C generates second group information indicating a plurality of second groups, which are groups classified differently from the plurality of first groups, and which classify, among the plurality of objects, objects that belong to the same first group in the plurality of first groups into the same group (step S603). For example, the information processing device 100C generates cluster information indicating a plurality of clusters, at least one of which includes two or more blobs. Note that the information processing device 100C may generate cluster information indicating clusters that correspond one-to-one to blobs.
次に、図38について説明する。例えば、図38は、グループを用いた処理の一例を示すフローチャートである。図38に示すように、情報処理装置100Cは、データ検索の対象となる複数のオブジェクトを分類する複数の第1グループと、複数の第1グループとは異なる分類となるグループであって、複数のオブジェクトのうち、複数の第1グループにおいて同じ第1グループに属するオブジェクトを同じグループに分類するグループである複数の第2グループとを示す処理用情報を取得する(ステップS701)。例えば、情報処理装置100Cは、ブロブ情報記憶部125に記憶されたブロブ情報と、クラスタ情報記憶部127に記憶されたクラスタ情報とを処理用情報として取得する。例えば、情報処理装置100Cは、転置インデックスIND1または転置インデックスIND2を取得する。
Next, FIG. 38 will be described. For example, FIG. 38 is a flowchart showing an example of processing using groups. As shown in FIG. 38, the information processing device 100C acquires processing information indicating a plurality of first groups into which a plurality of objects to be subjected to data search are classified, and a plurality of second groups which are groups that are classified differently from the plurality of first groups and which classify objects belonging to the same first group among the plurality of objects into the same group (step S701). For example, the information processing device 100C acquires, as processing information, blob information stored in the blob
情報処理装置100Cは、処理用情報を用いて、第1グループに属するオブジェクトを対象とする第1処理と、第2グループに属するオブジェクトを対象とする第2処理とを実行する(ステップS702)。例えば、情報処理装置100Cは、ブロブに属するオブジェクトを対象とする一括処理を実行し、クラスタに属するオブジェクトを対象とする量子化を実行する。 The information processing device 100C uses the processing information to execute a first process targeting objects belonging to a first group and a second process targeting objects belonging to a second group (step S702). For example, the information processing device 100C executes a batch process targeting objects belonging to a blob, and executes quantization targeting objects belonging to a cluster.
〔5.第5の実施形態〕
なお、上述したようなブロブ間を連結したブロブ連結グラフ(「ブロブグラフ」ともいう)を用いた検索処理を行う際に、複数の観点での検索範囲が用いられてもよい。この点について、以下、第5の実施形態として説明する。第5の実施形態においては、情報処理システム1は、情報処理装置100、情報処理装置100A、情報処理装置100Bまたは情報処理装置100Cに代えて、情報処理装置100Dを有する。なお、第1の実施形態、第2の実施形態、第3の実施形態及び第4の実施形態等において上述した内容と同様の点については適宜説明を省略する。例えば、以下の説明でのブロブBL*(*は任意の数)は、上述したブロブBL*(*は任意の数)と同様にオブジェクトをグルーピングしたグループであるため、詳細な説明は省略する。また、以下の説明でのセントロイドC*(*は任意の数)は、上述したセントロイドC*(*は任意の数)と同様であるため、詳細な説明は省略する。以下の説明でのクラスタCL*(*は任意の数)は、上述したクラスタCL*(*は任意の数)と同様にブロブを分類するクラスタであるため、詳細な説明は省略する。
5. Fifth embodiment
In addition, when performing a search process using a blob connection graph (also called a "blob graph") that connects blobs as described above, a search range from multiple perspectives may be used. This point will be described below as a fifth embodiment. In the fifth embodiment, the
なお、図39及び図40では、クラスタの区別を実線の太い線で示す点及びブロブ間の連結をブロブBLのセントロイドC間を繋ぐ点線で示す点以外の表現態様については、図32と同様である。例えば、実線のうち、太い線がクラスタ及びブロブの分割対応を示し、細い線がブロブの分割対応を示す。例えば、図39及び図40では、実線のうち細い線はクラスタ内でのブロブの分割対応を示す。また、図39及び図40は、セントロイドCN11~CN14は、各クラスタCL11~CL14の各々のセントロイドを示す。クラスタCL11には、ブロブBL11、BL12、BL13の3つのブロブBLが含まれる。ブロブBL11には、ノードN31、N205等が含まれる。クラスタCL12には、ブロブBL14、BL15の2つのブロブBLが含まれる。クラスタCL13には、ブロブBL16、BL17、BL18の3つのブロブBLが含まれる。クラスタCL14には、ブロブBL19、BL20の2つのブロブBLが含まれる。なお、図39及び図40に示すクラスタCL、ブロブBL及びノードN等は一部であり、処理対象となるクラスタCL、ブロブBL及びノードNには、図示したもの以外にも多数のクラスタCL、ブロブBL及びノードNが含まれる。また、ブロブBL及びクラスタCLの符号は、図39のみで図示し、図40では図示を省略するが、図39と図40とは同じ空間情報(空間情報SP61)を示す。 In addition, in Figures 39 and 40, the representation is the same as in Figure 32, except that the distinction between clusters is indicated by thick solid lines and the connections between blobs are indicated by dotted lines connecting the centroids C of blobs BL. For example, among the solid lines, thick lines indicate the division correspondence of clusters and blobs, and thin lines indicate the division correspondence of blobs. For example, in Figures 39 and 40, among the solid lines, thin lines indicate the division correspondence of blobs within clusters. Also, in Figures 39 and 40, centroids CN11 to CN14 indicate the centroids of each of clusters CL11 to CL14. Cluster CL11 includes three blobs BL, BL11, BL12, and BL13. Blob BL11 includes nodes N31, N205, etc. Cluster CL12 includes two blobs BL, blobs BL14 and BL15. Cluster CL13 includes three blobs BL: blobs BL16, BL17, and BL18. Cluster CL14 includes two blobs BL: blobs BL19 and BL20. Note that the clusters CL, blobs BL, and nodes N shown in Figures 39 and 40 are only a partial list, and the clusters CL, blobs BL, and nodes N to be processed include many more clusters CL, blobs BL, and nodes N in addition to those shown. Also, the symbols for the blobs BL and clusters CL are shown only in Figure 39 and are omitted in Figure 40, but Figures 39 and 40 show the same spatial information (spatial information SP61).
情報処理装置100Dは、データ検索の対象となる複数のオブジェクトが分類された複数のグループ間がエッジにより連結されたグループ連結グラフであるブロブグラフを用いた検索処理を実行する。また、情報処理装置100Dは、グループであるブロブの検索に対応する範囲(以下「第1検索範囲」ともいう)と、複数のオブジェクトの検索に対応する範囲(以下「第2検索範囲」ともいう)とを用いて検索処理を実行する。これにより、情報処理装置100Dは、複数のオブジェクトから、検索クエリに対応する近傍のオブジェクトを抽出する。
The
〔5-1.情報処理〕
まず、図39及び図40を用いて、第5の実施形態に係る情報処理の概要を説明する。図39及び図40は、第5の実施形態に係る情報処理の一例を示す図である。具体的には、図39は、情報処理装置100Dが実行する検索処理の全体概要を示す。また、図40は、情報処理装置100Dが実行する検索処理における第1検索範囲及び第2検索範囲の変化を示す。このように、図39及び図40では、第1検索範囲及び第2検索範囲の変化及び検索処理の概要を説明し、具体的な検索処理の流れについては図43で示す。
5-1. Information Processing
First, an overview of the information processing according to the fifth embodiment will be described with reference to Figs. 39 and 40. Figs. 39 and 40 are diagrams showing an example of the information processing according to the fifth embodiment. Specifically, Fig. 39 shows an overall overview of the search processing performed by the
図39中の空間情報SP61に示すグラフGR61は、図32中の空間情報SP51に示すグラフGR41と同様に、ブロブ間を連結したブロブグラフである。例えば、グラフGR61でブロブBLのセントロイドC間を連結した点線(エッジ)は、グラフGR41でブロブBL間を相互に連結した矢印線(エッジ)と同義である。図39のグラフGR61は、ブロブBL11~BL20の部分を図示したものである。例えば、情報処理装置100Dは、上述した方法によりブロブBL11~BL10等を示す情報を生成してもよいし、他の装置からブロブBL11~BL10等を示す情報を取得してもよい。なお、図40中の空間情報SP61-1~SP61-4は、第1検索範囲及び第2検索範囲の変化の説明の便宜上異なる符号を付すが、図39の空間情報SP61と同様であり、区別せず説明する場合、空間情報SP61と記載する場合がある。
Graph GR61 shown in spatial information SP61 in Figure 39 is a blob graph connecting blobs, similar to graph GR41 shown in spatial information SP51 in Figure 32. For example, the dotted lines (edges) connecting the centroids C of blobs BL in graph GR61 are synonymous with the arrowed lines (edges) connecting blobs BL to each other in graph GR41. Graph GR61 in Figure 39 illustrates a portion of blobs BL11 to BL20. For example,
なお、グラフGR61は、グラフGR41のうち各ブロブBL11~BL20の部分を図示した状態であってもよい。この場合、空間情報SP51および空間情報SP61は、同じ複数のオブジェクトを対象とし、グラフGR61とグラフGR41とは同じグラフのうちの異なる一部を図示したものである。例えば、図32中のグラフGR41は、ブロブBL1~BL10の部分を図示し、グラフGR61は、ブロブBL11~BL20の部分を図示したものであってもよい。また、グラフGR61は、図29中のグラフGR42のように各ブロブのセントロイド間を連結したグラフであってもよい。すなわち、グラフGR61は、後述する検索処理が実行可能であれば、どのような態様でブロブ間が連結されたグラフであってもよい。 Graph GR61 may be in a state where the graph GR41 illustrates the blobs BL11 to BL20. In this case, the spatial information SP51 and the spatial information SP61 target the same multiple objects, and the graph GR61 and the graph GR41 illustrate different parts of the same graph. For example, the graph GR41 in FIG. 32 may illustrate the blobs BL1 to BL10, and the graph GR61 may illustrate the blobs BL11 to BL20. The graph GR61 may also be a graph in which the centroids of each blob are connected, as in the graph GR42 in FIG. 29. In other words, the graph GR61 may be a graph in which the blobs are connected in any manner, as long as the search process described below can be executed.
図39では、クエリが検索クエリQE11であり、近傍のオブジェクトとして抽出するオブジェクトの数(「近傍オブジェクト抽出数」ともいう)が「5」である場合の処理を一例として示す。検索クエリQE11を中心とする5つの円のうち、一点鎖線の円が第1検索範囲の一例であるブロブ検索範囲SBを示す。なお、図39では、ブロブ検索範囲SBを示す3つの一点鎖線の円のうち、最も半径の大きい円のみに符号「SB」を付すが、3つの一点鎖線の円が検索処理において変化するブロブ検索範囲SBを示す。 Figure 39 shows an example of processing when the query is search query QE11 and the number of objects to be extracted as nearby objects (also called the "number of nearby objects extracted") is "5". Of the five circles centered on search query QE11, the dashed-dotted circle indicates blob search range SB, which is an example of the first search range. Note that in Figure 39, of the three dashed-dotted circles indicating the blob search range SB, only the circle with the largest radius is given the symbol "SB", but the three dashed-dotted circles indicate the blob search range SB that changes during the search process.
例えば、ブロブ検索範囲SBは、検索クエリQE11を中心とする半径(ブロブ検索半径)により規定される第1検索範囲である。図39中の一点鎖線の矢印線で示すように、ブロブ検索範囲SBは、検索処理が進むにつれて、その範囲(半径)が広くなるが、この点については図40を用いて後述する。なお、図40で示すブロブ検索範囲SB1、SB2、SB3は、図39中の3つのブロブ検索範囲SBの各々に対応する。ブロブ検索範囲SB1、SB2、SB3を区別せず説明する場合、ブロブ検索範囲SBと記載する場合がある。 For example, blob search range SB is a first search range defined by a radius (blob search radius) centered on search query QE11. As indicated by the dashed dotted arrow in FIG. 39, the range (radius) of blob search range SB becomes wider as the search process progresses, but this point will be described later with reference to FIG. 40. Note that blob search ranges SB1, SB2, and SB3 shown in FIG. 40 correspond to the three blob search ranges SB in FIG. 39. When describing the blob search ranges SB1, SB2, and SB3 without distinguishing between them, they may be referred to as blob search ranges SB.
また、図39では、検索クエリQE11を中心とする5つの円のうち、二点鎖線の円が第1検索範囲の一例であるオブジェクト検索範囲SOを示す。なお、図39では、オブジェクト検索範囲SOを示す2つの二点鎖線の円のうち、外側の円のみに符号「SO」を付すが、2つの二点鎖線の円が検索処理において変化するオブジェクト検索範囲SOを示す。 In addition, in FIG. 39, of the five circles centered on the search query QE11, the two-dot chain circle indicates the object search range SO, which is an example of the first search range. Note that in FIG. 39, of the two two-dot chain circles indicating the object search range SO, only the outer circle is marked with the symbol "SO", but the two two-dot chain circles indicate the object search range SO that changes during the search process.
例えば、オブジェクト検索範囲SOは、検索クエリQE11を中心とする半径(オブジェクト検索半径)により規定される第2検索範囲である。図39中の二点鎖線の矢印線で示すように、オブジェクト検索範囲SOは、検索処理が進むにつれて、その範囲(半径)が小さくなるが、この点については図40を用いて後述する。なお、図40で示すオブジェクト検索範囲SO1、SO2は、図39中の2つのオブジェクト検索範囲SOの各々に対応する。オブジェクト検索範囲SO1、SO2を区別せず説明する場合、オブジェクト検索範囲SOと記載する場合がある。 For example, object search range SO is a second search range defined by a radius (object search radius) centered on search query QE11. As indicated by the two-dot dashed arrow in FIG. 39, the range (radius) of object search range SO becomes smaller as the search process progresses, but this point will be described later with reference to FIG. 40. Note that object search ranges SO1 and SO2 shown in FIG. 40 correspond to the two object search ranges SO in FIG. 39. When the object search ranges SO1 and SO2 are not to be distinguished from each other, they may be referred to as object search range SO.
まず、情報処理装置100Dは、空間情報SP61-1に示す状態から検索処理を開始する。そして、情報処理装置100Dは、空間情報SP61-2に示すように、ブロブ検索範囲SBをブロブ検索範囲SB1に決定し、オブジェクト検索範囲SOを無限大「∞」に決定する。すなわち、図40では、情報処理装置100Dは、ブロブ検索範囲SBを、最近傍のブロブBL20と検索クエリQE11との間の距離に基づく半径で規定されるブロブ検索範囲SB1に決定する。また、図40では、情報処理装置100Dは、ブロブBL20の属するノードN2、N6、N8の各々(に対応するオブジェクト)の3つを、検索クエリQE11に対応する近傍のオブジェクトの候補として抽出し、近傍オブジェクト候補に追加する。なお、近傍オブジェクト候補は3つであり、近傍オブジェクト抽出数「5」以下であるため、オブジェクト検索範囲SOを無限大「∞」が維持される。
First, the
そして、情報処理装置100Dは、空間情報SP61-3に示すように、ブロブ検索範囲SBをブロブ検索範囲SB2に決定し、オブジェクト検索範囲SOをオブジェクト検索範囲SO1に決定する。すなわち、図40では、情報処理装置100Dは、ブロブ検索範囲SBを、ブロブBL20の次に近傍のブロブBL11と検索クエリQE11との間の距離に基づく半径で規定されるブロブ検索範囲SB2に決定する。また、図40では、情報処理装置100Dは、ブロブBL11の属するノードN31、N205、N312の各々(に対応するオブジェクト)の3つを、検索クエリQE11に対応する近傍のオブジェクトの候補として抽出し、近傍オブジェクト候補に追加する。これにより、近傍オブジェクト候補にはノードN2、N6、N8、N31、N205、N312の6個が含まれ、近傍オブジェクト抽出数「5」を超える。そのため、情報処理装置100Dは、近傍オブジェクト候補のうち検索クエリQE11から距離が近い方から5個を残し、残りを除外する。この場合、情報処理装置100Dは、6個のノードのうち、検索クエリQE11から距離が最も遠いノードN312を除外し、近傍オブジェクト候補の数を5個にする。すなわち、情報処理装置100Dは、近傍オブジェクト候補をノードN2、N6、N8、N31、N205の5個にする。近傍オブジェクト候補の数が近傍オブジェクト抽出数「5」に達したため、情報処理装置100Dは、オブジェクト検索範囲SOを、近傍オブジェクト候補のうち検索クエリQE11から最も遠いノードN205と検索クエリQE11との間の距離に基づく半径で規定されるオブジェクト検索範囲SO1に決定する。
Then, as shown in the spatial information SP61-3, the
そして、情報処理装置100Dは、空間情報SP61-4に示すように、ブロブ検索範囲SBをブロブ検索範囲SB3に決定し、オブジェクト検索範囲SOをオブジェクト検索範囲SO2に決定する。すなわち、図40では、情報処理装置100Dは、ブロブ検索範囲SBを、ブロブBL11の次に近傍のブロブBL19と検索クエリQE11との間の距離に基づく半径で規定されるブロブ検索範囲SB3に決定する。また、図40では、情報処理装置100Dは、ブロブBL19の属するノードN3、N11、N114の各々(に対応するオブジェクト)の3つを、検索クエリQE11に対応する近傍のオブジェクトの候補として抽出し、近傍オブジェクト候補に追加する。これにより、近傍オブジェクト候補にはノードN2、N6、N8、N31、N205、N3、N11、N114の8個が含まれ、近傍オブジェクト抽出数「5」を超える。そのため、情報処理装置100Dは、近傍オブジェクト候補のうち検索クエリQE11から距離が近い方から5個を残し、残りを除外する。この場合、情報処理装置100Dは、検索クエリQE11から距離が遠い方から3個のノードN205、N3、N114を除外し、近傍オブジェクト候補の数を5個にする。すなわち、情報処理装置100Dは、近傍オブジェクト候補をノードN2、N6、N8、N11、N31の5個にする。そして、情報処理装置100Dは、オブジェクト検索範囲SOを、近傍オブジェクト候補のうち検索クエリQE11から最も遠いノードN11と検索クエリQE11との間の距離に基づく半径で規定されるオブジェクト検索範囲SO2に決定する。
Then, as shown in the spatial information SP61-4, the
情報処理装置100Dは、上述のような処理を後述する終了基準#1~#3に当てはまるまで繰り返す。例えば、情報処理装置100Dは、終了基準#1~#3に当てはまる場合、その時点で近傍オブジェクト候補に含まれるオブジェクトを検索クエリQE11の近傍のオブジェクトに決定する。そして、情報処理装置100Dは、検索クエリQE11の近傍のオブジェクトに決定したオブジェクトを示す情報を、検索クエリQE11を指定した検索の要求元等に提供する。
The
上記のように、情報処理装置100Dは、第1検索範囲及び第2検索範囲といった複数の観点での検索範囲を用いて検索処理を行い、各検索範囲を検索処理の状況に応じて変化させることにより、グラフを用いて柔軟な検索処理を行うことができる。
As described above, the
ここで、例えばブロブグラフでは、大規模なブロブグラフは無駄なブロブの参照によって検索速度が低下する場合がある。また、従来、直積量子化(Product Quantization:PQ)ではグラフを検索し近傍のブロブを特定したのちに特定されたブロブについて近似距離を算出する方法があるが、この場合も無駄なブロブ参照によって検索速度が低下する。 For example, in a blob graph, a large blob graph can slow down search speeds due to unnecessary blob references. In addition, a conventional method for Product Quantization (PQ) is to search a graph to identify nearby blobs and then calculate approximate distances for the identified blobs, but even in this case, unnecessary blob references slow down search speeds.
一方で、情報処理装置100Dは、ブロブグラフを探索し近傍順に順位が確定できたブロブに対して逐一ブロブ内のオブジェクトの近似距離を算出し、所定の終了基準を満たした時点で検索を終了することで、無駄なオブジェクト探索を削減できる。
On the other hand, the
〔5-2.情報処理装置の構成〕
次に、図41を用いて、第5の実施形態に係る情報処理装置100Dの構成について説明する。図41は、第5の実施形態に係る情報処理装置の構成例を示す図である。図41に示すように、情報処理装置100Dは、通信部110と、記憶部120Cと、制御部130Bとを有する。なお、情報処理装置100Dにおいて、情報処理装置100、情報処理装置100A、情報処理装置100Bまたは情報処理装置100Cと同様の点は適宜説明を省略する。
5-2. Configuration of information processing device
Next, the configuration of an
(記憶部120C)
記憶部120Cは、例えば、RAM、フラッシュメモリ等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。第5の実施形態に係る記憶部120Cは、図41に示すように、オブジェクト情報記憶部121と、グラフ情報記憶部122と、量子化情報記憶部123と、コードブック情報記憶部124と、ブロブ情報記憶部125と、ブロブ連結グラフ情報記憶部126と、クラスタ情報記憶部127とを有する。
(Memory unit 120C)
The storage unit 120C is realized by, for example, a semiconductor memory element such as a RAM or a flash memory, or a storage device such as a hard disk or an optical disk. As shown in Fig. 41 , the storage unit 120C according to the fifth embodiment has an object
(制御部130D)
制御部130Dは、コントローラ(controller)であり、例えば、CPUやMPUやGPU等によって、情報処理装置100D内部の記憶装置に記憶されている各種プログラム(情報処理プログラムの一例に相当)がRAMを作業領域として実行されることにより実現される。また、制御部130Dは、コントローラであり、例えば、ASICやFPGA等の集積回路により実現される。
(Control unit 130D)
The control unit 130D is a controller, and is realized, for example, by a CPU, an MPU, a GPU, etc., executing various programs (corresponding to an example of an information processing program) stored in a storage device inside the
図41に示すように、制御部130Dは、取得部131と、生成部132Cと、検索処理部133Dと、提供部134とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部130Dの内部構成は、図41に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
As shown in FIG. 41, the control unit 130D has an
第5の実施形態に係る取得部131は、記憶部120Cから各種情報を取得する。例えば、第5の実施形態に係る取得部131は、第4の実施形態に係る取得部131と同様に、生成部132Cが用いる各種情報を取得する。
The
取得部131は、データ検索の対象となる複数のオブジェクトが分類された複数のグループ間がエッジにより連結されたグループ連結グラフを取得する。取得部131は、複数のオブジェクトに対する検索クエリを取得する。
The
(検索処理部133D)
検索処理部133Dは、図43に示す検索処理を実行する。例えば、検索処理部133Dは、検索処理部133、検索処理部133A、検索処理部133Bまたは検索処理部133BCと同様に検索処理に関する各種処理を行う。検索処理部133Dは、記憶部120Cに記憶された情報を用いた処理を行う。検索処理部133Dは、生成部132Cにより生成された情報を用いた処理を行う。
(Search processing unit 133D)
The search processing unit 133D executes the search process shown in Fig. 43. For example, the search processing unit 133D performs various processes related to the search process in the same manner as the
検索処理部133Dは、複数のグループの検索に対応する範囲を示す第1検索範囲と、複数のオブジェクトの検索に対応する範囲を示す第2検索範囲とを用いて、グループ連結グラフを探索することにより、複数のオブジェクトから、検索クエリに対応する近傍のオブジェクトを抽出する検索処理を実行する。検索処理部133Dは、第1検索範囲と、第1検索範囲よりも範囲が広い第2検索範囲とを用いて、検索処理を実行する。 The search processing unit 133D executes a search process to extract nearby objects corresponding to a search query from multiple objects by searching the group connection graph using a first search range indicating a range corresponding to a search of multiple groups and a second search range indicating a range corresponding to a search of multiple objects. The search processing unit 133D executes a search process using the first search range and the second search range that is wider than the first search range.
検索処理部133Dは、検索処理が進むにつれて範囲が広がる第1検索範囲を用いて、検索処理を実行する。検索処理部133Dは、複数のグループのうち、検索処理の対象とされた一のグループに基づいて決定される第1検索範囲を用いて、検索処理を実行する。検索処理部133Dは、検索処理中の一のグループに基づいて決定される第1検索範囲を用いて、検索処理を実行する。検索処理部133Dは、検索クエリと、一のグループに含まれるオブジェクトのうち検索クエリに最も近いオブジェクト、または一のグループのセントロイドとの間の距離に基づく第1検索範囲を用いて、検索処理を実行する。 The search processing unit 133D executes the search process using a first search range that expands as the search process progresses. The search processing unit 133D executes the search process using a first search range that is determined based on one of the multiple groups that is the target of the search process. The search processing unit 133D executes the search process using a first search range that is determined based on one group during the search process. The search processing unit 133D executes the search process using a first search range that is based on the distance between the search query and an object that is closest to the search query among the objects included in the one group, or the centroid of the one group.
検索処理部133Dは、検索処理が進むにつれて範囲が狭まる第2検索範囲を用いて、検索処理を実行する。検索処理部133Dは、複数のオブジェクトのうち、検索処理の対象とされた一のオブジェクトに基づいて決定される第2検索範囲を用いて、検索処理を実行する。検索処理部133Dは、検索処理中において、検索クエリに対応する近傍のオブジェクトの候補として抽出されたオブジェクトのうち、検索クエリから最も遠いオブジェクトである一のオブジェクトに基づいて決定される第2検索範囲を用いて、検索処理を実行する。検索処理部133Dは、検索クエリと、一のオブジェクトとの間の距離に基づく第2検索範囲を用いて、検索処理を実行する。 The search processing unit 133D executes the search process using a second search range that narrows as the search process progresses. The search processing unit 133D executes the search process using a second search range that is determined based on one object that is the target of the search process among multiple objects. The search processing unit 133D executes the search process using a second search range that is determined based on one object that is the farthest from the search query among objects extracted during the search process as candidates for nearby objects corresponding to the search query. The search processing unit 133D executes the search process using the second search range that is based on the distance between the search query and the one object.
検索処理部133Dは、所定の終了条件を満たした場合、検索処理を終了する。検索処理部133Dは、検索処理の対象としたグループの数が条件を満たした場合、検索処理を終了する。検索処理部133Dは、検索処理の対象としたグループの数が所定の閾値を超えた場合、検索処理を終了する。 The search processing unit 133D ends the search process when a predetermined termination condition is met. The search processing unit 133D ends the search process when the number of groups targeted by the search process meets the condition. The search processing unit 133D ends the search process when the number of groups targeted by the search process exceeds a predetermined threshold.
検索処理部133Dは、所定のグループに関する距離が第2検索範囲を超えた場合、検索処理を終了する。検索処理部133Dは、検索処理中の所定のグループに関する距離が第2検索範囲を超えた場合、検索処理を終了する。検索処理部133Dは、所定のグループに含まれるオブジェクトのうち検索クエリに最も近いオブジェクトと、検索クエリとの間の距離が第2検索範囲を超えた場合、検索処理を終了する。 The search processing unit 133D ends the search process when the distance for the specified group exceeds the second search range. The search processing unit 133D ends the search process when the distance for the specified group during the search process exceeds the second search range. The search processing unit 133D ends the search process when the distance between the search query and an object closest to the search query among the objects included in the specified group exceeds the second search range.
検索処理部133Dは、第1検索範囲と第2検索範囲との大小関係が条件を満たす場合、検索処理を終了する。検索処理部133Dは、第1検索範囲が第2検索範囲を超えた場合、検索処理を終了する。 The search processing unit 133D ends the search process if the magnitude relationship between the first search range and the second search range satisfies the condition. The search processing unit 133D ends the search process if the first search range exceeds the second search range.
〔5-3.情報処理のフロー〕
次に、図42を用いて、第5の実施形態に係る情報処理の手順について説明する。図42は、第5の実施形態に係る情報処理の一例を示すフローチャートである。
5-3. Information processing flow
Next, a procedure of information processing according to the fifth embodiment will be described with reference to Fig. 42. Fig. 42 is a flowchart showing an example of information processing according to the fifth embodiment.
まず、図42について説明する。例えば、図42は、グループの生成処理の一例を示すフローチャートである。図42に示すように、情報処理装置100Dは、データ検索の対象となる複数のオブジェクトが分類された複数のグループ間がエッジにより連結されたグループ連結グラフを取得する(ステップS801)。例えば、情報処理装置100Dは、ブロブ連結グラフ情報記憶部126からブロブ連結グラフをグループ連結グラフとして取得する。
First, FIG. 42 will be described. For example, FIG. 42 is a flowchart showing an example of a group generation process. As shown in FIG. 42, the
情報処理装置100Dは、複数のオブジェクトに対する検索クエリを取得する(ステップS802)。例えば、情報処理装置100Dは、ユーザが利用する端末装置10(図4参照)から検索クエリを取得する。
The
情報処理装置100Dは、複数のグループの検索に対応する範囲を示す第1検索範囲と、複数のオブジェクトの検索に対応する範囲を示す第2検索範囲とを用いて、グループ連結グラフを探索することにより、複数のオブジェクトから、検索クエリに対応する近傍のオブジェクトを抽出する検索処理を実行する(ステップS803)。例えば、情報処理装置100Dは、第1検索範囲であるブロブ検索範囲と、第2検索範囲であるオブジェクト検索範囲とを用いて、図43に示す検索処理を実行する。
The
〔5-4.検索処理例〕
ここで、第5の実施形態に係る検索処理の一例について、図43を一例として説明する。図43は、第5の実施形態に係る検索処理の一例を示すフローチャートである。以下に説明する検索処理は、情報処理装置100Dの検索処理部133Dによって行われる。なお、第1の実施形態、第2の実施形態、第3の実施形態及び第4の実施形態で説明した検索処理と同様の点については適宜説明を省略する。
5-4. Search processing example
Here, an example of the search process according to the fifth embodiment will be described with reference to FIG. 43. FIG. 43 is a flowchart showing an example of the search process according to the fifth embodiment. The search process described below is performed by the search processing unit 133D of the
情報処理装置100Dは、探索ブロブ起点集合を取得し、個々のオブジェクトとクエリとの距離を計算する(ステップS901)。例えば、情報処理装置100Dは、探索の起点となるブロブを示す探索ブロブ起点集合を取得し、探索ブロブ起点集合のブロブに含まれる各オブジェクトとクエリとの距離を計算する。例えば、情報処理装置100Dは、ランダムに探索ブロブ起点集合を選択してもよいし、例えばブロブをリーフとする木構造のインデックス等の所定のインデックスを用いて、探索ブロブ起点集合を選択してもよい。例えば、情報処理装置100Dは、上述した近似距離の算出により、探索ブロブ起点集合のブロブに含まれる各オブジェクトとクエリとの近似距離を計算する。
The
情報処理装置100Dは、探索ブロブ起点集合のクエリの最近傍ブロブを現最近傍ブロブB(以下単に「ブロブB」ともいう)とする(ステップS902)。例えば、情報処理装置100Dは、探索ブロブ起点集合のうち、クエリに最も近いブロブを現最近傍ブロブBに決定する。
The
情報処理装置100Dは、各種パラメータを設定する(ステップS903)。図43では、情報処理装置100Dは、ブロブ検索数を「1」に設定する。また、情報処理装置100Dは、第2検索範囲(オブジェクト検索範囲)を示すオブジェクト検索半径Rを「∞(無限大)」に設定する。例えば、オブジェクト検索半径Rは、第2検索範囲を規定するクエリqを中心とする半径である。また、情報処理装置100Dは、第2探索範囲の一例であるオブジェクト探索半径Eを「∞(無限大)」に設定する。
The
また、情報処理装置100Dは、第1検索範囲(ブロブ検索範囲)の一例であるブロブ検索半径Rbを「d(q,B)」に設定する。例えば、ブロブ検索半径Rbは、第1検索範囲を規定するクエリqを中心とする半径である。例えば、情報処理装置100Dは、ブロブ検索半径Rbを、クエリqと現最近傍ブロブBとの間の距離d(q,B)に設定する。例えば、情報処理装置100Dは、ブロブ検索半径Rbを、クエリqと、現最近傍ブロブBに含まれるオブジェクトのうちクエリqに最も近いオブジェクトとの間の距離d(q,B)に設定する。なお、ブロブ検索半径Rbは、クエリqと現最近傍ブロブBのセントロイドとの間の距離であってもよい。また、情報処理装置100Dは、第1探索範囲(ブロブ検索範囲)を示すブロブ探索半径Ebを「Rb×(1+eb)」に設定する。ここで、パラメータebは、ブロブ探索半径拡大率(「第1検索範囲係数」ともいう)であり、例えば0.1等の任意の値が設定される。例えば、情報処理装置100Dは、ブロブ探索半径Ebを、ブロブ検索半径Rbに1+ebが乗算した値を設定する。
The
情報処理装置100Dは、ブロブB以外の探索ブロブ起点集合を除外ブロブ集合に追加する(ステップS904)。例えば、情報処理装置100Dは、探索ブロブ起点集合のうち、現最近傍ブロブBを除くブロブを除外ブロブ集合に追加する。
The
情報処理装置100Dは、探索ブロブ起点集合を未探索ブロブ集合及び距離算出済み集合に追加する(ステップS905)。例えば、情報処理装置100Dは、探索ブロブ起点集合のうち、現最近傍ブロブBを含む全ブロブを、未だ探索の処理対象とされていないことを示す未探索ブロブ集合に追加する。例えば、情報処理装置100Dは、探索ブロブ起点集合のうち、現最近傍ブロブBを含む全ブロブを、そのブロブ内のオブジェクトについて距離算出処理済みであることを示す距離算出済み集合に追加する。
The
情報処理装置100Dは、未探索ブロブ集合が空であるかどうかを判定する(ステップS906)。情報処理装置100Dは、未探索ブロブ集合が空ではない場合(ステップS906:No)、未探索ブロブ集合から最もクエリに近いブロブTを取得する(ステップS907)。これにより、未探索ブロブ集合からは未探索ブロブ集合が除かれる。例えば、情報処理装置100Dは、未探索ブロブ集合のうち、クエリqとの間の距離が最も短いブロブをブロブTとして取得する。例えば、クエリqとの間の距離は、クエリqと、ブロブに含まれるオブジェクトのうちクエリqに最も近いオブジェクトとの間の距離である。なお、クエリqとの間の距離は、クエリqとブロブのセントロイドとの間の距離であってもよい。
The
情報処理装置100Dは、ブロブTがブロブ探索範囲内にあるかどうかを判定する(ステップS908)。例えば、情報処理装置100Dは、ブロブTのクエリqとの間の距離がブロブ探索半径Eb以下であるかどうかを判定する。
The
情報処理装置100Dは、ブロブTがブロブ探索範囲内にある場合(ステップS908:Yes)、ブロブTのエッジで接続されているブロブを全て処理したかどうかを判定する(ステップS909)。例えば、情報処理装置100Dは、ブロブTとの間がエッジで接続されているブロブ(「接続ブロブ」ともいう)についての処理有無を示す情報(「処理有無情報」)を用いて、ブロブTの接続ブロブを全て処理したかどうかを判定する。例えば、情報処理装置100Dは、ブロブTの接続ブロブの処理有無をフラグ等の情報により管理してもよい。例えば、情報処理装置100Dは、記憶部120Cに記憶された処理有無情報を処理状況に応じて更新し、記憶部120C中の処理有無情報を参照して、ブロブTの接続ブロブを全て処理したかどうかを判定してもよい。
If blob T is within the blob search range (step S908: Yes), the
情報処理装置100Dは、ブロブTのエッジで接続されているブロブを全て処理していない場合(ステップS909:No)、ブロブTからエッジで接続されているブロブJを取得する(ステップS910)。例えば、情報処理装置100Dは、ブロブTとの間がエッジで接続されているブロブのうち、ブロブTのエッジで接続されているブロブとしての処理が未処理であるブロブ(「未処理接続ブロブ」ともいう)をブロブJとして取得する。例えば、情報処理装置100Dは、処理有無情報を参照し、ブロブTとの間がエッジで接続されているブロブのうち、未処理接続ブロブをブロブJとして取得し、ブロブJとして取得したブロブについて処理有無情報を処理済みに更新する。
When the
情報処理装置100Dは、ブロブJが距離算出済み集合に存在するかどうかを判定する(ステップS911)。情報処理装置100Dは、ブロブJが距離算出済み集合に存在する場合(ステップS911:Yes)、ステップS909に戻って処理を行う。
The
また、情報処理装置100Dは、ブロブJが距離算出済み集合に存在しない場合(ステップS911:No)、ブロブJを距離算出済み集合に追加し(ステップS912)、ブロブJを未探索ブロブ集合に追加する(ステップS913)。そして、情報処理装置100Dは、ブロブJのセントロイドとクエリの距離Deを算出する(ステップS914)。
If blob J does not exist in the distance-calculated set (step S911: No), the
情報処理装置100Dは、距離Deがブロブ検索半径Rbよりも小さいかどうかを判定する(ステップS915)。情報処理装置100Dは、距離Deがブロブ検索半径Rbよりも小さくない場合(ステップS915:No)、ブロブJを除外ブロブ集合に追加し(ステップS916)、ステップS909に戻って処理を行う。
The
また、情報処理装置100Dは、距離Deがブロブ検索半径Rbよりも小さい場合(ステップS915:Yes)、現最近傍ブロブBを除外ブロブ集合に追加し、ブロブJを現最近傍ブロブBとする(ステップS917)。このように、情報処理装置100Dは、距離Deがブロブ検索半径Rbよりも小さい場合、現最近傍ブロブBをブロブJに更新する。
Furthermore, if the distance De is smaller than the blob search radius Rb (step S915: Yes), the
そして、情報処理装置100Dは、ブロブJに更新された現最近傍ブロブBを基に、ブロブに関するパラメータを更新する(ステップS918)。図43では、情報処理装置100Dは、ブロブJに更新された現最近傍ブロブBを基にブロブ検索半径Rbを「d(q,B)」に更新する。また、情報処理装置100Dは、更新されたブロブ検索半径Rbを基に、ブロブ探索半径Ebを「Rb×(1+eb)」に更新する。そして、情報処理装置100Dは、ステップS909に戻って処理を行う。
Then, the
情報処理装置100Dは、ブロブTのエッジで接続されているブロブを全て処理した場合(ステップS909:Yes)、ステップS906に戻って処理を行う。情報処理装置100Dは、未探索ブロブ集合が空である場合(ステップS906:Yes)、ステップS920の処理を行う。また、情報処理装置100Dは、ブロブTがブロブ探索範囲内にない場合(ステップS908:No)、ブロブTを未探索ブロブに戻して(ステップS919)、ステップS920の処理を行う。
When the
ステップS920では、情報処理装置100Dは、ブロブ検索数に1加える(ステップS920)。そして、情報処理装置100Dは、ブロブB内の全てのオブジェクトの近似距離を算出し、最短距離を当該ブロブBのブロブ距離とする(ステップS921)。例えば、情報処理装置100Dは、ブロブB内の全オブジェクトについてクエリqとの間の近似距離を算出し、クエリqと、現最近傍ブロブBに含まれるオブジェクトのうちクエリqに最も近いオブジェクトとの間の距離を、ブロブBのブロブ距離に設定する。なお、ブロブBのブロブ距離は、ステップS924での終了判定の処理に用いられる。
In step S920, the
情報処理装置100Dは、ブロブB内の全てのオブジェクトを検索結果集合に追加、ソートし、指定された検索数上位のみを検索結果集合とする(ステップS922)。例えば、情報処理装置100Dは、クエリqの近傍のオブジェクトの候補を示す検索結果集合に、ブロブB内の全てのオブジェクトを追加する。そして、情報処理装置100Dは、ブロブB内のオブジェクトを追加後の検索結果集合内のオブジェクトを、クエリqからの距離が短い方から順にソートすることにより検索結果集合を更新し、更新した検索結果集合のうち指定された検索数(例えば5、10等)よりも下位のオブジェクトを検索結果集合から除外する。例えば、情報処理装置100Dは、ブロブB内のオブジェクトを追加後の検索結果集合内のオブジェクトのうち、クエリqからの距離が短い方から検索数(例えば5、10等)までのオブジェクト(すなわち、検索数の個数のオブジェクト)を残し、その他を除外する。
The
そして、情報処理装置100Dは、更新された検索結果集合を基に、オブジェクトに関するパラメータを更新する(ステップS923)。図43では、情報処理装置100Dは、更新された検索結果集合を基に、オブジェクト検索半径Rを、検索結果集合内のオブジェクトの最大距離に更新する。例えば、情報処理装置100Dは、オブジェクト検索半径Rを、検索結果集合において内のクエリqから最も遠いオブジェクトの距離に更新する。また、情報処理装置100Dは、更新された検索結果集合を基に、オブジェクト探索半径Eを「R×(1+eo)」に設定する。ここで、パラメータeoは、オブジェクト探索半径拡大率(「第2検索範囲係数」ともいう)であり、例えば0.05等の任意の値が設定される。例えば、パラメータeoは、上述した検索範囲係数「ε」に対応する。例えば、情報処理装置100Dは、オブジェクト探索半径Eを、オブジェクト検索半径Rに1+eoが乗算した値を設定する。パラメータeoとパラメータebとは同じ値であってもよい。
Then, the
そして、情報処理装置100Dは、終了基準#1~#3に当てはまるかどうかを判定する(ステップS924)。情報処理装置100Dは、処理状況が各終了条件に基づく終了基準#1~#3のいずれかに当てはまるかどうかを判定する。終了基準#1は、ブロブの検索上限数を超えたら終了とする。例えば、終了基準#1は、パラメータであるブロブ検索数が検索上限数(例えば5、10等の任意の値)を超えることを条件とする基準である。
Then, the
終了基準#2は、ブロブ距離がオブジェクトの探索半径を超えたら終了とする。例えば、終了基準#2は、ブロブ距離がオブジェクト探索半径Eを超えることを条件とする基準である。終了基準#3は、ブロブの探索半径がオブジェクトの探索半径を超えたら終了とする。例えば、終了基準#3は、ブロブ探索半径Ebがオブジェクト探索半径Eを超えることを条件とする基準である。なお、上記の終了基準#1~#3は一例に過ぎず、様々な終了基準が用いられてもよい。また、複数の終了基準が組み合わせて用いられてもよい。
情報処理装置100Dは、終了基準#1~#3に当てはまらない場合(ステップS924:No)、除外ブロブ集合から最短距離のブロブを取得し、現最近傍ブロブBとする(ステップS925)。例えば、情報処理装置100Dは、除外ブロブ集合のうち、クエリqとの間の距離が最も短いブロブを現最近傍ブロブBとして取得する。これにより、除外ブロブ集合からはその時点での最短距離のブロブが除かれる。例えば、情報処理装置100Dは、除外ブロブ集合のうち、クエリqとの間の距離が最も短いブロブに現最近傍ブロブBを更新する。
If
そして、情報処理装置100Dは、最短距離のブロブに更新された現最近傍ブロブBを基に、ブロブに関するパラメータを更新する(ステップS926)。図43では、情報処理装置100Dは、最短距離のブロブに更新された現最近傍ブロブBを基にブロブ検索半径Rbを「d(q,B)」に更新する。また、情報処理装置100Dは、更新されたブロブ検索半径Rbを基に、ブロブ探索半径Ebを「Rb×(1+eb)」に更新する。そして、情報処理装置100Dは、ステップS906に戻って処理を行う。
Then, the
また、情報処理装置100Dは、終了基準#1~#3に当てはまる場合(ステップS924:Yes)、処理を終了する。例えば、情報処理装置100Dは、終了基準#1~#3に当てはまる場合、その時点で検索結果集合に含まれるオブジェクトをクエリqの近傍のオブジェクトに決定する。そして、情報処理装置100Dは、クエリqの近傍のオブジェクトに決定したオブジェクトを示す情報を、クエリqを指定した検索の要求元等に提供する。
Furthermore, if
〔6.第6の実施形態〕
なお、上述した検索処理は一例に過ぎず、オブジェクトをグルーピング(分類)した複数のグループの情報を用いて、任意の検索処理を実行してもよい。この点について、以下、第6の実施形態として説明する。第6の実施形態では、上述した例で示した第1グループ(ブロブ)と第2グループ(クラスタ)とが一致する場合の検索処理例を示す。そのため、第6の実施形態では、第1グループ(ブロブ)と第2グループ(クラスタ)とを特に区別せず単に「グループ」または「ブロブ」と記載する。
6. Sixth embodiment
The above-mentioned search process is merely an example, and any search process may be executed using information on a plurality of groups obtained by grouping (classifying) objects. This will be described below as the sixth embodiment. In the sixth embodiment, a search process example will be shown in which the first group (blob) and the second group (cluster) shown in the above example match. Therefore, in the sixth embodiment, the first group (blob) and the second group (cluster) are not particularly distinguished from each other, and are simply referred to as "group" or "blob".
第6の実施形態においては、情報処理システム1は、情報処理装置100、情報処理装置100A、情報処理装置100B、情報処理装置100Cまたは情報処理装置100Dに代えて、情報処理装置100Eを有する。なお、第1の実施形態、第2の実施形態、第3の実施形態、第4の実施形態及び第5の実施形態等において上述した内容と同様の点については適宜説明を省略する。
In the sixth embodiment, the
〔6-1.情報処理〕
情報処理装置100Eは、データ検索の対象となる複数のオブジェクトを分類する複数のグループの情報を用いて、検索クエリに対応する近傍のオブジェクトを抽出する検索処理を実行する。例えば、情報処理装置100Eは、複数のグループのうち、検索処理の対象とするグループ(「対象グループ群」ともいう)を選択する処理(「1段目の処理」ともいう)を実行する。そして、情報処理装置100Eは、1段目の処理で選択した対象グループ群を対象として、以下の処理(7-1)~(7-10)に示す処理(「2段階目の処理」ともいう)を実行する。このように、情報処理装置100Eは、1段目の処理及び2段目の処理を実行する、すなわち二段階検索処理を実行することにより、検索クエリに対応する近傍のオブジェクトを抽出する。以下、1段階目の処理及び2段階目の処理の概要について説明した後、図を用いて処理の一例について説明する。
[6-1. Information Processing]
The information processing device 100E executes a search process to extract nearby objects corresponding to a search query using information on a plurality of groups that classify a plurality of objects to be the target of a data search. For example, the information processing device 100E executes a process (also called "first stage process") to select a group (also called "target group group") to be the target of the search process from among a plurality of groups. Then, the information processing device 100E executes the following processes (7-1) to (7-10) (also called "second stage process") for the target group group selected in the first stage process. In this way, the information processing device 100E executes the first stage process and the second stage process, that is, executes a two-stage search process, thereby extracting nearby objects corresponding to the search query. Below, an overview of the first stage process and the second stage process will be described, and then an example of the process will be described using the figures.
〔6-1-1.1段階目の処理〕
まず、1段階目の処理の概要について説明する。情報処理装置100Eは、1段目の処理において、複数のグループの各々の代表オブジェクトをエッジで接続したグラフを用いて、対象グループ群を選択する。例えば、情報処理装置100Eは、複数のグループの各々のセントロイドを代表オブジェクトとしてエッジで連結したグループ連結グラフ(ブロブグラフ)を用いて、対象グループ群を選択する。なお、セントロイドは一例に過ぎず、代表オブジェクトは、セントロイドに限らず、そのグループを代表するものであれば、任意のものが採用可能である。
[6-1-1. First stage processing]
First, an overview of the first stage processing will be described. In the first stage processing, the information processing device 100E selects target groups using a graph in which the representative objects of each of the multiple groups are connected by edges. For example, the information processing device 100E selects target groups using a group connection graph (blob graph) in which the centroids of each of the multiple groups are connected by edges as representative objects. Note that the centroid is merely an example, and the representative object is not limited to the centroid, and any object that represents the group can be used.
情報処理装置100Eは、1段目の処理において、検索に用いる検索クエリ(単に「クエリ」ともいう)に対する指定された数(「指定数」ともいう)のグループを対象グループ群として選択する。例えば、情報処理装置100Eは、検索クエリ(クエリ)を用いてグループ連結グラフを検索し、クエリについて指定数の近傍のグループを対象グループ群として選択する。なお、グループ連結グラフを用いた検索については上述した内容と同様であり詳細な説明は省略する。これにより、情報処理装置100Eは、クエリの近傍に代表オブジェクトが位置する指定数のグループを対象グループ群として選択する。 In the first stage of processing, the information processing device 100E selects a specified number (also referred to as the "specified number") of groups for a search query (also simply referred to as the "query") used in the search as a group of target groups. For example, the information processing device 100E searches the group connection graph using the search query (query) and selects a specified number of groups in the vicinity of the query as a group of target groups. Note that the search using the group connection graph is similar to the content described above, and a detailed description will be omitted. As a result, the information processing device 100E selects a specified number of groups whose representative objects are located in the vicinity of the query as a group of target groups.
なお、情報処理装置100Eは、対象グループ群を示す情報を外部装置等から取得する場合、1段目の処理を実行しなくてもよい。また、情報処理装置100Eは、複数のグループの全てを対象グループ群とする場合、1段目の処理を実行しなくてもよい。例えば、情報処理装置100Eは、指定数が複数のグループの数と一致する場合、複数のグループの全てを対象グループ群にすると決定し、1段目の処理を実行しなくてもよい。このように、情報処理装置100Eは、1段目の処理を実行しない場合、2段目の処理のみを実行してクエリに対応する近傍のオブジェクトを抽出する。 Note that when the information processing device 100E acquires information indicating the target group group from an external device, etc., it may not need to execute the first stage of processing. Furthermore, when the information processing device 100E sets all of the multiple groups as the target group group, it may not need to execute the first stage of processing. For example, when the specified number matches the number of the multiple groups, the information processing device 100E may decide to set all of the multiple groups as the target group group and may not need to execute the first stage of processing. In this way, when the information processing device 100E does not execute the first stage of processing, it executes only the second stage of processing to extract nearby objects corresponding to the query.
〔6-1-2.2段階目の処理〕
次に、2段階目の処理の概要について説明する。情報処理装置100Eは、2段目の処理において、複数のグループ(ブロブ)内のオブジェクトとクエリとの距離を算出(計算)し、クエリの近傍のオブジェクトを検索する。なお、オブジェクトとクエリとの距離は、オブジェクトとクエリとの距離を示すものであれば、任意の値が採用可能であり、例えば近似距離であってもよいし、正距離であってもよい。例えば、情報処理装置100Eは、近似距離をオブジェクトとクエリとの距離として用いる場合、上述した直積量子化などにより、オブジェクトとクエリとの距離を算出してもよい。
[6-1-2. Second stage processing]
Next, an overview of the second stage processing will be described. In the second stage processing, the information processing device 100E calculates (calculates) the distance between the query and objects in multiple groups (blobs) and searches for objects in the vicinity of the query. Note that any value can be adopted as the distance between the object and the query as long as it indicates the distance between the object and the query, and may be, for example, an approximate distance or a positive distance. For example, when the information processing device 100E uses the approximate distance as the distance between the object and the query, it may calculate the distance between the object and the query by the above-mentioned direct product quantization or the like.
例えば、情報処理装置100Eは、2段目の処理において、以下のような処理(7-1)~(7-10)を行う。 For example, in the second stage of processing, the information processing device 100E performs the following processes (7-1) to (7-10).
(7-1):対象グループ群の集合をグループ集合Sとし、検索半径Rを無限に設定
(7-2):各グループの代表オブジェクトとクエリとの距離でグループ集合Sをソート
(7-3):グループ集合Sが空集合ならば処理を終了
(7-4):グループ集合Sから最も距離の短いグループをブロブBとして、グループ集合Sから取得し、ブロブBをグループ集合Sから削除
(7-5):ブロブBに属するすべてのオブジェクトとクエリとの間の距離を算出し、検索結果集合O(例えば検索結果数Nに限定されたリスト)に追加
(7-6):検索結果集合Oを距離でソートし、検索結果数Nを超えるオブジェクトを検索結果集合Oから削除
(7-7):検索結果集合O内のオブジェクト数が検索結果数Nに達した場合には、検索結果集合O内の最大の距離を検索半径Rに設定
(7-8):ブロブBに属するオブジェクトとクエリとの距離で最短の距離をブロブ距離Dに設定
(7-9):ブロブ距離Dが探索半径R’=R×eを超えたら処理を終了
(7-10):処理(7-3)に戻る
(7-1): A set of target groups is set as group set S, and search radius R is set to infinity. (7-2): Sort group set S by the distance between the representative object of each group and the query. (7-3): If group set S is an empty set, end processing. (7-4): The group with the shortest distance from group set S is set as blob B, and is obtained from group set S, and blob B is deleted from group set S. (7-5): Calculate the distance between all objects belonging to blob B and the query, and add them to search result set O (for example, a list limited to the number of search results N). (7-6): Sort search result set O by distance, and delete objects exceeding the number of search results N from search result set O. (7-7): When the number of objects in search result set O reaches the number of search results N, set the maximum distance in search result set O to search radius R. (7-8): Set the shortest distance between the object belonging to blob B and the query to blob distance D. (7-9): End processing when blob distance D exceeds search radius R′=R×e. (7-10): Return to processing (7-3).
例えば、処理(7-9)では、情報処理装置100Eは、検索処理における検索範囲を示す検索半径Rに係数eを乗算することにより、基準値として用いる探索半径R’を算出する。係数eは、任意の値が設定可能である。例えば、係数eは、0より大きい任意の値が設定可能であり、0.1、1.1等といった値が設定される。 For example, in process (7-9), the information processing device 100E calculates a search radius R' to be used as a reference value by multiplying the search radius R, which indicates the search range in the search process, by a coefficient e. The coefficient e can be set to any value. For example, the coefficient e can be set to any value greater than 0, and values such as 0.1, 1.1, etc. are set.
上述したように、情報処理装置100Eは、2段目の処理において、対象グループ群の各々の代表オブジェクトと検索クエリとの間の距離が短い方から順に一のグループを選択する。そして、情報処理装置100Eは、選択した一のグループに属するオブジェクトを対象オブジェクトとして、検索クエリと対象オブジェクトの各々との距離に基づいて、検索クエリに対応する近傍のオブジェクトを抽出する検索処理を実行する。情報処理装置100Eは、検索処理における検索範囲を示す値に基づく基準値と、一のグループに対応する距離である対象距離との比較結果が所定の条件を満たす場合、検索処理を終了する。このように、情報処理装置100Eは、2段目の処理では対象グループ群の全てを対象として探索するのではなく、距離を導入することで2段目の処理を途中で終了することを可能にする。これにより、情報処理装置100Eは、それ以降の2段目の処理が不要と想定される場合は、2段目の処理を途中で終了することで、不要な処理を行うことを抑制することができる。したがって、情報処理装置100Eは、グループに応じて適切に検索処理を実行することができる。 As described above, in the second stage processing, the information processing device 100E selects a group in order of the distance between the representative object of each of the target groups and the search query from the one with the shortest distance. Then, the information processing device 100E executes a search process in which an object belonging to the selected group is set as a target object, and a nearby object corresponding to the search query is extracted based on the distance between the search query and each of the target objects. The information processing device 100E ends the search process when a comparison result between a reference value based on a value indicating a search range in the search process and a target distance, which is a distance corresponding to the one group, satisfies a predetermined condition. In this way, the information processing device 100E does not search all of the target groups in the second stage processing, but makes it possible to end the second stage processing midway by introducing a distance. As a result, when it is assumed that the second stage processing thereafter is unnecessary, the information processing device 100E can suppress the execution of unnecessary processing by ending the second stage processing midway. Therefore, the information processing device 100E can execute a search process appropriately according to the group.
なお、上述した処理(7-1)~(7-10)は一例に過ぎず、情報処理装置100Eは、任意の処理を実行してもよい。情報処理装置100Eは、検索結果数Nとは別に探索数Mを導入し、処理を実行してもよい。この場合、情報処理装置100Eは、探索数MをN×eで算出する。例えば、係数eは、1より大きい値が用いられる。情報処理装置100Eは、検索結果集合Oと同様に探索集合P(例えば探索数Mに限定されたリスト)の情報を収集する。この場合、情報処理装置100Eは、処理(7-5)において、検索結果集合Oと同様に探索集合Pにもオブジェクトを追加する。そして、情報処理装置100Eは、処理(7-6)において、検索結果集合Oと同様に、探索集合Pを距離でソートし、探索数Mを超えるオブジェクトを探索集合Pから削除する。また、情報処理装置100Eは、処理(7-9)において用いる探索半径R’に、探索集合P内の最大の距離を設定する。なお、情報処理装置100Eは、探索数Mを導入することなく、検索結果数Nをe倍した値を用いて処理(7-1)~(7-10)を実行してもよい。例えば、係数eは、1より大きい値が用いられる。この場合、検索結果集合Oには検索結果数Nよりも多い数(N×e個)のオブジェクトが含まれる。そのため、情報処理装置100Eは、処理(7-9)で処理を終了した際に、検索結果集合Oを距離でソートし、検索結果数Nを超えるオブジェクトを検索結果集合Oから削除することにより、検索結果数N個のオブジェクトを取得する。 Note that the above-mentioned processes (7-1) to (7-10) are merely examples, and the information processing device 100E may execute any process. The information processing device 100E may introduce a search number M in addition to the search result number N and execute the process. In this case, the information processing device 100E calculates the search number M as N×e. For example, a value greater than 1 is used as the coefficient e. The information processing device 100E collects information on a search set P (for example, a list limited to the search number M) in the same way as the search result set O. In this case, in the process (7-5), the information processing device 100E adds objects to the search set P in the same way as the search result set O. Then, in the process (7-6), the information processing device 100E sorts the search set P by distance in the same way as the search result set O, and deletes objects that exceed the search number M from the search set P. In addition, the information processing device 100E sets the maximum distance in the search set P to the search radius R' used in the process (7-9). The information processing device 100E may execute processes (7-1) to (7-10) using a value obtained by multiplying the number of search results N by e, without introducing the search count M. For example, the coefficient e may be greater than 1. In this case, the search result set O contains a greater number of objects (N×e) than the number of search results N. Therefore, when the information processing device 100E ends the process in process (7-9), it sorts the search result set O by distance and deletes objects that exceed the number of search results N from the search result set O, thereby acquiring the number of objects that is the number of search results N.
〔6-1-3.処理例〕
以下、図44を用いて、第6の実施形態に係る情報処理の一例を説明する。図44は、第6の実施形態に係る情報処理の一例を示す図である。情報処理装置100Eによる情報処理の説明に先立って、図44の図示態様について簡単に説明する。図44では、グループ(ブロブ)の区別を実線で示す。また、図44中の空間情報SP71に示すように、ブロブ間を連結するグループ連結グラフ(ブロブグラフ)であるグラフGR71をブロブBLのセントロイドC間を繋ぐ点線で示す。このように、各ブロブBLのセントロイドを区別せずに説明する場合、「セントロイドC」と記載する。なお、図44中の空間情報SP71及び空間情報SP72は、処理を説明するために同じ空間情報に異なる符号を付して説明するが、同じ空間情報であり、特に区別説明する場合は「空間情報SP70」と記載する。
[6-1-3. Processing example]
An example of information processing according to the sixth embodiment will be described below with reference to FIG. 44. FIG. 44 is a diagram showing an example of information processing according to the sixth embodiment. Prior to the description of information processing by the information processing device 100E, the illustrated aspect of FIG. 44 will be briefly described. In FIG. 44, the distinction between groups (blobs) is indicated by solid lines. Also, as shown in the spatial information SP71 in FIG. 44, a graph GR71, which is a group connection graph (blob graph) that connects between blobs, is indicated by dotted lines connecting between centroids C of blobs BL. In this way, when the centroids of each blob BL are not distinguished, they are described as "centroid C". Note that the spatial information SP71 and spatial information SP72 in FIG. 44 are described by assigning different symbols to the same spatial information in order to describe the processing, but they are the same spatial information, and when they are particularly distinguished, they are described as "spatial information SP70".
図44では、セントロイドC21~C30は、各ブロブBL21~BL30の各々のセントロイドCを示す。例えば、ブロブBL21には、ノードN31、ノードN205等が含まれ、ブロブBL21のセントロイドCは、セントロイドC21である。例えば、セントロイドC21は、グラフGR71において、セントロイドC22、C27、C29、C30とエッジで連結される。なお、図44に示すブロブBL及びノードN等は一部であり、空間情報SP70には、図示したもの以外にも多数のノードNやブロブBLが含まれる。 In Figure 44, centroids C21 to C30 indicate the centroid C of each of the blobs BL21 to BL30. For example, blob BL21 includes nodes N31, N205, etc., and the centroid C of blob BL21 is centroid C21. For example, centroid C21 is connected by edges to centroids C22, C27, C29, and C30 in graph GR71. Note that the blobs BL and nodes N, etc. shown in Figure 44 are only a partial list, and spatial information SP70 includes many more nodes N and blobs BL in addition to those shown in the figure.
以下、図44に示す空間情報SP70に対応する情報を取得した場合を一例として処理例を説明する。図44では、情報処理装置100Eが検索クエリQE11を用いて検索処理を実行する。また、以下に示す例では、近傍オブジェクト抽出数が「3」、すなわち検索クエリQE11の近傍オブジェクトとして抽出するオブジェクトの数が3個である場合を一例として説明する。 Below, a processing example will be described using as an example a case where information corresponding to the spatial information SP70 shown in FIG. 44 has been acquired. In FIG. 44, the information processing device 100E executes a search process using a search query QE11. In addition, in the example shown below, a case where the number of nearby objects to be extracted is "3", that is, the number of objects to be extracted as nearby objects of the search query QE11 is three, will be described as an example.
まず、情報処理装置100Eは、1段階目の処理を実行する(ステップS81)。1段階目の処理においては、情報処理装置100Eは、上述したように、対象グループ群を選択する。図44では、指定数が4に設定されているものとする。例えば、情報処理装置100Eは、グラフGR71を用いて、ブロブBL21、BL23、BL29、BL30の4つのブロブBLを対象グループ群として選択する。 First, the information processing device 100E executes the first stage of processing (step S81). In the first stage of processing, the information processing device 100E selects a target group group as described above. In FIG. 44, it is assumed that the specified number is set to 4. For example, the information processing device 100E uses the graph GR71 to select four blobs BL, blobs BL21, BL23, BL29, and BL30, as the target group group.
そして、情報処理装置100Eは、2段階目の処理を実行する(ステップS82)。2段階目の処理においては、情報処理装置100Eは、上述したように、対象グループ群から最も距離の短い方から順に一のグループを選択して、一のグループ内のオブジェクトを対象として処理を実行する。図44に示すように、対象グループ群に含まれる4つのブロブBLは、ブロブBL30、BL21、BL29、BL23の順で代表オブジェクトであるセントロイドCが検索クエリQE11に距離が近い。そのため、情報処理装置100Eは、ブロブBL30、BL21、BL29、BL23の順で処理対象とするブロブBLを選択し、処理を実行する。2段階目の処理の開始時点では、オブジェクトの抽出候補である検索結果数Nが0であり、近傍オブジェクト抽出数「3」より小さいので検索範囲(検索半径R)が無限(「無限大」ともいう)に設定され、例えば基準値(探索半径R’)も無限となる。 Then, the information processing device 100E executes the second stage of processing (step S82). In the second stage of processing, as described above, the information processing device 100E selects one group from the target groups in order from the one with the shortest distance, and executes processing on the objects in the one group. As shown in FIG. 44, the four blobs BL included in the target groups are closest to the search query QE11 in the order of blobs BL30, BL21, BL29, and BL23, with the centroid C being the representative object. Therefore, the information processing device 100E selects the blobs BL to be processed in the order of blobs BL30, BL21, BL29, and BL23, and executes processing. At the start of the second stage of processing, the number N of search results that are candidates for object extraction is 0, which is smaller than the number of nearby object extractions "3", so the search range (search radius R) is set to infinity (also called "infinity"), and for example, the reference value (search radius R') is also infinite.
図44の空間情報SP72中に一点鎖線の円で示す第1範囲RG1が検索範囲(検索半径R)に対応し、二点鎖線の円で示す第2範囲RG2が基準値(探索半径R’)に対応する。なお、図44の空間情報SP72では、終了条件を満たす場合(一状態)の第1範囲RG1及び第2範囲RG2を示しており、第1範囲RG1及び第2範囲RG2はオブジェクトの抽出候補に応じて変動する。また、図44の空間情報SP72中での検索クエリQE11とノードNとの間の双方向矢印は、検索クエリQE11とそのノードNとの間の距離を示す。 The first range RG1 shown by the dashed-dotted circle in the spatial information SP72 of FIG. 44 corresponds to the search range (search radius R), and the second range RG2 shown by the dashed-dotted circle corresponds to the reference value (search radius R'). Note that the spatial information SP72 of FIG. 44 shows the first range RG1 and the second range RG2 when the termination condition is satisfied (one state), and the first range RG1 and the second range RG2 vary depending on the object extraction candidates. Also, the bidirectional arrow between the search query QE11 and node N in the spatial information SP72 of FIG. 44 indicates the distance between the search query QE11 and that node N.
まず、情報処理装置100Eは、ブロブBL30、BL21、BL29、BL23のうち、最もセントロイドCが検索クエリQE11に近いブロブBL30内のオブジェクトを対象として処理を実行する。例えば、情報処理装置100Eは、ブロブBL30内のノードN2、N6、N8等の各々と、検索クエリQE11との距離の算出を一括して行う。そして、情報処理装置100Eは、ブロブBL30内のノードN2、N6、N8等の各々と、検索クエリQE11との距離に基づいて、検索クエリQE11に対応するオブジェクトの抽出候補(検索結果集合O)を抽出(更新)する。 First, the information processing device 100E performs processing on the object in blob BL30 whose centroid C is closest to the search query QE11 among blobs BL30, BL21, BL29, and BL23. For example, the information processing device 100E collectively calculates the distance between each of nodes N2, N6, N8, etc. in blob BL30 and the search query QE11. Then, the information processing device 100E extracts (updates) extraction candidates (search result set O) for objects corresponding to the search query QE11 based on the distance between each of nodes N2, N6, N8, etc. in blob BL30 and the search query QE11.
図44では、情報処理装置100Eは、ブロブBL30内のノードN2、N6、N8等の各々と、検索クエリQE11との間の距離が近い方から順に、ノードN6、N8、N2をオブジェクトの抽出候補として抽出する。この場合、検索結果数Nが近傍オブジェクト抽出数「3」に達したため、情報処理装置100Eは、オブジェクトの抽出候補のうち検索クエリQE11との距離が最も遠いノードN2と検索クエリQE11との間の距離に、検索範囲(検索半径R)を更新する。そして、情報処理装置100Eは、更新後の検索範囲(検索半径R)を基に、基準値(探索半径R’)を更新する。 In FIG. 44, the information processing device 100E extracts nodes N6, N8, and N2 as object extraction candidates in order of the distance between each of nodes N2, N6, N8, etc. in blob BL30 and the search query QE11. In this case, since the number of search results N has reached the number of nearby object extractions "3", the information processing device 100E updates the search range (search radius R) to the distance between the search query QE11 and node N2, which is the object extraction candidate with the furthest distance from the search query QE11. Then, the information processing device 100E updates the reference value (search radius R') based on the updated search range (search radius R).
また、情報処理装置100Eは、ブロブBL30内のオブジェクトのうち、検索クエリQE11との距離が最も短いノードN6と検索クエリQE11との間の距離D1を、ブロブBL30の対象距離(ブロブ距離)に決定する。そして、情報処理装置100Eは、ブロブBL30のブロブ距離と基準値とを比較し、基準値よりもブロブBL30のブロブ距離が大きい場合、検索処理を終了する。ブロブBL30を対象とする処理の時点では、基準値よりもブロブBL30のブロブ距離が小さいため、情報処理装置100Eは、検索処理を終了しないと判定して、検索処理を続行する。なお、情報処理装置100Eは、対象グループ群(グループ集合S)からブロブBL30を除外(削除)する。また、ブロブ距離等のブロブ距離は、そのブロブBLに含まれるオブジェクトのうち検索クエリQE11との距離が最も短いオブジェクトの距離に限らず任意の値が設定されてもよい。 The information processing device 100E also determines the distance D1 between the search query QE11 and the node N6 that is the shortest distance from the search query QE11 among the objects in the blob BL30 as the target distance (blob distance) of the blob BL30. Then, the information processing device 100E compares the blob distance of the blob BL30 with a reference value, and ends the search process if the blob distance of the blob BL30 is greater than the reference value. At the time of processing targeting the blob BL30, the blob distance of the blob BL30 is smaller than the reference value, so the information processing device 100E determines not to end the search process and continues the search process. Note that the information processing device 100E excludes (deletes) the blob BL30 from the target group group (group set S). Also, the blob distance, such as the blob distance, may be set to any value, not limited to the distance of the object that is the shortest distance from the search query QE11 among the objects included in the blob BL.
次に、情報処理装置100Eは、ブロブBL30削除後の対象グループ群に含まれるブロブBL21、BL29、BL23のうち、最もセントロイドCが検索クエリQE11に近いブロブBL21内のオブジェクトを対象として処理を実行する。例えば、情報処理装置100Eは、ブロブBL21内のノードN31、N205等の各々と、検索クエリQE11との距離の算出を一括して行う。そして、情報処理装置100Eは、ブロブBL21内のノードN31、N205等の各々と、検索クエリQE11との距離に基づいて、検索クエリQE11に対応するオブジェクトの抽出候補(検索結果集合O)を更新する。 Next, the information processing device 100E performs processing on the objects in blob BL21 whose centroid C is closest to the search query QE11 among blobs BL21, BL29, and BL23 included in the target group group after deleting blob BL30. For example, the information processing device 100E collectively calculates the distance between each of nodes N31, N205, etc. in blob BL21 and the search query QE11. Then, the information processing device 100E updates the extraction candidates (search result set O) for the object corresponding to the search query QE11 based on the distance between each of nodes N31, N205, etc. in blob BL21 and the search query QE11.
図44では、情報処理装置100Eは、オブジェクトの抽出候補(検索結果集合O)に含まれるノードN6、N8、N2のうち、ノードN2よりも検索クエリQE11との間の距離が短いノードN31をオブジェクトの抽出候補(検索結果集合O)に追加し、ノードN2をオブジェクトの抽出候補(検索結果集合O)から除外する。そして、情報処理装置100Eは、オブジェクトの抽出候補のうち検索クエリQE11との距離が最も遠いノードN31と検索クエリQE11との間の距離に、検索範囲(検索半径R)を更新する。そして、情報処理装置100Eは、更新後の検索範囲(検索半径R)を基に、基準値(探索半径R’)を更新する。図44では、情報処理装置100Eは、検索範囲(検索半径R)をノードN31と検索クエリQE11との間の距離に対応する値(第1範囲RG1に対応)に更新する。そして、情報処理装置100Eは、第1範囲RG1に対応する第1範囲RG1に対応を基に、基準値(探索半径R’)を第2範囲RG2に対応する値に更新する。 In FIG. 44, the information processing device 100E adds node N31, which is closer to the search query QE11 than node N2, to the object extraction candidate (search result set O) among nodes N6, N8, and N2 included in the object extraction candidate (search result set O), and excludes node N2 from the object extraction candidate (search result set O). Then, the information processing device 100E updates the search range (search radius R) to the distance between the search query QE11 and node N31, which is the object extraction candidate with the furthest distance from the search query QE11. Then, the information processing device 100E updates the reference value (search radius R') based on the updated search range (search radius R). In FIG. 44, the information processing device 100E updates the search range (search radius R) to a value corresponding to the distance between node N31 and the search query QE11 (corresponding to the first range RG1). Then, the information processing device 100E updates the reference value (search radius R') to a value corresponding to the second range RG2 based on the correspondence to the first range RG1.
また、情報処理装置100Eは、ブロブBL21内のオブジェクトのうち、検索クエリQE11との距離が最も短いノードN31と検索クエリQE11との間の距離D2を、ブロブBL21の対象距離(ブロブ距離)に決定する。そして、情報処理装置100Eは、ブロブBL21のブロブ距離と基準値とを比較し、基準値よりもブロブBL21のブロブ距離が大きい場合、検索処理を終了する。ブロブBL21を対象とする処理の時点では、基準値よりもブロブBL21のブロブ距離が小さいため、情報処理装置100Eは、検索処理を終了しないと判定して、検索処理を続行する。なお、情報処理装置100Eは、対象グループ群(グループ集合S)からブロブBL21を除外(削除)する。 The information processing device 100E also determines the distance D2 between the search query QE11 and node N31, which is the object in blob BL21 that has the shortest distance from the search query QE11, as the target distance (blob distance) of blob BL21. Then, the information processing device 100E compares the blob distance of blob BL21 with a reference value, and terminates the search process if the blob distance of blob BL21 is greater than the reference value. At the time of processing targeting blob BL21, the blob distance of blob BL21 is smaller than the reference value, so the information processing device 100E determines not to terminate the search process and continues the search process. Note that the information processing device 100E excludes (deletes) blob BL21 from the target group group (group set S).
次に、情報処理装置100Eは、ブロブBL21削除後の対象グループ群に含まれるブロブBL29、BL23のうち、最もセントロイドCが検索クエリQE11に近いブロブBL29内のオブジェクトを対象として処理を実行する。例えば、情報処理装置100Eは、ブロブBL29内のノードN3、N11、N114等の各々と、検索クエリQE11との距離の算出を一括して行う。そして、情報処理装置100Eは、ブロブBL29内のノードN3、N11、N114等の各々と、検索クエリQE11との距離に基づいて、検索クエリQE11に対応するオブジェクトの抽出候補(検索結果集合O)を更新する。 Next, the information processing device 100E performs processing on the objects in blob BL29, which has the centroid C closest to the search query QE11, among blobs BL29 and BL23 included in the target group group after deleting blob BL21. For example, the information processing device 100E collectively calculates the distance between each of nodes N3, N11, N114, etc. in blob BL29 and the search query QE11. Then, the information processing device 100E updates the extraction candidates (search result set O) for the object corresponding to the search query QE11 based on the distance between each of nodes N3, N11, N114, etc. in blob BL29 and the search query QE11.
図44では、情報処理装置100Eは、ブロブBL29内のオブジェクトには、オブジェクトの抽出候補(検索結果集合O)に含まれるノードN6、N8、N31よりも検索クエリQE11との間の距離が短いオブジェクトが無いため検索クエリQE11に対応するオブジェクトの抽出候補(検索結果集合O)を更新しない。また、情報処理装置100Eは、オブジェクトの抽出候補(検索結果集合O)の更新が無いため、検索範囲(検索半径R)及び基準値(探索半径R’)も更新しない。 In FIG. 44, the information processing device 100E does not update the extraction candidates (search result set O) of the object corresponding to the search query QE11 because there is no object in the blob BL29 whose distance to the search query QE11 is shorter than that of the nodes N6, N8, and N31 included in the extraction candidates (search result set O) of the object. Furthermore, because there is no update of the extraction candidates (search result set O) of the object, the information processing device 100E does not update the search range (search radius R) and the reference value (search radius R').
また、情報処理装置100Eは、ブロブBL29内のオブジェクトのうち、検索クエリQE11との距離が最も短いノードN11と検索クエリQE11との間の距離D3を、ブロブBL29の対象距離(ブロブ距離)に決定する。そして、情報処理装置100Eは、ブロブBL29のブロブ距離と基準値とを比較し、基準値よりもブロブBL29のブロブ距離が大きい場合、検索処理を終了する。ブロブBL29を対象とする処理の時点では、基準値よりもブロブBL29のブロブ距離が大きいため、情報処理装置100Eは、検索処理を終了すると判定して、検索処理を終了する。 The information processing device 100E also determines the distance D3 between the search query QE11 and node N11, which has the shortest distance from the search query QE11 among the objects in blob BL29, as the target distance (blob distance) of blob BL29. The information processing device 100E then compares the blob distance of blob BL29 with a reference value, and terminates the search process if the blob distance of blob BL29 is greater than the reference value. At the time of processing targeting blob BL29, the blob distance of blob BL29 is greater than the reference value, so the information processing device 100E determines to terminate the search process and terminates the search process.
そして、情報処理装置100Eは、2段階目の処理の終了時点のオブジェクトの抽出候補(検索結果集合O)に含まれるオブジェクトを検索クエリQE11の近傍オブジェクトに決定する(ステップS83)。図44では、情報処理装置100Eは、ブロブBL29を対象とする処理の時点でオブジェクトの抽出候補(検索結果集合O)に含まれるノードN6、N8、N31(に対応するオブジェクト)を検索クエリQE11の近傍オブジェクトに決定する。 Then, the information processing device 100E determines the objects included in the object extraction candidates (search result set O) at the end of the second stage processing as nearby objects of the search query QE11 (step S83). In FIG. 44, the information processing device 100E determines the nodes N6, N8, and N31 (objects corresponding to them) included in the object extraction candidates (search result set O) at the time of processing targeting blob BL29 as nearby objects of the search query QE11.
このように、図44の例では、情報処理装置100Eは、対象グループ群として選択したブロブBL30、BL21、BL29、BL23のうち、ブロブBL23内のオブジェクトについては処理の対象とすることなく、検索処理を終了する。これにより、情報処理装置100Eは、処理時間や処理負荷を低減しつつ、適切な検索結果を提供することができる。したがって、情報処理装置100Eは、グループに応じて適切に検索処理を実行することができる。 In this way, in the example of FIG. 44, the information processing device 100E ends the search process without processing the objects in blob BL23 out of blobs BL30, BL21, BL29, and BL23 selected as the target group. This allows the information processing device 100E to provide appropriate search results while reducing processing time and processing load. Therefore, the information processing device 100E can execute search processing appropriately according to the group.
〔6-2.情報処理装置の構成〕
次に、図45を用いて、第6の実施形態に係る情報処理装置100Eの構成について説明する。図45は、第6の実施形態に係る情報処理装置の構成例を示す図である。図45に示すように、情報処理装置100Eは、通信部110と、記憶部120Bと、制御部130Eとを有する。なお、情報処理装置100Eにおいて、情報処理装置100、情報処理装置100A、情報処理装置100B、情報処理装置100Cまたは情報処理装置100Dと同様の点は適宜説明を省略する。
6-2. Configuration of information processing device
Next, the configuration of an information processing device 100E according to the sixth embodiment will be described with reference to FIG. 45. FIG. 45 is a diagram showing a configuration example of an information processing device according to the sixth embodiment. As shown in FIG. 45, the information processing device 100E has a communication unit 110, a
(記憶部120B)
記憶部120Bは、例えば、RAM、フラッシュメモリ等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。第6の実施形態に係る記憶部120Bは、図45に示すように、オブジェクト情報記憶部121と、グラフ情報記憶部122と、量子化情報記憶部123と、コードブック情報記憶部124と、ブロブ情報記憶部125と、ブロブ連結グラフ情報記憶部126とを有する。
(
The
なお、第6の実施形態に係る記憶部120Bは、上記に限らず、処理に用いる各種情報を記憶する。例えば、第6の実施形態に係る記憶部120Bは、検索範囲、所定の係数、基準値等、終了判定等の処理に用いる各種情報を記憶する。
The
(制御部130E)
制御部130Eは、コントローラ(controller)であり、例えば、CPUやMPUやGPU等によって、情報処理装置100E内部の記憶装置に記憶されている各種プログラム(情報処理プログラムの一例に相当)がRAMを作業領域として実行されることにより実現される。また、制御部130Eは、コントローラであり、例えば、ASICやFPGA等の集積回路により実現される。
(
The
図45に示すように、制御部130Eは、取得部131と、生成部132Eと、検索処理部133Eと、提供部134とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部130Eの内部構成は、図45に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
As shown in FIG. 45, the
第6の実施形態に係る取得部131は、データ検索の対象となる複数のオブジェクトを示すオブジェクト情報を取得する。取得部131は、複数のオブジェクトを検索対象とするインデックスを示すインデックス情報を取得する。
The
第6の実施形態に係る取得部131は、第1の実施形態~第5の実施形態に係る取得部131と同様に各種情報を取得する。例えば、取得部131は、データ検索の対象となる複数のオブジェクトを示すオブジェクト情報を取得する。例えば、取得部131は、複数のオブジェクトを検索対象とするインデックスを示すインデックス情報を取得する。
The
取得部131は、データ検索の対象となる複数のオブジェクトを分類する複数のグループを取得する。取得部131は、複数のオブジェクトに対する検索クエリを取得する。取得部131は、複数のグループの各々の代表オブジェクトがエッジにより連結されたグラフを取得する。取得部131は、検索処理における一括処理の対象を示す複数のグループを取得する。
The
(生成部132E)
生成部132Eは、生成部132、生成部132A、生成部132Bまたは生成部132Cと同様に各種情報を生成する。
(Generation unit 132E)
The generating unit 132E generates various types of information in the same manner as the generating
例えば、生成部132Eは、取得部131により取得されたオブジェクト情報に基づいて、複数のオブジェクトを分類する複数のグループを示すグループ情報を生成してもよい。生成部132Eは、複数のオブジェクトを対象とする検索処理において一括処理を行うために用いられる複数のグループを示すグループ情報を生成する。生成部132Eは、複数のオブジェクトに関する距離の算出を一括して行うために用いられる複数のグループを示すグループ情報を生成する。生成部132Eは、検索処理で用いられる検索クエリとオブジェクトとの距離の算出を並列処理するために用いられる複数のグループを示すグループ情報を生成する。
For example, the generation unit 132E may generate group information indicating multiple groups into which multiple objects are classified, based on the object information acquired by the
例えば、生成部132Eは、複数のオブジェクトを対象とする量子化に関する処理を行うために用いられる複数のグループを示すグループ情報を生成する。生成部132Eは、量子化の単位となる複数のグループを示すグループ情報を生成する。生成部132Eは、複数のオブジェクトの各々に対応するベクトルを量子化するために用いられる複数のグループを示すグループ情報を生成する。なお、情報処理装置100Eは外部装置等からグループ情報を取得する場合、生成部132Eを有しなくてもよい。 For example, the generation unit 132E generates group information indicating multiple groups used to perform processing related to quantization of multiple objects. The generation unit 132E generates group information indicating multiple groups that are units of quantization. The generation unit 132E generates group information indicating multiple groups used to quantize vectors corresponding to each of multiple objects. Note that when the information processing device 100E acquires group information from an external device or the like, it does not need to have the generation unit 132E.
(検索処理部133E)
検索処理部133Eは、上述した1段目の処理及び、処理(7-1)~(7-10)に示す2段階目の処理を含む検索処理を実行する。例えば、検索処理部133Eは、検索処理部133、検索処理部133A、検索処理部133B、検索処理部133C、または検索処理部133Dと同様に検索処理に関する各種処理を行う。検索処理部133Eは、記憶部120Bに記憶された情報を用いた処理を行う。検索処理部133Eは、生成部132Eにより生成された情報を用いた処理を行う。
(
The
例えば、検索処理部133Eは、複数のグループから選択された対象グループ群から、対象グループ群の各々の代表オブジェクトと検索クエリとの間の距離が短い方から順に一のグループを選択する。検索処理部133Eは、選択した一のグループに属するオブジェクトを対象オブジェクトとして、検索クエリと対象オブジェクトの各々との距離に基づいて、検索クエリに対応する近傍のオブジェクトを抽出する検索処理を実行する。検索処理部133Eは、検索処理における検索範囲を示す値に基づく基準値と、一のグループに対応する距離である対象距離との比較結果が所定の条件を満たす場合、検索処理を終了する。
For example, the
検索処理部133Eは、複数のグループのうち、所定数のグループを対象グループ群として選択する。検索処理部133Eは、複数のグループのうち、代表オブジェクトが検索クエリの近傍にあるグループを対象グループ群として選択する。検索処理部133Eは、複数のグループのうち、複数のグループの各々のセントロイドである代表オブジェクトが検索クエリの近傍にあるグループを対象グループ群として選択する。
The
検索処理部133Eは、グラフを用いて対象グループ群を選択する。検索処理部133Eは、基準値よりも対象距離が大きい場合、検索処理を終了する。検索処理部133Eは、一のグループに属するオブジェクトに基づいて対象距離に決定する。検索処理部133Eは、一のグループに属するオブジェクトのうち、検索クエリとの間の距離が最小である一のオブジェクトの距離を対象距離に決定する。
The
検索処理部133Eは、検索範囲に所定の係数を乗算することにより、基準値を算出する。検索処理部133Eは、検索範囲に0より大きい所定の係数を乗算することにより、基準値を算出する。検索処理部133Eは、検索処理中に近傍のオブジェクトの抽出候補に基づいて、検索範囲を更新する。検索処理部133Eは、無限大が初期値として設定された検索範囲を更新する。検索処理部133Eは、抽出候補のうち検索クエリとの距離が最大の距離に、検索範囲を更新する。
The
検索処理部133Eは、検索処理において一のグループに属するオブジェクト群を対象に一括処理を実行する。検索処理部133Eは、一のグループに属するオブジェクト群を対象に距離の算出を一括して行う。検索処理部133Eは、一のグループに属するオブジェクト群の各々と、検索クエリとの距離の算出の並列処理を実行する。
The
〔6-3.情報処理のフロー〕
次に、図46を用いて、第6の実施形態に係る情報処理の手順について説明する。図46は、第6の実施形態に係る情報処理の一例を示すフローチャートである。
6-3. Information processing flow
Next, a procedure of information processing according to the sixth embodiment will be described with reference to Fig. 46. Fig. 46 is a flowchart showing an example of information processing according to the sixth embodiment.
まず、図46について説明する。例えば、図46は、グループの生成処理の一例を示すフローチャートである。図46に示すように、情報処理装置100Eは、データ検索の対象となる複数のオブジェクトを分類する複数のグループと、複数のオブジェクトに対する検索クエリとを取得する(ステップS1001)。例えば、情報処理装置100Eは、ブロブ情報記憶部125から複数のオブジェクトを分類する複数のグループを示すグループ情報を取得する。
First, FIG. 46 will be described. For example, FIG. 46 is a flowchart showing an example of a group generation process. As shown in FIG. 46, the information processing device 100E acquires a plurality of groups into which a plurality of objects to be the subject of a data search are classified, and a search query for the plurality of objects (step S1001). For example, the information processing device 100E acquires group information indicating a plurality of groups into which a plurality of objects are classified, from the blob
情報処理装置100Eは、複数のグループから選択された対象グループ群から、対象グループ群の各々の代表オブジェクトと検索クエリとの間の距離が短い方から順に一のグループを選択し、選択した一のグループに属するオブジェクトを対象オブジェクトとして、検索クエリと対象オブジェクトの各々との距離に基づいて、検索クエリに対応する近傍のオブジェクトを抽出する検索処理を実行し、検索処理における検索範囲を示す値に基づく基準値と、一のグループに対応する距離である対象距離との比較結果が所定の条件を満たす場合、検索処理を終了する(ステップS1002)。例えば、情報処理装置100Eは、上述した1段目の処理及び、処理(7-1)~(7-10)に示す2段階目の処理を含む検索処理を実行する。 The information processing device 100E selects one of the target groups selected from a plurality of groups in order of the distance between the representative object of each of the target groups and the search query, and executes a search process in which, with the objects belonging to the selected group as target objects, nearby objects corresponding to the search query are extracted based on the distance between the search query and each of the target objects. If a comparison result between a reference value based on a value indicating a search range in the search process and a target distance, which is a distance corresponding to the one group, satisfies a predetermined condition, the search process is terminated (step S1002). For example, the information processing device 100E executes a search process including the first stage process described above and the second stage process shown in processes (7-1) to (7-10).
〔7.第7の実施形態〕
上述した第6の実施形態では、第1グループ(ブロブ)と第2グループ(クラスタ)とが一致している場合の検索処理の例を示したが、第1グループ(ブロブ)と第2グループ(クラスタ)とが一致していない場合でも同様に検索処理を行ってもよい。例えば、第7の実施形態に係る情報処理装置100Fは、各第1グループ(ブロブ)内のオブジェクトが1以上の第2グループ(クラスタ)に分類されたオブジェクトを対象として検索処理を実行する。すなわち、第7の実施形態に係る情報処理装置100Fは、第2グループ(クラスタ)がさらに第1グループ(ブロブ)に分類された階層的なクラスタリング(階層クラスタリング)が行われたオブジェクトを対象として検索処理を実行する。
7. Seventh embodiment
In the sixth embodiment described above, an example of the search process in the case where the first group (blob) and the second group (cluster) are the same is shown, but the search process may be performed in the same manner even if the first group (blob) and the second group (cluster) are not the same. For example, the
この点について、以下、第7の実施形態として説明する。第7の実施形態においては、情報処理システム1は、情報処理装置100、情報処理装置100A、情報処理装置100B、情報処理装置100C、情報処理装置100Dまたは情報処理装置100Eに代えて、情報処理装置100Fを有する。なお、第1の実施形態、第2の実施形態、第3の実施形態、第4の実施形態、第5の実施形態及び第6の実施形態等において上述した内容と同様の点については適宜説明を省略する。
This point will be described below as the seventh embodiment. In the seventh embodiment, the
〔7-1.情報処理〕
以下、情報処理装置100Fが実行する検索処理等の情報処理の一例について説明する。なお、情報処理装置100Fが実行する検索処理は、第1グループ(ブロブ)内のオブジェクトを第2グループ(クラスタ)の分類を基に処理する点以外は情報処理装置100Eと同様であり、情報処理装置100Eと同様の点については適宜説明を省略する。例えば、第7の実施形態で第6の実施形態と同様の点については、第6の実施形態でのグループを第1グループと読み替えてもよいし、代表オブジェクトを第1代表オブジェクトと読み替えてもよいし、対象距離を第1対象距離と読み替えてもよい。
[7-1. Information Processing]
An example of information processing such as a search process executed by the
情報処理装置100Fは、データ検索の対象となる複数のオブジェクトを分類する複数の第1グループ(ブロブ)、及び複数の第1グループの各々に属するオブジェクト群ごとに分類する1以上の第2グループ(クラスタ)とを示すグループ情報を用いて、検索クエリに対応する近傍のオブジェクトを抽出する検索処理を実行する。例えば、情報処理装置100Fは、複数の第1グループから選択された第1グループ(「対象第1グループ群」ともいう)から、対象第1グループ群の各々の代表オブジェクト(「第1代表オブジェクト」ともいう)と検索クエリとの間の距離が短い方から順に一の第1グループを選択する処理(「1段目の処理」ともいう)を実行する。
The
そして、情報処理装置100Fは、1段目の処理で選択した対象第1グループ群を対象として、以下の処理(8-1)~(8-15)に示す処理(「2段階目の処理」ともいう)を実行する。このように、情報処理装置100Fは、1段目の処理及び2段目の処理を実行する、すなわち二段階検索処理を実行することにより、検索クエリに対応する近傍のオブジェクトを抽出する。
Then, the
例えば、2段目の処理において、情報処理装置100Fは、選択した一の第1グループに属する第2グループのうち、各第2グループの代表オブジェクト(「第2代表オブジェクト」ともいう)と検索クエリとの間の距離が短い方から順に一の第2グループを選択し、選択した一の第2グループに属するオブジェクトを対象オブジェクトとして検索クエリとの間の距離を算出する算出処理を実行する。情報処理装置100Fは、算出処理により算出した対象オブジェクトと検索クエリとの各々との距離に基づいて、検索クエリに対応する近傍のオブジェクトを抽出する検索処理を実行する。以下、1段階目の処理及び2段階目の処理の概要について説明した後、図を用いて処理の一例について説明する。
For example, in the second stage processing, the
〔7-1-1.1段階目の処理〕
まず、1段階目の処理の概要について説明する。情報処理装置100Fは、情報処理装置100Eと同様の処理により1段目の処理を実行する。例えば、情報処理装置100Fは、複数の第1グループの各々の第1代表オブジェクトをエッジで接続したグラフを用いて、対象第1グループ群を選択する。例えば、情報処理装置100Fは、複数の第1グループの各々のセントロイドを第1代表オブジェクトとしてエッジで連結したグループ連結グラフ(ブロブグラフ)を用いて、対象第1グループ群を選択する。なお、1段階目の処理については、第6の実施形態と同様であるため、1段階目の処理の詳細な説明は省略する。
[7-1-1. First stage processing]
First, an overview of the first stage processing will be described. The
〔7-1-2.2段階目の処理〕
次に、2段階目の処理の概要について説明する。情報処理装置100Fは、2段目の処理において、複数の第1グループ(ブロブ)に含まれる各第2グループ(クラスタ)内のオブジェクトとクエリとの距離を算出(計算)し、クエリの近傍のオブジェクトを検索する。なお、オブジェクトとクエリとの距離は、オブジェクトとクエリとの距離を示すものであれば、第6の実施形態と同様に任意の値が採用可能である。
[7-1-2. Second stage processing]
Next, an overview of the second stage processing will be described. In the second stage processing, the
例えば、情報処理装置100Fは、2段目の処理において、以下のような処理(8-1)~(8-15)を行う。
For example, in the second stage of processing, the
(8-1):対象第1グループ群の集合をグループ集合Sとし、検索半径Rを無限に設定
(8-2):各グループの代表オブジェクトとクエリとの距離でグループ集合Sをソートする
(8-3):グループ集合Sが空集合ならば処理を終了
(8-4):グループ集合Sから最も距離の短いグループをブロブBとして、グループ集合Sから取得し、ブロブBをグループ集合Sから削除
(8-5):ブロブBに含まれる複数のクラスタのセントロイドとクエリとの距離を算出し、その距離の短い順でソートした集合をクラスタ集合CSに設定
(8-6):ブロブ距離Dを無限に設定
(8-7):クラスタ集合CSが空なら処理(8-3)に戻る
(8-8):クラスタ集合CSから最も距離の短いクラスタをクラスタAとして、クラスタ集合CSから取得し、クラスタAをクラスタ集合CSから削除
(8-9):クラスタA内のすべてのオブジェクトとクエリとの間の距離を算出し、検索結果集合Oに追加
(8-10):検索結果集合Oを距離でソートし、検索結果数Nを超えるオブジェクトを検索結果集合Oから削除
(8-11):検索結果集合O内のオブジェクト数が検索結果数Nに達した場合には、検索結果集合O内の最大の距離を検索半径Rに設定
(8-12):クラスタA内のオブジェクトの近似距離の最短距離Dcがブロブ距離Dより小さければ、ブロブ距離Dを最短距離Dcに更新
(8-13):ブロブ距離Dが探索半径R’=R×eを超えたら処理を終了
(8-14):最短距離Dcが探索半径R’=R×eより大きければ処理(8-3)に戻る
(8-15):処理(8-7)に戻る
(8-1): Set the set of the first target groups to group set S, and set the search radius R to infinity. (8-2): Sort group set S by the distance between the representative object of each group and the query. (8-3): If group set S is an empty set, end the process. (8-4): Obtain the group with the shortest distance from group set S as blob B from group set S, and delete blob B from group set S. (8-5): Calculate the distance between the centroid of multiple clusters contained in blob B and the query, and set the set sorted in order of shortest distance to cluster set CS. (8-6): Set blob distance D to infinity. (8-7): If cluster set CS is empty, return to process (8-3). (8-8): Obtain the cluster with the shortest distance from cluster set CS as cluster A from cluster set CS. and delete cluster A from cluster set CS (8-9): calculate the distance between all objects in cluster A and the query, and add them to search result set O (8-10): sort search result set O by distance, and delete objects exceeding the number of search results N from search result set O (8-11): when the number of objects in search result set O reaches the number of search results N, set the maximum distance in search result set O to search radius R (8-12): if the shortest distance Dc of the approximation distances of objects in cluster A is smaller than the blob distance D, update the blob distance D to the shortest distance Dc (8-13): if the blob distance D exceeds the search radius R' = R x e, end processing (8-14): if the shortest distance Dc is larger than the search radius R' = R x e, return to processing (8-3) (8-15): return to processing (8-7)
例えば、処理(8-13)及び処理(8-14)で基準値として用いる探索半径R’は、処理(7-9)での探索半径R’と同様であるため詳細な説明は省略するが、例えば、係数eは、0より大きい任意の値が設定可能であり、0.2、1.2等といった値が設定される。 For example, the search radius R' used as the reference value in processes (8-13) and (8-14) is the same as the search radius R' in process (7-9), so a detailed explanation is omitted, but for example, the coefficient e can be set to any value greater than 0, such as 0.2, 1.2, etc.
上述したように、情報処理装置100Fは、2段目の処理において、対象第1グループ群の各々の代表オブジェクトと検索クエリとの間の距離が短い方から順に一の第1グループを選択する。そして、情報処理装置100Fは、選択した一の第1グループに属する第2グループのうち、第2代表オブジェクトと検索クエリとの間の距離が短い方から順に一の第2グループを選択し、選択した一の第2グループに属するオブジェクトを対象オブジェクトとして検索クエリとの間の距離を算出する算出処理を実行する。
As described above, in the second stage of processing, the
そして、情報処理装置100Fは、算出処理により算出した対象オブジェクトと検索クエリとの各々との距離に基づいて、検索クエリに対応する近傍のオブジェクトを抽出する検索処理を実行する。情報処理装置100Fは、検索処理における検索範囲を示す値に基づく基準値と、一の第1グループに対応する距離である第1対象距離との比較結果が所定の条件を満たす場合、検索処理を終了する。また、情報処理装置100Fは、検索処理における検索範囲を示す値に基づく基準値と、一の第2グループに対応する距離である第2対象距離との比較結果が所定の条件を満たす場合、その一の第2グループが属する第1グループを対象とする処理を終了する。
Then, the
このように、情報処理装置100Fは、2段目の処理では対象第1グループ群の全てを対象として探索するのではなく、距離を導入することで2段目の処理を途中で終了することを可能にする。これにより、情報処理装置100Fは、それ以降の2段目の処理が不要と想定される場合は、2段目の処理を途中で終了することで、不要な処理を行うことを抑制することができる。
In this way, the
また、例えば、従来の二段階検索処理においては、2段階目では取得した全てのグループのすべての量子化クラスタのオブジェクトの距離を算出することとなる。従来の二段階検索処理のようにすべてのブジェクトの距離を算出する場合、検索処理の終盤においては距離の算出が不要なオブジェクトについても距離を算出することになり処理時間が増加するという課題があった。一方で、情報処理装置100Fは、2段目の処理で処理の対象としている第1グループ内の第2グループの全てを対象として探索するのではなく、距離を導入することで、その第1グループを対象とする処理を途中で終了することを可能にする。これにより、情報処理装置100Fは、ある第1グループを対象とする処理において、それ以降のその第1グループを対象とする処理が不要と想定される場合は、その第1グループを対象とする処理を途中で終了することで、不要な処理を行うことを抑制することができる。したがって、情報処理装置100Fは、グループに応じて適切に検索処理を実行することができる。
For example, in a conventional two-stage search process, the distances of all objects in all quantized clusters of all groups obtained are calculated in the second stage. When calculating the distances of all objects as in the conventional two-stage search process, there is a problem that the distances are calculated for objects for which distance calculation is not necessary at the end of the search process, which increases the processing time. On the other hand, the
なお、上述した処理(8-1)~(8-15)は一例に過ぎず、情報処理装置100Fは、任意の処理を実行してもよい。情報処理装置100Fは、検索結果数Nとは別に探索数Mを導入し、処理を実行してもよい。この場合、情報処理装置100Fは、探索数MをN×eで算出する。例えば、係数eは、1より大きい値が用いられる。情報処理装置100Fは、検索結果集合Oと同様に探索集合P(例えば探索数Mに限定されたリスト)の情報を収集する。この場合、情報処理装置100Fは、処理(8-9)において、検索結果集合Oと同様に探索集合Pにもオブジェクトを追加する。そして、情報処理装置100Fは、処理(8-10)において、検索結果集合Oと同様に、探索集合Pを距離でソートし、探索数Mを超えるオブジェクトを探索集合Pから削除する。また、情報処理装置100Fは、処理(8-13)及び処理(8-14)において用いる探索半径R’に、探索集合P内の最大の距離を設定する。なお、情報処理装置100Fは、探索数Mを導入することなく、検索結果数Nをe倍した値を用いて処理(8-1)~(8-15)を実行してもよい。例えば、係数eは、1より大きい値が用いられる。この場合、検索結果集合Oには検索結果数Nよりも多い数(N×e個)のオブジェクトが含まれる。そのため、情報処理装置100Fは、処理(8-13)で処理を終了した際に、検索結果集合Oを距離でソートし、検索結果数Nを超えるオブジェクトを検索結果集合Oから削除することにより、検索結果数N個のオブジェクトを取得する。
Note that the above-mentioned processes (8-1) to (8-15) are merely examples, and the
〔7-1-3.処理例〕
まず、図47を用いて、第7の実施形態に係る情報処理の概要を説明する。図47は、第7の実施形態に係る情報処理の一例を示す図である。情報処理装置100Fによる情報処理の説明に先立って、図47の図示態様について簡単に説明する。図47では、第1グループ(ブロブ)の区別及び各第1グループ内の第2グループ(クラスタ)の区別を実線で示す。なお、図47では、1段目の処理に対応するブロブ間を連結するグループ連結グラフ(ブロブグラフ)についての図示は省略する。また、図47では、6個のブロブBLを示すが、主にブロブBL33を参照して処理を説明するため、ブロブBL33以外のブロブBL31、BL32、BL34~BL36の5つのブロブBL内のクラスタの分割についての図示は省略する。
[7-1-3. Processing example]
First, an overview of the information processing according to the seventh embodiment will be described with reference to FIG. 47. FIG. 47 is a diagram showing an example of the information processing according to the seventh embodiment. Prior to the description of the information processing by the
図47では、ブロブBL33には、クラスタCL31~CL40の10個のクラスタCLが含まれる。すなわち、第1グループであるブロブBL33内のオブジェクトは、クラスタCL31~CL40の10個の第2グループのいずれかに分類される。図47は、セントロイドCN31~CN40は、各クラスタCL31~CL40の各々のセントロイドを示す。なお、各クラスタCLのセントロイドを区別せずに説明する場合、「セントロイドCN」と記載する。なお、図47に示すブロブBL、クラスタCL及びノードN等は一部であり、空間情報SP81には、図示したもの以外にも多数のブロブBL、クラスタCL及びノードNが含まれる。 In FIG. 47, blob BL33 includes ten clusters CL31 to CL40. That is, the objects in blob BL33, which is the first group, are classified into one of the ten second groups, clusters CL31 to CL40. In FIG. 47, centroids CN31 to CN40 indicate the centroids of each of the clusters CL31 to CL40. When describing the centroids of each cluster CL without distinguishing between them, they are referred to as "centroid CN." Note that the blobs BL, clusters CL, and nodes N shown in FIG. 47 are only a partial list, and the spatial information SP81 includes many more blobs BL, clusters CL, and nodes N in addition to those shown in the figure.
以下、図47に示す空間情報SP81に対応する情報を取得した場合を一例として処理例を説明する。図47では、情報処理装置100Fが検索クエリQE21を用いて検索処理を実行する。また、以下に示す例では、近傍オブジェクト抽出数が「3」、すなわち検索クエリQE21の近傍オブジェクトとして抽出するオブジェクトの数が3個である場合を一例として説明する。なお、図44で説明した内容と同様の点については適宜説明を省略する。
Below, a processing example will be described using as an example a case where information corresponding to spatial information SP81 shown in FIG. 47 has been acquired. In FIG. 47, the
まず、情報処理装置100Fは、1段階目の処理を実行する。1段階目の処理においては、情報処理装置100Fは、上述したように、対象第1グループ群を選択する。図47では、指定数が6に設定されているものとする。例えば、情報処理装置100Fは、グループ連結グラフを用いて、ブロブBL31~BL36の6個のブロブBLを対象第1グループ群として選択する。
First, the
そして、情報処理装置100Fは、2段階目の処理を実行する。2段階目の処理においては、情報処理装置100Fは、上述したように、対象第1グループ群から最も距離の短い方から順に一の第1グループを選択する。図47では、対象第1グループ群に含まれる6個のブロブBLは、ブロブBL33、BL31、BL36、BL32、BL34、BL35の順で第1代表オブジェクトであるセントロイドCが検索クエリQE21に距離が近いものとする。
Then, the
そのため、情報処理装置100Fは、ブロブBL33、BL31、BL36、BL32、BL34、BL35の順で処理対象とするブロブBLを選択し、処理を実行する。2段階目の処理の開始時点では、オブジェクトの抽出候補である検索結果数Nが0であり、近傍オブジェクト抽出数「3」より小さいので検索範囲(検索半径R)が無限に設定され、例えば基準値(探索半径R’)も無限となる。
Therefore, the
図47の空間情報SP81中に一点鎖線の円で示す第1範囲RG11が検索範囲(検索半径R)に対応し、二点鎖線の円で示す第2範囲RG12が基準値(探索半径R’)に対応する。なお、図47の空間情報SP81では、終了条件を満たす場合(一状態)の第1範囲RG11及び第2範囲RG12を示しており、第1範囲RG11及び第2範囲RG12はオブジェクトの抽出候補に応じて変動する。また、図47の空間情報SP81中での第1範囲RG11と検索クエリQE21との間の双方向矢印は検索半径Rを示し、第2範囲RG12と検索クエリQE21との間の双方向矢印は探索半径R’を示す。また、図47の空間情報SP81中での検索クエリQE21とノードNとの間の双方向矢印は、検索クエリQE21とそのノードNとの間の距離を示す。 The first range RG11 shown by the dashed-dotted circle in the spatial information SP81 in FIG. 47 corresponds to the search range (search radius R), and the second range RG12 shown by the dashed-dotted circle corresponds to the reference value (search radius R'). Note that the spatial information SP81 in FIG. 47 shows the first range RG11 and the second range RG12 when the end condition is satisfied (one state), and the first range RG11 and the second range RG12 vary depending on the object extraction candidate. Also, the bidirectional arrow between the first range RG11 and the search query QE21 in the spatial information SP81 in FIG. 47 indicates the search radius R, and the bidirectional arrow between the second range RG12 and the search query QE21 indicates the search radius R'. Also, the bidirectional arrow between the search query QE21 and the node N in the spatial information SP81 in FIG. 47 indicates the distance between the search query QE21 and the node N.
まず、情報処理装置100Fは、ブロブBL33、BL31、BL36、BL32、BL34、BL35のうち、最もセントロイドCが検索クエリQE21に近いブロブBL33を対象ブロブとして選択し、ブロブBL33内のクラスタを対象として処理を実行する。情報処理装置100Fは、選択した対象ブロブであるブロブBL33についての処理開始する際にブロブBL33の第1対象距離(ブロブ距離)を無限に設定する。なお、情報処理装置100Fは、対象第1グループ群(グループ集合S)からブロブBL33を除外(削除)する。
First, the
情報処理装置100Fは、上述したように、対象ブロブから最も距離の短い方から順に一の第2グループを選択する。図47では、対象ブロブであるブロブBL33内の10個のクラスタCLは、クラスタCL39、CL38、CL40…の順で第2代表オブジェクトであるセントロイドCNが検索クエリQE21に距離が近いものとする。情報処理装置100Fは、ブロブBL33内の10個のクラスタCLを処理対象クラスタ群として以下の処理を実行する。
As described above, the
まず、情報処理装置100Fは、ブロブBL33内の10個のクラスタCLのうち、最もセントロイドCNが検索クエリQE21に近いクラスタCL39内のオブジェクトを対象として処理を実行する。例えば、情報処理装置100Fは、クラスタCL39内のノードN2、N5、N8、N27、N77等の各々と、検索クエリQE21との距離の算出を一括して行う。そして、情報処理装置100Fは、クラスタCL39内のノードN2、N5、N8、N27、N77等の各々と、検索クエリQE21との距離に基づいて、検索クエリQE21に対応するオブジェクトの抽出候補(検索結果集合O)を抽出(更新)する。
First, the
図47では、情報処理装置100Fは、クラスタCL39内のノードN2、N5、N8、N27、N77等の各々と、検索クエリQE21との間の距離が近い方から順に、ノードN8、N27、N2をオブジェクトの抽出候補として抽出する。この場合、検索結果数Nが近傍オブジェクト抽出数「3」に達したため、情報処理装置100Fは、オブジェクトの抽出候補のうち検索クエリQE21との距離が最も遠いノードN2と検索クエリQE21との間の距離に、検索範囲(検索半径R)を更新する。そして、情報処理装置100Fは、更新後の検索範囲(検索半径R)を基に、基準値(探索半径R’)を更新する。図47では、情報処理装置100Fは、検索範囲(検索半径R)をノードN2と検索クエリQE21との間の距離に対応する値(第1範囲RG11に対応)に更新する。そして、情報処理装置100Fは、第1範囲RG11に対応する検索範囲(検索半径R)を基に、基準値(探索半径R’)を第2範囲RG12に対応する値に更新する。
In FIG. 47, the
また、情報処理装置100Fは、クラスタCL39内のオブジェクトのうち、検索クエリQE21との距離が最も短いノードN8と検索クエリQE21との間の距離D11を、クラスタCL39の第2対象距離(最短距離)に決定する。そして、情報処理装置100Fは、クラスタCL39の第2対象距離がブロブBL33の第1対象距離より小さい場合、ブロブBL33の第1対象距離(ブロブ距離)の値をクラスタCL39の第2対象距離の値に更新する。図47では、その時点のブロブBL33の第1対象距離が無限であり、クラスタCL39の第2対象距離である距離D11の方が小さいため、ブロブBL33の第1対象距離(ブロブ距離)をクラスタCL39の第2対象距離である距離D11に更新する。
The
そして、情報処理装置100Fは、ブロブBL33のブロブ距離と基準値とを比較し、基準値よりもブロブBL33のブロブ距離が大きい場合、検索処理を終了する。ブロブBL33を対象とする処理の時点では、基準値よりもブロブBL33のブロブ距離が小さいため、情報処理装置100Fは、検索処理を終了しないと判定して、検索処理を続行する。
Then, the
そして、情報処理装置100Fは、クラスタCL39の第2対象距離と基準値とを比較し、基準値よりもクラスタCL39の第2対象距離が大きい場合、ブロブBL33を対象とした処理を終了する。クラスタCL39を対象とする処理の時点では、基準値よりもクラスタCL39の第2対象距離が小さいため、情報処理装置100Fは、ブロブBL33を対象とした処理を終了しないと判定して、ブロブBL33を対象とした処理を続行する。なお、情報処理装置100Fは、処理対象クラスタ群(クラスタ集合CS)からクラスタCL39を除外(削除)する。また、クラスタCLの第2対象距離(最短距離)は、そのクラスタCLに含まれるオブジェクトのうち検索クエリQE21との距離が最も短いオブジェクトの距離に限らず任意の値が設定されてもよい。
Then, the
次に、情報処理装置100Fは、クラスタCL39削除後の処理対象クラスタ群に含まれるクラスタCL38、CL40…のうち、最もセントロイドCLが検索クエリQE21に近いクラスタ内のオブジェクトを対象として処理を実行する。例えば、情報処理装置100Fは、クラスタCL38内のノードN96、N119、N418、N615等の各々と、検索クエリQE21との距離の算出を一括して行う。そして、情報処理装置100Fは、クラスタCL38内のノードN96、N119、N418、N615等の各々と、検索クエリQE21との距離に基づいて、検索クエリQE21に対応するオブジェクトの抽出候補(検索結果集合O)を更新する。
Next, the
図47では、情報処理装置100Fは、クラスタCL38内のオブジェクトに、ノードN8、N27、N2よりも検索クエリQE21との間の距離が短いオブジェクトが無いため検索クエリQE21に対応するオブジェクトの抽出候補(検索結果集合O)を更新しない。また、情報処理装置100Fは、オブジェクトの抽出候補(検索結果集合O)の更新が無いため、検索範囲(検索半径R)及び基準値(探索半径R’)も更新しない。
In FIG. 47, the
また、情報処理装置100Fは、クラスタCL38内のオブジェクトのうち、検索クエリQE21との距離が最も短いノードN418と検索クエリQE21との間の距離DC1を、クラスタCL38の第2対象距離(最短距離)に決定する。そして、情報処理装置100Fは、クラスタCL38の第2対象距離がブロブBL33の第1対象距離より小さい場合、ブロブBL33の第1対象距離(ブロブ距離)の値をクラスタCL38の第2対象距離の値に更新する。図47では、その時点のブロブBL33の第1対象距離が距離D11無限であり、クラスタCL38の第2対象距離である距離DC1の方が大きいため、ブロブBL33の第1対象距離(ブロブ距離)を更新しない。
Furthermore, the
そして、情報処理装置100Fは、ブロブBL33のブロブ距離と基準値とを比較し、基準値よりもブロブBL33のブロブ距離が大きい場合、検索処理を終了する。ブロブBL33を対象とする処理の時点では、基準値よりもブロブBL33のブロブ距離が小さいため、情報処理装置100Fは、検索処理を終了しないと判定して、検索処理を続行する。
Then, the
このように、図47の例では、情報処理装置100Fは、ブロブBL33を対象とした処理において、ブロブBL33内の10個のクラスタCLのうち、クラスタCL39及びCL38以外の8個のクラスタCL内のオブジェクトについては処理の対象とすることなく、検索処理を終了する。これにより、情報処理装置100Fは、処理時間や処理負荷を低減しつつ、適切な検索結果を提供することができる。したがって、情報処理装置100Fは、グループに応じて適切に検索処理を実行することができる。
In this way, in the example of FIG. 47, in processing blob BL33, the
そして、情報処理装置100Fは、クラスタCL38の第2対象距離と基準値とを比較し、基準値よりもクラスタCL38の第2対象距離が大きい場合、ブロブBL33を対象とした処理を終了する。クラスタCL38を対象とする処理の時点では、基準値よりもクラスタCL38の第2対象距離が大きいため、情報処理装置100Fは、ブロブBL33を対象とした処理検索処理を終了すると判定して、ブロブBL33を対象とした処理を続行する。
Then, the
この場合、情報処理装置100Fは、ブロブBL33削除後の対象第1グループ群に含まれるブロブBL31、BL36、BL32、BL34、BL35のうち、最もセントロイドCが検索クエリQE21に近いブロブBL31を対象として処理を続行する。そして、情報処理装置100Fは、基準値よりも処理の対象としているブロブBLのブロブ距離が大きくなった場合、検索処理を終了すると判定して、検索処理を終了する。例えば、情報処理装置100Fは、基準値よりもブロブBL31のブロブ距離が大きくなった場合、検索処理を終了すると判定して、検索処理を終了する。
In this case, the
そして、情報処理装置100Fは、2段階目の処理の終了時点のオブジェクトの抽出候補(検索結果集合O)に含まれるオブジェクトを検索クエリQE21の近傍オブジェクトに決定する。なお、図47では、情報処理装置100Fは、処理終了時点でオブジェクトの抽出候補(検索結果集合O)に含まれるノードがノードN8、N27である場合、ノードN8、N27(に対応するオブジェクト)を検索クエリQE21の近傍オブジェクトに決定する。
Then, the
〔7-2.情報処理装置の構成〕
次に、図48を用いて、第7の実施形態に係る情報処理装置100Fの構成について説明する。図48は、第7の実施形態に係る情報処理装置の構成例を示す図である。図48に示すように、情報処理装置100Fは、通信部110と、記憶部120Cと、制御部130Fとを有する。なお、情報処理装置100Fにおいて、情報処理装置100、情報処理装置100A、情報処理装置100B、情報処理装置100C、情報処理装置100Dまたは情報処理装置100Eと同様の点は適宜説明を省略する。
7-2. Configuration of information processing device
Next, the configuration of an
(記憶部120C)
記憶部120Cは、例えば、RAM、フラッシュメモリ等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。第7の実施形態に係る記憶部120Cは、図48に示すように、オブジェクト情報記憶部121と、グラフ情報記憶部122と、量子化情報記憶部123と、コードブック情報記憶部124と、ブロブ情報記憶部125と、ブロブ連結グラフ情報記憶部126と、クラスタ情報記憶部127とを有する。
(Memory unit 120C)
The storage unit 120C is realized by, for example, a semiconductor memory element such as a RAM or a flash memory, or a storage device such as a hard disk or an optical disk. As shown in Fig. 48, the storage unit 120C according to the seventh embodiment has an object
なお、第7の実施形態に係る記憶部120Cは、上記に限らず、処理に用いる各種情報を記憶する。例えば、第7の実施形態に係る記憶部120Cは、検索範囲、所定の係数、基準値等、終了判定等の処理に用いる各種情報を記憶する。 The storage unit 120C according to the seventh embodiment stores various information used in processing, including but not limited to the above. For example, the storage unit 120C according to the seventh embodiment stores various information used in processing, such as a search range, a predetermined coefficient, a reference value, and an end determination.
(制御部130F)
制御部130Fは、コントローラ(controller)であり、例えば、CPUやMPUやGPU等によって、情報処理装置100F内部の記憶装置に記憶されている各種プログラム(情報処理プログラムの一例に相当)がRAMを作業領域として実行されることにより実現される。また、制御部130Fは、コントローラであり、例えば、ASICやFPGA等の集積回路により実現される。
(Control unit 130F)
The control unit 130F is a controller, and is realized, for example, by a CPU, an MPU, a GPU, etc., executing various programs (corresponding to an example of an information processing program) stored in a storage device inside the
図48に示すように、制御部130Fは、取得部131と、生成部132Fと、検索処理部133Fと、提供部134とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部130Fの内部構成は、図48に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
As shown in FIG. 48, the control unit 130F has an
第7の実施形態に係る取得部131は、データ検索の対象となる複数のオブジェクトを示すオブジェクト情報を取得する。取得部131は、複数のオブジェクトを検索対象とするインデックスを示すインデックス情報を取得する。
The
第7の実施形態に係る取得部131は、第1の実施形態~第6の実施形態に係る取得部131と同様に各種情報を取得する。例えば、取得部131は、データ検索の対象となる複数のオブジェクトを示すオブジェクト情報を取得する。例えば、取得部131は、複数のオブジェクトを検索対象とするインデックスを示すインデックス情報を取得する。
The
取得部131は、データ検索の対象となる複数のオブジェクトを分類する複数の第1グループ、及び複数の第1グループの各々に属するオブジェクト群ごとに分類する1以上の第2グループとを示すグループ情報を取得する。取得部131は、複数のオブジェクトに対する検索クエリを取得する。取得部131は、複数の第1グループの各々の第1代表オブジェクトがエッジにより連結されたグラフを取得する。
The
(生成部132F)
生成部132Fは、生成部132、生成部132A、生成部132B、生成部132Cまたは生成部132Eと同様に各種情報を生成する。
(Generation unit 132F)
The generating unit 132F generates various types of information in the same manner as the generating
例えば、生成部132Fは、取得部131により取得されたオブジェクト情報に基づいて、複数のオブジェクトを分類する第1数のグループである複数の第1グループを生成してもよい。生成部132Fは、複数の第1グループの各々に属するオブジェクト群ごとに分類する1以上の第2グループを生成してもよい。
For example, the generating unit 132F may generate a plurality of first groups, which are a first number of groups into which a plurality of objects are classified, based on the object information acquired by the acquiring
生成部132Fは、複数のオブジェクトのうち、複数の第2グループにおいて同じ第2グループに属するオブジェクトを同じ第1グループに分類するグループである第1グループ情報を生成する。生成部132Fは、複数の第2グループのうち二以上の第2グループの各々に属するオブジェクト群が一の第1グループに分類された複数の第1グループを示す第1グループ情報を生成する。 The generating unit 132F generates first group information that is a group in which objects belonging to the same second group in the multiple second groups are classified into the same first group. The generating unit 132F generates first group information indicating multiple first groups in which a group of objects belonging to each of two or more second groups out of the multiple second groups is classified into one first group.
生成部132Fは、複数のオブジェクトを対象とする検索処理において一括処理を行うために用いられる第2グループを生成する。生成部132Fは、複数のオブジェクトに関する距離の算出を一括して行うために用いられる第2グループを生成する。生成部132Fは、検索処理で用いられる検索クエリとオブジェクトとの距離の算出を並列処理するために用いられる第2グループを生成する。 The generation unit 132F generates a second group used for performing batch processing in a search process targeting multiple objects. The generation unit 132F generates a second group used for performing batch calculation of distances for multiple objects. The generation unit 132F generates a second group used for performing parallel processing of calculation of distances between a search query used in the search process and an object.
生成部132Fは、複数のオブジェクトを対象とする量子化に関する処理を行うために用いられる第2グループを生成する。生成部132Fは、量子化の単位となる第2グループを生成する。生成部132Fは、複数のオブジェクトの各々に対応するベクトルを量子化するために用いられる第2グループを生成する。 The generation unit 132F generates a second group used to perform processing related to quantization of multiple objects. The generation unit 132F generates a second group that serves as a unit of quantization. The generation unit 132F generates a second group used to quantize vectors corresponding to each of the multiple objects.
生成部132Fは、複数の第2グループの分類後に、複数の第1グループの分類を行う。生成部132Fは、複数のオブジェクトをクラスタリングすることにより複数の第2グループを生成する。生成部132Fは、インデックス情報を用いて、複数の第2グループを示す第2グループ情報を生成する。生成部132Fは、第2グループを示す第2グループ情報を用いて、複数の第1グループを示す第1グループ情報を生成する。 The generation unit 132F classifies the multiple first groups after classifying the multiple second groups. The generation unit 132F generates the multiple second groups by clustering the multiple objects. The generation unit 132F uses the index information to generate second group information indicating the multiple second groups. The generation unit 132F uses the second group information indicating the second groups to generate first group information indicating the multiple first groups.
生成部132Fは、複数の第2グループをクラスタリングすることにより複数の第1グループを示す第1グループ情報を生成する。生成部132Fは、複数の第1グループの分類後に、複数の第2グループの分類を行う。生成部132Fは、複数のオブジェクトをクラスタリングすることにより複数の第1グループを示す第1グループ情報を生成する。 The generation unit 132F generates first group information indicating a plurality of first groups by clustering a plurality of second groups. After classifying the plurality of first groups, the generation unit 132F classifies the plurality of second groups. The generation unit 132F generates first group information indicating a plurality of first groups by clustering a plurality of objects.
生成部132Fは、第1グループを示す第1グループ情報を用いて、複数の第2グループを示す第2グループ情報を生成する。生成部132Fは、複数の第1グループのうち、少なくとも一の第1グループを分割し、二以上の第2グループを生成する。生成部132Fは、各第1グループに属するオブジェクトをクラスタリングし、各第1グループを二以上の第2グループに分割することにより、複数の第2グループを生成する。なお、情報処理装置100Fは外部装置等からグループ情報を取得する場合、生成部132Fを有しなくてもよい。
The generation unit 132F generates second group information indicating a plurality of second groups using first group information indicating the first group. The generation unit 132F divides at least one of the plurality of first groups to generate two or more second groups. The generation unit 132F generates a plurality of second groups by clustering objects belonging to each first group and dividing each first group into two or more second groups. Note that when the
(検索処理部133F)
検索処理部133Fは、上述した1段目の処理及び、処理(8-1)~(8-13)に示す2段階目の処理を含む検索処理を実行する。例えば、検索処理部133Fは、検索処理部133、検索処理部133A、検索処理部133B、検索処理部133C、または検索処理部133Dと同様に検索処理に関する各種処理を行う。検索処理部133Fは、記憶部120Cに記憶された情報を用いた処理を行う。検索処理部133Fは、生成部132Fにより生成された情報を用いた処理を行う。
(Search processing unit 133F)
The search processing unit 133F executes search processing including the above-mentioned first stage processing and the second stage processing shown in steps (8-1) to (8-13). For example, the search processing unit 133F performs various processes related to the search processing in the same manner as the
例えば、検索処理部133Fは、複数の第1グループから選択された対象第1グループ群から、対象第1グループ群の各々の第1代表オブジェクトと検索クエリとの間の距離が短い方から順に一の第1グループを選択する。検索処理部133Fは、選択した一の第1グループに属する第2グループのうち、第2代表オブジェクトと検索クエリとの間の距離が短い方から順に一の第2グループを選択する。検索処理部133Fは、選択した一の第2グループに属するオブジェクトを対象オブジェクトとして検索クエリとの間の距離を算出する算出処理を実行する。検索処理部133Fは、算出処理により算出した対象オブジェクトと検索クエリとの各々との距離に基づいて、検索クエリに対応する近傍のオブジェクトを抽出する検索処理を実行する。 For example, the search processing unit 133F selects one first group from a target first group group selected from a plurality of first groups in order of the shortest distance between the first representative object of each of the target first groups and the search query. The search processing unit 133F selects one second group from the second groups belonging to the selected one first group in order of the shortest distance between the second representative object and the search query. The search processing unit 133F executes a calculation process to calculate the distance between the search query and an object belonging to the selected one second group as a target object. The search processing unit 133F executes a search process to extract nearby objects corresponding to the search query based on the distances between the target objects and the search query calculated by the calculation process.
検索処理部133Fは、複数の第1グループのうち、所定数の第1グループを対象第1グループ群として選択する。検索処理部133Fは、複数の第1グループのうち、代表オブジェクトが検索クエリの近傍にある第1グループを対象第1グループ群として選択する。検索処理部133Fは、複数の第1グループのうち、複数の第1グループの各々のセントロイドである第1代表オブジェクトが検索クエリの近傍にある第1グループを対象第1グループ群として選択する。検索処理部133Fは、グラフを用いて対象第1グループ群を選択する。 The search processing unit 133F selects a predetermined number of first groups from among the multiple first groups as the target first group group. The search processing unit 133F selects, from among the multiple first groups, first groups whose representative objects are in the vicinity of the search query as the target first group group. The search processing unit 133F selects, from among the multiple first groups, first groups whose first representative objects, which are centroids of each of the multiple first groups, are in the vicinity of the search query as the target first group group. The search processing unit 133F selects the target first group group using a graph.
検索処理部133Fは、検索処理における検索範囲を示す値に基づく基準値と、一の第1グループに対応する距離である第1対象距離との比較結果が所定の条件を満たす場合、検索処理を終了する。検索処理部133Fは、基準値よりも第1対象距離が大きい場合、検索処理を終了する。 The search processing unit 133F ends the search process when a comparison result between a reference value based on a value indicating a search range in the search process and a first target distance, which is a distance corresponding to one first group, satisfies a predetermined condition. The search processing unit 133F ends the search process when the first target distance is greater than the reference value.
検索処理部133Fは、一の第2グループに属するオブジェクトに基づいて一の第2グループに対応する距離である第2対象距離を決定し、第2対象距離が第1対象距離よりも小さい場合、第1対象距離を第2対象距離に更新する。検索処理部133Fは、一の第2グループに属するオブジェクトのうち、検索クエリとの間の距離が最小である一のオブジェクトの距離を第2対象距離に決定する。検索処理部133Fは、基準値よりも第2対象距離が大きい場合、一の第2グループを対象とする算出処理を終了し、一の第1グループに属する他の第2グループを一の第2グループをとして選択する。 The search processing unit 133F determines a second object distance, which is a distance corresponding to the one second group, based on the objects belonging to the one second group, and updates the first object distance to the second object distance if the second object distance is smaller than the first object distance. The search processing unit 133F determines the distance of an object that has the smallest distance from the search query, among the objects belonging to the one second group, to be the second object distance. If the second object distance is larger than a reference value, the search processing unit 133F ends the calculation process for the one second group, and selects another second group belonging to the one first group as the one second group.
検索処理部133Fは、検索範囲に所定の係数を乗算することにより、基準値を算出する。検索処理部133Fは、検索範囲に0より大きい所定の係数を乗算することにより、基準値を算出する。検索処理部133Fは、検索処理中に近傍のオブジェクトの抽出候補に基づいて、検索範囲を更新する。検索処理部133Fは、無限大が初期値として設定された検索範囲を更新する。検索処理部133Fは、抽出候補のうち検索クエリとの距離が最大の距離に、検索範囲を更新する。 The search processing unit 133F calculates a reference value by multiplying the search range by a predetermined coefficient. The search processing unit 133F calculates a reference value by multiplying the search range by a predetermined coefficient greater than 0. The search processing unit 133F updates the search range based on extraction candidates of nearby objects during the search process. The search processing unit 133F updates the search range, which is set to infinity as the initial value. The search processing unit 133F updates the search range to the extraction candidate that is the farthest from the search query.
検索処理部133Fは、1以上の第2グループの各々のセントロイドである第2代表オブジェクトと検索クエリとの間の距離が短い方から順に一の第2グループを選択する。検索処理部133Fは、一の第2グループに属するオブジェクトを対象に距離の算出を一括して行う算出処理を実行する。検索処理部133Fは、一の第2グループに属するオブジェクト群の各々と、検索クエリとの距離の算出の並列処理である算出処理を実行する。 The search processing unit 133F selects one second group in order of the shortest distance between the search query and a second representative object that is the centroid of each of the one or more second groups. The search processing unit 133F executes a calculation process that collectively calculates the distance for objects that belong to one second group. The search processing unit 133F executes a calculation process that is a parallel process that calculates the distance between each of the objects that belong to one second group and the search query.
〔7-3.情報処理のフロー〕
次に、図49を用いて、第7の実施形態に係る情報処理の手順について説明する。図49は、第7の実施形態に係る情報処理の一例を示すフローチャートである。
[7-3. Information processing flow]
Next, a procedure of information processing according to the seventh embodiment will be described with reference to Fig. 49. Fig. 49 is a flowchart showing an example of information processing according to the seventh embodiment.
まず、図49について説明する。例えば、図49は、グループの生成処理の一例を示すフローチャートである。図49に示すように、情報処理装置100Fは、データ検索の対象となる複数のオブジェクトを分類する複数の第1グループ、及び複数の第1グループの各々に属するオブジェクト群ごとに分類する1以上の第2グループとを示すグループ情報と、複数のオブジェクトに対する検索クエリとを取得する(ステップS1101)。例えば、情報処理装置100Fは、ブロブ情報記憶部125から複数のオブジェクトを分類する複数の第1グループを示す第1グループ情報を取得し、クラスタ情報記憶部127から複数の第1グループの各々に属するオブジェクト群ごとに分類する1以上の第2グループを示す第2グループ情報を取得する。
First, FIG. 49 will be described. For example, FIG. 49 is a flowchart showing an example of a group generation process. As shown in FIG. 49, the
情報処理装置100Fは、複数の第1グループから選択された対象第1グループ群から、対象第1グループ群の各々の第1代表オブジェクトと検索クエリとの間の距離が短い方から順に一の第1グループを選択し、選択した一の第1グループに属する第2グループのうち、第2代表オブジェクトと検索クエリとの間の距離が短い方から順に一の第2グループを選択し、選択した一の第2グループに属するオブジェクトを対象オブジェクトとして検索クエリとの間の距離を算出する算出処理を実行し、算出処理により算出した対象オブジェクトと検索クエリとの各々との距離に基づいて、検索クエリに対応する近傍のオブジェクトを抽出する検索処理を実行する(ステップS1102)。例えば、情報処理装置100Eは、上述した1段目の処理及び、処理(8-1)~(8-13)に示す2段階目の処理を含む検索処理を実行する。
The
〔8.効果〕
上述してきたように、第7の実施形態に係る情報処理装置100Fは、取得部131と、検索処理部133Fとを有する。取得部131は、データ検索の対象となる複数のオブジェクトを分類する複数の第1グループ、及び複数の第1グループの各々に属するオブジェクト群ごとに分類する1以上の第2グループとを示すグループ情報と、複数のオブジェクトに対する検索クエリとを取得する。検索処理部133Fは、複数の第1グループから選択された対象第1グループ群から、対象第1グループ群の各々の第1代表オブジェクトと検索クエリとの間の距離が短い方から順に一の第1グループを選択し、選択した一の第1グループに属する第2グループのうち、第2代表オブジェクトと検索クエリとの間の距離が短い方から順に一の第2グループを選択し、選択した一の第2グループに属するオブジェクトを対象オブジェクトとして検索クエリとの間の距離を算出する算出処理を実行し、算出処理により算出した対象オブジェクトと検索クエリとの各々との距離に基づいて、検索クエリに対応する近傍のオブジェクトを抽出する検索処理を実行する。
8. Effects
As described above, the
このように、第7の実施形態に係る情報処理装置100Fは、階層関係にある第1グループ及び第2グループの情報を用いて、検索処理を実行することにより、グルーピングに応じて検索処理を実行することができるため、グループに応じて適切に検索処理を実行することができる。
In this way, the
検索処理部133Fは、複数の第1グループのうち、所定数の第1グループを対象第1グループ群として選択する。 The search processing unit 133F selects a predetermined number of first groups from the multiple first groups as a target first group group.
このように、情報処理装置100Fは、複数の第1グループのうち、所定数の第1グループを対象第1グループ群として選択することにより、グループに応じて適切に検索処理を実行することができる。
In this way, the
検索処理部133Fは、複数の第1グループのうち、代表オブジェクトが検索クエリの近傍にある第1グループを対象第1グループ群として選択する。 The search processing unit 133F selects, from among the multiple first groups, first groups whose representative objects are in the vicinity of the search query as the target first groups.
このように、情報処理装置100Fは、複数の第1グループのうち、代表オブジェクトが検索クエリの近傍にある第1グループを対象第1グループ群として選択することにより、グループに応じて適切に検索処理を実行することができる。
In this way, the
検索処理部133Fは、複数の第1グループのうち、複数の第1グループの各々のセントロイドである第1代表オブジェクトが検索クエリの近傍にある第1グループを対象第1グループ群として選択する。 The search processing unit 133F selects, from among the multiple first groups, first groups whose first representative objects, which are centroids of each of the multiple first groups, are in the vicinity of the search query as the target first groups.
このように、情報処理装置100Fは、複数の第1グループの各々のセントロイドである第1代表オブジェクトが検索クエリの近傍にある第1グループを対象第1グループ群として選択することにより、グループに応じて適切に検索処理を実行することができる。
In this way, the
取得部131は、複数の第1グループの各々の第1代表オブジェクトがエッジにより連結されたグラフを取得する。検索処理部133Fは、グラフを用いて対象第1グループ群を選択する。
The
このように、情報処理装置100Fは、グラフを用いて対象第1グループ群を選択することにより、グループに応じて適切に検索処理を実行することができる。
In this way, the
検索処理部133Fは、検索処理における検索範囲を示す値に基づく基準値と、一の第1グループに対応する距離である第1対象距離との比較結果が所定の条件を満たす場合、検索処理を終了する。 The search processing unit 133F ends the search process when the comparison result between the reference value based on the value indicating the search range in the search process and the first target distance, which is the distance corresponding to one first group, satisfies a predetermined condition.
このように、情報処理装置100Fは、検索処理における検索範囲を示す値に基づく基準値と、一の第1グループに対応する距離である第1対象距離との比較結果が所定の条件を満たす場合、検索処理を終了することにより、グループに応じて適切に検索処理を実行することができる。
In this way, when the comparison result between the reference value based on the value indicating the search range in the search process and the first target distance, which is the distance corresponding to one first group, satisfies a predetermined condition, the
検索処理部133Fは、基準値よりも第1対象距離が大きい場合、検索処理を終了する。 If the first target distance is greater than the reference value, the search processing unit 133F terminates the search process.
このように、情報処理装置100Fは、基準値よりも第1対象距離が大きい場合、検索処理を終了することにより、グループに応じて適切に検索処理を実行することができる。
In this way, when the first target distance is greater than the reference value, the
検索処理部133Fは、一の第2グループに属するオブジェクトに基づいて一の第2グループに対応する距離である第2対象距離を決定し、第2対象距離が第1対象距離よりも小さい場合、第1対象距離を第2対象距離に更新する。 The search processing unit 133F determines a second target distance, which is a distance corresponding to a second group, based on the objects belonging to the second group, and if the second target distance is smaller than the first target distance, updates the first target distance to the second target distance.
このように、情報処理装置100Fは、一の第2グループに属するオブジェクトに基づいて一の第2グループに対応する距離である第2対象距離を決定し、第2対象距離が第1対象距離よりも小さい場合、第1対象距離を第2対象距離に更新することにより、グループに応じて適切に検索処理を実行することができる。
In this way, the
検索処理部133Fは、一の第2グループに属するオブジェクトのうち、検索クエリとの間の距離が最小である一のオブジェクトの距離を第2対象距離に決定する。 The search processing unit 133F determines the distance of an object that is the smallest distance from the search query among the objects that belong to the second group as the second target distance.
このように、情報処理装置100Fは、一の第2グループに属するオブジェクトのうち、検索クエリとの間の距離が最小である一のオブジェクトの距離を第2対象距離に決定することにより、グループに応じて適切に検索処理を実行することができる。
In this way, the
検索処理部133Fは、基準値よりも第2対象距離が大きい場合、一の第2グループを対象とする算出処理を終了し、一の第1グループに属する他の第2グループを一の第2グループをとして選択する。 When the second target distance is greater than the reference value, the search processing unit 133F terminates the calculation process for the one second group, and selects another second group belonging to the one first group as the one second group.
このように、情報処理装置100Fは、基準値よりも第2対象距離が大きい場合、一の第2グループを対象とする算出処理を終了し、一の第1グループに属する他の第2グループを一の第2グループをとして選択することにより、グループに応じて適切に検索処理を実行することができる。
In this way, when the second target distance is greater than the reference value, the
検索処理部133Fは、検索範囲に所定の係数を乗算することにより、基準値を算出する。 The search processing unit 133F calculates the reference value by multiplying the search range by a predetermined coefficient.
このように、情報処理装置100Fは、検索範囲に所定の係数を乗算することにより、基準値を算出することにより、グループに応じて適切に検索処理を実行することができる。
In this way, the
検索処理部133Fは、検索範囲に0より大きい所定の係数を乗算することにより、基準値を算出する。 The search processing unit 133F calculates the reference value by multiplying the search range by a predetermined coefficient greater than 0.
このように、情報処理装置100Fは、検索範囲に0より大きい所定の係数を乗算することにより、基準値を算出することにより、グループに応じて適切に検索処理を実行することができる。
In this way, the
検索処理部133Fは、検索処理中に近傍のオブジェクトの抽出候補に基づいて、検索範囲を更新する。 The search processing unit 133F updates the search range based on the extracted candidates of nearby objects during the search process.
このように、情報処理装置100Fは、検索処理中に近傍のオブジェクトの抽出候補に基づいて、検索範囲を更新することにより、グループに応じて適切に検索処理を実行することができる。
In this way, the
検索処理部133Fは、無限大が初期値として設定された検索範囲を更新する。 The search processing unit 133F updates the search range, which is initially set to infinity.
このように、情報処理装置100Fは、無限大が初期値として設定された検索範囲を更新することにより、グループに応じて適切に検索処理を実行することができる。
In this way, the
検索処理部133Fは、抽出候補のうち検索クエリとの距離が最大の距離に、検索範囲を更新する。 The search processing unit 133F updates the search range to the extracted candidate that has the greatest distance from the search query.
このように、情報処理装置100Fは、抽出候補のうち検索クエリとの距離が最大の距離に、検索範囲を更新することにより、グループに応じて適切に検索処理を実行することができる。
In this way, the
検索処理部133Fは、1以上の第2グループの各々のセントロイドである第2代表オブジェクトと検索クエリとの間の距離が短い方から順に一の第2グループを選択する。 The search processing unit 133F selects one or more second groups in order of the shortest distance between the search query and a second representative object that is the centroid of each of the second groups.
このように、情報処理装置100Fは、1以上の第2グループの各々のセントロイドである第2代表オブジェクトと検索クエリとの間の距離が短い方から順に一の第2グループを選択することにより、グループに応じて適切に検索処理を実行することができる。
In this way, the
検索処理部133Fは、一の第2グループに属するオブジェクトを対象に距離の算出を一括して行う算出処理を実行する。 The search processing unit 133F executes a calculation process that collectively calculates the distance for objects that belong to one second group.
このように、情報処理装置100Fは、一の第2グループに属するオブジェクトを対象に距離の算出を一括して行う算出処理を実行することにより、グループに応じて適切に検索処理を実行することができる。
In this way, the
検索処理部133Fは、一の第2グループに属するオブジェクト群の各々と、検索クエリとの距離の算出の並列処理である算出処理を実行する。 The search processing unit 133F executes a calculation process that is a parallel process of calculating the distance between each of the objects belonging to one second group and the search query.
このように、情報処理装置100Fは、一の第2グループに属するオブジェクト群の各々と、検索クエリとの距離の算出の並列処理である算出処理を実行することにより、グループに応じて適切に検索処理を実行することができる。
In this way, the
〔9.ハードウェア構成〕
上述してきた各実施形態に係る情報処理装置100、100A、100B、100C、100D、100E、100Fは、例えば図50に示すような構成のコンピュータ1000によって実現される。図50は、情報処理装置の機能を実現するコンピュータの一例を示すハードウェア構成図である。コンピュータ1000は、CPU1100、RAM1200、ROM(Read Only Memory)1300、HDD(Hard Disk Drive)1400、通信インターフェイス(I/F)1500、入出力インターフェイス(I/F)1600、及びメディアインターフェイス(I/F)1700を有する。
9. Hardware Configuration
The
CPU1100は、ROM1300またはHDD1400に格納されたプログラムに基づいて動作し、各部の制御を行う。ROM1300は、コンピュータ1000の起動時にCPU1100によって実行されるブートプログラムや、コンピュータ1000のハードウェアに依存するプログラム等を格納する。
The
HDD1400は、CPU1100によって実行されるプログラム、及び、かかるプログラムによって使用されるデータ等を格納する。通信インターフェイス1500は、ネットワークNを介して他の機器からデータを受信してCPU1100へ送り、CPU1100が生成したデータをネットワークNを介して他の機器へ送信する。
CPU1100は、入出力インターフェイス1600を介して、ディスプレイやプリンタ等の出力装置、及び、キーボードやマウス等の入力装置を制御する。CPU1100は、入出力インターフェイス1600を介して、入力装置からデータを取得する。また、CPU1100は、生成したデータを入出力インターフェイス1600を介して出力装置へ出力する。
The
メディアインターフェイス1700は、記録媒体1800に格納されたプログラムまたはデータを読み取り、RAM1200を介してCPU1100に提供する。CPU1100は、かかるプログラムを、メディアインターフェイス1700を介して記録媒体1800からRAM1200上にロードし、ロードしたプログラムを実行する。記録媒体1800は、例えばDVD(Digital Versatile Disc)、PD(Phase change rewritable Disk)等の光学記録媒体、MO(Magneto-Optical disk)等の光磁気記録媒体、テープ媒体、磁気記録媒体、または半導体メモリ等である。
The
例えば、コンピュータ1000が第1の実施形態に係る情報処理装置100として機能する場合、コンピュータ1000のCPU1100は、RAM1200上にロードされたプログラムを実行することにより、制御部130の機能を実現する。コンピュータ1000のCPU1100は、これらのプログラムを記録媒体1800から読み取って実行するが、他の例として、他の装置からネットワークNを介してこれらのプログラムを取得してもよい。
For example, when the
以上、本願の実施形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、発明の開示の行に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。 Although several embodiments of the present application have been described in detail above with reference to the drawings, these are merely examples, and the present invention can be embodied in other forms with various modifications and improvements based on the knowledge of those skilled in the art, including the aspects described in the lines of the disclosure of the invention.
〔10.その他〕
また、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
10. Other
In addition, among the processes described in the above embodiments, all or part of the processes described as being performed automatically can be performed manually, or all or part of the processes described as being performed manually can be performed automatically by a known method. In addition, the information including the processing procedures, specific names, various data and parameters shown in the above documents and drawings can be changed arbitrarily unless otherwise specified. For example, the various information shown in each drawing is not limited to the illustrated information.
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。 In addition, each component of each device shown in the figure is a functional concept, and does not necessarily have to be physically configured as shown in the figure. In other words, the specific form of distribution and integration of each device is not limited to that shown in the figure, and all or part of them can be functionally or physically distributed and integrated in any unit depending on various loads, usage conditions, etc.
また、上述してきた各実施形態に記載された各処理は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。 In addition, the processes described in each of the above embodiments can be combined as appropriate to the extent that the process content is not contradictory.
また、上述してきた「部(section、module、unit)」は、「手段」や「回路」などに読み替えることができる。例えば、取得部は、取得手段や取得回路に読み替えることができる。 The above-mentioned "section, module, unit" can be read as "means" or "circuit." For example, an acquisition unit can be read as an acquisition means or an acquisition circuit.
1 情報処理システム
10 端末装置
50 情報提供装置
100、100A~100F 情報処理装置
120、120A~120C 記憶部
121 オブジェクト情報記憶部
122 グラフ情報記憶部
123、123A 量子化情報記憶部
124 コードブック情報記憶部
125、125A ブロブ情報記憶部
126、126A ブロブ連結グラフ情報記憶部
130、130A~130F 制御部
131 取得部
132、132A~132F 生成部(処理部)
133、133A~133F 検索処理部
134 提供部
1
133, 133A to 133F
Claims (20)
前記複数の第1グループから選択された対象第1グループ群から、前記対象第1グループ群の各々の第1代表オブジェクトと前記検索クエリとの間の距離が短い方から順に一の第1グループを選択し、選択した前記一の第1グループに属する第2グループのうち、第2代表オブジェクトと前記検索クエリとの間の距離が短い方から順に一の第2グループを選択し、選択した前記一の第2グループに属するオブジェクトを対象オブジェクトとして前記検索クエリとの間の距離を算出する算出処理を実行し、前記算出処理により算出した前記対象オブジェクトと前記検索クエリとの各々との距離に基づいて、前記検索クエリに対応する近傍のオブジェクトを抽出する検索処理を実行する検索処理部と、
を備えることを特徴とする情報処理装置。 an acquisition unit that acquires group information indicating a plurality of first groups into which a plurality of objects to be subjected to a data search are classified and one or more second groups into which objects belonging to each of the plurality of first groups are classified, and a search query for the plurality of objects;
a search processing unit that selects one first group from a target first group group selected from the plurality of first groups in order of the shortest distance between a first representative object of each of the target first groups and the search query, selects one second group from second groups belonging to the selected one first group in order of the shortest distance between a second representative object and the search query, executes a calculation process to calculate a distance between the search query and an object belonging to the selected one second group as a target object, and executes a search process to extract a nearby object corresponding to the search query based on the distance between each of the target objects and the search query calculated by the calculation process;
An information processing device comprising:
前記複数の第1グループのうち、所定数の第1グループを前記対象第1グループ群として選択する
ことを特徴とする請求項1に記載の情報処理装置。 The search processing unit:
The information processing apparatus according to claim 1 , wherein a predetermined number of the first groups are selected as the target first groups from among the plurality of first groups.
前記複数の第1グループのうち、代表オブジェクトが前記検索クエリの近傍にある第1グループを前記対象第1グループ群として選択する
ことを特徴とする請求項1に記載の情報処理装置。 The search processing unit:
The information processing apparatus according to claim 1 , wherein, from among the plurality of first groups, a first group whose representative object is in the vicinity of the search query is selected as the target first group group.
前記複数の第1グループの各々のセントロイドである前記第1代表オブジェクトが前記検索クエリの近傍にある第1グループを前記対象第1グループ群として選択する
ことを特徴とする請求項3に記載の情報処理装置。 The search processing unit:
The information processing apparatus according to claim 3 , further comprising: selecting, as the target first groups, first groups in which the first representative object, which is a centroid of each of the plurality of first groups, is in the vicinity of the search query.
前記複数の第1グループの各々の前記第1代表オブジェクトがエッジにより連結されたグラフを取得し、
前記検索処理部は、
前記グラフを用いて前記対象第1グループ群を選択する
ことを特徴とする請求項3に記載の情報処理装置。 The acquisition unit is
obtaining a graph in which the first representative objects of each of the plurality of first groups are connected by edges;
The search processing unit:
The information processing apparatus according to claim 3 , wherein the first target groups are selected using the graph.
前記検索処理における検索範囲を示す値に基づく基準値と、前記一の第1グループに対応する距離である第1対象距離との比較結果が所定の条件を満たす場合、前記検索処理を終了する
ことを特徴とする請求項1に記載の情報処理装置。 The search processing unit:
The information processing device according to claim 1, characterized in that, when a comparison result between a reference value based on a value indicating a search range in the search process and a first target distance which is a distance corresponding to the first group satisfies a predetermined condition, the search process is terminated.
前記基準値よりも前記第1対象距離が大きい場合、前記検索処理を終了する
ことを特徴とする請求項6に記載の情報処理装置。 The search processing unit:
The information processing apparatus according to claim 6 , wherein the search process is terminated when the first object distance is greater than the reference value.
前記一の第2グループに属するオブジェクトに基づいて前記一の第2グループに対応する距離である第2対象距離を決定し、前記第2対象距離が前記第1対象距離よりも小さい場合、前記第1対象距離を前記第2対象距離に更新する
ことを特徴とする請求項6に記載の情報処理装置。 The search processing unit:
The information processing device according to claim 6, characterized in that a second object distance, which is a distance corresponding to the one of the second groups, is determined based on an object belonging to the one of the second groups, and if the second object distance is smaller than the first object distance, the first object distance is updated to the second object distance.
前記一の第2グループに属するオブジェクトのうち、前記検索クエリとの間の距離が最小である一のオブジェクトの距離を前記第2対象距離に決定する
ことを特徴とする請求項8に記載の情報処理装置。 The search processing unit:
The information processing apparatus according to claim 8 , wherein the second target distance is determined to be a distance of an object that has a minimum distance from the search query among the objects that belong to the second group.
前記基準値よりも前記第2対象距離が大きい場合、前記一の第2グループを対象とする前記算出処理を終了し、前記一の第1グループに属する他の第2グループを前記一の第2グループをとして選択する
ことを特徴とする請求項8に記載の情報処理装置。 The search processing unit:
The information processing device according to claim 8, characterized in that, when the second target distance is greater than the reference value, the calculation process for the one second group is terminated, and another second group belonging to the one first group is selected as the one second group.
前記検索範囲に所定の係数を乗算することにより、前記基準値を算出する
ことを特徴とする請求項6に記載の情報処理装置。 The search processing unit:
The information processing apparatus according to claim 6 , wherein the reference value is calculated by multiplying the search range by a predetermined coefficient.
前記検索範囲に0より大きい前記所定の係数を乗算することにより、前記基準値を算出する
ことを特徴とする請求項11に記載の情報処理装置。 The search processing unit:
The information processing apparatus according to claim 11 , wherein the reference value is calculated by multiplying the search range by the predetermined coefficient that is greater than zero.
前記検索処理中に近傍のオブジェクトの抽出候補に基づいて、前記検索範囲を更新する
ことを特徴とする請求項6に記載の情報処理装置。 The search processing unit:
The information processing apparatus according to claim 6 , wherein the search range is updated based on extraction candidates of nearby objects during the search process.
無限大が初期値として設定された前記検索範囲を更新する
ことを特徴とする請求項13に記載の情報処理装置。 The search processing unit:
The information processing apparatus according to claim 13 , further comprising: updating the search range, which is set to infinity as an initial value.
前記抽出候補のうち前記検索クエリとの距離が最大の距離に、前記検索範囲を更新する
ことを特徴とする請求項13に記載の情報処理装置。 The search processing unit:
The information processing apparatus according to claim 13 , further comprising: updating the search range to a position among the candidates that has the greatest distance from the search query.
前記1以上の第2グループの各々のセントロイドである前記第2代表オブジェクトと前記検索クエリとの間の距離が短い方から順に前記一の第2グループを選択する
ことを特徴とする請求項1に記載の情報処理装置。 The search processing unit:
The information processing apparatus according to claim 1 , further comprising: selecting the second group in order of the shortest distance between the search query and the second representative object that is a centroid of each of the one or more second groups.
前記一の第2グループに属するオブジェクトを対象に距離の算出を一括して行う前記算出処理を実行する
ことを特徴とする請求項1に記載の情報処理装置。 The search processing unit:
The information processing apparatus according to claim 1 , further comprising: a step of executing the calculation process for collectively calculating the distance for the objects belonging to the one second group.
前記一の第2グループに属するオブジェクト群の各々と、前記検索クエリとの距離の算出の並列処理である前記算出処理を実行する
ことを特徴とする請求項17に記載の情報処理装置。 The search processing unit:
The information processing apparatus according to claim 17 , further comprising: executing the calculation process, which is a parallel process of calculating the distance between each of the objects belonging to the one second group and the search query.
データ検索の対象となる複数のオブジェクトを分類する複数の第1グループ、及び前記複数の第1グループの各々に属するオブジェクト群ごとに分類する1以上の第2グループとを示すグループ情報と、前記複数のオブジェクトに対する検索クエリとを取得する取得工程と、
前記複数の第1グループから選択された対象第1グループ群から、前記対象第1グループ群の各々の第1代表オブジェクトと前記検索クエリとの間の距離が短い方から順に一の第1グループを選択し、選択した前記一の第1グループに属する第2グループのうち、第2代表オブジェクトと前記検索クエリとの間の距離が短い方から順に一の第2グループを選択し、選択した前記一の第2グループに属するオブジェクトを対象オブジェクトとして前記検索クエリとの間の距離を算出する算出処理を実行し、前記算出処理により算出した前記対象オブジェクトと前記検索クエリとの各々との距離に基づいて、前記検索クエリに対応する近傍のオブジェクトを抽出する検索処理を実行する検索処理工程と、
を含むことを特徴とする情報処理方法。 1. A computer-implemented information processing method, comprising:
an acquisition step of acquiring group information indicating a plurality of first groups into which a plurality of objects to be subjected to a data search are classified and one or more second groups into which objects belonging to each of the plurality of first groups are classified, and a search query for the plurality of objects;
a search processing step of selecting one first group from a target first group group selected from the plurality of first groups in order of the shortest distance between a first representative object of each of the target first groups and the search query, selecting one second group from second groups belonging to the selected one first group in order of the shortest distance between a second representative object and the search query, performing a calculation process to calculate a distance between the search query and an object belonging to the selected one second group as a target object, and performing a search process to extract a nearby object corresponding to the search query based on the distance between each of the target objects and the search query calculated by the calculation process;
13. An information processing method comprising:
前記複数の第1グループから選択された対象第1グループ群から、前記対象第1グループ群の各々の第1代表オブジェクトと前記検索クエリとの間の距離が短い方から順に一の第1グループを選択し、選択した前記一の第1グループに属する第2グループのうち、第2代表オブジェクトと前記検索クエリとの間の距離が短い方から順に一の第2グループを選択し、選択した前記一の第2グループに属するオブジェクトを対象オブジェクトとして前記検索クエリとの間の距離を算出する算出処理を実行し、前記算出処理により算出した前記対象オブジェクトと前記検索クエリとの各々との距離に基づいて、前記検索クエリに対応する近傍のオブジェクトを抽出する検索処理を実行する検索処理手順と、
をコンピュータに実行させることを特徴とする情報処理プログラム。 an acquisition step of acquiring group information indicating a plurality of first groups into which a plurality of objects to be subjected to a data search are classified and one or more second groups into which objects belonging to each of the plurality of first groups are classified, and a search query for the plurality of objects;
a search processing procedure for selecting one first group from a target first group group selected from the plurality of first groups in order of the shortest distance between a first representative object of each of the target first groups and the search query, selecting one second group from second groups belonging to the selected one first group in order of the shortest distance between a second representative object and the search query, performing a calculation process for calculating a distance between the search query and an object belonging to the selected one second group as a target object, and performing a search process for extracting a nearby object corresponding to the search query based on the distance between each of the target objects and the search query calculated by the calculation process;
An information processing program characterized by causing a computer to execute the above.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2023069641A JP2024155177A (en) | 2023-04-20 | 2023-04-20 | Information processing device, information processing method, and information processing program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2023069641A JP2024155177A (en) | 2023-04-20 | 2023-04-20 | Information processing device, information processing method, and information processing program |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2024155177A true JP2024155177A (en) | 2024-10-31 |
Family
ID=93259993
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2023069641A Pending JP2024155177A (en) | 2023-04-20 | 2023-04-20 | Information processing device, information processing method, and information processing program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2024155177A (en) |
-
2023
- 2023-04-20 JP JP2023069641A patent/JP2024155177A/en active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2013129580A1 (en) | Approximate nearest neighbor search device, approximate nearest neighbor search method, and program | |
KR20160132853A (en) | Parallel decision tree processor architecture | |
Eghbali et al. | Online nearest neighbor search using hamming weight trees | |
US20240005133A1 (en) | Hardware acceleration framework for graph neural network quantization | |
JP7353737B2 (en) | Information processing device, information processing method, and information processing program | |
Guo et al. | A resource aware MapReduce based parallel SVM for large scale image classifications | |
WO2022007596A1 (en) | Image retrieval system, method and apparatus | |
JP2024155177A (en) | Information processing device, information processing method, and information processing program | |
JP2024155176A (en) | Information processing device, information processing method, and information processing program | |
JP2020086662A (en) | Information processing apparatus, information processing method, and information processing program | |
JP7469262B2 (en) | Information processing device, information processing method, and information processing program | |
JP7471264B2 (en) | Information processing device, information processing method, and information processing program | |
CN110209895B (en) | Vector retrieval method, device and equipment | |
JP7353330B2 (en) | Information processing device, information processing method, and information processing program | |
JP7354188B2 (en) | Information processing device, information processing method, and information processing program | |
JP2023086434A (en) | Information processing device, information processing method, and information processing program | |
JP7414906B2 (en) | Information processing device, information processing method, and information processing program | |
JP7077387B1 (en) | Information processing equipment, information processing methods, and information processing programs | |
JP7109522B2 (en) | Information processing device, information processing method, and information processing program | |
JP2024027034A (en) | Information processing apparatus, information processing method, and information processing program | |
JP2024027038A (en) | Information processing apparatus, information processing method, and information processing program | |
CN108334888B (en) | Compression coding for bit sequences | |
JP6933636B2 (en) | Information processing equipment, information processing methods, and information processing programs | |
JP6974248B2 (en) | Information processing equipment, information processing methods, and information processing programs | |
CN116547647A (en) | Search device and search method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20231026 |