Information processing device, information processing method and information processing program
Patent Information
- Application Number
- JP2023132815
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2023-08-17
- Publication Date
- 2025-02-28
AI Technical Summary
【0008】 実施形態の一態様によれば、量子化に関する処理に用いられるクラスタを適切に生成することができるという効果を奏する。
Smart Images

Figure 2025027737000001_ABST
Abstract
Description
[Technical field]
[0001] The present invention relates to an information processing device, an information processing method, and an information processing program. [Background technology]
[0002] Conventionally, various techniques for searching (retrieving) information have been provided. For example, a technique is provided for generating information that quantizes a vector or the like corresponding to a search target (object) and performing a search using the generated information. In addition, such a technique is used, for example, for image search. [Prior art documents] [Patent documents]
[0003] [Patent Document 1] Patent No. 6311000 [Patent Document 2] JP 2023-13868 A [Non-patent literature]
[0004] [Non-Patent Document 1] Masajiro Iwasaki, "Neighborhood Search Using Approximate k-Nearest Neighbor Graph with Tree-Structured Index", Transactions of Information Processing Society of Japan, 2011 / 2, Vol. 52, No. 2. pp.817-828. Summary of the Invention [Problem to be solved by the invention]
[0005] However, there is room for improvement in the above conventional technology. For example, in the above conventional technology, one cluster group is used in quantization, and common cluster group information is used for any process related to quantization, so that the above conventional technology may have difficulty in flexibly executing the process related to quantization. Therefore, in order to enable the process related to quantization to be flexibly executed, it is desired to appropriately generate clusters used in the process related to quantization.
[0006] The present application has been made in view of the above, and has an object to provide an information processing device, an information processing method, and an information processing program that appropriately generate clusters used in quantization-related processing. [Means for solving the problem]
[0007] The information processing device of the present application is characterized in that it comprises an acquisition unit that acquires object information indicating a plurality of objects to be the subject of data search, and a generation unit that generates cluster information indicating a plurality of residual vector calculation clusters, each of which is a cluster for calculating a residual vector, which are a plurality of clusters that classify objects belonging to a quantization cluster, which is a cluster including at least some of the plurality of objects indicated by the object information acquired by the acquisition unit. Effect of the Invention
[0008] According to one aspect of the embodiment, it is possible to provide an effect that clusters used in processing related to quantization can be appropriately generated. [Brief description of the drawings]
[0009] [Figure 1] FIG. 1 is a diagram illustrating an example of information processing according to the first embodiment. [Diagram 2] FIG. 2 is a diagram illustrating an example of data according to the first embodiment. [Diagram 3] FIG. 3 is a diagram illustrating an example of data according to the first embodiment. [Figure 4] FIG. 4 is a diagram illustrating an example of the configuration of the information processing system according to the first embodiment. [Diagram 5] FIG. 5 is a diagram illustrating an example of the configuration of the information processing device according to the first embodiment. [Figure 6] FIG. 6 is a diagram illustrating an example of an object information storage unit according to the first embodiment. [Figure 7]FIG. 7 is a diagram illustrating an example of the graph information storage unit according to the first embodiment. [Figure 8] FIG. 8 is a diagram illustrating an example of the quantization information storage unit according to the first embodiment. [Figure 9] FIG. 9 is a diagram illustrating an example of a codebook information storage unit according to the first embodiment. [Figure 10] FIG. 10 is a flowchart illustrating an example of information processing according to the first embodiment. [Figure 11] FIG. 11 is a flowchart showing an example of the search process according to the first embodiment. [Figure 12] FIG. 12 is a diagram illustrating an example of information processing according to the second embodiment. [Figure 13] FIG. 13 is a diagram illustrating an example of the configuration of an information processing device according to the second embodiment. [Figure 14] FIG. 14 is a diagram illustrating an example of a quantization information storage unit according to the second embodiment. [Figure 15] FIG. 15 is a diagram illustrating an example of a blob information storage unit according to the second embodiment. [Figure 16] FIG. 16 is a flowchart showing an example of the search process according to the second embodiment. [Figure 17] FIG. 17 is a diagram illustrating an example of information processing according to the modified example. [Figure 18] FIG. 18 is a diagram illustrating an example of a graph information storage unit according to a modified example. [Figure 19] FIG. 19 is a flowchart showing an example of a search process according to the modified example. [Figure 20] FIG. 20 is a diagram showing another example of information processing according to the modified example. [Figure 21] FIG. 21 is a diagram illustrating an example of a process for generating blob information. [Figure 22] FIG. 22 is a flowchart showing an example of information processing according to the modified example. [Diagram 23] FIG. 23 is a diagram illustrating an example of information processing according to the third embodiment. [Figure 24]FIG. 24 is a diagram illustrating an example of the configuration of an information processing device according to the third embodiment. [Diagram 25] FIG. 25 is a diagram illustrating an example of a blob connection graph information storage unit according to the third embodiment. [Figure 26] FIG. 26 is a flowchart showing an example of information processing according to the third embodiment. [Figure 27] FIG. 27 is a flowchart showing an example of the search process according to the third embodiment. [Figure 28] FIG. 28 is a flowchart showing an example of the search process according to the third embodiment. [Figure 29] FIG. 29 is a diagram showing an example of blob connection graph information according to a modified example. [Diagram 30] FIG. 30 is a diagram illustrating an example of a blob information storage unit according to a modified example. [Diagram 31] FIG. 31 is a diagram illustrating an example of a blob connection graph information storage unit according to a modified example. [Diagram 32] FIG. 32 is a diagram illustrating an example of information processing according to the fourth embodiment. [Diagram 33] FIG. 33 is a diagram illustrating an example of the configuration of an information processing device according to the fourth embodiment. As shown in FIG. [Diagram 34] FIG. 34 is a conceptual diagram regarding quantization according to the fourth embodiment. [Diagram 35] FIG. 35 is a diagram illustrating an example of an inverted index according to the fourth embodiment. [Diagram 36] FIG. 36 is a diagram illustrating a specific example of an inverted index according to the fourth embodiment. [Figure 37] FIG. 37 is a flowchart showing an example of information processing according to the fourth embodiment. [Figure 38] FIG. 38 is a flowchart showing an example of information processing according to the fourth embodiment. [Figure 39] FIG. 39 is a diagram illustrating an example of information processing according to the fifth embodiment. [Diagram 40] FIG. 40 is a diagram illustrating an example of information processing according to the fifth embodiment. [Diagram 41] FIG. 41 is a diagram illustrating an example of the configuration of an information processing device according to the fifth embodiment. As shown in FIG. [Diagram 42] FIG. 42 is a flowchart showing an example of information processing according to the fifth embodiment. [Diagram 43] FIG. 43 is a flowchart showing an example of the search process according to the fifth embodiment. [Diagram 44] FIG. 44 is a diagram illustrating an example of information used in information processing according to the sixth embodiment. [Diagram 45] FIG. 45 is a diagram showing an example of a case where a residual vector calculation cluster is common to a quantized cluster. [Diagram 46] FIG. 46 is a diagram illustrating an example of information processing according to the sixth embodiment. [Figure 47] FIG. 47 is a diagram illustrating an example of the configuration of an information processing device according to the sixth embodiment. As shown in FIG. [Figure 48] FIG. 48 is a flowchart showing an example of information processing according to the sixth embodiment. [Figure 49] FIG. 49 is a diagram showing another example of generating clusters for residual vector calculation. [Figure 50] FIG. 50 is a diagram showing another example of generating clusters for residual vector calculation. [Figure 51] FIG. 51 is a hardware configuration diagram showing an example of a computer that realizes the functions of the information processing device. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0010] Hereinafter, the information processing device, the information processing method, and the information processing program according to the present application will be described in detail with reference to the drawings. Note that the information processing device, the information processing method, and the information processing program according to the present application are not limited to the embodiments. In addition, the same parts in the following embodiments are denoted by the same reference numerals, and duplicated descriptions are omitted.
[0011] (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 information processing device 100 executes search processing using a graph index (also simply referred to as a "graph") in which a plurality of objects to be the target of data search are graph-structured. FIG. 1 shows a part of search processing in the case where the information processing device 100 performs a neighborhood search using a graph in which nodes corresponding to each vector obtained by vectorizing an object to be searched are connected by edges. The information processing device 100 searches for nodes in the neighborhood of a given search query (vector) by tracing the graph with each node of the graph as an object to be searched. The information processing device 100 extracts a predetermined number of nodes (hereinafter also referred to as "search count") designated as the number of neighboring nodes to be extracted by the search processing as nodes in the neighborhood of the search query. In the following, a case in which image information is the target of data search will be described as an example, but the target of data search may be various objects such as video information and audio information.
[0012] The information processing device 100 performs search processing on nodes corresponding to huge amounts of image information in units of millions to hundreds of millions, but only a portion of them (tens of nodes such as node N1 in FIG. 1) are illustrated in the drawings. For example, the information processing device 100 acquires information on a plurality of nodes (vectors) such as nodes N1, N7, N9, etc., as shown in spatial information SP1 in FIG. 1. When "node N* (* is an arbitrary numerical value)" is written in this way, it indicates that the node is identified by the node ID "N*". For example, when "node N1" is written, the node is identified by the node ID "N1". Each white circle (◯) in the spatial information SP1 indicates a node.
[0013] In the spatial information SP1 in FIG. 1, nodes related to the explanation are mainly labeled, but each of the white circles (◯) not labeled is also a node, and many other nodes are included in addition to the nodes illustrated. Each node corresponds to an object (search target). For example, each of a plurality of 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.
[0014] 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 vector of the object, 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.
[0015] 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 case is shown in which the nodes are connected by undirected (bidirectional) edges (hereinafter also simply referred to as "edges"). Note that the undirected edge here means an edge that allows data to be traced in both directions between the connected nodes. For example, the white circle (◯) representing node N1 and the white circle (◯) representing node N4 are connected by a dotted line, which indicates that the nodes N1 and N4 are connected by an edge. That is, in the graph shown in the spatial information SP1, it is possible to trace between the nodes N1 and N4 in both directions. Specifically, in the spatial information SP1, it is possible to trace from the node N1 to the node N4, and from the node N4 to the node N1.
[0016] In the example of Fig. 1, for convenience of illustration, only edges connecting the illustrated nodes are illustrated, but many edges other than the illustrated edges are included. Thus, in the spatial information SP1 in Fig. 1, only a part of the edges is illustrated, but it is assumed that it is, for example, a k-nearest neighbor graph. Note that the spatial information SP1 may be various graphs.
[0017] In addition, the edges of the graph are not limited to undirected edges, and may be directed edges. In the case of a directed edge, it is possible to trace only from the node that is the reference source of the directed edge to the referenced node. For example, when 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 when the two nodes are connected by an undirected (bidirectional) edge.
[0018] From here, the search process will be described with reference to Fig. 1. In the example of Fig. 1, it is assumed that the information processing device 100 has already acquired a graph GR1 as shown in the spatial information SP1. Note that the information processing device 100 may generate the graph GR1 by appropriately using various conventional techniques. First, prior to the description of the search process, direct product quantization of vectors (space) will be described.
[0019] Fig. 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 illustrated in Fig. 1 are illustrated in a conceptual diagram for explaining the distance between vectors of each node (object), and each of the subspaces AR11 to AR14 is a multidimensional space. For example, the subspace AR11 illustrated in Fig. 1 is illustrated in a two-dimensional form in order to illustrate it on a plane, but it is assumed to be a multidimensional space with, for example, 100 dimensions or 1000 dimensions.
[0020] Each of the subspaces AR11 to AR14 indicates a space corresponding to each division (partial vector) of a vector divided into four. For example, a 100-dimensional vector may be divided into 100. For example, the subspace AR11 indicates a dimensional space (also referred to as a "first subspace") corresponding to the first partial vector (also referred to as a "first subvector") among 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).
[0021] Moreover, the subspace AR12 indicates a space (also referred to as a "second subspace") of a dimension corresponding to the second partial vector (also referred to as a "second subvector") from the top out of the four partial vectors obtained by dividing a vector into four. The subspace AR12 indicates a subspace (second subspace) corresponding to the second divided position from the top of the vector. In the case of the search query QE1, the subspace AR12 is a space corresponding to the second partial query QE1-2, which is the second partial vector (second subvector) from the top.
[0022] Moreover, the subspace AR13 indicates a dimensional space (also referred to as a "third subspace") corresponding to the third partial vector from the top (also referred to as a "third subvector") among the four partial vectors obtained by dividing a vector into four. The subspace AR13 indicates a subspace (third subspace) corresponding to the third division position from the top of the vector. In the case of the search query QE1, the subspace AR13 is a space corresponding to the third partial query QE1-3, which is the third partial vector (third subvector) from the top.
[0023] Moreover, subspace AR14 indicates a dimensional space (also referred to as a "fourth subspace") corresponding to the fourth (i.e., last) partial vector (also referred to as a "fourth subvector") from the top out of the four partial vectors obtained by dividing a vector into four. Subspace AR14 indicates a subspace (fourth subspace) corresponding to the fourth divided position from the top 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 top.
[0024] 1, the partial spaces AR11 to AR14 are shown with similar shapes, but the shapes of the partial spaces AR11 to AR14 may be different, and the division manner of the areas in each of the partial spaces AR11 to AR14 may also be different. Also, the connection relationship by the edges between the nodes is assumed to be common to the partial spaces AR11 to AR14. In other words, the graph GR1 is a graph corresponding to the spatial information SP1, and is common to the partial spaces AR11 to AR14.
[0025] In the example of Fig. 1, a lookup table is generated for each divided partial vector (sub-vector). For example, the first sub-vector, the second sub-vector, the third sub-vector, and the fourth sub-vector are clustered, and a lookup table (codebook information) is generated for each of them.
[0026] In Fig. 1, the first subvectors are clustered into nine groups corresponding to the codebooks CD11 to CD19 as shown in the 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 clustered into a group corresponding to the codebook CD11. In this case, the first subvectors of nodes N7, N9, etc. are vector quantized into vectors of the codebook CD11 using codebook information (also referred to as "first codebook information") corresponding to the first subvectors in distance calculation (calculation).
[0027] Also, the second subvectors are clustered into a plurality of groups corresponding to the codebooks CD21 to CD24 (see Fig. 2 and Fig. 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 (calculation).
[0028] The third subvectors are clustered into a plurality of groups corresponding to the codebooks CD31 to CD34 (see Fig. 2 and Fig. 9), and a vector corresponding to each of the codebooks CD31 to CD34 is calculated as a representative vector (centroid). In this case, the third subvectors of each node are vector quantized into a vector of the corresponding codebook using the codebook information (also called "third codebook information") corresponding to the third subvector in the distance calculation.
[0029] The fourth subvectors are clustered into a plurality of groups corresponding to the codebooks CD41 to CD44 (see Fig. 2 and Fig. 9), and vectors corresponding to each of the codebooks CD24 to CD44 are calculated as representative vectors (centroids). In this case, 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 subvectors in the distance calculation.
[0030] In addition, the generation of the codebook information, such as the process of obtaining the representative vector, is generated by appropriately using various techniques. The generation of the codebook information is a conventional technique, so a detailed description is omitted. In addition, the lookup table is not limited to the above, and for example, one lookup table (codebook information) may be used for the entire divided partial vectors (sub-vectors), but this point will be described later.
[0031] From here, a search process targeting the search query QE1 will be described. First, the information processing device 100 acquires the search query QE1 (step S11). For example, the information processing device 100 acquires the search query QE1 from the terminal device 10 (see FIG. 4) used by the user.
[0032] Then, the information processing device 100 divides the vector that is the search query QE1 into four. That is, the information processing device 100 divides the search query QE1 into four partial queries. In FIG. 1, the information processing device 100 divides the search query QE1 into four sub-vectors: a first partial query QE1-1 that is a first sub-vector, a second partial query QE1-2 that is a second sub-vector, a third partial query QE1-3 that is a third sub-vector, and a fourth partial query QE1-4 that is a fourth sub-vector. Specifically, the information processing device 100 sets "45, 23, 2..." as the first partial query QE1-1, "127, 34, 5..." as the second partial query QE1-2, "20, 98, 110..." as the third partial query QE1-3, and "12, 45, 4..." as the fourth partial query QE1-4.
[0033] Then, the information processing device 100 calculates the distance between each sub-vector of the search query QE1 and the vector in the codebook corresponding to that sub-vector. The information processing device 100 calculates the distance (difference) between each sub-vector of the search query QE1 and each vector in the codebook, as shown in the codebook information TB1 to TB4 in Fig. 2. Fig. 2 is a diagram showing an example of data according to the first embodiment.
[0034] The codebook information TB1 indicates first codebook information corresponding to the first subvector, and the information processing device 100 calculates the distance between each vector of the codebooks CD11 to CD19 corresponding to the first subvector and the first partial query QE1-1. In Fig. 2, the information processing device 100 calculates the distance between the codebook CD11 and the first partial query QE1-1 as distance DS11, as shown in the codebook information TB1. Similarly, the information processing device 100 calculates the distance between each of the codebooks CD12 to CD14, etc., and the first partial query QE1-1 as distance DS12 to DS14, etc.
[0035] 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 information processing device 100 calculates the distance between each of the codebooks CD21 to CD24, etc. and the second partial query QE1-2 as distances DS21 to DS24, etc. As shown in the codebook information TB3, the information processing device 100 calculates the distance between each of the codebooks CD31 to CD34, etc. and the third partial query QE1-3 as distances DS31 to DS34, etc. As shown in the codebook information TB4, the information processing device 100 calculates the distance between each of the codebooks CD41 to CD44, etc. and the fourth partial query QE1-4 as distances DS41 to DS44, etc.
[0036] In FIG. 2, the distances DS11 to DS44 are shown abstractly for the purpose of explanation, but are assumed to be 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 information processing device 100 may calculate the distance between each codebook and the query when the search query QE1 is acquired, or when the information becomes necessary. In the search process, the information processing device 100 uses the codebook information TB1 to TB4 as lookup tables to calculate the distance between each node and the search query QE1, that is, the approximate distance (also referred to as the "first distance"). In this way, when searching a graph in a search process, the information processing device 100 can enable efficient search processing by calculating and processing the approximate distance (first distance) rather than the true distance (also called the "second distance") between each node and the search query.
[0037] The information processing device 100 executes a search process targeting the search query QE1 (step S12). The information processing device 100 performs a search process as shown in Fig. 11 using the graph GR1 targeting the search query QE1, thereby obtaining a search result for the search query QE1. The search process shown in Fig. 11 will be described in detail later. The information processing device 100 performs the search process targeting the search query QE1, thereby extracting nodes of the search number as nodes in the vicinity of the search query QE1.
[0038] In a search process targeting the search query QE1, the information processing device 100 selects a predetermined node from among the nodes as a node (hereinafter also referred to as a "starting node") that is a starting point (starting point) of a search in the graph GR1. For example, the information processing device 100 selects the starting node using a predetermined index such as a tree-structured index. In the example of FIG. 1, it is assumed that the information processing device 100 selects node N7 as the starting node. Note that, for the sake of simplicity of explanation, FIG. 1 shows a case in which only node N7 is selected as the starting node using a predetermined index, but the information processing device 100 may select multiple nodes as the starting node, or may select the starting node by various methods such as randomly.
[0039] Here, in the search processing targeting the search query QE1, the information processing device 100 calculates in parallel the distance between the search query and nodes (hereinafter also referred to as "connecting nodes") connected by edges from one node (step S13). In Fig. 1, as shown in the batch processing information LT1, the information processing device 100 calculates in parallel the distance between the search query QE1 and nodes N9, N12, N54, N85, etc., which are nodes (connecting nodes) connected by edges from node N7.
[0040] 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 that if the codebook size is 16, for example, the variable CD can be 4 bits, and data can be significantly compressed. Therefore, the information processing device 100 calculates the distance between the node N9 and the search query QE1 using the distance DS12 of the codebook CD12, the distance DS23 of the codebook CD23, the distance DS35 of the codebook CD35, and the distance DS47 of the codebook CD47. For example, the information processing device 100 calculates the sum of the distance DS12 of the codebook CD12, the distance DS23 of the codebook CD23, the distance DS35 of the codebook CD35, and the distance DS47 of the codebook CD47 as the distance between the node N9 and the search query QE1.
[0041] For example, as shown in the node information INF2, the first subvector of the node N12 corresponds to the codebook CD14, the second subvector to the codebook CD29, the third subvector to the codebook CD31, and the fourth subvector to the codebook CD45. For example, the information processing device 100 calculates the sum of the distance DS14 of the codebook CD14, the distance DS29 of the codebook CD29, the distance DS31 of the codebook CD31, and the distance DS45 of the codebook CD45 as the distance between the node N12 and the search query QE1. Similarly, the information processing device 100 calculates the distance between the node N54 and the search query QE1 using the node information INF3 of the node N54, and calculates the distance between the node N85 and the search query QE1 using the node information INF4 of the node N85.
[0042] For example, the information processing device 100 collectively calculates the distances between each of the nodes N9, N12, N54, and N85 and the search query QE1 by parallelizing SIMD operations. This allows the information processing device 100 to speed up distance calculations by parallelizing the distance calculations, thereby enabling efficient search processing.
[0043] For ease of explanation, 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 information processing device 100. For example, when the number of nodes that can be collectively processed by the information processing device 100 using SIMD (also called the "unit of collectively processable") is "4", the processing is the same as that shown in FIG. 1. However, when the number of nodes that can be collectively processed by the SIMD (unit of collectively processable) is "16", the information processing device 100 calculates the distances in parallel for 16 nodes. When the unit of collectively processable is "32", the information processing device 100 calculates the distances in parallel for 32 nodes. In this way, the information processing device 100 can perform efficient search processing by collectively calculating the distances of the number of nodes corresponding to the number of nodes that can be collectively processed by SIMD (unit of collectively processable).
[0044] The information processing device 100 performs distance calculations for multiple nodes in parallel as described above, while performing search processing as shown in FIG. 11 using graph GR1 for the search query QE1, thereby extracting nodes in the number of searches as nodes in the vicinity of the search query QE1.
[0045] As described above, the information processing device 100 can perform efficient search processing by calculating the approximate distance (first distance) between the vector of each vector-quantized node and the search query and performing search processing using the first distance. In addition, the information processing device 100 can perform efficient search processing by collectively performing distance calculations for a number of nodes that can be parallelized. As described above, the information processing device 100 can perform high-speed processing by repeatedly using a limited memory area (lookup table) (stored in a memory cache) by collectively calculating the approximate distances between a graph node and multiple connection nodes.
[0046] In addition, in the example of FIG. 1, the information processing device 100 performs a search process using a vector divided by direct product quantization, thereby enabling a more efficient search process compared to a case where a search process is performed without dividing a vector. For example, the information processing device 100 calculates the distance between short vectors by direct product quantization, and can reduce the size of the vector to be the target of distance calculation. In addition, the information processing device 100 can limit the memory space accessed by the lookup table used in distance calculation to the lookup table of the divided subvector. The information processing device 100 can reduce the vector size while suppressing a decrease in search accuracy by direct product quantization. Note that, in FIG. 1, the process when direct product quantization is performed is described, but the case where direct product quantization is performed is merely an example, and the information processing device 100 may perform a search process using a vector that has not been subjected to direct product quantization.
[0047] [1-1-1.Other] The above-described process is merely an example, and the information processing device 100 may perform search processing using various information and methods for efficient search processing. Each aspect of this point will be described in detail below.
[0048] (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: a first storage mode and a second storage mode as described below. Therefore, the storage mode may be selected depending on the usage pattern.
[0049] For example, in the first storage mode, each node may be stored in association with the ID of the connecting node (object), and information on the object quantized by the direct product may be stored in another table. For example, the data storage modes shown in Fig. 7 and Fig. 8 correspond to the first storage mode. In the case of the first storage mode, memory usage can be reduced.
[0050] Also, 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 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 that a decrease in speed can be suppressed.
[0051] (Lookup table) In the above example, the divided sub-vectors are individually clustered and lookup tables (codebook information) are generated for each of them. However, the present invention is not limited to this case, and the lookup tables may take any form.
[0052] For example, all the sub-vectors may be clustered to generate one lookup table. In the above example, for example, all four sub-vectors, the first sub-vector, the second sub-vector, the third sub-vector, and the fourth sub-vector, may be clustered to generate one lookup table.
[0053] Also, individual subvectors may be partially merged to generate a lookup table for each of a plurality of classes. For example, subvectors with similar variances may be merged to form a plurality of classes, and a lookup table may be generated for each of the plurality of classes. In the above example, for example, when 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 a first class, and the second subvector and the fourth subvector may be merged to form a 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.
[0054] (Transpose) The above-mentioned data storage is merely an example, and the information processing device 100 may store data in various modes so as to enable efficient data reference, etc. For example, the information processing device 100 may store transposed data. This point will be described with reference to Fig. 3. Fig. 3 is a diagram showing an example of data according to the first embodiment.
[0055] For example, when data is held as shown in the node information INF1 to INF4 and the node information INF1 to INF4 are processed in sequence, as shown in step S14 of FIG. 2, the codebook information TB1 to TB4, which are lookup tables, are repeatedly referenced.
[0056] Therefore, as shown in step S15, the node information INF1 to INF4 are transposed to generate the transposed data TR1 to TR4. For example, the information processing device 100 transposes the node information INF1 to INF4 to generate the transposed data TR1 to TR4.
[0057] 3, first data TR1 is generated which is a list of codebooks corresponding to the first subvectors of nodes N9, N12, N54, and N85 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, CD14 corresponding to the first subvector of node N12, CD13 corresponding to the first subvector of node N54, and CD18 corresponding to the first subvector of node N85.
[0058] Similarly, second data TR2 is generated which is a list of codebooks corresponding to the second sub-vectors of nodes N9, N12, N54, and N85 among the node information INF1 to INF4. Also, third data TR3 is generated which is a list of codebooks corresponding to the third sub-vectors of nodes N9, N12, N54, and N85 among the node information INF1 to INF4. Fourth data TR4 is generated which is a list of codebooks corresponding to the fourth sub-vectors of nodes N9, N12, N54, and N85 among the node information INF1 to INF4.
[0059] Corresponding information is generated which indicates the correspondence of which data in the list of each of the transposed data TR1 to TR4 corresponds to which node. In the example of Fig. 3, the corresponding information is generated which 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. The information processing device 100 can specify which node each data in the list of each of the transposed data TR1 to TR4 corresponds to by referring to the corresponding information. For example, the information processing device 100 generates the corresponding information.
[0060] The information processing device 100 performs processing using transposed data TR1 to TR4 obtained by transposing the node information INF1 to INF4. For example, when the information processing device 100 refers to a lookup table using the transposed data TR1, the information processing device 100 refers only to the codebook information TB1, i.e., refers to only one piece of codebook information TB1. Similarly, when the information processing device 100 refers to a lookup table using the transposed data TR2, the information processing device 100 refers only to the codebook information TB2, i.e., refers to only one piece of codebook information TB2. Similarly, for the transposed data TR3 and TR4, the information processing device 100 refers to only one piece of codebook information. This allows the information processing device 100 to efficiently refer to data, thereby enabling efficient search processing.
[0061] In this way, by transposing the data of the node's neighboring objects (connecting nodes) and storing the data in the node in the order in which it was compiled by subclass, just as a lookup table for each subclass (subvector, etc.) is referenced when calculating the distance in bulk, the locality of reference is further improved, making it possible to increase speed.
[0062] 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 information processing device 100. For example, when the batch processable unit of the information processing device 100 is "4", the same process as in FIG. 3 is performed, but when the batch processable unit is "16", the transposed data is generated with 16 nodes as one unit. When the batch processable unit is "32", the transposed data is generated with 32 nodes as one unit. In this way, by using the transposed data generated according to the number (batch processable unit) that the information processing device 100 can process collectively by SIMD, the information processing device 100 can efficiently refer to data, thereby enabling efficient search processing.
[0063] For example, most of the time during the above-mentioned search processing 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 speed-up can be achieved. Note that prefetching can be used to reduce the time spent fetching data, but this has limitations.
[0064] Meanwhile, the information processing device 100 can suppress data fetching and achieve further speedup by increasing the locality of reference as described above and enabling efficient data reference.
[0065] (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.
[0066] For example, as a first method, a search number greater than a specified search number may be searched, and at the end of the search, true distance calculation is performed to sort by distance, and the objects of the specified search number may be set as search results. In this case, the information processing device 100 sets the extended search number (also called "second number") as the search number so as to extract nodes of a number (also called "extended search number") greater than the specified search number (also called "first number"), and performs a search process as shown in FIG. 11 to extract the nodes of the extended search number, i.e., nodes of a number greater than the specified search number, as neighboring candidate nodes. Then, the information processing device 100 calculates a second distance (true distance) for the neighboring candidate nodes, and extracts the first number of nodes from the neighboring candidate nodes with the shortest second distance as neighboring nodes of the search query.
[0067] As another example, a second method may involve calculating a second distance (true distance) based on the first distance (approximate distance) during a search only when a node (object) falls within the search range or the search range, and then replacing the approximate distance with the true distance to return search results based on the true distance.
[0068] 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 information processing device 100 calculates the second distance (true distance) of the node when the first distance (approximate distance) of the node is equal to or less than "r". Also, when calculating the second distance (true distance) when the node is within the search range, the information processing device 100 calculates the second distance (true distance) of the node when the first distance (approximate distance) of the node is equal to or less than "r(1+ε)".
[0069] For example, to improve accuracy, the condition may be when the object is within the search range. To speed up processing, the condition may be when the object is within the search range. Note that the above is merely an example, and which of the conditions is to be set may be appropriately set depending on the value of the search range coefficient "ε" and the purpose of processing.
[0070] (Vector Quantization) The information processing device 100 may perform two-stage vector quantization as disclosed in Patent Document 3. Then, the information processing device 100 may calculate the distance between the search query and each node by the following formula (1).
[0071]
number
[0072] 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)" indicates the representative vector (centroid) of "y". For example, when the information processing device 100 does not have vector data of the node for "y" in the above formula (1), it may use the numerical value of the centroid of the partial region to which each node belongs. c (y)" indicates the residual vector. For example, "q p " indicates a predetermined quantizer (function).
[0073] 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 ()" indicates a partial residual vector between the vectors in the parentheses. For example, the information processing device 100 may calculate the squared distance between the query and the node in each subspace by using the above formula (1) and adding up the squared distances between the query and the node.
[0074] [1-2. Configuration of information processing system] As shown in Fig. 4, the information processing system 1 includes a terminal device 10, an information providing device 50, and an information processing device 100. The terminal device 10, the information providing device 50, and the information processing device 100 are connected to each other via a predetermined network N so as to be able to communicate with each other by wire or wirelessly. Fig. 4 is a diagram showing an example of the configuration of the information processing system according to the first embodiment. Note that the information processing system 1 shown in Fig. 4 may include a plurality of terminal devices 10, a plurality of information providing devices 50, and a plurality of information processing devices 100.
[0075] The terminal device 10 is an information processing device used by a user. The terminal device 10 accepts various operations by the user. In the following, the terminal device 10 may be referred to as a user. In other words, in the following, the user can also be read as the terminal device 10. The above-mentioned terminal device 10 is realized, for example, by a smartphone, a tablet terminal, a notebook PC (Personal Computer), a desktop PC, a mobile phone, a PDA (Personal Digital Assistant), or the like.
[0076] The information providing device 50 is an information processing device in which information for providing various information to a user or the like is stored. For example, the information providing device 50 stores an object ID based on character information or the like collected from various external devices such as a web server. For example, the information providing device 50 is an information processing device that provides an image search service to a user or the like. 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 information processing device 100 with vector information corresponding to an image that is a target of the image search service. In addition, the information providing device 50 transmits a query to the information processing device 100, thereby receiving an object ID or the like indicating an image corresponding to the query from the information processing device 100.
[0077] The information processing device 100 is a computer that provides a search service. The information processing device 100 provides a specified number of objects corresponding to a search query as search results. The information processing device 100 provides nodes (objects) in the vicinity of the search query as search results, using a graph in which nodes (objects) to be searched are connected by edges. In a search process in which a group of nodes corresponding to each of a plurality of objects are connected by edges, the information processing device 100 calculates the distance between the search query and a plurality of nodes selected according to a predetermined criterion, using vector information of a plurality of nodes that have been vector quantized.
[0078] For example, when the information processing device 100 receives a query (search query) from the terminal device 10, it searches for a target (object) similar to the search query and provides the terminal device with the search result. For example, the data provided by the information processing device 100 to the terminal device may be the data itself, such as image information, or may be information for referencing corresponding data, such as a uniform resource locator (URL). The search query and the search target (object) may be any type of data, such as image, audio, or text data.
[0079] 1-3. Configuration of information processing device Next, the configuration of the information processing device 100 according to the first embodiment will be described with reference to Fig. 5. Fig. 5 is a diagram showing an example of the configuration of the information processing device 100 according to the first embodiment. As shown in Fig. 5, the information processing device 100 has a communication unit 110, a storage unit 120, and a control unit 130. Note that the information processing device 100 may have an input unit (e.g., a keyboard, a mouse, etc.) that receives various operations from an administrator of the information processing device 100, and a display unit (e.g., a liquid crystal display, etc.) that displays various information.
[0080] (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 terminal device 10 and the information providing device 50.
[0081] (Storage unit 120) The storage unit 120 is realized by, for example, a semiconductor memory element such as a random access memory (RAM) or a flash memory, or a storage device such as a hard disk or an optical disk. As shown in FIG. 5, the storage unit 120 according to the first embodiment has an object information storage unit 121, a graph information storage unit 122, a quantization information storage unit 123, and a codebook information storage unit 124.
[0082] (Object information storage unit 121) The object information storage unit 121 according to the first embodiment stores various information related to objects. For example, the object information storage unit 121 stores an object ID and vector data. Fig. 6 is a diagram showing an example of the object information storage unit according to the first embodiment. The object information storage unit 121 shown in Fig. 6 includes items such as "object ID" and "vector information".
[0083] "Object ID" indicates identification information for identifying an object. "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.
[0084] For example, the example in FIG. 6 indicates that an object (target) identified by an object ID "OB1" is associated with multi-dimensional vector information of "10, 24, 51, 2...".
[0085] Note that the object information storage unit 121 is not limited to the above, and may store various kinds of information according to the purpose.
[0086] (Graph information storage unit 122) The graph information storage unit 122 according to the first embodiment stores various information related to a graph. For example, the graph information storage unit 122 stores a generated graph. FIG. 7 is a diagram illustrating an example of the graph information storage unit according to the first embodiment. The graph information storage unit 122 illustrated in FIG. 7 has items such as "node ID", "object ID", and "connection node information".
[0087] A "node ID" indicates identification information for identifying each node (object) in a graph. An "object ID" indicates identification information for identifying an object. If a node ID and an object ID are the same, the object ID is stored in the "node ID", and the graph information storage unit 122 does not need to include an "object ID" item. For example, if used as an object ID and a node ID, the object ID is stored in the "node ID", and the graph information storage unit 122 does not need to include an "object ID" item.
[0088] Furthermore, "connection node information" indicates information about a node (reference node) 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 FIG. 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, etc.
[0089] 7, a node (node N1) identified by a node ID "N1" corresponds to an object (target) identified by an object ID "OB1." Also, an edge is connected from node N1 to a node (node N4) identified by a node ID "N4," indicating that it is possible to trace from node N1 to node N4.
[0090] It also indicates that a node identified by a node ID "N2" (node N2) corresponds to an object (target) identified by an object ID "OB2." It also indicates that an edge is connected from node N2 to a node identified by a node ID "N6" (node N6), and that it is possible to trace from node N2 to node N6.
[0091] It also indicates that the node identified by the node ID "N7" (node N7) corresponds to the object (target) identified by the object ID "OB7." It also indicates that edges are connected from node N7 to nodes N9, N12, N54, and N85, and that it is possible to trace from node N2 to each of nodes N9, N12, N54, and N85.
[0092] The graph information storage unit 122 is not limited to the above, and may store various information according to the purpose. For example, the graph information storage unit 122 may store the length of an edge connecting each node (vector). That is, the graph information storage unit 122 may store information indicating the distance between each node (vector). The graph information storage unit 122 is not limited to the above, and may store graph information using various data structures.
[0093] 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 assumed 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 so as to extract and output nodes similar to the query in the graph, based on the input query.
[0094] (Quantization information storage unit 123) The quantization information storage unit 123 according to the first embodiment stores various information related to the allocation process. Fig. 8 is a diagram illustrating an example of the quantization information storage unit according to the first embodiment. In the example of Fig. 8, the quantization information storage unit 123 has items such as "node ID", "object ID", and "quantization information".
[0095] "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 information storage unit 123 does not need to include an "object ID" item.
[0096] Also, "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 vector of the corresponding object. In the example of FIG. 8, "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. 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).
[0097] In the example of Fig. 8, the vector of node N9 (object OB9) indicates that the first partial vector of the four divided partial vectors is quantized by a codebook (codebook CD12) identified by a codebook ID "CD12". Also, the vector of node N9 (object OB9) indicates that the second partial vector from the top of the four divided partial vectors is quantized by a codebook (codebook CD23) identified by a codebook ID "CD23".
[0098] 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".
[0099] The quantization information storage unit 123 is not limited to the above, and may store various kinds of information depending on the purpose.
[0100] (Codebook information storage unit 124) The codebook information storage unit 124 according to the first embodiment stores various information related to the codebook. For example, the codebook information storage unit 124 stores a codebook ID and vector information of each codebook. FIG. 9 is a diagram illustrating an example of the codebook information storage unit according to the first embodiment. In the example of FIG. 9, the codebook information storage unit 124 stores a lookup table indicating the correspondence between each codebook and a vector.
[0101] The codebook information storage unit 124 stores codebook information TB1 used to quantize the first partial vector among the partial vectors divided into four, and codebook information TB2 used to quantize the second partial vector from the top among the partial vectors divided into four. The codebook information storage unit 124 also stores codebook information TB3 used to quantize the third partial vector from the top among the partial vectors divided into four, and codebook information TB4 used to quantize the fourth partial vector from the top (i.e., the last) among the partial vectors divided into four, etc.
[0102] In the example of Fig. 9, codebook information TB1 stores codebook information such as a codebook (codebook CD11) identified by a codebook ID "CD11" and a codebook (codebook CD12) identified by a codebook ID "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...".
[0103] The codebook information storage unit 124 may store various kinds of information according to the purpose, not limited to the above. For example, the codebook information storage unit 124 may store information indicating a difference (distance) between each codebook and the search query.
[0104] (Control unit 130) Returning to the explanation of Fig. 5, the control unit 130 is a controller, and is realized, for example, by a central processing unit (CPU), a micro processing unit (MPU), a graphics processing unit (GPU), or the like, by executing various programs (corresponding to an example of an information processing program) stored in a storage device inside the information processing device 100 using a RAM as a working area. The control unit 130 is also a controller, and is realized, for example, by an integrated circuit such as an application specific integrated circuit (ASIC) or a field programmable gate array (FPGA).
[0105] 5, the control unit 130 has an acquisition unit 131, a generation unit 132, a search processing unit 133, and a provision unit 134, and realizes or executes the functions and actions of information processing described below. Note that the internal configuration of the control unit 130 is not limited to the configuration shown in FIG. 5, and may be other configurations as long as they perform the information processing described below.
[0106] (Acquisition part 131) The acquisition unit 131 acquires various information. For example, the acquisition unit 131 acquires various information from the storage unit 120. For example, the acquisition unit 131 acquires various information from the object information storage unit 121, the graph information storage unit 122, the quantization information storage unit 123, the codebook information storage unit 124, etc. In addition, the acquisition unit 131 acquires various information from an external information processing device. The acquisition unit 131 acquires various information from the terminal device 10 and the information providing device 50.
[0107] The acquisition unit 131 acquires a graph. For example, the information processing device 100 may acquire spatial information SP1 in Fig. 1. For example, the information processing device 100 may acquire a graph from an external device such as the information providing device 50.
[0108] The acquisition unit 131 acquires a search query for multiple objects to be subjected to a data search. For example, the acquisition unit 131 acquires information related to a search query QE1. For example, the acquisition unit 131 acquires a search query related to an image search. For example, the acquisition unit 131 acquires a query from the terminal device 10 to be used. For example, the acquisition unit 131 acquires a query from an information providing device 50 that has accepted a query from the terminal device 10 to be used.
[0109] (Generation unit 132) The generating unit 132 generates various information. For example, the generating unit 132 generates various information (data) from information (data) stored in the storage unit 120. For example, the generating unit 132 generates various information from information (data) stored in the object information storage unit 121, the graph information storage unit 122, the quantization information storage unit 123, the codebook information storage unit 124, etc.
[0110] The generating unit 132 may generate a graph as shown in the graph information storage unit 122. For example, the generating unit 132 generates spatial information SP1. The generating unit 132 may also generate information on vector quantization as shown in the quantization information storage unit 123. For example, the generating unit 132 generates information in which each object such as the node N1 (object OB1) is vector quantized. The generating unit 132 may also generate information on a codebook as shown in the codebook information storage unit 124. The generating unit 132 may generate a lookup table of the codebook. For example, the generating unit 132 generates information on a codebook such as codebook information TB1 to TB4. Note that, when the information processing device 100 acquires the information shown in the graph information storage unit 122, the quantization information storage unit 123, and the codebook information storage unit 124 from an external device such as the information providing device 50, the information processing device 100 may not have the generating unit 132.
[0111] (Search processing unit 133) The search processing unit 133 provides a search service related to objects. The search processing unit 133 searches for various information. The search processing unit 133 searches for various information. For example, the search processing unit 133 searches for an object by searching a graph. For example, when a query is acquired by the acquisition unit 131, the search processing unit 133 searches for an object similar to the query by searching a graph. For example, the search processing unit 133 extracts an object similar to the query by searching a graph. For example, the search processing unit 133 extracts an object similar to the query by searching a graph based on a processing procedure as shown in FIG. 11. Note that the information processing device 100 may not have the search processing unit 133 when the information processing device 100 does not provide a search service.
[0112] The search processing unit 133 selects various information in the search process. The search processing unit 133 extracts various information in the search process. The search processing unit 133 judges various information in the search process. The search processing unit 133 determines various information in the search process. The search processing unit 133 changes various information in the search process. The search processing unit 133 updates various information in the search process.
[0113] In a search process for searching for nodes near a search query using a graph in which nodes corresponding to each of a plurality of objects are connected by edges, the search processing unit 133 calculates the distance between the search query and a plurality of nodes selected according to a predetermined criterion using vector information of the plurality of vector-quantized nodes. The search processing unit 133 performs the calculation of the distance between the plurality of nodes and the search query in parallel and in a batch. The search processing unit 133 performs the calculation of the distance between the search query and a plurality of nodes in parallel, the batch processing number of which is determined based on the specifications of the information processing device 100.
[0114] The search processing unit 133 calculates the distance between the search query and the multiple nodes using a codebook associated with the representative vector corresponding to each of the multiple nodes. The search processing unit 133 calculates the distance between the search query and the multiple nodes connected by edges from one node. The search processing unit 133 calculates the distance between the search query and the multiple nodes using node information in which reference information indicating the multiple nodes and the representative vectors associated with each of the multiple nodes is stored in association with one node.
[0115] The search processing unit 133 calculates the distance between the multiple nodes and the search query using vector information of multiple nodes each divided into multiple partial vectors by direct product quantization. The search processing unit 133 calculates the distance between the multiple nodes and the search query using multiple codebooks associated with representative vectors corresponding to vectors for each division position of multiple partial vectors into which each of the multiple nodes is divided. The search processing unit 133 calculates the distance between the multiple nodes and the search query using node information in which reference information indicating the multiple nodes and the representative vectors associated with each of the multiple partial vectors of each of the multiple nodes is stored in association with one node.
[0116] The search processing unit 133 calculates the distance between the multiple nodes and the search query using reference information in which a list of representative vectors corresponding to each of the multiple partial vectors of each node is associated with each of the multiple nodes. The search processing unit 133 calculates the distance between the multiple nodes and the search query using reference information including transposition information in which representative vectors corresponding to each of the multiple partial vectors of each of the multiple nodes are arranged in a list for each division position, and association information indicating the corresponding position of each of the multiple nodes in the list. The search processing unit 133 calculates the distance between the multiple nodes and the search query using a codebook in which each of the multiple partial vectors of each of the multiple nodes is associated with a corresponding representative vector.
[0117] The search processing unit 133 calculates a second distance that is not vector quantized, unlike the first distance that is a vector quantized distance, for a specific node among the nodes that are processed in the search process. The search processing unit 133 extracts a second number of nodes that is greater than the first number of nodes to be extracted as nodes near the search query in the search process as neighboring candidate nodes, and calculates the second distance for the neighboring candidate nodes. The search processing unit 133 extracts the first number of nodes from the neighboring candidate nodes with the shortest second distance as nodes near the search query.
[0118] The search processing unit 133 calculates the second distance for nodes whose first distance is within a predetermined threshold. The search processing unit 133 calculates the second distance for nodes within a search range that indicates a target range to be extracted as nearby nodes. The search processing unit 133 calculates the second distance for nodes within a search range that indicates a target range for the search process.
[0119] (Provider 134) The providing unit 134 provides various information. For example, the providing unit 134 transmits various information to the terminal device 10 or the information providing device 50. For example, the providing unit 134 provides an object ID corresponding to a search query as a search result. The providing unit 134 transmits the search result to the terminal device 10. The providing unit 134 provides the object ID searched for by the search processing unit 133 to the terminal device 10 as the search result corresponding to the search query.
[0120] Furthermore, the providing unit 134 may provide the object ID searched for by the search processing unit 133 to the information providing device 50. For example, the providing unit 134 provides the object ID extracted by the search processing unit 133 through a search to the information providing device 50. The providing unit 134 provides the object ID extracted by the search processing unit 133 to the information providing device 50 as information indicating a vector corresponding to the query.
[0121] [1-4. Information processing flow] Next, a procedure of information processing by the information processing system 1 according to the first embodiment will be described with reference to Fig. 10. Fig. 10 is a flowchart showing an example of information processing according to the first embodiment.
[0122] 10, the information processing device 100 acquires a search query for a plurality of objects to be subjected to a data search (step S101). In the example of FIG. 1, the information processing device 100 acquires a search query QE1.
[0123] Then, 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 in the vicinity of the search query, the information processing device 100 calculates the distance between the search query and a plurality of nodes selected according to a predetermined criterion using vector information of the plurality of vector-quantized nodes (step S102). In the example of Fig. 1, the information processing device 100 calculates the distance between the plurality of nodes N9, N12, N54, and N85 and the search query QE1 using vector information of the plurality of vector-quantized nodes N9, N12, N54, and N85.
[0124] [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. 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 search processing unit 133 of the information processing device 100. Moreover, the object referred to below may be read as a node. Note that, below, the information processing device 100 (search processing unit 133) performs the search process. Note that, when a search service is not provided, the information processing device 100 may not have the search processing unit 133. The search query of the process described below may be an additional node, a target node, an object designated by a user, or the like.
[0125] Here, the neighborhood object set N(G, y) is a set of neighborhood objects associated with the node y by an edge. "G" may be a predetermined graph data (for example, a graph GR1 shown in the spatial information SP1). For example, the information processing device 100 executes a k-nearest neighbor search process.
[0126] For example, the information processing device 100 sets the radius r of the hypersphere to ∞ (infinity) (step S300) and extracts a subset S from an existing object set (step S301). For example, the information processing device 100 may extract an object (node) selected as a root node as the subset S. Also, for example, the hypersphere is a virtual sphere indicating a search range. Note that the objects included in the object set S extracted in step S301 are also included in the initial set of the object set R of the search result at the same time.
[0127] Next, the information processing device 100 extracts an object that is the shortest distance from the search query object y among the objects included in the object set S, and sets the object as object s (step S302). For example, when the object (node) selected as the root node is the only element of S, the information processing device 100 extracts the root node as object s as a result. Next, the information processing device 100 excludes the object s from the object set S (step S303).
[0128] Next, the information processing device 100 judges whether the distance d(s, y) between the object s and the object y exceeds r(1+ε) (step S304). Here, ε is an extension factor, and r(1+ε) is a value indicating the radius of the search range (only nodes within this range are searched for. By making it larger than the search range, the accuracy can be improved). If the distance d(s, y) between the object s and the object y exceeds r(1+ε) (step S304: Yes), the information processing device 100 outputs the object set R as a neighborhood object set of the object y (step S305), and ends the process.
[0129] If the distance d(s, y) between object s and search query object y does not exceed r(1+ε) (step S304: No), the information processing device 100 selects one object that is not included in object set C from among the objects that are elements of the neighborhood object set N(G, s) of object s, and stores the selected object u in object set C (step S306). Object set C is provided for convenience in order to avoid duplicate searches, and is set to an empty set at the start of processing.
[0130] Next, the information processing device 100 determines whether the distance d(u, y) between the object u and the object y is r(1+ε) or less (step S307). If the distance d(u, y) between the object u and the object y is r(1+ε) or less (step S307: Yes), the information processing device 100 adds the object u to the object set S (step S308). If the distance d(u, y) between the object u and the object y is not r(1+ε) or less (step S307: No), the information processing device 100 performs the determination (processing) of step S309.
[0131] Next, the information processing device 100 determines whether the distance d(u, y) between the object u and the object y is equal to or less than r (step S309). If the distance d(u, y) between the object u and the object y exceeds r (step S309: No), the information processing device 100 performs the determination (processing) of step S315. That is, if the distance d(u, y) between the object u and the object y is not equal to or less than r, the information processing device 100 performs the determination (processing) of step S315.
[0132] If the distance d(u, y) between object u and object y is less than or equal to r (step S309: Yes), the information processing device 100 adds object u to object set R (step S310). Then, the information processing device 100 determines whether the number of objects included in object set R exceeds ks (step S311). 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. Also, 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=4. If the number of objects included in object set R does not exceed ks (step S311: No), the information processing device 100 performs the determination (processing) of step S313.
[0133] If the number of objects included in object set R exceeds ks (step S311: Yes), information processing device 100 excludes from object set R the object that is the longest (farthest) distance from object y among the objects included in object set R (step S312).
[0134] Next, the information processing device 100 judges whether the number of objects included in the object set R matches ks (step S313). If the number of objects included in the object set R does not match ks (step S313: No), the information processing device 100 performs the judgment (processing) of step S315. If the number of objects included in the object set R matches ks (step S313: Yes), the information processing device 100 sets the distance between the object y and the object that is the longest (farthest) distance from the object y among the objects included in the object set R to a new r (step S314).
[0135] Then, the information processing device 100 determines whether or not all objects that are elements of the neighborhood object set N(G,s) of the object s have been selected and stored in the object set C (step S315). If all objects that are elements of the neighborhood object set N(G,s) of the object s have not been selected and stored in the object set C (step S315: No), the information processing device 100 returns to step S306 and repeats the process.
[0136] When all objects that are elements of the neighborhood object set N(G,s) of the object s are selected and stored in the object set C (step S315: Yes), the information processing device 100 judges whether the object set S is an empty set (step S316). When the object set S is not an empty set (step S316: No), the information processing device 100 returns to step S302 and repeats the process. Also, when the object set S is an empty set (step S316: Yes), the information processing device 100 outputs the object set R and ends the process (step S317). For example, the information processing device 100 may select an object (node) included in the object set R as a neighborhood node corresponding to the added node (input object y). For example, the information processing device 100 may extract (select) an object (node) included in the object set R as a neighborhood node corresponding to the target node (input object y). Also, for example, the information processing device 100 may provide the object (node) included in the object set R as a search result corresponding to the search query (input object y) to the terminal device or the like that performed the search.
[0137] 2. Second embodiment From here, a second embodiment will be described. In the second embodiment, nearby objects are grouped by clustering or the like, and distance calculation is performed collectively for each group (hereinafter also referred to as "blob"). That is, in the second embodiment, the distance calculation is performed collectively 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 information processing system 1 has an information processing device 100A instead of the information processing device 100.
[0138] [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.
[0139] In the example of Fig. 12, it is assumed that the information processing device 100A has already acquired a graph GR21 as shown in the 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 given based on a diagram in which direct product quantization is not performed, but direct product quantization of vectors (space) may be performed as in Fig. 1.
[0140] First, each piece of information shown in Fig. 12 will be described. The dotted lines connecting the white circles (circles) that are nodes in the spatial information SP21 in Fig. 12 indicate edges that connect the nodes. In Fig. 12, an undirected edge is shown as an example, as in Fig. 1, 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 description will be omitted.
[0141] In the spatial information SP21 in Fig. 12, the areas surrounded by straight lines are obtained by grouping nearby objects together using clustering or the like, and the areas are called blobs. In the example shown below, the blob is the processing unit for the collective distance calculation. Fig. 12 shows a case where the objects are clustered into 10 areas (blobs), blobs BL1 to BL10. For example, blob BL1 is shown to be 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.
[0142] The blobs BL1 to BL10 are generated by appropriately using various methods related to clustering and the like. 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, instead of using the centroids obtained at the center coordinates (average) of each cluster in one iteration (assignment) of k-means in the next iteration. In this case, the centroids of the final clusters obtained by k-means become existing objects, that is, nodes. This increases the tendency for the clusters (blobs) and the edges (neighboring nodes) of each node to match, and the search performance can be further improved.
[0143] In the example of FIG. 12, the information processing device 100A performs search processing using information on a plurality of blobs BL1 to BL10 classified by clustering a plurality of nodes (objects) as shown in spatial information SP21.
[0144] From here, a 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.
[0145] 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, similarly to FIG. 1. Note that the calculation of the distance between the vector of the search query and the vector of the codebook is similar to FIG. 1, FIG. 2, etc., and therefore a detailed description thereof will be omitted.
[0146] 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 a search result for the search query QE2. The search process shown in FIG. 16 will be described in detail later. The information processing device 100A performs the search process targeting the search query QE2, thereby extracting nodes of the search number as nodes in the vicinity of the search query QE2.
[0147] In a search process targeting the search query QE2, the information processing device 100A selects a specific node from among the nodes as a node (starting node) that is a starting point of a search of the graph GR21. In the example of Fig. 12, the information processing device 100A selects node N9 as the starting node. In the example of Fig. 12, the information processing device 100A starts a search process targeting, for example, node N9 as a processing target.
[0148] Here, in the search process for the search query QE2, the information processing device 100A calculates in parallel the distances 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 distances 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.
[0149] 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 FIG. 1, FIG. 2, etc., and therefore a detailed description thereof will be omitted.
[0150] The batch processable unit is determined based on the specifications of the information processing device 100A, as in the case of the information processing device 100. For example, when the number of nodes that the information processing device 100A can process collectively by SIMD (the batch processable unit) is "4", the distance is calculated in parallel for four nodes, as in FIG. 1. For example, the information processing device 100A calculates the distance between each of the nodes N7, N9, N85, and N126 and the search query QE2 collectively by parallelizing the SIMD calculation. In this way, the information processing device 100A can speed up the distance calculation by parallelizing the distance calculation, and can enable efficient search processing. In addition, the information processing device 100A uses the graph GR21 to trace the nodes (for example, nodes N12 and N64) connected by edges from the node N7, and performs a batch distance calculation for the blobs (for example, blobs BL2 and BL3) to which these nodes belong, to perform search processing. In the search process, the information processing device 100A prevents the same blob from being repeatedly subjected to collective distance calculations, as will be described in detail later.
[0151] For simplicity of explanation, 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 point is also the same as in Figs. 1 and 2, and therefore detailed explanation will be omitted. Also, the information processing device 100A may use transposed data as in the example shown in Fig. 3.
[0152] As described above, the information processing device 100A can perform 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. The information processing device 100A can also perform efficient search processing by collectively performing distance calculations for as many nodes as can be parallelized. As described above, the information processing device 100A can perform efficient search processing by collectively calculating blobs as a unit of batch processing.
[0153] In the search process, the information processing device 100A performs the above-mentioned process on the nodes to be processed by tracing the graph GR21, thereby extracting the nodes of the search count as nodes in the vicinity of the search query QE2. For example, like the information processing device 100, the information processing device 100A obtains search results by either the first method or the second method described above.
[0154] The above-mentioned 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 information processing device 100 can process collectively by SIMD (a batch processable unit).
[0155] 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 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 manage whether or not each blob has been processed using the flag. For example, the information processing device 100A may specify a blob to which a node belongs using the table immediately before processing nearby nodes one by one, determine whether or not the blob has been subjected to 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. As a result, the information processing device 100A can prevent duplicated processing.
[0156] 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 storage unit 120A, and a control unit 130A. Note that, in the information processing device 100A, the description of the same points as those of the information processing device 100 will be omitted as appropriate.
[0157] (Storage unit 120A) The storage unit 120A 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. 13, the storage unit 120A according to the second embodiment has an object information storage unit 121, a graph information storage unit 122, a quantization information storage unit 123A, a codebook information storage unit 124, and a blob information storage unit 125.
[0158] (Quantization information storage unit 123A) The quantization information storage unit 123A according to the second embodiment stores various information related to the allocation process. Fig. 14 is a diagram showing an example of the quantization information storage unit according to the second embodiment. In the example of Fig. 14, the quantization information storage unit 123A has items such as "node ID", "object ID", "blob ID", and "quantization information".
[0159] "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 information storage unit 123A does not need to include an "object ID" item.
[0160] "Blob ID" indicates information for identifying the blob to which the node (object) belongs.
[0161] 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 FIG. 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.
[0162] In the example of Fig. 14, node N1 (object OB1) belongs to a blob (blob BL9) identified by a blob ID "BL9". For example, when a vector is divided into four by direct 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, when direct product quantization is not performed, the quantization information of node N1 stores information indicating one codebook for quantizing the vector of node N1.
[0163] The quantization information storage unit 123A is not limited to the above, and may store various kinds of information depending on the purpose.
[0164] (Blob information storage unit 125) The blob information storage unit 125 according to the second embodiment stores information about blobs. For example, the blob information storage unit 125 stores various information for identifying objects associated with each blob. FIG. 15 is a diagram showing an example of the blob information storage unit according to the second embodiment. In the example of FIG. 15, the blob information storage unit 125 includes items such as "blob ID", "node ID", and "vector information".
[0165] "Blob ID" indicates identification information for identifying a blob. Furthermore, "Node ID" indicates a node (object) associated with a blob identified by the blob ID. "Vector information" indicates vector information of a blob. For example, "vector information" indicates a vector corresponding to the centroid of a blob.
[0166] 15, the nodes (objects) associated with the blob (blob BL1) identified by the blob ID "BL1" are nodes N7, N9, N85, N126, etc. The example shows that the blob BL1 is associated with multi-dimensional vector information of "51, 4, 102, 33...".
[0167] It also indicates that the nodes (objects) associated with the blob identified by the blob ID "BL9" (blob BL9) are nodes N1, N4, N5, etc. It also indicates that multi-dimensional vector information of "12, 55, 12, 6..." is associated with blob BL9.
[0168] The blob information storage unit 125 may store various information according to the purpose, without being limited to the above. The blob information storage unit 125 may store a flag indicating whether each blob has become a processing target of distance calculation. For example, the blob information storage unit 125 sets the value of the flag of each blob to either a value indicating that it has not been processed as a target of distance calculation (also called "unprocessed flag value") or a value indicating that it has been processed as a target of distance calculation (also called "processed flag value"). For example, at the start of the search process, the blob information storage unit 125 sets the value of the flag of each blob to a value indicating that the distance calculation for that blob has not been processed (for example, 0), and changes the value of the flag of the blob that has become a target of distance calculation to a value indicating that the distance calculation has been processed (for example, 1).
[0169] For example, the information processing device 100A refers to the flag value of the blob to be processed and determines whether or not to execute the batch distance calculation process for the blob. The information processing device 100A refers to the flag value of each blob, and if the flag value of the blob is an unprocessed flag value, it determines that the blob has not yet been subjected to batch distance calculation and executes batch distance calculation of the nodes belonging to the blob. On the other hand, if the flag value of the blob is a processed flag value, the information processing device 100A determines that the blob has been subjected to batch distance calculation and does not execute batch distance calculation of the nodes belonging to the blob.
[0170] (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.
[0171] 13, control unit 130A has an acquisition unit 131, a generation unit 132A, a search processing unit 133A, and a provision unit 134, and realizes or executes the functions and actions of information processing described below. Note that the internal configuration of control unit 130A is not limited to the configuration shown in FIG. 13, and may be other configurations as long as they perform information processing described below.
[0172] (Generation unit 132A) Similar to the generation unit 132, the generation unit 132A generates various types of information.
[0173] The generating unit 132A may generate information on vector quantization as shown in the quantization information storage unit 123. For example, the generating unit 132 generates information indicating that the node N1 (object OB1) belongs to the blob BL9. The generating unit 132 may also generate information on blobs as shown in the blob information storage unit 125. For example, the generating unit 132 generates information indicating that the nodes N7, N9, N85, N126, etc. belong to the blob BL1. Note that when the information processing device 100 acquires the information indicated in the graph information storage unit 122, the quantization information storage unit 123A, the codebook information storage unit 124, and the blob information storage unit 125 from an external device such as the information providing device 50, the information processing device 100 may not have the generating unit 132A.
[0174] (Search processing unit 133A) Similar to the search processing unit 133, the search processing unit 133A performs various processes related to the search process.
[0175] In a search process for searching for nodes near a search query, the search processing unit 133A uses information on a plurality of blobs into which a plurality of objects are classified, and calculates the distance between the search query and a plurality of nodes belonging to one blob, using vector information of the plurality of vector-quantized nodes. The search processing unit 133A performs the calculation of the distance between the plurality of nodes and the search query in parallel and in a batch. The search processing unit 133A performs the calculation of the distance between the search query and a plurality of nodes in a batch process number determined based on the specifications of the information processing device 100A in parallel.
[0176] The search processing unit 133A calculates the distance between the search query and multiple nodes belonging to one blob adjacent to the blob to which the search query applies. The search processing unit 133A calculates the distance between the multiple nodes and the search query in a search process that searches for nodes near the search query using a graph in which multiple nodes are connected by edges. The search processing unit 133A calculates the distance between the search query and multiple nodes belonging to one blob to which a connecting node connected by an edge from a target node to be processed in the search process belongs.
[0177] The search processing unit 133A calculates the distance between the search query and multiple nodes belonging to one blob other than the blob to which the target node belongs. The search processing unit 133A calculates the distance between the search query and multiple nodes in a search process that searches for nodes near the search query using a blob graph in which each of the multiple nodes is connected to another blob other than the blob to which each of the multiple nodes belongs. The search processing unit 133A calculates the distance between the search query and multiple nodes in a search process that searches for nodes near the search query using a blob graph that is a converted graph generated by connecting an edge from one node to a blob other than the blob to which the one node belongs, which is a blob to which a node connected by an edge from one node belongs in a graph before conversion in which multiple nodes are connected by edges.
[0178] The search processing unit 133A calculates the distance between the search query and multiple nodes belonging to a blob, which is a blob connected by edges from a target node to be processed in the search process. The search processing unit 133A determines whether the blob is to be processed using information indicating a processed blob, which is a blob that has already been processed. If the blob is a processed blob, the search processing unit 133A determines that the blob is not to be processed.
[0179] The search processing unit 133A calculates a second distance that is not vector quantized, unlike the first distance that is a vector quantized distance, for a specific node among the nodes that are processed in the search process. The search processing unit 133A extracts a second number of nodes that is greater than a first number of nodes to be extracted as nodes near the search query in the search process as neighboring candidate nodes, and calculates the second distance for the neighboring candidate nodes. The search processing unit 133A extracts the first number of nodes from the neighboring candidate nodes with the shortest second distance as nodes near the search query.
[0180] The search processing unit 133A calculates the second distance for nodes whose first distance is within a predetermined threshold. The search processing unit 133A calculates the second distance for nodes within a search range that indicates a target range to be extracted as nearby nodes. The search processing unit 133A calculates the second distance for nodes within a search range that indicates a target range for the search process.
[0181] [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 search processing unit 133A of the information processing device 100A. Note that the description of the same points as those in the first embodiment, such as FIG. 11, will be omitted as appropriate. For example, in FIG. 16, the same step numbers are used to denote the same points as those in FIG. 11, and the description will be omitted as appropriate.
[0182] Here, the neighborhood object set N(G, y) is a set of neighborhood objects associated with the node y by an edge. "G" may be a predetermined graph data (for example, a graph GR21 shown in the spatial information SP21). For example, the information processing device 100A executes a k-nearest neighbor search process.
[0183] 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, the distance between the query and the objects (nodes) in that blob is calculated all at once, and each node is processed.
[0184] 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 after "-" 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 objects in the blob at once (first process). Also, in step S304a, the information processing device 100A executes a process of setting a 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). Thereafter, the information processing device 100A performs the processes in and after step S306.
[0185] [2-4. Modifications] 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 information storage unit 122A instead of the graph information storage unit 122.
[0186] [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.
[0187] The information processing device 100A converts the graph GR21 in which nodes are connected by edges into a graph GR31 in which the reference destination of the edge from the node is a blob (step S31). That is, the information processing device 100A generates the graph GR31, which is a graph in which the concept of a blob is introduced (a graph for blobs), from the graph GR21, which is a normal graph, as shown in FIG.
[0188] 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. In the graph GR31, edges between the nodes are deleted, and the 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. That is, 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 to two blobs, blob BL8 and blob BL10, are connected from node N1.
[0189] For example, the information processing device 100A converts the edges of each node from edges to connecting nodes (nearby nodes) to edges to blobs to which the connecting nodes belong. The information processing device 100A does not generate edges to blobs to which each node itself belongs. In the example of FIG. 17, the information processing device 100A does not generate an edge from the node N9 to the blob BL1 and an edge from the node N126 to the blob BL1 because the node N9 and the 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 the node N9 to the blob BL4 and an edge from the node N18 to the blob BL1 because the node N9 and the node N18 belong to different blobs BL1 and BL4.
[0190] 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. The search processing shown in FIG. 19 will be described in detail later. Note that the search processing in FIG. 17 is common to FIG. 12 in that the search processing is performed using the concept of blobs, and is similar to the search processing shown in FIG. 12 except for the processing related to edges.
[0191] [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 information storage unit 122A shown in FIG. 18 stores a graph in which the concept of blobs is introduced (a graph for blobs). The graph information storage unit 122A shown in FIG. 18 has items such as "node ID", "object ID", and "blob information". Thus, the graph information storage unit 122A according to the modified example differs from the graph information storage unit 122 in FIG. 7 in that it has "blob information" instead of "connection node information". Note that the description of the same points as those of the graph information storage unit 122 in FIG. 7 will be omitted as appropriate.
[0192] Furthermore, "blob information" indicates information about a blob (reference blob) that can be traced from a corresponding node. For example, "blob information" includes information such as "reference destination." "Reference destination" indicates information for identifying a reference destination (blob) that is connected by an edge and can be traced from the node. That is, in the example of FIG. 18, a reference destination (blob) that can be traced from the node by an edge is registered in association with a node ID (object ID) that identifies the node. Note that "blob information" may also include information (edge ID) for identifying an edge connected to the reference destination, etc.
[0193] In the example of Figure 18, a node (node N1) identified by a node ID "N1" corresponds to an object (target) identified by an object ID "OB1". Also, an edge is connected from node N1 to a blob (blob BL8) identified by a blob ID "BL8", indicating that blob BL8 can be traced from node N1. Also, an edge is connected from node N1 to a blob (blob BL10) identified by a blob ID "BL10", indicating that blob BL10 can be traced from node N1.
[0194] It also shows that a node identified by a node ID "N2" (node N2) corresponds to an object (target) identified by an object ID "OB2." It also shows that an edge is connected from node N2 to a blob identified by a blob ID "BL5" (blob BL5), and that it is possible to trace from node N1 to blob BL5.
[0195] The graph information storage unit 122A is not limited to the above, and may store various types of information depending on the purpose.
[0196] 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 assumed 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 a node corresponding to vector data similar to the vector data, and outputs the node. For example, the graph GR31 may be data used as a program module that searches for a similar image corresponding to a query image. For example, the graph GR31 causes a computer to function so as to extract and output a node in the graph similar to the query based on the input query.
[0197] [2-4-3. Search processing example] From here, an example of the search process according to the modified example will be described with reference to FIG. 19. FIG. 19 is a flowchart showing an example of the search process according to the modified example. The search process described below is performed by the search processing unit 133A of the information processing device 100A. Note that the description of the same points as those in the first embodiment or the second embodiment, such as FIG. 11 and FIG. 16, will be omitted as appropriate. For example, in FIG. 19, the same step numbers are used to denote the same points as those in FIG. 11, and the description thereof will be omitted as appropriate.
[0198] In FIG. 19, the set N(G,y) is a set of blobs associated with the edge attached to the node y, 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 "neighborhood 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 wording "object" in the process related to the above change to blob is replaced with "blob" as appropriate. "G" may be graph (blob graph) data in which the concept of blob 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.
[0199] For example, in the search process shown in Fig. 19, the process of step S306 is changed from Fig. 11 as follows: In the search process in Fig. 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 collectively, and sets the set to B (also called "set B of objects in target blob") (step S306).
[0200] 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 in and after step S307.
[0201] 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 in the target blob (step S314a).
[0202] If all objects have been selected from the set of objects in the target blob B (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 the set of objects in the target blob B (step S314a: No), the information processing device 100A returns to step S306a and repeats the process.
[0203] [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.
[0204] 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 case where a graph is used as an example of an index will be described below as an example, the index may be any type as long as it searches multiple objects. For example, the index may be an index (hash index) that uses a description related to hash such as a hash table, an index having a tree structure (tree index), etc.
[0205] Also, information indicating an object or a node corresponding to the object (also called "object node") may be described as first information, and information used to classify a plurality of objects may be described as second information. Also, information indicating a blob may be described as third information, and a graph in which object nodes are connected by edges may be described as fourth information. For example, the graph GR21 in FIG. 20 corresponds to the fourth information, in which the object node, node N1, etc., are connected by edges. Also, the graph GR31 in FIG. 17 and the graph GR32 in FIG. 20 are graphs for blobs (also called "group graphs") in which object nodes and blobs are connected by edges, unlike the fourth information. That is, the 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.
[0206] 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 including directed edges from nodes to blobs, as shown in the spatial information SP32.
[0207] 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, performs a connection process on the selected one object, and generates the graph GR32.
[0208] For example, the information processing device 100A performs the following processes (1-1) to (1-4) to generate a graph GR32. Note that an object may be interpreted as a node corresponding to the object.
[0209] (1-1): Get object NX randomly (select) (1-2): Search for k neighboring objects of object NX (1-3): Get the blob that each nearby object belongs to (1-4): Generate edges to the blob obtained from the object NX
[0210] For example, in process (1-1), the information processing device 100A randomly acquires one object NX from a plurality of objects stored in the object information storage unit 121.
[0211] 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 a target (query) to extract k objects as neighboring objects of the object NX.
[0212] For example, in process (1-3), the information processing device 100A refers to the blob information stored in the blob information storage unit 125, and acquires the blob associated with the neighboring object (node) of the object NX.
[0213] 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 a graph GR32 by associating information indicating the acquired blob with the object NX in the quantization information storage unit 123A.
[0214] 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. If the blobs shown in the spatial information SP21 are generated by search, the graph GR32 may be generated by using the search results when the blobs are generated. An example of generating blobs by search will be described later.
[0215] For example, the information processing device 100A performs a search process using a graph GR32 including directed edges from nodes (objects) to blobs as shown in the spatial information SP32. For example, the information processing device 100A performs a search process as shown in Fig. 19 using the graph GR32 for the search query QE2, thereby obtaining search results for the search query QE2.
[0216] In the above example, the blob is generated by clustering, but the blob may be generated by various methods other than clustering. For example, the information processing device 100A may generate information indicating the blob (third information) by using the second information such as an index.
[0217] The information processing device 100A generates third information indicating a blob by using a graph GR21 as an index as shown in Fig. 21. Fig. 21 is a diagram showing an example of a generation process of blob information. Spatial information SP20 in Fig. 21 indicates a state before the information of the blob in the spatial information SP21 is generated, and the graph GR21 in Fig. 21 is a graph similar to the graph GR21 in Fig. 20. Note that the process shown in Fig. 21 shows a part of a first method described later, and the details will be described later.
[0218] For example, the information processing device 100A generates third information that classifies a plurality of objects into a plurality of blobs by a search using the graph GR21. For example, the information processing device 100A selects one node (also called a "processing target node") from a plurality of nodes in the graph GR21, and generates the third information by a classification process that classifies into one group 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. For example, the information processing device 100A selects the processing target node from a plurality of nodes by a predetermined process, performs classification processing on the selected processing target node, and generates the third information.
[0219] 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. A 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 a "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). A method of selecting processing target nodes in descending order of the number of nearby nodes and generating a blob is also referred to as a "second method". Also, for example, the information processing device 100A may randomly select a processing target node. A method of randomly selecting a processing target node and generating third information indicating a blob is also referred to as a "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.
[0220] [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.
[0221] (2-1): Select the node ND with the largest number of neighbors (edges) for each node. (2-2): The neighboring nodes of node ND and node ND are treated as one blob. (2-3): Delete the blob node and its edges.
[0222] For example, the information processing device 100A executes the processes (2-1) to (2-3) in all the nodes.
[0223] For example, in the 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 by using list information of nodes arranged in descending order of the number of neighboring nodes.
[0224] For example, in process (2-2), the information processing device 100A refers to the graph being processed (graph GR21, etc.) and generates information that treats the neighboring nodes of the node ND and the node ND as one blob. Note that the information processing device 100A may treat neighboring nodes equal to or less than a constant K as blobs, rather than treating all neighboring nodes of the node ND as blobs. For example, the information processing device 100A may treat K of the neighboring nodes and the node ND as one blob, rather than treating all neighboring nodes of the node ND together with the node ND as blobs.
[0225] 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 (edge and) 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 a blob and managing nodes to be excluded. For example, the information processing device 100A may manage nodes that already belong to a blob by setting a predetermined flag (deletion flag, etc.) on the node that was set as a blob. In this way, when using a flag, the information processing device 100A refers to the flag of each node during processing to determine whether the node is to be processed.
[0226] A specific example of the above-mentioned first method will be described with reference to Fig. 21. In Fig. 21, the information processing device 100A acquires node N7, which has the maximum number of neighboring nodes (four), from the graph GR21 (step S51). In Fig. 21, node N1 from the 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.
[0227] Then, the information processing device 100A sets the four nodes N9, N12, N54, and N126, which are neighboring nodes of the node N7, and the five nodes of the 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. Then, the information processing device 100A 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 the graph GR21-1 as shown in the spatial information SP20-1.
[0228] Then, the information processing device 100A acquires node N1, which has four neighboring nodes, from the graph GR21 (step S53). Then, the information processing device 100A sets four neighboring nodes of node N1, namely nodes N4, N5, N88, and N99, and five nodes of node N1, as one blob BL12 (step S54). The information processing device 100A generates third information BLT2 indicating that five nodes of nodes N1, N4, N5, N88, and N99 belong to one blob BL12. Then, the information processing device 100A deletes five nodes of nodes N1, N4, N5, N88, and N99 and the edges of each node from the graph GR21-1.
[0229] The information processing device 100A repeats the above-mentioned process until there are no more nodes to be processed, and generates third information indicating a plurality of blobs.
[0230] [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.
[0231] (3-1): Select the node ND with the smallest number of neighbors (edges) for each node. (3-2): The neighboring nodes of node ND and node ND are treated as one blob. (3-3): Delete the blob node and its edges.
[0232] For example, the information processing device 100A executes the processes (3-1) to (3-3) in all the nodes.
[0233] For example, in the 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 by using list information of nodes arranged in ascending order of the number of neighboring nodes.
[0234] For example, in process (3-2), the information processing device 100A refers to the graph (graph GR21, etc.) being processed, and generates information that treats the neighboring nodes of the node ND and the node ND as one blob. Note that the information processing device 100A may treat neighboring nodes equal to or less than a constant K as blobs, rather than treating all neighboring nodes of the node ND as blobs. For example, the information processing device 100A may treat K of the neighboring nodes and the node ND as one blob, rather than treating all neighboring nodes of the node ND together with the node ND as blobs.
[0235] For example, in process (3-3), the information processing device 100A deletes the node that was set 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 set as a blob is a neighboring node of another node, the information processing device 100A deletes the (edge and) node. Note that the second method is similar to the first method except that the order of acquiring nodes is from the node with the smallest number of neighboring nodes (number of edges), and therefore a description of specific examples and the like is omitted. For example, the process (3-3) is not limited to a method of deleting edges and the like as in the first method, 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 already belonging to a blob and managing nodes to be excluded as in the first method.
[0236] [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.
[0237] (4-1): Randomly obtain nodes ND in sequence. (4-2): The neighboring nodes of node ND and node ND are treated as one blob. (4-3): Delete the blob node and its edges
[0238] 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 description thereof will be omitted. For example, the information processing device 100A may execute generation of the third information in a random order (third method) if all the edges are the same.
[0239] [2-4-4-4. 4th method] The above-mentioned 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 generate blobs by searching using a neighborhood search index (index) that searches multiple objects. The method of generating blobs by searching using an index is also referred to as a "fourth method."
[0240] The fourth method will be described below. Note that the same points as those described above will not be described as appropriate. 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 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.
[0241] From here, a case will be described in which the information processing device 100A generates third information indicating a blob by a search using a graph GR21 as an index as shown in Fig. 21. For example, the information processing device 100A performs the following processes (5-1) to (5-4) to generate a graph GR32.
[0242] (5-1): Get object NX at random (select) (5-2): Search for k neighboring objects of object NX (5-3): Neighboring objects of object NX and object NX are treated as one blob (5-4): Execute a process to avoid duplicate processing
[0243] For example, in the process (5-1), the information processing device 100A randomly acquires one object NX from the graph GR21.
[0244] 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 a target (query) to extract k objects as neighboring objects of the object NX. Note that the information processing device 100A may scan (search) all objects to extract neighboring objects of the object NX.
[0245] For example, in the process (5-3), the information processing device 100A generates information regarding the neighboring nodes of the neighboring objects of the object NX and the object NX as one blob.
[0246] For example, in process (5-4), the information processing device 100A executes a process for avoiding duplicate processing so that one 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.
[0247] The information processing device 100A may perform the process for avoiding duplicate processing by any method, as long as one object does not belong to multiple blobs. For example, the information processing device 100A may set a predetermined flag (deletion flag, etc.) on an object that has been made into a blob, thereby preventing an object that already belongs to the blob from being processed. In this way, when using a flag, 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 a search result to generate the above-mentioned group graph, the information processing device 100A may perform the process for avoiding duplicate processing by a method using a flag.
[0248] 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 acquisition unit 131 also performs the following processes. The acquisition unit 131 acquires first information indicating a plurality of objects to be the targets of data search and second information used to classify the plurality of objects. The acquisition unit 131 acquires the second information which is an index for searching a plurality of objects. The acquisition unit 131 acquires the second information which is a graph in which a plurality of nodes corresponding to each of the plurality of objects are connected by edges. The acquisition unit 131 acquires fourth information which is an index for searching a plurality of objects. The acquisition unit 131 acquires the fourth information which is a graph in which a plurality of object nodes corresponding to each of the plurality of objects are connected by edges.
[0249] Furthermore, in the information processing device 100A according to the modified example of the second embodiment, the generating unit 132A also performs the following process. The generating unit 132A uses the second information acquired by the acquiring unit 131 to classify the multiple objects indicated by the first information and generate third information indicating multiple groups used for performing collective processing in search processing targeting the multiple objects. The generating unit 132A uses the second information to generate third information for classifying the multiple objects into multiple groups. The generating unit 132A generates third information for classifying the multiple objects into multiple groups by a search using the second information.
[0250] The generation unit 132A generates third information by a classification process that selects one node from a plurality of nodes in the graph, and classifies into one group the classification target nodes, which are at least some of the neighboring nodes that are nodes connected to the one node by edges, and the object group corresponding to each of the one node. The generation unit 132A generates third information by a classification process that classifies into one group the classification target nodes, which are a predetermined number of the neighboring nodes of the one node, and the object group corresponding to each of the one node. The generation unit 132A generates third information by a classification process that classifies into one group the classification target nodes, which are all of the neighboring nodes of the one node, and the object group corresponding to each of the one node.
[0251] The generating unit 132A generates the third information by a classification process in which a node is selected from the plurality of nodes based on the number of neighboring nodes that are nodes connected to each of the plurality of nodes by an edge, and classifies the classification target node of the node and the object group corresponding to each of the node into one group. The generating unit 132A generates the third information by a classification process in which a node is selected in descending order of the number of neighboring nodes, and classifies the classification target node of the node and the object group corresponding to each of the node into one group. The generating unit 132A generates the third information by a classification process in which a node is selected in descending order of the number of neighboring nodes, and classifies the classification target node of the node and the object group corresponding to each of the node into one group.
[0252] The generating unit 132A randomly selects one node from a plurality of nodes, and generates the third information by a classification process that classifies the classification target node of the one node and the object group corresponding to each of the one node into one group. The generating unit 132A excludes the classification target node of the one node classified into one group and the processed node group that is the one node from the graph, and generates the third information by repeating the classification process using the graph after excluding the processed node group. The generating unit 132A generates the third information by repeating the classification process using the graph after excluding the processed node group until the plurality of objects are classified into one of the groups. The generating unit 132A generates the third information indicating a plurality of groups in which the objects belonging to each group are mutually exclusive.
[0253] The generation unit 132A uses the fourth information to generate a group graph in which edges are connected from an object node, which is a node corresponding to at least some of the objects, to other groups among the multiple groups other than the group to which the object node belongs. The generation unit 132A selects one object from the multiple objects, searches for neighboring objects of the one object among the multiple objects using the fourth information, and generates a group graph by a connection process that connects edges from the one object node corresponding to the one object to other groups to which the neighboring objects belong. The generation unit 132A randomly selects one object from the multiple objects, searches for neighboring objects of the one object, and generates a group graph by a connection process that connects edges from the one object node corresponding to the one object to other groups to which the neighboring objects belong. The generation unit 132A uses the fourth information to generate a group graph.
[0254] [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.
[0255] 22, the information processing device 100A acquires first information indicating a plurality of objects to be subjected to a data search (step S401). For example, the information processing device 100A acquires the first information indicating a plurality of objects from the object information storage unit 121.
[0256] Moreover, the information processing device 100A acquires second information used to classify a plurality of objects (Step S402) For example, the information processing device 100A acquires a graph from the graph information storage unit 122A as the second information.
[0257] Then, the information processing device 100A uses the second information to classify the objects indicated by the first information, and generates third information indicating groups used for performing collective processing in search processing targeting the objects (step S403). For example, the information processing device 100A generates third information indicating multiple blobs whose objects belong to each other and are mutually exclusive.
[0258] 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 (graph for blobs), but the information processing system 1 may use various types of graphs. For example, the information processing system 1 may generate a graph in which groups (blobs) are connected (hereinafter also called a "group connection graph" or "blob connection graph"), different from the object graph and the graph for blobs, and use the blob connection graph for searching.
[0259] This will be described below as the third embodiment. In the third embodiment, the information processing system 1 has an information processing device 100B instead of the information processing device 100 or the information processing device 100A. Note that the description of the same points as those described above in the first and second embodiments will be omitted as appropriate.
[0260] The information processing device 100B uses an 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.
[0261] [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.
[0262] 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 techniques related to graph generation. The graph GR21 is similar to the graph GR21 shown in Fig. 12 and the like, and therefore a description thereof will be omitted.
[0263] The information processing device 100B generates information indicating the blobs BL1 to BL10, etc., by an arbitrary method. The information processing device 100B 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 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 the blobs BL1 to BL10, etc., by any of the first to fourth methods described above.
[0264] 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 (first blob) at the origin of the arrow to the blob (second blob) at the tip of the arrow. That is, 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 the blob BL1 to five blobs, blob BL2, blob BL3, blob BL4, blob BL5, and blob BL8.
[0265] 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-linked graph. Note that the following objects may be read as nodes corresponding to the objects.
[0266] (6-1): Get object NX at random (select) (6-2): Search for k neighboring objects of object NX (6-3): Get the blob that each nearby object belongs to (6-4): Generate an edge from the blob to which the object NX belongs to the obtained blob
[0267] For example, in process (6-1), the information processing device 100B randomly acquires one object NX from a plurality of objects stored in the object information storage unit 121.
[0268] 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 a target (query) to extract k objects as neighboring objects of the object NX.
[0269] For example, in process (6-3), the information processing device 100B refers to the blob information stored in the blob information storage unit 125, and acquires the blob associated with the neighboring object (node) of the object NX.
[0270] 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 of the neighboring objects belong. For example, the information processing device 100B generates a 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 the blob connection graph information storage unit 126 in association with information (blob ID) indicating the blob to which the object NX belongs.
[0271] 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 the blob Y has already been registered as a reference destination of the blob X, even if an object belonging to the blob Y is searched (extracted) again as a neighboring object of the object belonging to the blob X, the information processing device 100B may skip the registration and prevent the same blob from being registered in the reference destination of each blob in a duplicate manner.
[0272] For example, the information processing device 100B performs a search process using a graph GR41 that connects blobs with edges as shown in the spatial information SP41. For example, the information processing device 100B performs a search process as shown in Fig. 27 and Fig. 28 using the graph GR41, which is a blob-connected graph, for the search query QE2, thereby obtaining a search result for the search query QE2.
[0273] The above-mentioned method of generating a blob link graph is merely an example, and the information processing device 100B may generate a blob link graph by various methods. For example, the information processing device 100B may generate a blob link graph without searching a graph. When the blobs shown in the spatial information SP21 are generated by searching, the search results when generating the blobs may be used to generate a blob link graph such as the graph GR41.
[0274] 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 is connected from a node N1 belonging to a blob BL9 to a node N88 belonging to a blob BL8 and a node belonging to a blob BL10, and an edge is connected from a node N4 belonging to a blob BL9 to a node belonging to a blob BL7. Therefore, the information processing device 100B generates a blob connection graph in which edges are connected from the blob BL9 to the three blobs, blob 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.
[0275] 3-2. Configuration of information processing device Next, the configuration of an 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 an information processing device according to the third embodiment. As shown in Fig. 24, the information processing device 100B has a communication unit 110, a storage unit 120B, and a control unit 130B. Note that, in the information processing device 100B, the description of the same points as those of the information processing device 100 or the information processing device 100A will be omitted as appropriate.
[0276] (Storage unit 120B) The storage unit 120B 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. 24, the storage unit 120B according to the third embodiment has an object information storage unit 121, a graph information storage unit 122, a quantization information storage unit 123, a codebook information storage unit 124, a blob information storage unit 125, and a blob connection graph information storage unit 126.
[0277] (Blob connection graph information storage unit 126) The blob connection graph information storage unit 126 according to the third embodiment stores various information related to the blob connection graph. For example, the blob connection graph information storage unit 126 stores the generated blob connection graph. FIG. 25 is a diagram showing an example of the blob connection graph information storage unit according to the third embodiment. The blob connection graph information storage unit 126 shown in FIG. 25 has items such as "blob ID" and "connected blob information".
[0278] "Blob ID" indicates identification information for identifying each blob (group) in the graph. "Connected blob information" indicates information related to blobs (referenced blobs) that can be traced from the corresponding blob. For example, "connected blob information" includes information such as "reference destination." "Reference destination" indicates information for identifying a reference destination (blob) that is connected by an edge and can be traced from the blob. That is, in the example of FIG. 25, a reference destination (blob) that can be traced from the blob by an edge is registered in association 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 destination.
[0279] The example in Figure 25 shows that edges are connected from a blob (blob BL1) identified by a blob ID "BL1" to five blobs identified by 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.
[0280] The blob connection graph information storage unit 126 may store various information according to the purpose, without being limited to the above. The blob connection graph may include a program module that takes a query as an input, searches for an object (object node) by tracing edges in the blob connection graph, and extracts and outputs an object similar to the query. That is, the blob connection graph may be used as a program module that performs search processing using the blob connection graph. For example, the graph GR41, which is a blob connection graph, may be a program that, when vector data is input as a query, extracts an object corresponding to vector data similar to the vector data by the blob connection graph and outputs the object. For example, the graph GR41 may be data used as a program module that searches for a similar image corresponding to a query image. For example, the graph GR41 causes a computer to function so as to extract and output an object similar to the query in the blob connection graph based on the input query.
[0281] (Control unit 130B) Returning to the explanation of Fig. 24, the control unit 130B is a controller, and is realized, for example, by a CPU, MPU, GPU, etc., executing various programs (corresponding to an example of an information processing program) stored in a storage device inside the information processing device 100B using a RAM as a working area. The control unit 130B is also a controller, and is realized, for example, by an integrated circuit such as an ASIC or FPGA.
[0282] 24, the control unit 130B has an acquisition unit 131, a generation unit 132B, a search processing unit 133B, and a provision unit 134, and realizes or executes the functions and actions of information processing described below. Note that the internal configuration of the control unit 130B is not limited to the configuration shown in FIG. 24, and may be other configurations as long as they perform information processing described below.
[0283] The acquisition unit 131 according to the third embodiment acquires blob information indicating a plurality of blobs into which a plurality of objects to be the target of data search are classified, and index information indicating an index for searching the plurality of objects. The acquisition unit 131 acquires index information indicating a graph in which a plurality of nodes corresponding to each of the plurality of objects are connected by edges. The acquisition unit 131 acquires blob information indicating a plurality of blobs into which a plurality of objects are classified by a clustering process. The acquisition unit 131 acquires blob information indicating a plurality of blobs in which objects belonging to each blob are mutually exclusive. The acquisition unit 131 acquires a query.
[0284] (Generation unit 132B) The generating unit 132B generates various types of information in the same manner as the generating unit 132 or the generating unit 132A.
[0285] The generating unit 132B generates a blob connection graph in which an edge is connected from a first blob to which one of the multiple objects belongs to a second blob that is a blob to which a neighboring object of the one object belongs, using the index information acquired by the acquiring unit 131. The generating unit 132B selects one object from the multiple objects, searches for a previous neighboring object of the one object among the multiple objects using the index information, and generates a blob connection graph by connecting an edge from the first blob to which the one object belongs to the second blob to which the neighboring object belongs.
[0286] 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 a graph to generate a blob connection graph in which edges are connected from the first blob to the second blob.
[0287] The generating unit 132B uses the graph to search for nearby objects of one object, and generates a blob connection graph by connecting an edge from a first blob to which the one object belongs to a second blob to which the nearby object belongs. The generating 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 one node corresponding to the one object in the graph.
[0288] 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 blob, a first representative point that is a center point calculated based on an object belonging to the first blob and a second representative point that is a center point calculated based on an object belonging to the second blob with an edge.
[0289] (Search processing unit 133B) The search processing unit 133B performs various processes related to the search process in the same manner as the search processing unit 133 or the search processing unit 133A.
[0290] The search processing unit 133B performs a search process using the blob connection graph generated by the generation unit 132B. The search processing unit 133B performs a search process to search for nearby objects of a search query using the blob connection graph. The search processing unit 133B performs a search process to search for nearby objects of a search query by tracing edges that connect blobs in the blob connection graph.
[0291] In the search process, the search processing unit 133B uses blob information indicating a plurality of blobs to calculate the distance between a target object, which is an object belonging to one blob, and the search query, using vector information of the vector-quantized target object. The search processing unit 133B performs the calculation of the distance between the target object and the search query in parallel and in a batch. The search processing unit 133B performs the calculation of the distance between the search query and the target object of the batch processing number determined based on the specifications of the information processing device in parallel.
[0292] [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.
[0293] 26, the information processing device 100B acquires group information indicating a plurality of groups into which a plurality of objects to be the targets of 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 targets of data search are classified.
[0294] The information processing device 100B acquires index information indicating an index for searching a plurality of objects (step S502). For example, the information processing device 100B acquires, as an index, a graph in which nodes (object nodes) corresponding to a plurality of objects are connected by edges.
[0295] The information processing device 100B uses the index information to generate a group connection graph in which an edge is 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 an edge is 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.
[0296] [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 search processing unit 133B of the information processing device 100B. Note that the description of the same points as those of the search processes described in the first and second embodiments will be omitted as appropriate.
[0297] 27 and 28, N(G,s) and C are a set of blobs (blob set). "G" may be graph data (blob connection graph) in which blobs are connected by edges (for example, graph GR41 shown in spatial information SP41). For example, the information processing device 100B executes a k-nearest neighbor search process.
[0298] 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 an 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 a 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.
[0299] Then, the information processing device 100B executes the determination process (step S603). The information processing device 100B executes the determination process of steps S701 to S717 shown in Fig. 28. The details of the determination process shown in Fig. 28 will be described later.
[0300] Then, the information processing device 100B sets a partial blob set B in the blob set S (step S604).
[0301] The information processing device 100B selects a blob s having 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, when an object that is a query (search query) is y, the information processing device 100B selects a blob s from the blob set S having the shortest query distance to the 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).
[0302] 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.
[0303] If the query distance d of the blob s does not exceed r(1+ε) (step S607: No), the information processing device 100B determines whether the blob s is included in the blob set C (step S609).
[0304] If the blob s is included in the blob set C (step S609: Yes), the information processing device 100B returns to step S605 and repeats the process.
[0305] If the blob s is not included in the blob set C (step S609: No), the information processing device 100B adds the blob s to the blob set C (step S610).
[0306] Then, the information processing device 100B sets a neighborhood blob set N(G,s) of the 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 the blob s. For example, the neighborhood blob set N(G,s) is a set of blobs (neighboring blobs) connected by edges from the blob s. Then, the information processing device 100B 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 the above-mentioned step S603.
[0307] Then, the information processing device 100B judges 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. 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 neighboring 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 neighboring 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).
[0308] From here, a description will be given of the process (determination process) shown in Fig. 28. First, the information processing device 100B sets a partial blob set B in the blob set T (step S701).
[0309] 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 a variable min used in the determination process to ∞ (infinity) (step S703).
[0310] Then, the information processing device 100B acquires one object u from the blob b, and deletes the object u from the blob b (step S704).
[0311] Then, the information processing device 100B determines whether the distance d(u, y) between the object u and the object y is less than min (step S705).
[0312] If the distance d(u, y) between object u and object 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 the process of step S707.
[0313] If the distance d(u, y) between the object u and the 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.
[0314] The information processing device 100B determines whether the distance d(u, y) between the object u and the object y is equal to or less than r(1+ε) (step S707).
[0315] If the distance d(u, y) between object u and object y is equal to or less than r(1+ε) (step S707: Yes), information processing device 100B adds blob b to blob set S (step S708), and performs the process of step S709.
[0316] If the distance d(u, y) between the object u and the object y is not equal to or 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.
[0317] The information processing device 100B determines whether the distance d(u, y) between the object u and the object y is equal to or less than r (step S709).
[0318] If the distance d(u, y) between object u and object y is equal to or less than r (step S709: Yes), information processing device 100B adds object u to object set R (step S710), and performs the process of step S711.
[0319] If the distance d(u, y) between the object u and the object y is not equal to or 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.
[0320] 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.
[0321] 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.
[0322] If the number of objects included in object set R does not exceed ks (step S711: No), information processing device 100B does not perform the process of step S712, but performs the process of step S713.
[0323] Information processing device 100B determines whether the number of objects included in object set R matches ks (Step S713).
[0324] 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.
[0325] If the number of objects included in object set R does not match ks (step S713: No), information processing device 100B does not perform the process of step S714, but performs the process of step S715.
[0326] 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.
[0327] Furthermore, 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 among the distances between all objects of blob b and the query.
[0328] 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.
[0329] If the blob set T is an empty set (step S717: Yes), the determination process ends.
[0330] [3-5. Modifications] The blob connection graph may be configured in various ways without being limited to the above-mentioned examples. For example, the blob connection graph may be a graph in which 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 information storage unit 125A and a blob connection graph information storage unit 126A instead of the blob information storage unit 125 and the blob connection graph information storage unit 126.
[0331] [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.
[0332] In the example of Fig. 29, the information processing device 100B generates a blob connection graph by connecting the centroids of each blob. The information processing device 100B generates a graph GR42, which is a blob connection graph by connecting 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 the graph GR42 by appropriately using various conventional techniques related to graph generation.
[0333] For example, the information processing device 100B generates a graph GR42 in which the centroid C1 of the blob BL1 is connected by edges to five centroids, namely, the centroid C2 of the blob BL2, the centroid C3 of the blob BL3, the centroid C4 of the blob BL4, the centroid C7 of the blob BL7, and the centroid C8 of the blob BL8. Also, for example, the information processing device 100B generates a graph GR42 in which the centroid C2 of the blob BL2 is connected by edges to three centroids, namely, the centroid C1 of the blob BL1, the centroid C3 of the blob BL3, and the centroid C4 of the blob BL4.
[0334] 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 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. Although the graph GR42 shows an undirected (bidirectional) edge as an example, it may be a directed edge.
[0335] In this way, the information processing device 100B according to the modified example generates a graph of centroids as a blob link graph. Then, the information processing device 100B performs a normal search with the centroids using the generated blob link 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 objects belonging to each blob and use the calculated center point as a representative point.
[0336] In the example of Fig. 29, the information processing device 100B performs a search process 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 a search process as shown in Fig. 27 and Fig. 28 using the graph GR21 for the search query QE2 to obtain a search result for the search query QE2. This is the same as the example described above, and a detailed description will be omitted.
[0337] [3-5-2. Information] Next, an overview of information according 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 according to the modified example. Fig. 31 is a diagram showing an example of a blob connection graph information storage unit according to the modified example.
[0338] First, a blob information storage unit 125A according to a modified example shown in Fig. 30 will be described. The blob information storage unit 125A according to the modified example shown in Fig. 30 includes items such as "blob ID", "node ID", "vector information", and "centroid ID". Thus, the blob information storage unit 125A according to the modified example differs from the blob information storage unit 125 in Fig. 15 in that it includes a "centroid ID". Note that a description of the same points as those of the blob information storage unit 125 in Fig. 15 will be omitted as appropriate.
[0339] "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.
[0340] In the example shown in Figure 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".
[0341] Note that the blob information storage unit 125A is not limited to the above, and may store various kinds of information depending on the purpose.
[0342] Next, a description will be given of a blob connection graph information storage unit 126A according to a modified example shown in Fig. 31. The blob connection graph information storage unit 126A according to the modified example shown in Fig. 30 has items such as "centroid ID" and "connection centroid information". Note that a description of the same points as those in the blob connection graph information storage unit 126 in Fig. 25 will be omitted as appropriate.
[0343] "Centroid ID" indicates identification information for identifying a centroid, which is a representative point of each blob in a graph. "Connected centroid information" indicates information on a centroid (reference centroid) that can be traced from a corresponding centroid. For example, "connected 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 the centroid. That is, in the example of FIG. 31, a centroid ID that identifies a centroid is associated with a reference destination (centroid) that can be traced from the centroid by an edge and is registered. Note that "connected centroid information" may include information (edge ID) for identifying an edge connected to a reference destination, etc.
[0344] 31 shows that edges are connected from a centroid (centroid C1) identified by a centroid ID "C1" to five centroids identified by 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.
[0345] The blob connection graph information storage unit 126A may store various information according to the purpose, without being limited to the above. The blob connection graph may include a program module that takes a query as an input, searches for an object (object node) by tracing edges in the blob connection graph, and extracts and outputs an object similar to the query. That is, the blob connection graph may be used as a program module that performs search processing using the blob connection graph. For example, the graph GR42, which is a blob connection graph, may be a program that, when vector data is input as a query, extracts an object corresponding to vector data similar to the vector data by the blob connection graph and outputs the object. For example, the graph GR42 may be data used as a program module that searches for a similar image corresponding to a query image. For example, the graph GR42 causes a computer to function so as to extract and output an object similar to the query in the blob connection graph based on the input query.
[0346] As described above, in each embodiment and modification, the information processing system 1 executes the following process. For example, the information processing system 1 generates blobs by vector clustering. For example, the information processing system 1 generates a graph index with the centroids of the blobs as nodes.
[0347] For example, the information processing system 1 acquires a certain number of arbitrary vectors and performs clustering by direct product quantization. That is, the information processing system 1 divides the vectors into partial vectors, performs clustering for each partial vector, and generates a codebook.
[0348] For example, the information processing system 1 performs direct product quantization on objects belonging to a blob unit, and generates a transposed index. For example, the information processing system 1 generates a graph (blob graph) including edges from objects to blobs. For example, the information processing system 1 searches for nearby objects using a general direct product quantization method. The general direct product quantization method referred to here may be, for example, calculating the distance between an object and all centroids of a blob, acquiring a certain number of blobs at the top, and then obtaining the distance of an object in the blob by direct product quantization to acquire nearby objects. Note that, as described above, when the information processing system 1 generates a centroid graph, it is possible to search for and acquire a certain number of blobs using the graph. Alternatively, the information processing system 1 may generate a graph (blob connection graph) in which blobs are connected by edges, instead of the graph (blob graph) including edges from objects to blobs described above.
[0349] 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.
[0350] This will be described below as the fourth embodiment. In the fourth embodiment, the information processing system 1 has an information processing device 100C instead of the information processing device 100, the information processing device 100A, or the information processing device 100B. Note that the description of the same points as those described above in the first embodiment, the second embodiment, the third embodiment, etc. will be omitted as appropriate.
[0351] The information processing device 100C generates blob information (first group information) indicating a plurality of blobs that classify a plurality of objects, and cluster information (second group information) indicating clusters that are groups classified differently from the blobs.
[0352] [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 the objects may be classified into blobs after being classified into clusters, which will be described later.
[0353] First, the information processing device 100C generates blob information for classifying 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 for classifying 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 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 by 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 method to fourth method, etc.
[0354] In Fig. 32, the information processing device 100C generates a graph GR41 that is a blob connection graph as shown in the spatial information SP41, but the graph GR41 may not be generated. 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 detailed description is omitted because it is the same as the description in Fig. 23.
[0355] Then, the information processing device 100C generates cluster information for classifying 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 into one of the multiple clusters such as 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 by using an index such as a graph.
[0356] In the example of Fig. 32, the information processing device 100C generates cluster information for classifying blobs BL1 to BL10 into clusters CL1 to CL4. For example, the information processing device 100C classifies blobs BL1 and 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 Figs. 32 and 34 show that the boundaries of blobs are on the boundaries of clusters, they may not coincide depending on the division method, and the space is not necessarily divided by the boundaries depending on the method.
[0357] Furthermore, the information processing device 100C classifies blobs BL2 and BL4 into cluster CL2. That is, the information processing device 100C classifies objects belonging to blob BL2 and objects belonging to blob BL4 into cluster CL2.
[0358] Furthermore, 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.
[0359] Furthermore, the information processing device 100C classifies blobs BL5, BL6, and BL9 into cluster CL4. That is, the information processing device 100C classifies objects belonging to blob BL5, objects belonging to blob BL6, and objects belonging to blob BL9 into cluster CL4.
[0360] For example, the information processing device 100C executes a process related to quantization using the cluster information. The information processing device 100C executes a process related to quantization for a plurality of objects using the cluster information. For example, the information processing device 100C executes quantization for each object belonging to each of the clusters CL1 to CL4, which will be described later.
[0361] As described above, the information processing device 100C generates blob information indicating a plurality of blobs for classifying a plurality of objects to be the target of data search, and cluster information indicating a plurality of clusters for classification different from the plurality of blobs. This allows the information processing device 100C to generate two types of groups for classifying a plurality of objects, and to generate groups for classifying objects.
[0362] [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 mode of process as long as it is capable of generating blob information and cluster information.
[0363] 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 a plurality of clusters by clustering for classifying a plurality of objects into clusters. For example, the information processing device 100C may classify each object into one of clusters CL1 to CL4 by any clustering such as k-means.
[0364] Then, the information processing device 100C may generate blob information indicating 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 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 the cluster CL1 into two blobs. For example, the information processing device 100C may cluster objects belonging to the cluster CL1 by k-means with the number of clusters being 2, divide the cluster CL1, and generate blobs BL1 and BL7.
[0365] For example, the information processing device 100C may generate blobs BL2 and BL4 by dividing cluster CL2 into two blobs. For example, the information processing device 100C may generate blobs BL3, BL8, and BL10 by dividing cluster CL3 into three blobs. For example, the information processing device 100C may generate blobs BL5, BL6, and BL9 by dividing cluster CL4 into three blobs.
[0366] 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 control unit 130B. Note that in the information processing device 100C, explanations of the same points as those of the information processing device 100, the information processing device 100A, or the information processing device 100B will be omitted as appropriate.
[0367] (Storage 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 information storage unit 121, a graph information storage unit 122, a quantization information storage unit 123, a codebook information storage unit 124, a blob information storage unit 125, a blob connection graph information storage unit 126, and a cluster information storage unit 127.
[0368] The cluster information storage unit 127 according to the fourth embodiment stores information on clusters that are the second group. The cluster information storage unit 127 stores information on clusters that are units of quantization. The cluster information storage unit 127 may store identification information (such as a cluster ID) for identifying each cluster in association with information (such as a blob ID) indicating a blob that is the first group and belongs to the cluster. The cluster information storage unit 127 may also store identification information (such as a cluster ID) for identifying each cluster in association with information (such as an object ID) indicating an object that belongs to the cluster. The cluster information storage unit 127 may also store information (such as a base point ID) for identifying a base point such as a centroid of the cluster and its vector in association with the identification information (such as a cluster ID) for identifying each cluster.
[0369] (Control unit 130C) The control unit 130C 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 100C using a RAM as a working area. The control unit 130C is also a controller, and is realized, for example, by an integrated circuit such as an ASIC or an FPGA.
[0370] 33, the control unit 130C has an acquisition unit 131, a generation unit 132C, a search processing unit 133C, and a provision unit 134, and realizes or executes the functions and actions of information processing described below. Note that the internal configuration of the control unit 130C is not limited to the configuration shown in FIG. 33, and may be other configurations as long as they perform information processing described below.
[0371] The acquiring unit 131 according to the fourth embodiment acquires object information indicating a plurality of objects to be subjected to a data search. The acquiring unit 131 acquires index information indicating an index for searching a plurality of objects.
[0372] The acquisition unit 131 acquires processing information indicating a plurality of blobs into which a plurality of objects to be the target of data search are classified, and a plurality of clusters, which are groups classified differently from the plurality of blobs and into which objects belonging to the same blob among the plurality of objects are classified into the same group. The acquisition unit 131 acquires processing information indicating a first number of blobs into which the plurality of objects are classified, and a cluster into which the plurality of objects are classified into a second number smaller than the first number. The acquisition unit 131 acquires processing information indicating a plurality of clusters into which object groups belonging to each of two or more blobs among the plurality of blobs are classified into one cluster.
[0373] The acquisition unit 131 acquires processing information indicating a plurality of blobs used to execute a first process, which is a batch process in a search process targeting a plurality of objects, and acquires processing information indicating a plurality of clusters used to execute a second process, which is a process related to quantization targeting a plurality of objects.
[0374] The acquisition unit 131 acquires processing information in which a plurality of first identification information identifying each of a plurality of blobs is associated with a plurality of second identification information identifying each of a plurality of clusters. The acquisition unit 131 acquires processing information in which one second identification information is associated with two or more first identification information.
[0375] The acquisition unit 131 acquires processing information associated with the first identification information of a blob to which each of the multiple objects belongs. The acquisition unit 131 acquires processing information in which quantized object information obtained by quantizing each of the multiple objects is associated with the first identification information. The acquisition unit 131 acquires processing information in which quantized object information generated by vector quantization, which quantizes each partial vector obtained by dividing a vector corresponding to each of the multiple objects by direct product quantization, is associated with the first identification information. The acquisition unit 131 acquires processing information in which quantized object information generated based on each partial centroid corresponding to each partial area of each centroid corresponding to the quantization is associated with the first identification information. The acquisition unit 131 acquires processing information in which quantized object information generated based on a residual vector generated by each centroid corresponding to the quantization and each partial centroid corresponding to each partial area of each centroid is associated with the first identification information.
[0376] (Generation unit 132C) The generating unit 132C generates various types of information in the same manner as the generating unit 132, the generating unit 132A, or the generating unit 132B.
[0377] Generation unit 132C generates blob information indicating a plurality of blobs into which a plurality of objects are classified, based on the object information acquired by acquisition unit 131. Generation unit 132C generates cluster information indicating a plurality of clusters, which are groups classified differently from the plurality of blobs and which classify, among the plurality of objects, objects belonging to the same blob in the plurality of blobs into the same group.
[0378] Generation unit 132C generates blob information that classifies a plurality of objects into a first number of blobs, and cluster information that classifies a plurality of objects into a second number of clusters that is less than the first number. Generation unit 132C generates cluster information indicating a plurality of clusters in which a group of objects belonging to each of two or more blobs among the plurality of blobs is classified into one cluster.
[0379] The generating unit 132C generates blob information indicating a plurality of blobs used for performing collective processing in search processing targeting a plurality of objects. The generating unit 132C generates blob information indicating a plurality of blobs used for performing collective calculation of distances related to a plurality of objects. The generating unit 132C generates blob information indicating a plurality of blobs used for performing parallel processing of calculation of distances between a search query and an object used in search processing.
[0380] The generation unit 132C generates cluster information indicating a plurality of clusters used for performing processing related to quantization of a plurality of objects. The generation unit 132C generates cluster information indicating a plurality of clusters that are units of quantization. The generation unit 132C generates cluster information indicating a plurality of clusters used for quantizing vectors corresponding to each of a plurality of objects.
[0381] The generation unit 132C classifies the multiple blobs into multiple clusters after classifying the multiple blobs. The generation unit 132C generates blob information indicating the multiple blobs by clustering the multiple objects. The generation unit 132C generates blob information indicating the multiple blobs using index information. The generation unit 132C generates cluster information indicating the multiple clusters using the blob information indicating the blobs. The generation unit 132C generates cluster information indicating the multiple clusters by clustering the multiple blobs.
[0382] The generation unit 132C classifies the multiple blobs after classifying the multiple clusters. The generation unit 132C generates cluster information indicating the multiple clusters by clustering the multiple objects. The generation unit 132C generates blob information indicating the multiple blobs by using the cluster information indicating the clusters. The generation unit 132C divides at least one cluster out of the multiple clusters and generates two or more blobs, thereby generating blob information indicating the multiple blobs. The generation unit 132C generates first group information indicating the multiple first groups by clustering objects belonging to each second group and dividing each second group into two or more first groups.
[0383] (Search processing unit 133C) The search processing unit 133C functions as a processing unit that executes a first process for objects belonging to a blob and a second process for objects belonging to a cluster. The search processing unit 133C performs various processes related to the search process, similar to the search processing unit 133, the search processing unit 133A, or the search processing unit 133B. The search processing unit 133C performs a process using the information generated by the generation unit 132C.
[0384] The search processing unit 133C executes a first process for objects belonging to a blob and a second process for objects belonging to a cluster, using the processing information acquired by the acquisition unit 131. The search processing unit 133C executes the second process for objects belonging to one cluster. The search processing unit 133C executes the first process for objects belonging to one blob.
[0385] The search processing unit 133C executes a first process that collectively calculates the distance for a group of objects belonging to one blob. The search processing unit 133C executes a first process that is a parallel process of calculating the distance between each of the group of objects belonging to one blob and a search query used in the search process.
[0386] The search processing unit 133C executes a second process on the group of objects belonging to one cluster. The search processing unit 133C executes a second process, which is quantization, on the group of objects belonging to one cluster. The search processing unit 133C executes a second process of quantizing vectors corresponding to each of the group of objects belonging to one cluster.
[0387] When two or more blobs belong to one cluster, the search processing unit 133C executes the second process on the object group belonging to the two or more blobs. When two or more blobs belong to one cluster, the search processing unit 133C executes quantization on all objects belonging to the two or more blobs.
[0388] The search processing unit 133C executes the first process and the second process by referring to the processing information. The search processing unit 133C identifies an object to be processed by referring to the processing information. In a search process targeting a plurality of objects, the search processing unit 133C performs the first process on a blob of one first identification information among two or more first identification information, generates reference information to be referenced in the search process for a cluster of one second identification information, and then performs the first process on another blob of another first identification information other than the one first identification information among the two or more first identification information, without generating reference information.
[0389] The search processing unit 133C performs a search process using the blob connection graph. The search processing unit 133C performs a search process to search for nearby objects of a search query using the blob connection graph. The search processing unit 133C performs a search process to search for nearby objects of a search query by tracing edges that connect blobs in the blob connection graph.
[0390] In the search process, the search processing unit 133C uses blob information indicating a plurality of blobs to calculate the distance between a target object, which is an object belonging to one blob, and the search query, using vector information of the vector-quantized target object. The search processing unit 133C performs the calculation of the distance between the target object and the search query in parallel and in a batch. The search processing unit 133C performs the calculation of the distance between the search query and the target object of the batch processing number determined based on the specifications of the information processing device in parallel.
[0391] The search processing unit 133C uses the blob connection graph to perform search processing by the processing shown in Figures 27 and 28. For example, the search processing unit 133C performs search processing by using graph GR41 that connects blobs with edges as shown in spatial information SP51. For example, the search processing unit 133C obtains search results for search query QE3 by performing search processing as shown in Figures 27 and 28 using graph GR41, which is a blob connection graph, for search query QE3. For example, the search processing unit 133C performs a first process on the blob that is the processing target by tracing the blob connection graph.
[0392] When reference information has not been generated for a cluster to which the blob to be processed belongs, the search processing unit 133C generates reference information. For example, the search processing unit 133C generates a distance lookup table (LUT) as reference information. For example, the search processing unit 133C generates a distance lookup table for each cluster in the search process. That is, the search processing unit 133C generates a distance lookup table for each cluster, not for each blob, in the search process. This allows the information processing device 100C to suppress an increase in search time.
[0393] The search processing unit 133C uses the generated reference information to perform distance calculations on objects belonging to the blob to be processed all at once. For example, if reference information has already been generated for the cluster to which the blob to be processed belongs, the search processing unit 133C does not generate reference information. Then, the search processing unit 133C uses the already generated reference information to perform distance calculations on objects belonging to the blob to be processed all at once.
[0394] [4-3. Examples of processing and information] Next, examples of the processing and information used in the processing in the fourth embodiment will be described.
[0395] First, the concept of quantization will be described with reference to Fig. 34. Fig. 34 is a conceptual diagram of quantization according to the fourth embodiment.
[0396] For example, base point CL1 indicates a base point used for quantization of cluster CL1. In this case, base point CL1 indicates a centroid of cluster CL1 including blobs BL1 and BL7. Also, for example, base point CL2 indicates a base point used for quantization of cluster CL2. In this case, base point CL2 indicates a centroid of cluster CL2 including blobs BL2 and BL4.
[0397] For example, base point CL3 indicates a base point used for quantization of cluster CL3. In this case, base point CL3 indicates a centroid of cluster CL3 including blobs BL3, BL8, and BL10. Also, for example, base point CL4 indicates a base point used for quantization of cluster CL4. In this case, base point CL4 indicates a centroid of cluster CL4 including blobs BL5, BL6, and BL9.
[0398] In this case, the information processing device 100C obtains a residual vector in each of the four clusters CL1 to CL4. Then, the information processing device 100C performs quantization using the residual vector obtained 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 an object belonging to the cluster CL1. Although a detailed description of the quantization using the residual vector will be omitted, the information processing device 100C performs quantization using the residual vector by appropriately using, for example, a technique shown in Patent Document 3.
[0399] In addition, in order to explain using the figure, 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 direct 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 direct product quantization, there is a base point for each partial space corresponding to each partial vector, and quantization is performed using a residual vector from the base point.
[0400] Hereinafter, an example of quantization of an object and processing by the quantization performed 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 a search query QE3 will be described as an example. Note that, in the quantization and direct product quantization of an object (vector) described below, detailed description of the same points as those disclosed in Patent Document 3 will be omitted as appropriate.
[0401] 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 the cluster CL1 such as the node N7 is different, but the information processing device 100C does not use the vector corresponding to each object belonging to the cluster CL1 such as the 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 the cluster CL1. That is, the vector corresponding to each object belonging to the cluster CL1 is quantized to a vector corresponding to the base point CL1. Specifically, the information processing device 100C obtains a residual vector that 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).
[0402] 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.
[0403] 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 techniques 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.
[0404] 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, thereby enabling 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.
[0405] 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, the search query QE3. Therefore, the information processing device 100C can set the distance between, for example, the search query QE3 and each object to the distance to the partial centroid that is closer than the base point of the cluster.
[0406] The information processing device 100C may divide the vector of each object into a plurality of 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 the same as in the first embodiment described above, and therefore a duplicated description will be omitted as appropriate.
[0407] For example, in the case of FIG. 34, the information processing device 100C divides the vector of the search query QE3 into a plurality of partial vectors (also referred to as "partial vectors of the search query QE3"). In this case, the spatial information SP52 is also divided into a plurality of subspaces (also referred to as "subspaces of the spatial information SP52"). For example, the information processing device 100C may divide the vector of the 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 a plurality of subspaces.
[0408] For example, the information processing device 100C stores information indicating a partial centroid (codebook) corresponding to an area to which each object belongs in the four partial spaces 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.
[0409] Next, an overview of an inverted index will be described with reference to Fig. 35 and Fig. 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.
[0410] 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", "quantized object number", "quantized object #1", "quantized object #2", "quantized object #3", and "quantized object #4". Note that Fig. 35 illustrates four objects, "quantized object #1" to "quantized object #4", but the transposed index IND1 includes items such as "quantized object #5", "quantized object #6", and the like, the number of which corresponds to the number of objects belonging to each blob.
[0411] "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. "Quantized object #1" to "Quantized object #4" indicate quantized objects. For example, "Quantized object #1" to "Quantized object #4" store a list of information indicating the codebook corresponding to each partial vector after the objects are product quantized.
[0412] 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. In addition, for a blob with blob ID "1", "quantization object #1" stores "4, 2, 8, 10", indicating that the object is composed of four partial vectors, which are quantized with codebooks "4", "2", "8", and "10", respectively. For example, for an object corresponding to "quantization object #1" with blob ID "1", it indicates that, of the four divided partial vectors, the first partial vector is quantized with codebook "4", the second partial vector is quantized with codebook "2", the third partial vector is quantized with codebook "8", and the last partial vector is quantized with codebook "10".
[0413] 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.
[0414] 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 those of 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", "quantized object number", "quantized object #1", etc. Note that, although only "quantized object #1" is illustrated in FIG. 36, the number of items included corresponds to the number of objects belonging to each blob, similar to the transposed index IND1.
[0415] In the transposed index IND2, as in 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 with the cluster ID "CL1". Also, it is 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.
[0416] In addition, blob BL1 indicates that "quantized object #1" stores "CD51, CD64, CD77, CD82", and that the object is composed of four partial vectors and is quantized using the codebooks "CD51", "CD64", "CD77", and "CD82", respectively.
[0417] Also, in the transposed index IND2, like 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". Also, in the transposed index IND2, like 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".
[0418] The transposed index IND2 may store various information according to the purpose, without being limited to the above. 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 with 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 thereof will be omitted as appropriate since it is similar to the processing in the conventional technology such as Patent Document 3.
[0419] [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.
[0420] 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 a plurality of objects to be subjected to data search (step S601). For example, the information processing device 100C acquires object information indicating a plurality of objects from the object information storage unit 121.
[0421] 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.
[0422] 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 objects belonging to the same first group among the plurality of objects 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. The information processing device 100C may generate cluster information indicating clusters in one-to-one correspondence with blobs.
[0423] 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 blob information stored in the blob information storage unit 125 and cluster information stored in the cluster information storage unit 127 as processing information. For example, the information processing device 100C acquires the transposed index IND1 or the transposed index IND2.
[0424] The information processing device 100C executes a first process for objects belonging to the first group and a second process for objects belonging to the second group using the processing information (step S702). For example, the information processing device 100C executes a batch process for objects belonging to a blob and executes quantization for objects belonging to a cluster.
[0425] 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 information processing system 1 has an information processing device 100D instead of the information processing device 100, the information processing device 100A, the information processing device 100B, or the information processing device 100C. Note that the same points as those described above in the first embodiment, the second embodiment, the third embodiment, the fourth embodiment, and the like will not be described as appropriate. For example, the blob BL* (* is an arbitrary number) in the following description is a group obtained by grouping objects similarly to the above-mentioned blob BL* (* is an arbitrary number), and therefore a detailed description thereof will be omitted. In addition, the centroid C* (* is an arbitrary number) in the following description is similar to the above-mentioned centroid C* (* is an arbitrary number), and therefore a detailed description thereof will be omitted. In the following description, cluster CL* (* is an arbitrary number) is a cluster for classifying blobs in the same manner as cluster CL* (* is an arbitrary number) described above, and therefore a detailed description thereof will be omitted.
[0426] In addition, in Fig. 39 and Fig. 40, the representation manner is the same as that in Fig. 32, except that the distinction between clusters is indicated by a solid thick line and the connection between blobs is indicated by a dotted line connecting the centroids C of the blobs BL. For example, among the solid lines, the thick lines indicate the division correspondence of the clusters and blobs, and the thin lines indicate the division correspondence of the blobs. For example, among the solid lines, the thin lines indicate the division correspondence of the blobs in the clusters. Also, in Fig. 39 and Fig. 40, the centroids CN11 to CN14 indicate the centroids of each of the clusters CL11 to CL14. The cluster CL11 includes three blobs BL, BL11, BL12, and BL13. The blob BL11 includes nodes N31, N205, etc. The 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 part of the clusters CL, blobs BL, and nodes N to be processed include many more clusters CL, blobs BL, and nodes N than those shown. Also, the symbols of 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).
[0427] The information processing device 100D executes a search process using a blob graph, which is a group connection graph in which a plurality of groups into which a plurality of objects to be searched for data are classified are connected by edges. The information processing device 100D also executes a search process using a range corresponding to a search for a blob, which is a group (hereinafter also referred to as a "first search range") and a range corresponding to a search for a plurality of objects (hereinafter also referred to as a "second search range"). In this way, the information processing device 100D extracts nearby objects corresponding to the search query from the plurality of objects.
[0428] [5-1. Information Processing] First, an overview of 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 information processing according to the fifth embodiment. Specifically, Fig. 39 shows an overall overview of search processing executed by the information processing device 100D. Also, Fig. 40 shows changes in the first search range and the second search range in the search processing executed by the information processing device 100D. Thus, Figs. 39 and 40 explain the changes in the first search range and the second search range and an overview of the search processing, and a specific flow of the search processing is shown in Fig. 43.
[0429] The graph GR61 shown in the spatial information SP61 in FIG. 39 is a blob graph connecting blobs, similar to the graph GR41 shown in the spatial information SP51 in FIG. 32. For example, the dotted line (edge) connecting the centroids C of the blobs BL in the graph GR61 is synonymous with the arrow line (edge) connecting the blobs BL to each other in the graph GR41. The graph GR61 in FIG. 39 illustrates a portion of the blobs BL11 to BL20. For example, the information processing device 100D may generate information indicating the blobs BL11 to BL10, etc., by the above-mentioned method, or may obtain information indicating the blobs BL11 to BL10, etc., from another device. Note that the spatial information SP61-1 to SP61-4 in FIG. 40 are given different reference numerals for convenience of explanation of the changes in the first search range and the second search range, but are the same as the spatial information SP61 in FIG. 39, and may be described as the spatial information SP61 when explanation is made without distinction.
[0430] The graph GR61 may be in a state where the graph GR41 shows the parts of the blobs BL11 to BL20. In this case, the spatial information SP51 and the spatial information SP61 are for the same objects, and the graph GR61 and the graph GR41 show different parts of the same graph. For example, the graph GR41 in FIG. 32 may show the parts of the blobs BL1 to BL10, and the graph GR61 may show the parts of the blobs BL11 to BL20. The graph GR61 may be a graph in which the centroids of the blobs are connected, as in the graph GR42 in FIG. 29. That is, the graph GR61 may be a graph in which the blobs are connected in any manner, as long as the search process described later can be executed.
[0431] Fig. 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 referred to as the "number of nearby objects to be 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 Fig. 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 processing.
[0432] 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 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 the blob search ranges SB1, SB2, and SB3 are described without distinction, they may be referred to as blob search range SB.
[0433] 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.
[0434] For example, the object search range SO is a second search range defined by a radius (object search radius) centered on the search query QE11. As indicated by the two-dot chain arrow in FIG. 39, the object search range SO becomes smaller in range (radius) as the search process progresses, but this point will be described later with reference to FIG. 40. Note that the 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 differentiated from each other, they may be referred to as the object search range SO.
[0435] First, the information processing device 100D starts the search process from the state shown in the space information SP61-1. Then, as shown in the space information SP61-2, the information processing device 100D determines the blob search range SB to be the blob search range SB1, and determines the object search range SO to be infinity "∞". That is, in FIG. 40, the information processing device 100D determines the blob search range SB to be the blob search range SB1 defined by a radius based on the distance between the nearest blob BL20 and the search query QE11. Also, in FIG. 40, the information processing device 100D extracts three of the nodes N2, N6, and N8 to which the blob BL20 belongs (objects corresponding to the nodes N2, N6, and N8), as candidates for nearby objects corresponding to the search query QE11, and adds them to the nearby object candidates. Note that there are three nearby object candidates, which is less than or equal to "5" in the nearby object extraction number, so the object search range SO is maintained at infinity "∞".
[0436] Then, as shown in the spatial information SP61-3, the information processing device 100D determines the blob search range SB to be the blob search range SB2, and determines the object search range SO to be the object search range SO1. That is, in FIG. 40, the information processing device 100D determines the blob search range SB to be the blob search range SB2, which is defined by a radius based on the distance between the search query QE11 and the blob BL11 that is the next closest to the blob BL20. Also, in FIG. 40, the information processing device 100D extracts three nodes (objects corresponding to each of the nodes N31, N205, and N312 to which the blob BL11 belongs) as candidates for nearby objects corresponding to the search query QE11, and adds them to the nearby object candidates. As a result, the nearby object candidates include six nodes N2, N6, N8, N31, N205, and N312, which exceeds the nearby object extraction number "5". Therefore, the information processing device 100D leaves five of the nearby object candidates closest to the search query QE11 and excludes the rest. In this case, the information processing device 100D excludes node N312, which is the farthest from the search query QE11, among the six nodes, and sets the number of nearby object candidates to five. That is, the information processing device 100D sets the number of nearby object candidates to five, namely, nodes N2, N6, N8, N31, and N205. Since the number of nearby object candidates has reached the nearby object extraction number "5", the information processing device 100D determines the object search range SO to be an object search range SO1 defined by a radius based on the distance between the search query QE11 and node N205, which is the farthest from the search query QE11 among the nearby object candidates.
[0437] Then, as shown in the spatial information SP61-4, the information processing device 100D determines the blob search range SB to be the blob search range SB3, and determines the object search range SO to be the object search range SO2. That is, in FIG. 40, the information processing device 100D determines the blob search range SB to be the blob search range SB3, which is defined by a radius based on the distance between the search query QE11 and the blob BL19, which is the next nearest blob to the blob BL11. Also, in FIG. 40, the information processing device 100D extracts three nodes (objects corresponding to each of the nodes N3, N11, and N114 to which the blob BL19 belongs) as candidates for nearby objects corresponding to the search query QE11, and adds them to the nearby object candidates. As a result, the nearby object candidates include eight nodes N2, N6, N8, N31, N205, N3, N11, and N114, which exceeds the nearby object extraction number "5". Therefore, the information processing device 100D leaves five of the nearby object candidates closest to the search query QE11 and excludes the rest. In this case, the information processing device 100D excludes three nodes N205, N3, and N114 from the farthest distance from the search query QE11, and the number of nearby object candidates becomes five. That is, the information processing device 100D sets the number of nearby object candidates to five, namely, nodes N2, N6, N8, N11, and N31. Then, the information processing device 100D determines the object search range SO to be an object search range SO2 defined by a radius based on the distance between the search query QE11 and the node N11 farthest from the search query QE11 among the nearby object candidates.
[0438] The information processing device 100D repeats the above-mentioned process until the termination criteria #1 to #3 described below are met. For example, when the termination criteria #1 to #3 are met, the information processing device 100D determines that an object included in the nearby object candidates at that point in time is an object nearby the search query QE11. Then, the information processing device 100D provides information indicating the object determined to be an object nearby the search query QE11 to the source of the search request that specified the search query QE11, etc.
[0439] As described above, the information processing device 100D performs search processing using search ranges from multiple perspectives, such as a first search range and a second search range, and can perform flexible search processing using graphs by changing each search range depending on the status of the search processing.
[0440] Here, for example, in the case of a blob graph, the search speed may decrease due to unnecessary blob references in a large blob graph. In addition, in the conventional method of product quantization (PQ), a graph is searched to identify nearby blobs, and then the approximate distance of the identified blobs is calculated, but in this case too, the search speed decreases due to unnecessary blob references.
[0441] On the other hand, the information processing device 100D searches the blob graph and calculates the approximate distance of objects within each blob for which the ranking in order of proximity has been determined, and terminates the search when a specified termination criterion is met, thereby reducing unnecessary object searches.
[0442] 5-2. Configuration of information processing device Next, the configuration of an information processing device 100D according to the fifth embodiment will be described with reference to Fig. 41. Fig. 41 is a diagram showing an example of the configuration of an information processing device according to the fifth embodiment. As shown in Fig. 41, the information processing device 100D has a communication unit 110, a storage unit 120C, and a control unit 130B. Note that in the information processing device 100D, explanations of the same points as those of the information processing device 100, the information processing device 100A, the information processing device 100B, or the information processing device 100C will be omitted as appropriate.
[0443] (Storage 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 information storage unit 121, a graph information storage unit 122, a quantization information storage unit 123, a codebook information storage unit 124, a blob information storage unit 125, a blob connection graph information storage unit 126, and a cluster information storage unit 127.
[0444] (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 information processing device 100D using a RAM as a working area. The control unit 130D is also a controller, and is realized, for example, by an integrated circuit such as an ASIC or an FPGA.
[0445] 41, control unit 130D has acquisition unit 131, generation unit 132C, search processing unit 133D, and provision unit 134, and realizes or executes the functions and actions of information processing described below. Note that the internal configuration of control unit 130D is not limited to the configuration shown in FIG. 41, and may be other configurations as long as they perform information processing described below.
[0446] The acquisition unit 131 according to the fifth embodiment acquires various pieces of information from the storage unit 120C. For example, the acquisition unit 131 according to the fifth embodiment acquires various pieces of information used by the generation unit 132C, similar to the acquisition unit 131 according to the fourth embodiment.
[0447] The acquisition unit 131 acquires a group connection graph in which a plurality of groups into which a plurality of objects to be subjected to data search are classified are connected by edges. The acquisition unit 131 acquires a search query for a plurality of objects.
[0448] (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, similar to the search processing unit 133, the search processing unit 133A, the search processing unit 133B, or the search processing unit 133BC. The search processing unit 133D performs a process using information stored in the storage unit 120C. The search processing unit 133D performs a process using information generated by the generation unit 132C.
[0449] The search processor 133D executes a search process to extract nearby objects corresponding to a search query from the multiple objects by searching the group connection graph using a first search range indicating a range corresponding to a search for multiple groups and a second search range indicating a range corresponding to a search for multiple objects. The search processor 133D executes the search process using the first search range and the second search range that is wider than the first search range.
[0450] 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 group that is the target of the search process among multiple groups. 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 objects included in one group, or a centroid of one group.
[0451] The search processing unit 133D executes the search process using a second search range that narrows as the search process proceeds. 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 object from the search query among objects extracted as candidates for nearby objects corresponding to the search query during the search process. The search processing unit 133D executes the search process using the second search range based on the distance between the search query and the one object.
[0452] The search processing unit 133D ends the search process when a predetermined end condition is satisfied. The search processing unit 133D ends the search process when the number of groups targeted by the search process satisfies 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.
[0453] The search processing unit 133D ends the search process when the distance for the predetermined group exceeds the second search range. The search processing unit 133D ends the search process when the distance for the predetermined 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 predetermined group exceeds the second search range.
[0454] The search processing unit 133D ends the search process when 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 when the first search range exceeds the second search range.
[0455] [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.
[0456] 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 information processing device 100D acquires a group connection graph in which a plurality of groups into which a plurality of objects to be the subject of data search are classified are connected by edges (step S801). For example, the information processing device 100D acquires a blob connection graph from the blob connection graph information storage unit 126 as the group connection graph.
[0457] The information processing device 100D acquires a search query for a plurality of objects (step S802). For example, the information processing device 100D acquires the search query from the terminal device 10 (see FIG. 4) used by the user.
[0458] The information processing device 100D executes a search process to extract nearby objects corresponding to the search query from the plurality of objects by searching the group connection graph using a first search range indicating a range corresponding to a search of a plurality of groups and a second search range indicating a range corresponding to a search of a plurality of objects (step S803). For example, the information processing device 100D executes the search process shown in FIG. 43 using a blob search range that is the first search range and an object search range that is the second search range.
[0459] [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 information processing device 100D. Note that the description of the same points as those of the search processes described in the first, second, third and fourth embodiments will be omitted as appropriate.
[0460] The information processing device 100D acquires a search blob starting set, and calculates the distance between each object and the query (step S901). For example, the information processing device 100D acquires a search blob starting set indicating a blob that is the starting point of the search, and calculates the distance between each object included in the blob of the search blob starting set and the query. For example, the information processing device 100D may randomly select the search blob starting set, or may select the search blob starting set using a predetermined index, such as an index of a tree structure with blobs as leaves. For example, the information processing device 100D calculates the approximate distance between each object included in the blob of the search blob starting set and the query by the above-mentioned calculation of the approximate distance.
[0461] The information processing device 100D determines the nearest blob of the query in the search blob starting set as the current nearest blob B (hereinafter, simply referred to as "blob B") (step S902). For example, the information processing device 100D determines the blob that is closest to the query in the search blob starting set as the current nearest blob B.
[0462] The information processing device 100D sets various parameters (step S903). In FIG. 43, the information processing device 100D sets the number of blob searches to "1". Furthermore, the information processing device 100D sets the object search radius R indicating the second search range (object search range) to "∞ (infinity)". For example, the object search radius R is a radius centered on the query q that defines the second search range. Furthermore, the information processing device 100D sets the object search radius E, which is an example of the second search range, to "∞ (infinity)".
[0463] Moreover, the information processing device 100D sets the blob search radius Rb, which is an example of the first search range (blob search range), to "d(q,B)". For example, the blob search radius Rb is a radius centered on the query q that defines the first search range. For example, the information processing device 100D sets the blob search radius Rb to the distance d(q,B) between the query q and the current nearest blob B. For example, the information processing device 100D sets the blob search radius Rb to the distance d(q,B) between the query q and the object closest to the query q among the objects included in the current nearest blob B. Note that the blob search radius Rb may be the distance between the query q and the centroid of the current nearest blob B. Moreover, the information processing device 100D sets the blob search radius Eb, which indicates the first search range (blob search range), to "Rb×(1+eb)". Here, the parameter eb is a blob search radius expansion rate (also called the "first search range coefficient"), and is set to an arbitrary value such as 0.1. For example, the information processing device 100D sets the blob search radius Eb to a value obtained by multiplying the blob search radius Rb by 1+eb.
[0464] The information processing device 100D adds the search blob origin set other than blob B to the excluded blob set (step S904). For example, the information processing device 100D adds blobs other than the current nearest blob B from the search blob origin set to the excluded blob set.
[0465] The information processing device 100D adds the search blob starting set to the unsearched blob set and the distance-calculated set (step S905). For example, the information processing device 100D adds all blobs including the current nearest blob B in the search blob starting set to the unsearched blob set indicating that they have not yet been subjected to search processing. For example, the information processing device 100D adds all blobs including the current nearest blob B in the search blob starting set to the distance-calculated set indicating that distance calculation processing has been performed for the objects in the blobs.
[0466] The information processing device 100D determines whether the unsearched blob set is empty (step S906). If the unsearched blob set is not empty (step S906: No), the information processing device 100D acquires a blob T that is closest to the query from the unsearched blob set (step S907). As a result, the unsearched blob set is removed from the unsearched blob set. For example, the information processing device 100D acquires, as a blob T, a blob that has the shortest distance from the query q among the unsearched blob set. For example, the distance from the query q is the distance between the query q and the object that is closest to the query q among the objects included in the blob. Note that the distance from the query q may be the distance between the query q and the centroid of the blob.
[0467] The information processing device 100D determines whether the blob T is within the blob search range (step S908). For example, the information processing device 100D determines whether the distance between the blob T and the query q is equal to or less than the blob search radius Eb.
[0468] When blob T is within the blob search range (step S908: Yes), the information processing device 100D determines whether all blobs connected to blob T by edges have been processed (step S909). For example, the information processing device 100D determines whether all connected blobs of blob T have been processed using information ("processing presence / absence information") indicating whether blobs connected to blob T by edges (also called "connecting blobs") have been processed. For example, the information processing device 100D may manage whether connected blobs of blob T have been processed by information such as a flag. For example, the information processing device 100D may update the processing presence / absence information stored in the storage unit 120C according to the processing status, and may determine whether all connected blobs of blob T have been processed by referring to the processing presence / absence information in the storage unit 120C.
[0469] When all blobs connected to blob T by edges have not been processed (step S909: No), the information processing device 100D acquires blob J connected to blob T by an edge (step S910). For example, the information processing device 100D acquires, as blob J, a blob that is connected to blob T by an edge and that has not been processed as a blob connected to blob T by an edge (also referred to as an "unprocessed connected blob"). For example, the information processing device 100D refers to the processing presence / absence information, acquires, as blob J, an unprocessed connected blob among the blobs connected to blob T by an edge, and updates the processing presence / absence information for the blob acquired as blob J to processed.
[0470] The information processing device 100D determines whether or not the blob J exists in the distance-calculated set (step S911). If the blob J exists in the distance-calculated set (step S911: Yes), the information processing device 100D returns to step S909 and performs the process.
[0471] If the blob J does not exist in the distance-calculated set (step S911: No), the information processing device 100D adds the blob J to the distance-calculated set (step S912) and adds the blob J to the unsearched blob set (step S913). Then, the information processing device 100D calculates the distance De between the centroid of the blob J and the query (step S914).
[0472] The information processing device 100D determines whether the distance De is smaller than the blob search radius Rb (step S915). If the distance De is not smaller than the blob search radius Rb (step S915: No), the information processing device 100D adds the blob J to the excluded blob set (step S916) and returns to step S909 to perform the process.
[0473] Furthermore, if the distance De is smaller than the blob search radius Rb (step S915: Yes), the information processing device 100D adds the current nearest blob B to the excluded blob set, and sets blob J as the current nearest blob B (step S917). In this way, if the distance De is smaller than the blob search radius Rb, the information processing device 100D updates the current nearest blob B to blob J.
[0474] Then, the information processing device 100D updates the parameters related to the blob based on the current nearest blob B updated to blob J (step S918). In FIG. 43, the information processing device 100D updates the blob search radius Rb to "d(q,B)" based on the current nearest blob B updated to blob J. Also, the information processing device 100D updates the blob search radius Eb to "Rb×(1+eb)" based on the updated blob search radius Rb. Then, the information processing device 100D returns to step S909 and performs processing.
[0475] When the information processing device 100D has processed all blobs connected by edges of blob T (step S909: Yes), it returns to step S906 and performs the process. When the unsearched blob set is empty (step S906: Yes), the information processing device 100D performs the process of step S920. When blob T is not within the blob search range (step S908: No), the information processing device 100D returns blob T to an unsearched blob (step S919) and performs the process of step S920.
[0476] In step S920, the information processing device 100D adds 1 to the blob search count (step S920). Then, the information processing device 100D calculates the approximate distances of all objects in blob B, and sets the shortest distance as the blob distance of the blob B (step S921). For example, the information processing device 100D calculates the approximate distance between query q and all objects in blob B, and sets the distance between query q and the object closest to query q among the objects included in the current nearest blob B as the blob distance of blob B. Note that the blob distance of blob B is used in the end determination process in step S924.
[0477] The information processing device 100D adds and sorts all objects in blob B to the search result set, and sets only those with the highest specified search count as the search result set (step S922). For example, the information processing device 100D adds all objects in blob B to the search result set that indicates candidates for objects in the vicinity of query q. Then, the information processing device 100D updates the search result set by sorting the objects in the search result set after adding the objects in blob B in order of the shortest distance from query q, and excludes objects in the updated search result set that are lower than the specified search count (e.g., 5, 10, etc.) from the search result set. For example, the information processing device 100D leaves the objects in the search result set after adding the objects in blob B from the objects with the shortest distance from query q up to the search count (e.g., 5, 10, etc.) (i.e., objects in the number of searches) and excludes the rest.
[0478] Then, the information processing device 100D updates the parameters related to the object based on the updated search result set (step S923). In FIG. 43, the information processing device 100D updates the object search radius R to the maximum distance of the object in the search result set based on the updated search result set. For example, the information processing device 100D updates the object search radius R to the distance of the object farthest from the query q in the search result set. Also, the information processing device 100D sets the object search radius E to "R×(1+eo)" based on the updated search result set. Here, the parameter eo is an object search radius expansion rate (also called "second search range coefficient"), and an arbitrary value such as 0.05 is set. For example, the parameter eo corresponds to the above-mentioned search range coefficient "ε". For example, the information processing device 100D sets the object search radius E to a value obtained by multiplying the object search radius R by 1+eo. The parameters eo and eb may be the same value.
[0479] Then, the information processing device 100D determines whether the termination criteria #1 to #3 are met (step S924). The information processing device 100D determines whether the processing status meets any of the termination criteria #1 to #3 based on each termination condition. Termination criterion #1 is to terminate the process when the upper limit number of blob searches is exceeded. For example, termination criterion #1 is a criterion that is conditioned on the number of blob searches, which is a parameter, exceeding the upper limit number of searches (for example, any value such as 5, 10, etc.).
[0480] Termination criterion #2 is to terminate the process when the blob distance exceeds the search radius of the object. For example, termination criterion #2 is a criterion that requires that the blob distance exceeds the object search radius E. Termination criterion #3 is to terminate the process when the blob search radius exceeds the object search radius. For example, termination criterion #3 is a criterion that requires that the blob search radius Eb exceeds the object search radius E. Note that the above termination criteria #1 to #3 are merely examples, and various termination criteria may be used. Furthermore, multiple termination criteria may be used in combination.
[0481] If the termination criteria #1 to #3 are not met (step S924: No), the information processing device 100D acquires the blob with the shortest distance from the excluded blob set, and sets it as the current nearest blob B (step S925). For example, the information processing device 100D acquires the blob with the shortest distance to the query q from the excluded blob set as the current nearest blob B. This removes the blob with the shortest distance at that time from the excluded blob set. For example, the information processing device 100D updates the current nearest blob B to the blob with the shortest distance to the query q from the excluded blob set.
[0482] Then, the information processing device 100D updates the parameters related to the blob based on the current nearest blob B that has been updated to the blob with the shortest distance (step S926). In FIG. 43, the information processing device 100D updates the blob search radius Rb to "d(q,B)" based on the current nearest blob B that has been updated to the blob with the shortest distance. Also, the information processing device 100D updates the blob search radius Eb to "Rb×(1+eb)" based on the updated blob search radius Rb. Then, the information processing device 100D returns to step S906 and performs processing.
[0483] Furthermore, if the termination criteria #1 to #3 are met (step S924: Yes), the information processing device 100D ends the process. For example, if the termination criteria #1 to #3 are met, the information processing device 100D determines that the objects included in the search result set at that point in time are objects in the vicinity of query q. Then, the information processing device 100D provides information indicating the objects determined to be objects in the vicinity of query q to the source of the search that specified query q, etc.
[0484] 6. Sixth Embodiment In the above example, a case where one cluster group (plurality of quantized clusters such as clusters CL1 to CL4 in FIG. 34) is used as a cluster related to quantization has been shown, but the cluster related to quantization is not limited to one cluster group, and plural cluster groups may be used. For example, the information processing device 100E according to the sixth embodiment may generate cluster information indicating a plurality of residual vector calculation clusters (also referred to as "third groups"), which are a plurality of clusters for classifying objects belonging to a quantized cluster (second group), and each of which is a cluster for calculating a residual vector. That is, the information processing device 100E may generate a cluster for calculating a residual vector (residual vector calculation cluster) separately from the quantized cluster. In this case, the residual vector calculation cluster is a cluster that serves as a processing unit for calculating a residual vector among the processes related to quantization, and the quantized cluster is a cluster that serves as a processing unit for processes other than the calculation of a residual vector among the processes related to quantization. For example, the quantized cluster may be a cluster that serves as a processing unit for at least one of direct product quantization, lookup table, and the like.
[0485] This will be described below as the sixth embodiment. In the sixth embodiment, the information processing system 1 has an information processing device 100E instead of the information processing device 100, the information processing device 100A, the information processing device 100B, the information processing device 100C, or the information processing device 100D. Note that the description of the same points as those described above in the first embodiment, the second embodiment, the third embodiment, the fourth embodiment, the fifth embodiment, and the like will be omitted as appropriate.
[0486] The information processing device 100E generates residual vector calculation cluster information (also referred to as "third group") indicating a plurality of residual vector calculation clusters (third group) for classifying objects belonging to a quantization cluster (second group) including at least a part of the plurality of objects. In the following, a case is shown in which cluster information including blob information (first group information) indicating clustering (classification) of blobs (first group) is generated, but the cluster information generated by the information processing device 100E may not include information on blobs. That is, the information processing device 100E may generate cluster information for data that does not include information on blobs (first group). In this way, the information processing device 100E may generate information on any target as long as it generates cluster information including a quantization cluster (second group) and a residual vector calculation cluster (third group).
[0487] [6-1. Information Processing] First, an overview of information processing according to the sixth embodiment will be described with reference to Figs. 44 to 46. Fig. 44 is a diagram showing an example of information used in information processing according to the sixth embodiment. Fig. 45 is a diagram showing an example of a case where a residual vector calculation cluster is common to a quantization cluster. Fig. 46 is a diagram showing an example of information processing according to the sixth embodiment. Note that Figs. 44 to 46 conceptually show objects, centroids, etc. to explain the overview of information processing according to the sixth embodiment, and the positions of objects, centroids, etc. do not show accurate positions.
[0488] Hereinafter, a processing example will be described taking as an example a case where information corresponding to the spatial information SP71 shown in Fig. 44 is acquired. Note that the information processing device 100E may receive information corresponding to the spatial information SP71 from an external device that provides information corresponding to the spatial information SP71. Also, the information processing device 100E may generate information corresponding to the spatial information SP71 by the same process as the information processing device 100C according to the fourth embodiment.
[0489] Prior to the description of information processing by the information processing device 100E, the illustrated aspect of FIG. 44 will be briefly described. FIG. 44 illustrates a state in which objects in each quantized cluster (second group) are further clustered (classified) and clustered into a plurality of blobs (first group). In FIG. 44, the distinction between quantized clusters and the distinction between blobs in each quantized cluster are indicated by solid lines. Note that in FIG. 44, illustration of a group connection graph (blob graph) connecting blobs is omitted. Also, in FIG. 44, six quantized clusters CL are shown, but since the process is described mainly with reference to the quantized cluster CL23, illustration of clustering (division) in five quantized clusters CL, ie, quantized clusters CL21, CL22, CL24 to CL26 other than the quantized cluster CL23 is omitted. Note that when the quantized clusters CL21 to CL26 are described without any particular distinction, they may be referred to as "quantized clusters CL".
[0490] In Fig. 44, quantized cluster CL23 includes ten blobs BL, blobs BL21 to BL30. That is, objects in quantized cluster CL23, which is the second group, are clustered into one of the ten first groups, blobs BL21 to BL30. In Fig. 44, centroids C21 to C30 indicate the centroids of the blobs BL21 to BL30. When the centroids of the blobs BL are not distinguished from one another, they are referred to as "centroid C."
[0491] Fig. 44 shows a state in which nodes N2, N5, N8, N77, N96, N119, N418, N615, etc. are clustered into quantized cluster CL23, and these nodes N are further clustered into any of blobs BL21 to BL30. In this way, Fig. 44 shows a case in which hierarchical clustering (also called "hierarchical clustering") has been performed in which the quantized clusters are further classified into blobs, but in the hierarchical clustering, the blobs may be further classified into quantized clusters, which will be described later.
[0492] For example, Fig. 44 shows a state in which nodes N8 etc. are clustered to blob BL23, nodes N77 etc. are clustered to blob BL26, and nodes N5 etc. are clustered to blob BL27. Fig. 44 also shows a state in which nodes N96, N119, N418, N615 etc. are clustered to blob BL28, and nodes N2 etc. are clustered to blob BL29. Note that the blobs BL, clusters CL, nodes N etc. shown in Fig. 44 are only a partial list, and the spatial information SP71 includes many more blobs BL, clusters CL, and nodes N in addition to those shown in the figure.
[0493] Hereinafter, a case where the quantization cluster and the residual vector calculation cluster are common and a case where they are separate will be described based on information corresponding to the spatial information SP71 shown in FIG.
[0494] [6-1-1. Example of common case] First, a case where the quantization cluster and the residual vector calculation cluster are common will be described with reference to Fig. 45. Fig. 45 is a diagram showing a comparative example with the information processing by the information processing device 100E shown in Fig. 46 etc. Note that the description of the same points as Fig. 44 will be omitted as appropriate.
[0495] For example, Fig. 45 is a diagram showing an example in which the quantized cluster and the residual vector calculation cluster are the same. That is, the example shown in Fig. 45 shows a case in which the centroid CN of the quantized cluster CL is used to calculate the residual vector. Thus, Fig. 45 shows a case in which the quantized cluster CL is used as the residual vector calculation cluster, that is, the number of cluster groups related to quantization is one.
[0496] The spatial information SP72 shown in Fig. 45 shows a state in which a bidirectional arrow showing an image of the centroid CL23 of the quantized cluster CL23 and the residual vector is added to the spatial information SP71 shown in Fig. 44. The bidirectional arrow shown in Fig. 45 corresponds to the magnitude of the residual vector. That is, the longer the bidirectional arrow shown in Fig. 45, the larger the residual vector for the node N at one end of the bidirectional arrow.
[0497] In FIG. 45, for a node N in the quantized cluster CL23, the difference (distance) between the centroid CL23 of the quantized cluster CL23 becomes the residual vector. For example, for nodes N77, N615, etc., since they are close to the centroid CL23, the residual vector becomes small even if the centroid CL23 is used. On the other hand, for nodes N2, N5, N8, etc., since they are far from the centroid CL23, the residual vector becomes large when the centroid CL23 is used. For example, when looking at the nodes N of the entire quantized cluster CL23, there are more nodes N farther from the centroid CL23, and there are more nodes N with larger residual vectors. In such a case, it is difficult to suppress a decrease in accuracy regarding the search.
[0498] Therefore, the information processing device 100E, as shown in FIG. 46 and the like, makes it possible to suppress a decrease in accuracy regarding search by generating a residual vector calculation cluster separate from the quantized cluster CL.
[0499] [6-1-2. First Generation Example] From now, a first generation example, which is an example of a process for generating a residual vector calculation cluster other than the quantized cluster CL, will be described with reference to Fig. 46. Note that the same points as those described in Fig. 44 or Fig. 45 will not be described as appropriate.
[0500] For example, Fig. 46 is a diagram showing an example of a case where a blob obtained by further dividing a quantized cluster is used in common with a cluster for residual vector calculation. That is, the example shown in Fig. 45 shows a case where a blob BL is used as a cluster for residual vector calculation. In this way, Fig. 45 shows a case where a blob BL, which is a cluster (group) different from the quantized cluster CL, is used as a cluster for residual vector calculation, that is, a case where there are multiple cluster groups related to quantization.
[0501] The following describes an example of a process in which the information processing device 100E performs clustering from the quantized clusters CL. In this case, the information processing device 100E classifies (clusters) a plurality of objects into the quantized clusters CL. For example, the information processing device 100E classifies each object into one of the quantized clusters CL21 to CL26 by any clustering such as k-means.
[0502] Then, the information processing device 100E divides at least one of the quantized clusters CL to generate two or more blobs BL. For example, the information processing device 100E generates a plurality of blobs BL by dividing each quantized cluster CL by clustering objects belonging to each quantized cluster CL using any clustering such as k-means.
[0503] In Fig. 46, the information processing device 100E generates blobs BL21 to BL30 by dividing the quantized cluster CL23 into 10 blobs BL. For example, the information processing device 100E generates blobs BL21 to BL30 by clustering objects belonging to the quantized cluster CL23 with the number of clusters being 10 using k-means and dividing the quantized cluster CL23. Also, centroids C21 to C30 in Fig. 46 indicate the centroids of the blobs BL21 to BL30. Note that the information processing device 100E also divides quantized clusters CL other than the quantized cluster CL23 into a plurality of blobs BL in a similar manner, but detailed description thereof will be omitted.
[0504] In a first generation example, the information processing device 100E generates cluster information in which a plurality of residual vector calculation clusters and a plurality of blobs match. In Fig. 46, the information processing device 100E generates cluster information in which each of the ten blobs BL in the quantized cluster CL23 is a residual vector calculation cluster. That is, the information processing device 100E generates cluster information in which each of the blobs BL21 to BL30 in the quantized cluster CL23 is a residual vector calculation cluster TG21 to TG30.
[0505] As a result, the information processing device 100E generates ten residual vector calculation clusters TG21-TG30 by further dividing the quantized cluster CL23. In this manner, the information processing device 100E generates ten residual vector calculation clusters TG21-TG30, which are a plurality of clusters for classifying objects belonging to the quantized cluster CL23 and each of which is a cluster for calculating a residual vector. When describing the residual vector calculation clusters TG21-TG30 etc. without making any particular distinction therebetween, they may be referred to as "residual vector calculation clusters TG".
[0506] For example, the information processing device 100E associates the blob BL21 in the quantization cluster CL23 with the residual vector calculation cluster TG21. For example, the information processing device 100E associates a blob ID for identifying the blob BL21 with identification information for identifying the residual vector calculation cluster TG21 (such as a residual vector calculation cluster ID) and stores them in the storage unit 120C. This allows the information processing device 100E to identify the node N belonging to the blob BL21, among the nodes N belonging to the quantization cluster CL23, as the node N belonging to the residual vector calculation cluster TG21.
[0507] Furthermore, the information processing device 100E associates the blob BL22 in the quantized cluster CL23 with the residual vector calculation cluster TG22. Similarly, the information processing device 100E associates the blobs BL23 to BL30 in the quantized cluster CL23 with the residual vector calculation clusters TG23 to TG30, respectively. For example, the information processing device 100E can identify nodes N96, N119, N418, N615, etc. belonging to the blob BL28 as nodes N belonging to the residual vector calculation cluster TG28 by associating the residual vector calculation cluster TG28 with the blob BL28.
[0508] As a result, as shown in Fig. 46, the centroids C21 to C30 of the blobs BL21 to BL30 respectively match the centroids TC21 to TC30 of the residual vector calculation clusters TG21 to TG30 respectively. For example, the centroid C21 of the blob BL21 becomes the centroid TC21 of the residual vector calculation cluster TG21. The centroid C22 of the blob BL22 becomes the centroid TC22 of the residual vector calculation cluster TG22. Similarly, the centroids C23 to C30 of the blobs BL23 to BL30 respectively become the centroids TC23 to TC30 of the residual vector calculation clusters TG23 to TG30 respectively. When the centroids TC21 to TC30 of the residual vector calculation cluster TG are described without any particular distinction, they may be referred to as "centroid TC".
[0509] The spatial information SP73 shown in Fig. 46 shows a state corresponding to the information generated by the process of the first generation example described above. The spatial information SP73 shown in Fig. 46 shows a state in which a centroid TC of the residual vector calculation cluster TG and a bidirectional arrow showing an image of the residual vector are added to the spatial information SP71 shown in Fig. 44. The bidirectional arrow shown in Fig. 46 corresponds to the magnitude of the residual vector. In other words, the longer the bidirectional arrow shown in Fig. 46, the larger the residual vector for the node N at one end of the bidirectional arrow.
[0510] In FIG. 46, for a node N in the quantization cluster CL23, the difference (distance) between the centroid TC of the residual vector calculation cluster TG to which each node N belongs is not the centroid CL23 of the quantization cluster CL23, but the centroid TC of the residual vector calculation cluster TG to which each node N belongs. For example, for a node N8, etc., since it belongs to the residual vector calculation cluster TG23, the difference (distance) between the centroid TC23 of the residual vector calculation cluster TG23 is the residual vector. For example, for a node N77, etc., since it belongs to the residual vector calculation cluster TG26, the difference (distance) between the centroid TC26 of the residual vector calculation cluster TG26 is the residual vector. For example, for nodes N96, N119, N418, N615, etc., since it belongs to the residual vector calculation cluster TG28, the difference (distance) between the centroid TC28 of the residual vector calculation cluster TG28 is the residual vector. As indicated by the bidirectional arrow in FIG. 46, the residual vector can be made smaller by using information on the residual vector calculation cluster TG obtained by further dividing the quantized cluster CL.
[0511] In this way, in the first generation example, by using the information of the residual vector calculation cluster TG generated by the information processing device 100E, the residual vector can be made smaller than when only the quantization cluster CL as shown in FIG. 45 is used as a cluster related to quantization. This allows the information processing device 100E to suppress a decrease in search accuracy. Therefore, the information processing device 100E can appropriately generate a cluster used in a process related to quantization.
[0512] Generally, since a distance lookup table (LUT) is generated for each quantized cluster, if the number of quantized clusters is too large, the speed will decrease, but if the number of quantized clusters is too small, the quantization error will increase. Therefore, as shown in FIG. 46, when a quantized cluster contains multiple blobs, the information processing device 100E calculates a residual vector for each residual vector calculation cluster (blob) using the blob as a residual vector calculation cluster. This allows the information processing device 100E to aggregate the spatial distribution of the residual vector, thereby making it possible to increase accuracy without increasing the number of quantized clusters. Note that the residual vector calculation cluster may be matched to the blob, that is, the residual vector may not be calculated for each blob, but may be calculated for a different unit, as will be described later.
[0513] 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. 47. FIG. 47 is a diagram showing an example of the configuration of an information processing device according to the sixth embodiment. As shown in FIG. 47, the information processing device 100E has a communication unit 110, a storage unit 120C, and a control unit 130E. Note that in the information processing device 100E, explanations of the same points as those of the information processing device 100, the information processing device 100A, the information processing device 100B, the information processing device 100C, or the information processing device 100D will be omitted as appropriate.
[0514] (Storage 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. 47, the storage unit 120C according to the sixth embodiment has an object information storage unit 121, a graph information storage unit 122, a quantization information storage unit 123, a codebook information storage unit 124, a blob information storage unit 125, a blob connection graph information storage unit 126, and a cluster information storage unit 127.
[0515] The storage unit 120C stores various information related to the information processing executed by the information processing device 100E, not limited to the above. For example, the storage unit 120C stores various information generated by the information processing device 100E. For example, the storage unit 120C stores information on the residual vector calculation cluster generated by the information processing device 100E. When the blob and the residual vector calculation cluster are shared, the information processing device 100E may use the information of the blob information storage unit 125 as the information on the residual vector calculation cluster. In this way, the storage unit 120C stores each piece of information according to the information processing executed by the information processing device 100E. For example, the codebook information storage unit 124 according to the sixth embodiment stores information on the codebook corresponding to the information on the residual vector calculation cluster.
[0516] (Control unit 130E) The control unit 130E 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 100E using a RAM as a working area. The control unit 130E is also a controller, and is realized, for example, by an integrated circuit such as an ASIC or an FPGA.
[0517] 47, the control unit 130E has an acquisition unit 131, a generation unit 132E, a search processing unit 133E, and a provision unit 134, and realizes or executes the functions and actions of information processing described below. Note that the internal configuration of the control unit 130E is not limited to the configuration shown in FIG. 47, and may be other configurations as long as they perform information processing described below.
[0518] The acquiring unit 131 according to the sixth embodiment acquires object information indicating a plurality of objects to be the target of a data search. The acquiring unit 131 acquires index information indicating an index for searching a plurality of objects.
[0519] The acquisition unit 131 according to the sixth embodiment acquires various information in the same manner as the acquisition unit 131 according to the first to fifth embodiments. For example, the acquisition unit 131 acquires object information indicating a plurality of objects to be subjected to data search. For example, the acquisition unit 131 acquires index information indicating an index for searching a plurality of objects.
[0520] (Generation unit 132E) The generating unit 132E generates various types of information in the same manner as the generating unit 132, the generating unit 132A, the generating unit 132B, or the generating unit 132C.
[0521] The generation unit 132E generates cluster information indicating a plurality of clusters for classifying objects belonging to a quantization cluster, which is a cluster including at least some of the objects indicated by the object information acquired by the acquisition unit 131, and each of the clusters is a cluster for calculating a residual vector.
[0522] The generation unit 132E divides the quantized cluster and generates two or more residual vector calculation clusters, thereby generating cluster information indicating the multiple residual vector calculation clusters. The generation unit 132E generates cluster information indicating the multiple residual vector calculation clusters by clustering objects belonging to the quantized cluster and dividing the quantized cluster into two or more residual vector calculation clusters.
[0523] The generation unit 132E generates cluster information indicating a plurality of residual vector calculation clusters for classifying objects belonging to a quantization cluster that is a processing unit related to quantization. The generation unit 132E generates cluster information indicating a plurality of residual vector calculation clusters for classifying objects belonging to a quantization cluster that is a processing unit different from the calculation of a residual vector.
[0524] The generation unit 132E generates cluster information indicating a plurality of residual vector calculation clusters for classifying objects belonging to a quantization cluster that is a unit of direct product quantization. The generation unit 132E generates cluster information indicating a plurality of residual vector calculation clusters for classifying objects belonging to a quantization cluster that is a unit of lookup table generation.
[0525] The generating unit 132E generates cluster information indicating a plurality of blobs, which are a plurality of clusters used for collectively calculating at least some distances among a plurality of objects. The generating unit 132E generates cluster information indicating a plurality of blobs for classifying objects belonging to a quantization cluster. The generating unit 132E generates cluster information in which a plurality of residual vector calculation clusters and a plurality of blobs match each other.
[0526] The generating unit 132E generates cluster information in which at least one of the multiple residual vector calculation clusters includes two or more blobs. The generating unit 132E generates cluster information in which at least one of the multiple blobs includes two or more residual vector calculation clusters. The generating unit 132E generates cluster information in which at least one of the multiple blobs includes two or more quantization clusters.
[0527] (Search processing unit 133E) The search processing unit 133E executes search processing using information generated by the generation unit 132E. For example, the search processing unit 133E performs various processes related to search processing similar to the search processing unit 133, the search processing unit 133A, the search processing unit 133B, the search processing unit 133C, or the search processing unit 133D. The search processing unit 133E performs processing using information stored in the storage unit 120C. The search processing unit 133E performs processing using information generated by the generation unit 132E.
[0528] For example, the search processing unit 133E executes a search process to extract nearby objects corresponding to a search query from a plurality of objects using information on residual vectors calculated using information on the residual vector calculation cluster generated by the generation unit 132E. Note that the search process executed by the search processing unit 133E is similar to the search process of the other embodiments described above except for the difference in the calculation of the residual vector, so detailed description will be omitted. For example, the information processing device 100E uses residual vectors when generating and searching an index, but detailed description will be omitted as appropriate because it is similar to the process in the conventional technology such as Patent Document 3.
[0529] The providing unit 134 according to the sixth embodiment provides various information in the same manner as the processing of the providing unit 134 described above. For example, the providing unit 134 according to the sixth embodiment transmits cluster information indicating the residual vector calculation cluster generated by the generating unit 132E to an external device. For example, the providing unit 134 according to the sixth embodiment transmits a result of a search process using the residual vector calculation cluster generated by the generating unit 132E to an external device.
[0530] [6-3. Information processing flow] Next, a procedure of information processing according to the sixth embodiment will be described with reference to Fig. 48. Fig. 48 is a flowchart showing an example of information processing according to the sixth embodiment.
[0531] First, Fig. 48 will be described. For example, Fig. 48 is a flowchart showing an example of a group generation process. As shown in Fig. 48, information processing device 100E acquires object information indicating a plurality of objects to be subjected to data search (step S1001). For example, information processing device 100E acquires object information indicating a plurality of objects from object information storage unit 121.
[0532] The information processing device 100E generates cluster information indicating a plurality of residual vector calculation clusters, each of which is a cluster for calculating a residual vector, which are a plurality of clusters that classify objects belonging to a quantization cluster, which is a cluster that includes at least some of the objects indicated by the object information (step S1002).
[0533] [6-4. Generation example] The above-mentioned first generation example is merely one example of residual vector calculation cluster generation, and the information processing device 100E may generate various types of residual vector calculation clusters. In FIG. 46, the case where the information processing device 100E generates cluster information in which the residual vector calculation cluster TG and the blob BL match is described as an example, but the residual vector calculation cluster TG and the blob BL do not have to match. A second generation example and a third generation example, which are examples of this point, will be described with reference to FIG. 49 and FIG. 50. Note that the description of the same points as those in the above-mentioned process will be omitted as appropriate.
[0534] [6-4-1. Second Generation Example] The second generation example will be described with reference to Fig. 49. Fig. 49 is a diagram showing another generation example of a residual vector calculation cluster. Specifically, Fig. 49 is a diagram showing an example of generating a residual vector calculation cluster that does not match a blob.
[0535] First, a brief description will be given of the illustrated aspect of Fig. 49. Note that the description of the same points as those of the spatial information SP71 to SP73 shown in Fig. 44 to Fig. 46 will be omitted as appropriate. For example, the description of the quantized clusters CL21 to CL26 will be omitted since they are the same as those in Fig. 44 to Fig. 46.
[0536] Figure 49 shows a state in which the objects in each quantization cluster CL are clustered (classified) into multiple clusters TG for residual vector calculation, and the objects in each cluster TG for residual vector calculation are further clustered (classified) into multiple blobs BL.
[0537] In Fig. 49, the distinction between quantized clusters CL and the distinction between residual vector calculation clusters TG in each quantized cluster CL are indicated by solid lines, and the distinction b...
Claims
1. an acquisition unit that acquires object information indicating a plurality of objects that are targets of a data search; a generation unit that generates cluster information indicating a plurality of clusters for classifying objects belonging to a quantization cluster that is a cluster including at least a portion of the plurality of objects indicated by the object information acquired by the acquisition unit, the cluster information indicating a plurality of residual vector calculation clusters each being a cluster for calculating a residual vector; An information processing device comprising:
2. The generation unit is The quantized cluster is divided to generate two or more residual vector calculation clusters, thereby generating the cluster information indicating the plurality of residual vector calculation clusters.
2. The information processing apparatus according to claim 1,
3. The generation unit is The quantization cluster is divided into two or more residual vector calculation clusters by clustering objects belonging to the quantization cluster, thereby generating the cluster information indicating the plurality of residual vector calculation clusters.
2. The information processing apparatus according to claim 1,
4. The generation unit is The cluster information indicates the plurality of residual vector calculation clusters that classify objects belonging to the quantization clusters that are processing units related to quantization.
2. The information processing apparatus according to claim 1,
5. The generation unit is The cluster information indicates the plurality of residual vector calculation clusters that classify objects belonging to the quantization cluster that is a unit of processing different from the calculation of the residual vector.
5. The information processing apparatus according to claim 4.
6. The generation unit is The cluster information indicates the plurality of residual vector calculation clusters that classify objects belonging to the quantization clusters that are units of direct product quantization.
5. The information processing apparatus according to claim 4.
7. The generation unit is The cluster information indicating the plurality of residual vector calculation clusters is generated to classify objects belonging to the quantization clusters that are units for generating a lookup table.
5. The information processing apparatus according to claim 4.
8. The generation unit is Generate the cluster information indicating a plurality of blobs, which are a plurality of clusters used for collectively calculating the distances of at least a portion of the plurality of objects.
2. The information processing apparatus according to claim 1,
9. The generation unit is Generate the cluster information indicative of the plurality of blobs classifying objects belonging to the quantized cluster.
9. The information processing apparatus according to claim 8,
10. The generation unit is Generate the cluster information in which the plurality of residual vector calculation clusters and the plurality of blobs match 10. The information processing apparatus according to claim 9,
11. The generation unit is Generate cluster information in which at least one of the plurality of residual vector calculation clusters includes two or more blobs.
10. The information processing apparatus according to claim 9,
12. The generation unit is At least one of the plurality of blobs generates the cluster information including two or more residual vector calculation clusters.
10. The information processing apparatus according to claim 9,
13. The generation unit is At least one of the plurality of blobs includes two or more quantized clusters.
9. The information processing apparatus according to claim 8,
14. 1. A computer-implemented information processing method, comprising: an acquisition step of acquiring object information indicating a plurality of objects that are targets of a data search; a generating step of generating cluster information indicating a plurality of clusters for classifying objects belonging to a quantization cluster that is a cluster including at least a part of the plurality of objects indicated by the object information acquired by the acquiring step, the cluster information indicating a plurality of residual vector calculation clusters each being a cluster for calculating a residual vector; 13. An information processing method comprising:
15. an acquisition step of acquiring object information indicating a plurality of objects that are targets of the data search; a generation step of generating cluster information indicating a plurality of clusters for classifying objects belonging to a quantization cluster that is a cluster including at least a portion of the plurality of objects indicated by the object information acquired by the acquisition step, the cluster information indicating a plurality of residual vector calculation clusters each being a cluster for calculating a residual vector; An information processing program characterized by causing a computer to execute the above.
Citation Information
Patent Citations
Ultrasonic transformer
JP1988011000A
Information processing device, information processing method, and information processing program
JP2023013868A