WO2013038574A1 - 画像検索装置、画像検索方法、プログラムおよびコンピュータ読み取り可能な記憶媒体 - Google Patents
画像検索装置、画像検索方法、プログラムおよびコンピュータ読み取り可能な記憶媒体 Download PDFInfo
- Publication number
- WO2013038574A1 WO2013038574A1 PCT/JP2011/077149 JP2011077149W WO2013038574A1 WO 2013038574 A1 WO2013038574 A1 WO 2013038574A1 JP 2011077149 W JP2011077149 W JP 2011077149W WO 2013038574 A1 WO2013038574 A1 WO 2013038574A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- image
- feature vector
- representative
- query
- distance
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/50—Information retrieval; Database structures therefor; File system structures therefor of still image data
- G06F16/56—Information retrieval; Database structures therefor; File system structures therefor of still image data having vectorial format
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24532—Query optimisation of parallel queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
- G06F16/285—Clustering or classification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
- G06F16/285—Clustering or classification
- G06F16/287—Visualization; Browsing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/50—Information retrieval; Database structures therefor; File system structures therefor of still image data
- G06F16/58—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
- G06F16/583—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually using metadata automatically derived from the content
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/50—Information retrieval; Database structures therefor; File system structures therefor of still image data
- G06F16/58—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
- G06F16/583—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually using metadata automatically derived from the content
- G06F16/5838—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually using metadata automatically derived from the content using colour
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/217—Validation; Performance evaluation; Active pattern learning techniques
- G06F18/2178—Validation; Performance evaluation; Active pattern learning techniques based on feedback of a supervisor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
- G06F18/2413—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on distances to training or reference patterns
- G06F18/24133—Distances to prototypes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/764—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using classification, e.g. of video objects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/77—Processing image or video features in feature spaces; using data integration or data reduction, e.g. principal component analysis [PCA] or independent component analysis [ICA] or self-organising maps [SOM]; Blind source separation
- G06V10/778—Active pattern-learning, e.g. online learning of image or video features
- G06V10/7784—Active pattern-learning, e.g. online learning of image or video features based on feedback from supervisors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/94—Hardware or software architectures specially adapted for image or video understanding
- G06V10/95—Hardware or software architectures specially adapted for image or video understanding structured as a network, e.g. client-server architectures
Definitions
- the present invention relates to an image search device, an image search method, a program, and a computer-readable storage medium.
- BoF BoF-of-Words
- Patent Document 1 discloses a technique for converting a plurality of image feature amount vectors extracted from an image serving as a query into fewer vectors using clustering, and searching for an image using the converted vector as a query. ing.
- the GPU includes a plurality of processors and a common memory, and each of the plurality of processors can efficiently fetch data from the common memory and execute a common program to perform arithmetic processing. This is because if hardware such as a GPU can perform arithmetic processing at high speed, high-speed search can be performed while ensuring accuracy.
- the BoF method as described above is a procedure optimized for the CPU, and the BoF method frequently uses a linked list data structure and branch processing in order to handle a sparse matrix and the like. Since they have a low affinity with the GPU architecture having the above-mentioned features, even if the GPU is used as it is, the ability cannot be fully utilized.
- the present invention has been made in view of the above problems, and an object of the present invention is to speed up image search processing using hardware having a high capability of performing a large amount of the same kind of processing as a GPU.
- an image search apparatus includes a common memory and a plurality of parallel processors that execute the same instruction, and collectively reads data stored in the common memory.
- a plurality of parallel processors for processing, and further, a plurality of image feature vectors extracted from a plurality of images to be searched, each of which belongs to one of a plurality of clusters, respectively, A plurality of representative feature vectors representing any one of a plurality of clusters; a representative vector transfer unit for transferring the plurality of representative feature vectors to the common memory; and a query image.
- Query feature vector acquisition means for acquiring one or more query feature vectors and storing them in the common memory; and the transfer
- a first distance calculating means for calculating a distance between at least a part of the plurality of representative feature vectors and the query feature vector using the plurality of parallel processors; and a calculation result by the first distance calculating means.
- a second distance calculating means for calculating a distance between the image feature vector belonging to the cluster selected based on the query feature vector, and a calculation result by the second distance calculating means; And means for selecting at least one of them.
- the program according to the present invention includes a common memory and a plurality of parallel processors that execute the same instruction, and each of the plurality of parallel processors that reads and processes data stored in the common memory in a batch.
- Representative vector transfer means for transferring the plurality of representative feature vectors to the common memory, one or a plurality of query feature vectors extracted from an image to be a query,
- Query setting means for setting in the common memory, at least of the plurality of transferred representative feature vectors
- First distance calculation means for calculating a distance between a part and the query feature vector using the plurality of parallel processors, and an image feature belonging to a cluster selected based on a calculation result by the first distance calculation means
- a second distance calculating means for calculating a distance between the vector and the query feature vector; and means for selecting at least one of the plurality of images based on a calculation result by the second distance calculating means; It is made to function as.
- the image search method includes a common memory and a plurality of parallel processors that execute the same instruction, each of which reads and processes data stored in the common memory in a batch.
- An image search method for causing a computer to search for an image, wherein the image feature vector is a plurality of image feature vectors extracted from a plurality of images to be searched and each belongs to one of a plurality of clusters
- a first distance calculating step of calculating a distance between at least a part of the transferred plurality of representative feature vectors and the query feature vector using the plurality of parallel processors, and the first distance calculating step.
- a second distance calculating step for calculating a distance between the image feature vector belonging to the cluster selected
- a computer-readable storage medium includes a common memory and a plurality of parallel processors that execute the same instruction, and each batch reads and processes data stored in the common memory.
- a plurality of parallel processors, a plurality of image feature vectors extracted from a plurality of images to be searched, each of which belongs to one of a plurality of clusters, and each of the plurality of clusters A representative vector transfer means for transferring the plurality of representative feature vectors to the common memory from a storage means for storing a plurality of representative feature vectors representing one of the above, one or a plurality of extracted from the image serving as a query Query setting means for setting a query feature vector in the common memory, the transferred plurality of proxy
- a first distance calculating means for calculating a distance between at least a part of the feature vectors and the query feature vector using the plurality of parallel processors, a cluster selected based on a calculation result by the first distance calculating means;
- a second distance calculation means for calculating a distance between the image feature vector belonging to
- the present invention it is possible to speed up an image search process using hardware having a high capability of performing a large amount of the same kind of processing as a GPU. This is because the use of the representative vector reduces the number of feature vectors to be distance-calculated, and the distance calculation is mainly used, so that it has high affinity with hardware that can perform a large amount of the same kind of processing as a GPU. *
- the image processing apparatus further includes image feature vector transfer means for transferring an image feature vector belonging to a cluster selected based on a calculation result by the first distance calculation means from the storage means to the common memory,
- the second distance calculating means may calculate a distance between the transferred image feature vector and the query feature vector using the plurality of parallel processors.
- the data amount of the plurality of representative feature vectors may be smaller than the capacity of the common memory.
- the amount of image feature vectors belonging to one of the plurality of clusters is smaller than the capacity of the common memory, and the amount of image feature vectors belonging to the plurality of clusters is equal to the common memory. It may be larger than the capacity.
- an amount of data of an image feature vector belonging to one of the plurality of clusters and the plurality of representative vectors is smaller than a capacity of the common memory, and the image feature vector transfer unit is configured to perform the selection.
- the image feature vector belonging to the cluster that has been set may be replaced with another image feature vector stored in the common memory.
- an additional image feature vector extracting unit that extracts a plurality of image feature vectors from an image to be added to be searched, and the image feature vector extracted by the additional image feature vector extracting unit is the image feature.
- Image feature vector adding means for adding to any of the clusters may be further included.
- FIG. 1 is a diagram showing an example of the configuration of an image search system according to an embodiment of the present invention.
- the image search system includes an image search device 1, a web server 2, and a client device 3.
- the web server 2 is, for example, server hardware on which a web server program operates
- the client device 3 is, for example, a personal computer or a smartphone on which a web browser program operates.
- the outline of the operation of the image search system for performing an image search is as follows. First, the web server 2 acquires an image (hereinafter referred to as “query image”) that is a query used for image search from the client device 3 via a network such as the Internet, and stores the query image in the image search device 1. Let them enter.
- the image search device 1 searches for one or more images similar to the input image and outputs them to the web server 2.
- the web server 2 outputs data that causes the client device 3 to display the image searched by the image search device 1.
- FIG. 2 is a diagram showing an example of the configuration of the image search apparatus 1 according to the embodiment of the present invention.
- the image search device 1 includes a CPU 11, a storage unit 12, a communication unit 13, a parallel computing device 14, and a bus 15.
- the CPU 11 operates according to a program stored in the storage unit 12. Further, the CPU 11 controls the communication unit 13 and the parallel computing device 14.
- the program may be provided via a network such as the Internet, or may be provided by being stored in a computer-readable information recording medium such as a DVD-ROM or a USB memory. May be.
- the storage unit 12 includes a memory element such as a RAM or a ROM, a hard disk drive, or the like.
- the storage unit 12 stores the program.
- the storage unit 12 stores information input from each unit and calculation results.
- the communication unit 13 is configured by communication means or the like provided with a network card or the like for communication connection with other devices such as the web server 2. Based on the control of the CPU 11, the communication unit 13 inputs information received from another device to the CPU 11 or the storage unit 12 and transmits the information to the other device.
- the bus 15 is for exchanging data with the CPU 11, the storage unit 12, the communication unit 13, and the parallel computing device 14.
- the CPU 11, the storage unit 12, and the parallel computing device 14 are connected via an expansion bus in the bus 15.
- the parallel computing device 14 is hardware that is good at performing a large amount of the same kind of computation by parallel computation.
- the parallel computing device 14 is a GPU, for example.
- FIG. 3 is a diagram illustrating an example of the configuration of the parallel computing device 14.
- the parallel computing device 14 includes a plurality of parallel execution units 40 and an in-device memory 45.
- Each parallel execution unit 40 includes a plurality of processors 41, an instruction unit 42, and a high-speed memory 43.
- Each of the plurality of processors 41 performs processing such as floating point calculation and data reading and writing with respect to the in-device memory 45 and the high-speed memory 43.
- the instruction unit 42 causes the plurality of processors 41 included in the parallel execution unit 40 including the instruction unit 42 to perform processing based on a program stored in the in-device memory 45 or the like.
- a plurality of processors 41 included in a certain parallel execution unit 40 process the same instruction according to an instruction from one instruction unit 42 included in the parallel execution unit 40. In this way, since the plurality of processors 41 can be controlled by one instruction unit 42, an increase in the scale of the circuit of the instruction unit 42 can be suppressed. Therefore, the number of processors 41 included in the parallel computing device 14 is larger than that of the CPU 11. It becomes possible to increase.
- the in-device memory 45 includes a DRAM that can be accessed at a higher speed than the RAM used for the storage unit 12.
- the in-device memory 45 is connected to the CPU 11 and the storage unit 12 via the bus 15.
- the parallel computing device 14 also has a circuit for transferring data between the in-device memory 45 and the storage unit 12 by DMA transfer.
- the high-speed memory 43 includes an SRAM that can be accessed at a higher speed than the in-device memory 45.
- the latency when the processor 41 accesses the high-speed memory 43 is almost the same as the latency when the processor 41 accesses the internal register.
- both the in-device memory 45 and the high-speed memory 43 are common memories that can be commonly accessed from the plurality of processors 41.
- FIG. 4 is a functional block diagram showing functions of the image search apparatus 1 according to the embodiment of the present invention.
- the image search device 1 functionally includes an index generation unit 51, an image search unit 52, and an index addition unit 53.
- the CPU 11 executes a program stored in the storage unit 12, controls the communication unit 13 and the parallel computing device 14, and the parallel computing device 14 executes a program for the parallel computing device 14. It is realized with.
- the index generation unit 51 generates an image feature vector 20 used for image search and an index that facilitates selection of the image feature vector 20 from a plurality of images to be searched.
- the image search unit 52 searches for an image similar to the query image using the index and the image feature vector 20.
- the index adding unit 53 generates the image feature vector 20 from the additional image, and changes the index so that the additional image can be selected.
- FIG. 5 is a functional block diagram showing a functional configuration of the index generation unit 51.
- the index generation unit 51 functionally includes an image feature vector extraction unit 61 and a cluster generation unit 62.
- the cluster generation unit 62 generates a tree structure of a representative vector serving as a cluster index, and stores information related to the index in the tree structure representative vector storage unit 72.
- the cluster vector storage unit 71 stores information on the image feature vector 20 belonging to the cluster represented by the representative vector serving as the leaf of the tree structure.
- the cluster vector storage unit 71 and the tree structure representative vector storage unit 72 are specifically configured by the storage unit 12.
- the image feature vector extraction unit 61 is mainly realized by the CPU 11 and the storage unit 12.
- the image feature vector extraction unit 61 extracts a plurality of image feature vectors 20 from a plurality of images stored in the storage unit 12 and to be searched. More specifically, the image feature vector extraction unit 61 extracts one or a plurality of image feature vectors 20 from each of the plurality of images, and the image feature vector 20 extracts the extracted image feature vectors 20.
- the image is stored in the storage unit 12 in association with the image.
- FIG. 6 is a diagram illustrating an example of an image to be searched.
- FIG. 7 is a diagram showing the concept of the image feature vector 20 extracted from the image.
- Each of the image feature vectors 20 extracted from the image is a local feature amount indicating a local feature of the image.
- Each of the image feature vectors 20 is a vector having, for example, 128 elements (dimensions).
- SIFT Scale-InvariantvariFeature transform
- SURF Speeded Up Robust Features
- the number of elements included in each of the image feature vectors 20 may be changed according to the extraction method from the image. Further, the number of image feature vectors 20 extracted from one image may be a predetermined number (for example, 300), but the number of image feature vectors 20 extracted from a simple image is based on the predetermined number. It may be less.
- the cluster generation unit 62 is mainly realized by the CPU 11 and the storage unit 12.
- the cluster generation unit 62 classifies each of the plurality of image feature vectors 20 extracted by the image feature vector extraction unit 61 into one of a plurality of clusters by clustering.
- the process of classifying the image feature vectors 20 into clusters is not limited to a one-stage process, and may be a multi-stage process. Further, the multi-stage processing may be realized by recursively calling the following processing. In the following, a two-stage process is performed, and the plurality of image feature vectors 20 extracted by the image feature vector extraction unit 61 in the first stage are classified into 1024 clusters, and the 1024 clusters in the second stage. An example of classifying each of these into 512 clusters will be described.
- each stage of the cluster generation unit 62 the following two processes are performed.
- the first is a process of classifying a given plurality of image feature vectors 20 into a given number of clusters by clustering to generate a plurality of clusters.
- the second is a process of generating a representative vector of the generated cluster and storing the generated representative vector in the tree structure representative vector storage unit 72 as a representative vector of the stage.
- the cluster generation unit 62 recursively calls the process of the next stage using a plurality of image feature vectors 20 belonging to each of the clusters generated in the stage being processed as input information. .
- the representative vector is, for example, the center of gravity of the image feature vector 20 belonging to the classified cluster, and is a vector representing the cluster.
- the cluster generation unit 62 stores the image feature vector 20 belonging to the cluster in the cluster vector storage unit 71 for each cluster generated in the lowermost process.
- the cluster generation unit 62 classifies the given image feature vector 20 into 1024 clusters, and generates representative vectors for the classified first stage clusters. Then, the generated first-stage representative vector is stored in the tree structure representative vector storage unit 72. In the second stage processing, the cluster generation unit 62 further classifies the plurality of image feature vectors 20 belonging to each of the 1024 clusters generated in the first stage into 512 clusters as input information, and classifies the classification. The representative vector of each cluster in the second stage is generated, and the generated representative vector of the lower stage is stored in the tree structure representative vector storage unit 72. When all the clusters in the second stage are generated, the total number of clusters in the second stage is (1024 ⁇ 512).
- the cluster generation unit 62 stores the image feature vector 20 belonging to the cluster in the cluster vector storage unit 71 for each cluster generated in the second stage.
- a representative vector representing the first-tier cluster is referred to as an upper representative vector
- a representative vector representing the lowest-tier (second-tier in the above example) cluster is referred to as a representative feature vector.
- the finally generated cluster is also referred to as an image feature cluster.
- a known clustering method such as a k-means method may be used.
- the number of clusters is preferably a power of 2 considering the contents of processing of the image search unit 52 described later, but it may not be a power of 2.
- a plurality of image feature vectors 20 belong to each image feature cluster.
- FIG. 8 is a diagram showing an example of a tree structure of representative vectors.
- the cluster generation unit 62 performs the above-described two-stage processing
- the two-stage representative vectors corresponding to the two-stage cluster form a tree structure.
- the number of upper representative vectors is 1024, and each of the upper representative vectors is a parent of 512 representative feature vectors.
- the image search unit 52 performs a search by utilizing the parent-child relationship so that the representative vector forms a tree structure.
- FIG. 9 is a functional block diagram showing a functional configuration of the image search unit 52.
- the image search unit 52 functionally includes a representative vector transfer unit 81, a query feature vector acquisition unit 82, an upper representative vector distance calculation unit 83, a representative cluster selection unit 84, a representative feature vector distance calculation unit 85, and an image feature cluster selection unit. 86, an image feature vector transfer unit 87, an image feature vector distance calculation unit 88, and a search result image selection unit 89.
- the representative vector transfer unit 81 is mainly realized by the parallel computing device 14 and the storage unit 12.
- the representative vector transfer unit 81 is stored in the tree-structured representative vector storage unit 72, and the upper representative vector and a plurality of representative feature vectors each representing an image feature cluster are stored in the in-device memory 45 that can be commonly accessed from the plurality of processors 41. Forward.
- the representative vector transfer unit 81 transfers the data from the storage unit 12 to the in-device memory 45 using the parallel computing device 14 or the DMA (Direct Memory Access) function of the bus 15.
- DMA Direct Memory Access
- FIG. 10 is a diagram showing an example of data arrangement in the in-device memory 45.
- the in-device memory 45 is provided with an area for storing representative feature vectors, an area for storing upper representative vectors, and an area for storing one image feature cluster.
- the representative vector transfer unit 81 stores information on a plurality of representative vectors stored in the storage unit 12 in a memory area of the in-device memory 45 allocated in advance. Data storage in the area for storing the image feature cluster will be described later.
- the number of representative feature vectors is the same as the number of image feature clusters (1024 ⁇ 512), and each element is a 1-byte integer type, the plurality of representative feature vectors
- the total data amount is (1024 ⁇ 512 ⁇ 128) bytes (B), that is, 64 MB.
- the data amount of the plurality of upper representative vectors is (1024 ⁇ 128) bytes, that is, 128 KB.
- the data amount of a plurality of representative vectors is smaller than the capacity of the in-device memory 45. .
- the data amount of the image feature vectors 20 included in the plurality of image feature clusters is (1 million ⁇ 300 ⁇ 128) bytes, that is, about 36 GB, and cannot be stored in the in-device memory 45.
- the average number of image feature vectors 20 per image feature cluster is (1 million ⁇ 300 ⁇ (1024 ⁇ 512)), that is, about 600, the data amount is about 75 KB.
- the data amount of a plurality of representative feature vectors, the data amount of a plurality of upper representative vectors, and the image included in one image feature cluster is smaller than the capacity of the in-device memory 45.
- FIG. 11 is a diagram illustrating an example of the arrangement of representative vectors in the in-device memory 45.
- the size of each element of the representative vector stored in the in-device memory 45 is 4 bytes and is arranged in the order of the elements.
- the head address of data of a certain representative vector is a multiple of the number of data bytes (for example, 32 or 64) that can be read from the in-device memory 45 at a time.
- This data structure is for causing the plurality of processors 41 to collectively read data stored in the in-device memory 45 in the distance calculation process described later.
- the representative vector transfer unit 81 transfers the data in which the size of each element is converted to 4 bytes to the in-device memory 45 in order to read the data collectively.
- the upper representative vector and the image feature vector 20 in one image feature cluster are also stored in the in-device memory 45 with the same data structure.
- the amount of data of the plurality of representative feature vectors, the plurality of upper representative vectors, and the image feature vector 20 included in one image feature cluster in the in-device memory 45 is quadrupled. The point that the sum is smaller than the capacity of the in-device memory 45 remains unchanged.
- image feature clusters and representative vectors are stored such that the sum of the data amounts of at least a plurality of representative feature vectors in the in-device memory 45 and a plurality of upper representative vectors fits in the capacity of the in-device memory 45. Adjust the number.
- the query feature vector acquisition unit 82 is mainly realized by the CPU 11, the storage unit 12, and the parallel computing device 14.
- the query feature vector acquisition unit 82 acquires one or a plurality of query feature vectors extracted from the query image, and stores them in the in-device memory 45 that is a common memory.
- the query feature vector acquisition unit 82 first acquires a query image from the client device 3 via the web server 2.
- FIG. 12 is a diagram illustrating an example of a screen for inputting a query image.
- the client device 3 displays this screen based on the data generated by the web server 2.
- the query image may be acquired by the user uploading an image file in the client device 3, may be acquired by sending the URL of an image displayed on some web page, a photo sharing service, or the like May be obtained by selecting a query image from the images stored in.
- the query feature vector acquisition unit 82 acquires the acquired query image from the web server 2 and extracts and acquires one or more query feature vectors from the query image.
- the query feature vector is generated using the same method as the method by which the image feature vector extraction unit 61 extracts the image feature vector 20.
- the query feature vector acquisition unit 82 stores the query feature vector in the in-device memory 45.
- the CPU 11 may extract the query feature vector, and the CPU 11 may load the query feature vector into the in-device memory 45 by the parallel computing device 14 or load the query image into the parallel computing device 14. May extract the query feature vector and store it in the in-device memory 45.
- the upper representative vector distance calculation unit 83 is realized centering on the parallel computing device 14.
- the upper representative vector distance calculation unit 83 calculates the distance between each of the plurality of upper representative vectors and the query feature vector using a plurality of parallel processors 41. Details of distance calculation in the upper representative vector distance calculation unit 83 will be described below.
- the upper representative vector distance calculation unit 83, the representative cluster selection unit 84, the representative feature vector distance calculation unit 85, the image feature cluster selection unit 86, and the image feature vector distance calculation unit 88 perform the query feature extracted from the query image. Do this for each of the vectors.
- FIG. 13 is a diagram showing an example of a processing flow for distance calculation.
- the upper representative vector distance calculation unit 83 loads the query feature vector from the in-device memory 45 to the high speed memory 43 of the parallel execution unit 40 that performs distance calculation (step S101).
- each element of the vector to be calculated (here, the upper representative vector) is loaded from the in-device memory 45 into the register of the processor 41 that calculates the element (step S102).
- the plurality of processors 41 collectively read the data of the calculation target vector from the in-device memory 45.
- the upper representative vector distance calculation unit 83 subtracts the element of the vector to be calculated stored in the register and the element of the query feature vector corresponding to the element, and further squares the subtraction result (Ste S103).
- the calculation results of step S103 for each element of the vector to be calculated are summed (step S104).
- the upper representative vector distance calculation unit 83 stores the total result in the in-device memory 45 (step S105).
- step S102 to step S104 the processing from step S102 to step S104 is performed by the processor 41. It is divided according to the number of and executed multiple times.
- the higher representative vector distance calculation unit 83 causes another parallel execution unit 40 to execute the processes of steps S ⁇ b> 101 to S ⁇ b> 105 for another calculation target vector.
- other query feature vectors extracted from the query image may be calculated in parallel.
- the distance calculation between the query feature vector and a plurality of other vectors to be calculated is calculated in parallel in accordance with the parallel computing capability of the parallel computing device 14 such as a GPU.
- the distance calculation between the plurality of vectors appropriately arranged in the in-device memory 45 and the query feature vector is highly compatible with hardware such as GPU, and is very fast. It is processed.
- the representative cluster selection unit 84 is realized centering on the parallel computing device 14.
- the representative cluster selection unit 84 selects one set from a set of a plurality of representative feature vectors based on the distance between the query feature vector calculated by the upper representative vector distance calculation unit 83 and each of the plurality of upper representative vectors. . More specifically, for example, a set of a plurality of representative feature vectors that are children of the upper representative vector having the shortest distance from the query feature vector is selected.
- Each set of representative feature vectors corresponds to a first-stage cluster (representative cluster). Selection of a set of representative feature vectors corresponds to selection of a representative cluster corresponding to the set.
- Each of the upper representative vectors can be regarded as representing a plurality of representative feature vectors.
- the representative cluster selection unit 84 selects the set by calculating the head address of the area in the memory storing the set of representative vectors. For example, if the number of representative feature vectors that are children of a certain upper representative vector is constant regardless of the upper representative vector, if the upper representative vector with the shortest distance is known, the start address can be obtained by a simple calculation such as multiplication. Can be obtained. By doing so, it is not necessary to use an operation that requires branching or additional memory access, and therefore processing that makes better use of the performance of hardware such as a GPU can be performed.
- the representative feature vector distance calculation unit 85 is realized centering on the parallel computing device 14.
- the representative feature vector distance calculation unit 85 calculates a distance between each of at least some of the plurality of representative feature vectors and the query feature vector using the plurality of parallel processors 41.
- the representative feature vector to be calculated is a representative feature vector belonging to the set selected by the representative cluster selection unit 84.
- the representative feature vector distance calculation unit 85 calculates the distance according to the flow of FIG. 13 in the same manner as the upper representative vector distance calculation unit 83 calculates the distance.
- the calculation target vector is the representative feature vector described above. Similar to the upper representative vector distance calculation unit 83, this processing content is highly compatible with hardware such as a GPU and is processed at a very high speed.
- the image feature cluster selection unit 86 is realized centering on the parallel computing device 14.
- the image feature cluster selection unit 86 selects an image feature cluster from the plurality of image feature clusters based on the distance between the query feature vector calculated by the representative feature vector distance calculation unit 85 and each of the plurality of representative feature vectors. More specifically, for example, an image feature cluster represented by a representative feature vector having the shortest distance from the query feature vector is selected.
- the image feature vector transfer unit 87 is realized centering on the storage unit 12 and the parallel computing device 14.
- the image feature vector transfer unit 87 can access the plurality of image feature vectors 20 belonging to the image feature cluster selected by the image feature cluster selection unit 86 from the cluster vector storage unit 71 in common from the plurality of processors 41. Forward to.
- the image feature vector transfer unit 87 transfers the data from the storage unit 12 to the in-device memory 45 using the parallel computing device 14 or the DMA function of the bus 15.
- the image feature vector transfer unit 87 causes the plurality of processors 41 to collectively read data stored in the in-device memory 45, in the same manner as the representative vector transfer unit 81 transfers the representative feature vector and the like in FIG. Thus, the data of the image feature vector 20 is arranged.
- the image feature vector distance calculation unit 88 is realized centering on the parallel computing device 14.
- the image feature vector distance calculation unit 88 calculates the distance between each of the plurality of image feature vectors 20 and the query feature vector using a plurality of parallel processors 41.
- the image feature vector 20 used for the calculation here is the image feature vector 20 belonging to the image feature cluster selected by the image feature cluster selection unit 86.
- the data is transferred to the in-device memory 45 by the image feature vector transfer unit 87.
- the image feature vector distance calculation unit 88 calculates the distance according to the flow of FIG. 13 for each of the query feature vectors in the same manner as the upper representative vector distance calculation unit 83 calculates the distance.
- the calculation target vector is the image feature vector 20. Similar to the upper representative vector distance calculation unit 83, this processing content is highly compatible with hardware such as a GPU and is processed at a very high speed.
- the search result image selection unit 89 is realized centering on the parallel computing device 14.
- the search result image selection unit 89 selects one of a plurality of images to be searched as a search result based on the calculation result of the image feature vector distance calculation unit 88.
- the search result image selection unit 89 uses the query feature vector used for the distance calculation based on the distance between the query feature vector and each of the plurality of image feature vectors 20 calculated by the image feature vector distance calculation unit 88. Get the image corresponding to. More specifically, for example, for each query feature vector, the image feature vector 20 from which the image feature vector 20 having the shortest distance from the query feature vector is extracted is selected, and the image from which the image feature vector 20 is extracted is selected. get.
- the image ID of the acquired image is stored in the in-device memory 45.
- the search result image selection unit 89 statistically processes a plurality of acquired images corresponding to each of the query feature vectors, and selects one or a plurality of images that are similar to the query image.
- FIG. 14 is a diagram illustrating an example of a result of statistical processing on an image corresponding to a query feature vector.
- the search result image selection unit 89 counts the number of query feature vectors corresponding to the selected image (the number of times of search) and scores each image. Statistical processing is performed to sort in descending order from the highest scored numerical value. Since an image is selected for each of a plurality of query feature vector images extracted from the query image, it is statistically processed to evaluate which image is similar to the query image from the images selected by the distance calculation.
- the search result image selection unit 89 selects one or a plurality of images as search result images, and outputs information on the selected image to the web server 2.
- the selected image may be, for example, the image that has been searched most frequently, or may be the top number in the descending order of the number of searches.
- the web server 2 outputs information that causes the client device 3 to display a search result image.
- the processing from the upper representative vector distance calculation unit 83 to the image feature vector distance calculation unit 88 has a high affinity with hardware such as a GPU that performs parallel calculation, and the parallel calculation capability is full. You can make use of it.
- the processing of the search result image selection unit 89 can be performed in parallel to some extent, and can be performed at a higher speed than the processing using the CPU 11. Further, since the processing amount of the search result image selection unit 89 is smaller than the processing from the upper representative vector distance calculation unit 83 to the image feature vector distance calculation unit 88, the ratio of the processing time of this processing to the entire processing time is sufficient. small. As a result, the effect of shortening the processing time by the GPU can be fully enjoyed.
- the processing of the image feature vector distance calculation unit 88 and the search result image selection unit 89 is performed with the parallel computing device 14 as the center, but may be performed with the CPU 11 as the center. This is because the effect of speeding up can be obtained simply by causing the GPU to execute other processes. Also, if the processing of the image feature vector distance calculation unit 88 and the search result image selection unit 89 is performed by the CPU 11, the processing of the image feature vector transfer unit 87 can be omitted. An increase in calculation time due to performing is suppressed.
- the representative vector has a two-stage tree structure such as the upper representative vector and the representative feature vector.
- a one-stage structure in which the upper representative vector is not provided may be used.
- the processing of the upper representative vector distance calculation unit 83 and the representative cluster selection unit 84 is unnecessary, and the representative feature vector distance calculation unit 85 performs distance calculation for all the representative feature vectors.
- a parent representative vector serving as a parent of the upper representative vector may be provided to have a configuration of three or more stages. In the case of three or more stages, a process for calculating the distance to the parent representative vector before the upper representative vector distance calculation unit 83 and a process for selecting a set of upper representative vectors from the upper representative vector distance calculation unit 83 are performed.
- the representative vector distance calculation unit 83 performs a distance calculation for the selected set of upper representative vectors (partial upper representative vectors).
- FIG. 15 is a functional block diagram showing a functional configuration of the index adding unit 53.
- the index addition unit 53 functionally includes an additional feature vector extraction unit 91, an additional feature vector distance calculation unit 92, an additional cluster selection unit 93, and an image feature vector addition unit 94.
- the additional feature vector extraction unit 91 is mainly realized by the CPU 11 and the storage unit 12.
- the additional feature vector extraction unit 91 extracts a plurality of image feature vectors 20 from an image added as a search target stored in the storage unit 12. This extraction method may be the same as that of the image feature vector extraction unit 61.
- this image feature vector 20 is referred to as an additional feature vector.
- the additional feature vector distance calculation unit 92 is realized centering on the parallel computing device 14.
- the additional feature vector distance calculation unit 92 calculates the distance between the additional feature vector and each of the representative feature vectors stored in the tree structure representative vector storage unit 72. The distance is calculated based on a flow in which the query feature vector and the calculation target vector in the processing method shown in FIG. 13 are replaced with an additional feature vector and a representative feature vector included in all representative clusters, respectively.
- the additional cluster selection unit 93 is calculated around the parallel computing device 14.
- the additional cluster selection unit 93 selects an image feature cluster to which the additional feature vector belongs based on the calculation result of the additional feature vector distance calculation unit 92. For example, for each additional feature vector, the image feature cluster represented by the representative feature vector having the shortest distance from the additional feature vector is selected as the image feature cluster corresponding to the additional feature vector.
- the image feature vector adding unit 94 is realized centering on the CPU 11 and the storage unit 12.
- the image feature vector adding unit 94 adds an additional feature vector corresponding to the image feature cluster selected by the additional cluster selecting unit 93, and stores the image feature cluster data in the cluster vector storage unit 71. By doing so, even when an image to be searched is added, an image to be added can be added to the search target without clustering again, and processing time associated with the addition can be saved.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Library & Information Science (AREA)
- Evolutionary Computation (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Artificial Intelligence (AREA)
- Software Systems (AREA)
- Medical Informatics (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Multimedia (AREA)
- Health & Medical Sciences (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Image Analysis (AREA)
- Processing Or Creating Images (AREA)
Abstract
GPUのように同種の処理を大量に行う能力の高いハードウェアを用いて、画像検索処理を高速化すること。 画像検索装置1は、共通メモリと、同一の命令を実行する複数の並列のプロセッサを含む。画像検索装置1は、記憶手段から、複数の画像特徴ベクトルを含む複数のクラスタをそれぞれ代表する複数の代表特徴ベクトルを転送し、クエリとなる画像から抽出される1または複数のクエリ特徴ベクトルを前記共通メモリに格納し、前記転送された複数の代表特徴ベクトルと前記クエリ特徴ベクトルとの距離を前記複数の並列のプロセッサを用いて計算し、前記第1の距離計算手段による計算結果により選択されるクラスタに属する画像特徴ベクトルと、前記クエリ特徴ベクトルとの距離に基づいて、複数の画像のうちいずれかを選択する。
Description
本発明は画像検索装置、画像検索方法、プログラムおよびコンピュータ読み取り可能な記憶媒体に関する。
ネットワーク技術等の発達によって、膨大な量の画像ファイルが管理されるようになっている。その大量の画像の中から、クエリとなる画像に類似する画像を選び出す画像検索技術がある。大量の画像の中から高速に画像を選択するために、BoF(Bag of Features)法と呼ばれる検索手法の開発が進んでいる。この手法は、BoW(Bag of Words)法と呼ばれる文書検索の手法を応用したものである。BoF法では、検索対象となる画像から抽出される特徴ベクトルのそれぞれをBoW法における単語に相当するVisual Wordに対応させ、このVisual Wordの出現頻度を用いて類似する画像が検索される。
特許文献1には、クエリとなる画像から抽出される複数の画像特徴量ベクトルを、クラスタリングを用いてより少ないベクトルに変換し、その変換されたベクトルをクエリとして画像の検索を行う技術が開示されている。
ところで、画像データは文字データに比較してそのデータ量が膨大であるため、通常のCPUを用いて文字と同様な高速検索を行うには、処理量を削減することが必要になる。このため、検索インデックスの生成時にその画像データの特徴を的確に表せないVisual Wordを用いなければなければならないなど、充分な検索精度を得ることが難しくなっていた。
そこで、例えば所謂GPU(Graphic Processing Unit)のような、CPUよりも計算能力の高いハードウェアを用いることが考えられる。GPUは、複数のプロセッサおよび共通メモリを含み、複数のプロセッサはそれぞれ共通メモリから効率的にデータを取込み、また共通のプログラムを実行して演算処理を行うことができる。GPUのようなハードウェアが演算処理を高速に行うことができれば、精度を確保しつつ高速検索することが可能となるからである。
しかしながら、上記したようなBoF法などはCPUに最適化された手順であり、BoF法は疎行列等を扱うためにリンクドリストのデータ構造や分岐処理を多用する。それらは、上述のような特徴を有するGPUのアーキテクチャとの親和性が低いため、GPUをそのまま用いてもその能力を充分に活かすことができなかった。
本発明は上記課題を鑑みてなされたものであって、その目的は、GPUのように同種の処理を大量に行う能力の高いハードウェアを用いて、画像検索処理を高速化することにある。
上記課題を解決するために、本発明にかかる画像検索装置は、共通メモリと、同一の命令を実行する複数の並列のプロセッサであって、それぞれ前記共通メモリに格納されるデータを一括して読込んで処理する複数の並列のプロセッサと、を含み、さらに、検索対象となる複数の画像から抽出される複数の画像特徴ベクトルであってそれぞれ複数のクラスタのいずれかに属する画像特徴ベクトルと、それぞれ前記複数のクラスタのいずれかを代表する複数の代表特徴ベクトルと、を記憶する記憶手段から、前記共通メモリに前記複数の代表特徴ベクトルを転送する代表ベクトル転送手段と、クエリとなる画像から抽出される1または複数のクエリ特徴ベクトルを取得し、前記共通メモリに格納するクエリ特徴ベクトル取得手段と、前記転送された複数の代表特徴ベクトルの少なくとも一部と前記クエリ特徴ベクトルとの距離を前記複数の並列のプロセッサを用いて計算する第1の距離計算手段と、前記第1の距離計算手段による計算結果に基づいて選択されるクラスタに属する画像特徴ベクトルと、前記クエリ特徴ベクトルとの距離を計算する第2の距離計算手段と、前記第2の距離計算手段による計算結果に基づいて、前記複数の画像のうち少なくとも1つを選択する手段と、を含むことを特徴とする。
また、本発明にかかるプログラムは、共通メモリと、同一の命令を実行する複数の並列のプロセッサであって、それぞれ前記共通メモリに格納されるデータを一括して読込んで処理する複数の並列のプロセッサと、を含むコンピュータを、検索対象となる複数の画像から抽出される複数の画像特徴ベクトルであってそれぞれ複数のクラスタのいずれかに属する画像特徴ベクトルと、それぞれ前記複数のクラスタのいずれかを代表する複数の代表特徴ベクトルと、を記憶する記憶手段から、前記共通メモリに前記複数の代表特徴ベクトルを転送する代表ベクトル転送手段、クエリとなる画像から抽出される1または複数のクエリ特徴ベクトルを、前記共通メモリに設定するクエリ設定手段、前記転送された複数の代表特徴ベクトルの少なくとも一部と前記クエリ特徴ベクトルとの距離を前記複数の並列のプロセッサを用いて計算する第1の距離計算手段、前記第1の距離計算手段による計算結果に基づいて選択されるクラスタに属する画像特徴ベクトルと、前記クエリ特徴ベクトルとの距離を計算する第2の距離計算手段、および、前記第2の距離計算手段による計算結果に基づいて、前記複数の画像のうち少なくとも1つを選択する手段、として機能させることを特徴とする。
また、本発明にかかる画像検索方法は、共通メモリと、同一の命令を実行する複数の並列のプロセッサであって、それぞれ前記共通メモリに格納されるデータを一括して読込んで処理する複数の並列のプロセッサと、を含むコンピュータに画像を検索させる画像検索方法であって、検索対象となる複数の画像から抽出される複数の画像特徴ベクトルであってそれぞれ複数のクラスタのいずれかに属する画像特徴ベクトルと、それぞれ前記複数のクラスタのいずれかを代表する複数の代表特徴ベクトルと、を記憶する記憶手段から、前記共通メモリに前記複数の代表特徴ベクトルを転送する代表ベクトル転送ステップと、クエリとなる画像から抽出される1または複数のクエリ特徴ベクトルを、前記共通メモリに設定するクエリ設定ステップと、前記転送された複数の代表特徴ベクトルの少なくとも一部と前記クエリ特徴ベクトルとの距離を前記複数の並列のプロセッサを用いて計算する第1の距離計算ステップと、前記第1の距離計算ステップによる計算結果に基づいて選択されるクラスタに属する画像特徴ベクトルと、前記クエリ特徴ベクトルとの距離を計算する第2の距離計算ステップと、前記第2の距離計算ステップによる計算結果に基づいて、前記複数の画像のうち少なくとも1つを選択するステップと、を含むことを特徴とする。
また、本発明にかかるコンピュータ読み取り可能な記憶媒体は、共通メモリと、同一の命令を実行する複数の並列のプロセッサであって、それぞれ前記共通メモリに格納されるデータを一括して読込んで処理する複数の並列のプロセッサと、を含むコンピュータを、検索対象となる複数の画像から抽出される複数の画像特徴ベクトルであってそれぞれ複数のクラスタのいずれかに属する画像特徴ベクトルと、それぞれ前記複数のクラスタのいずれかを代表する複数の代表特徴ベクトルと、を記憶する記憶手段から、前記共通メモリに前記複数の代表特徴ベクトルを転送する代表ベクトル転送手段、クエリとなる画像から抽出される1または複数のクエリ特徴ベクトルを、前記共通メモリに設定するクエリ設定手段、前記転送された複数の代表特徴ベクトルの少なくとも一部と前記クエリ特徴ベクトルとの距離を前記複数の並列のプロセッサを用いて計算する第1の距離計算手段、前記第1の距離計算手段による計算結果に基づいて選択されるクラスタに属する画像特徴ベクトルと、前記クエリ特徴ベクトルとの距離を計算する第2の距離計算手段、および、前記第2の距離計算手段による計算結果に基づいて、前記複数の画像のうち少なくとも1つを選択する手段、として機能させるためのプログラムを記憶することを特徴とする。
本発明によれば、GPUのように同種の処理を大量に行う能力の高いハードウェアを用いて、画像検索処理を高速化することができる。代表ベクトルを用いることで距離計算の対象となる特徴ベクトルの数が減り、かつ距離計算が主体となるためGPUのように同種の処理を大量に行えるハードウェアとの親和性が高いからである。
本発明の一態様では、前記第1の距離計算手段による計算結果に基づいて選択されるクラスタに属する画像特徴ベクトルを前記記憶手段から前記共通メモリに転送する画像特徴ベクトル転送手段をさらに含み、前記第2の距離計算手段は、前記転送された画像特徴ベクトルと前記クエリ特徴ベクトルとの距離を前記複数の並列のプロセッサを用いて計算しもよい。
本発明の一態様では、前記複数の代表特徴ベクトルのデータ量は、前記共通メモリの容量より小さくてもよい。
本発明の一態様では、前記複数のクラスタのうち1つに属する画像特徴ベクトルのデータ量は、前記共通メモリの容量より小さく、前記複数のクラスタに属する画像特徴ベクトルのデータ量は、前記共通メモリの容量より大きくてもよい。
本発明の一態様では、前記複数のクラスタのうち1つに属する画像特徴ベクトルと前記複数の代表ベクトルとのデータ量は、前記共通メモリの容量より小さく、前記画像特徴ベクトル転送手段は、前記選択されたクラスタに属する画像特徴ベクトルを、共通メモリに記憶されている他の画像特徴ベクトルと置き換えてもよい。
本発明の一態様では、追加される検索対象となる画像から複数の画像特徴ベクトルを抽出する追加画像特徴ベクトル抽出手段と、前記追加画像特徴ベクトル抽出手段により抽出された画像特徴ベクトルを前記画像特徴クラスタのうちいずれかに追加する画像特徴ベクトル追加手段と、をさらに含んでもよい。
以下では、本発明の実施形態について図面に基づいて説明する。出現する構成要素のうち同一機能を有するものには同じ符号を付し、その説明を省略する。
図1は、本発明の実施形態にかかる画像検索システムの構成の一例を示す図である。画像検索システムは、画像検索装置1と、ウェブサーバ2と、クライアント装置3とを含む。ウェブサーバ2は、例えばウェブサーバプログラムが動作するサーバハードウェアであり、クライアント装置3は、例えばウェブブラウザのプログラムが動作するパーソナルコンピュータや、スマートフォンである。画像検索システムは画像検索を行う動作の概要は以下の通りである。はじめに、ウェブサーバ2は、インターネット等のネットワークを介してクライアント装置3から画像検索に用いるクエリとなる画像(以下、「クエリ画像」と記述する)を取得し、そのクエリ画像を画像検索装置1に入力させる。次に画像検索装置1は、入力された画像に類似する1または複数の画像を検索し、ウェブサーバ2に出力する。ウェブサーバ2は、画像検索装置1が検索した画像をクライアント装置3に表示させるデータを出力する。
図2は、本発明の実施形態にかかる画像検索装置1の構成の一例を示す図である。画像検索装置1は、CPU11、記憶部12、通信部13、並列計算装置14およびバス15を含む。
CPU11は、記憶部12に格納されているプログラムに従って動作する。またCPU11は通信部13や並列計算装置14を制御する。なお、上記プログラムは、インターネット等のネットワークを介して提供されるものであってもよいし、DVD-ROMやUSBメモリ等のコンピュータで読み取り可能な情報記録媒体に格納されて提供されるものであってもよい。
記憶部12は、RAMやROM等のメモリ素子やハードディスクドライブ等によって構成されている。記憶部12は、上記プログラムを格納する。また、記憶部12は、各部から入力される情報や演算結果を格納する。
通信部13は、ウェブサーバ2等の他の装置と通信接続するためにネットワークカードなどが設けられる通信手段等で構成されている。通信部13は、CPU11の制御に基づいて、他の装置から受信した情報をCPU11や記憶部12に入力し、他の装置に情報を送信する。
バス15は、CPU11、記憶部12、通信部13および並列計算装置14との間でデータをやりとりするためのものである。例えば、CPU11や記憶部12と並列計算装置14とはバス15の中の拡張バスを介して接続される。
並列計算装置14は、並列計算によって同種の計算を大量に行うことを得意とするハードウェアである。並列計算装置14は、例えばGPUである。図3は、並列計算装置14の構成の一例を示す図である。並列計算装置14は、複数の並列実行部40と、装置内メモリ45とを含む。また各並列実行部40は、複数のプロセッサ41と、命令ユニット42と、高速メモリ43とを含む。
複数のプロセッサ41のそれぞれは、浮動小数点計算や、装置内メモリ45や高速メモリ43との間でのデータの読込みや書込み等の処理を行う。命令ユニット42は、装置内メモリ45等に格納されるプログラムに基づいて、その命令ユニット42を含む並列実行部40に含まれる複数のプロセッサ41に処理をさせる。ある並列実行部40に含まれる複数のプロセッサ41は、その並列実行部40に含まれる一つの命令ユニット42からの指示によって、同一の命令を処理する。こうすると、複数のプロセッサ41を1つの命令ユニット42で制御できるため、命令ユニット42の回路の規模の増加を抑えることができるため、並列計算装置14に含まれるプロセッサ41の数をCPU11に比べて増やすことが可能になる。
装置内メモリ45は、記憶部12に用いられるRAMより高速にアクセス可能なDRAMからなる。装置内メモリ45は、バス15を介して、CPU11や記憶部12と接続されている。なお、並列計算装置14は、DMA転送により装置内メモリ45と記憶部12との間でデータを転送する回路も有する。高速メモリ43は、装置内メモリ45より高速にアクセス可能なSRAM等からなる。プロセッサ41が高速メモリ43にアクセスする際のレイテンシは、プロセッサ41がその内部レジスタにアクセスする際のレイテンシとほとんど変わらない。ここで、装置内メモリ45も高速メモリ43も複数のプロセッサ41から共通にアクセスできる共通メモリである。
図4は、本発明の実施形態にかかる画像検索装置1の機能を示す機能ブロック図である。画像検索装置1は、機能的に、インデックス生成部51、画像検索部52、およびインデックス追加部53を含む。これらの機能は、CPU11が記憶部12に格納されたプログラムを実行し、通信部13や並列計算装置14を制御し、また、並列計算装置14がその並列計算装置14向けのプログラムを実行することで実現される。
インデックス生成部51は、検索対象となる複数の画像から、画像検索の際に用いる画像特徴ベクトル20や、その画像特徴ベクトル20の選択を容易にするインデックスを生成する。画像検索部52は、インデックスや画像特徴ベクトル20を用いて、クエリ画像に類似する画像を検索する。インデックス追加部53は、追加の画像から画像特徴ベクトル20を生成し、またその追加の画像を選択できるようインデックスを変更する。
図5は、インデックス生成部51の機能構成を示す機能ブロック図である。インデックス生成部51は、機能的に、画像特徴ベクトル抽出部61と、クラスタ生成部62とを含む。クラスタ生成部62は、クラスタのインデックスとなる代表ベクトルの木構造を生成し、木構造代表ベクトル格納部72にインデックスに関連する情報を格納する。また、クラスタベクトル格納部71は、その木構造の葉となる代表ベクトルが代表するクラスタに属する画像特徴ベクトル20の情報を格納する。クラスタベクトル格納部71、木構造代表ベクトル格納部72は、具体的には記憶部12により構成される。
画像特徴ベクトル抽出部61は、主にCPU11および記憶部12により実現される。画像特徴ベクトル抽出部61は、記憶部12に格納されている複数の画像であって検索対象となる複数の画像から、複数の画像特徴ベクトル20を抽出する。より具体的には、画像特徴ベクトル抽出部61は、その複数の画像のそれぞれから、1または複数の画像特徴ベクトル20を抽出し、抽出された画像特徴ベクトル20を、その画像特徴ベクトル20が抽出された画像と関連付けて記憶部12に記憶させる。
図6は、検索対象となる画像の一例を示す図である。図7は、画像から抽出される画像特徴ベクトル20の概念を示す図である。画像から抽出される画像特徴ベクトル20のそれぞれは、その画像の局所的な特徴を示す局所特徴量である。画像特徴ベクトル20のそれぞれは、例えば128の要素(次元)をもつベクトルである。画像特徴ベクトル20を抽出するためには、SIFT(Scale-Invariant Feature transform)、SURF(Speeded Up Robust Features)などの公知の手法を用いてよい。画像特徴ベクトル20のそれぞれが有する要素の数は、画像からの抽出の手法などに応じて変化させてよい。また1つの画像から抽出される画像特徴ベクトル20の数は、予め定められた数(例えば300)としてよいが、単純な画像から抽出される画像特徴ベクトル20の数はその予め定められた数より少なくなってもよい。
クラスタ生成部62は、主にCPU11および記憶部12により実現される。クラスタ生成部62は、クラスタリングにより、画像特徴ベクトル抽出部61により抽出された複数の画像特徴ベクトル20のそれぞれを、複数のクラスタのいずれかに分類する。画像特徴ベクトル20をクラスタに分類する処理は1段階の処理とは限らず、多段階の処理であってよい。また、その多段階の処理は、以下の処理を再帰的に呼び出すことにより実現してもよい。以下では、2段階の処理を行い、かつ1段目で画像特徴ベクトル抽出部61により抽出された複数の画像特徴ベクトル20を1024個のクラスタに分類し、さらに2段目でその1024個のクラスタのそれぞれを512個のクラスタに分類する場合の例について説明する。
クラスタ生成部62の各段の処理では、以下の2つの処理を行う。1つ目は、クラスタリングにより、与えられた複数の画像特徴ベクトル20を与えられた個数のクラスタに分類し、複数のクラスタを生成する処理である。2つ目は、その生成されたクラスタの代表ベクトルを生成し、生成された代表ベクトルをその段の代表ベクトルとして木構造代表ベクトル格納部72に格納する処理である。処理中の段が最下段でない場合は、クラスタ生成部62は処理中の段で生成されたクラスタのそれぞれに属する複数の画像特徴ベクトル20を入力情報として、次の段の処理を再帰的に呼び出す。代表ベクトルは、例えばその分類されたクラスタに属する画像特徴ベクトル20の重心であり、そのクラスタを代表するベクトルである。またクラスタ生成部62は、最下段の処理で生成されたクラスタごとに、そのクラスタに属する画像特徴ベクトル20をクラスタベクトル格納部71に格納する。
上述の例の場合、1段目の処理では、クラスタ生成部62は、与えられた画像特徴ベクトル20を1024個のクラスタに分類し、その分類された1段目の各クラスタの代表ベクトルを生成し、生成された1段目の代表ベクトルを木構造代表ベクトル格納部72に格納する。2段目の処理では、クラスタ生成部62は、1段目に生成された1024個のクラスタのそれぞれに属する複数の画像特徴ベクトル20を入力情報として、更に512個のクラスタに分類し、その分類された2段目の各クラスタの代表ベクトルを生成し、生成された下位の段の代表ベクトルを木構造代表ベクトル格納部72に格納する。2段目のクラスタを全て生成するとその2段目のクラスタの総数は(1024×512)個となる。さらにクラスタ生成部62は、2段目に生成されたクラスタごとに、そのクラスタに属する画像特徴ベクトル20をクラスタベクトル格納部71に格納する。以下では、説明の容易のため、1段目のクラスタを代表する代表ベクトルを上位代表ベクトルと記し、最下段(上述の例では2段目)のクラスタを代表する代表ベクトルを代表特徴ベクトルと記す。また最終的に生成されたクラスタ(上述の例では2段目のクラスタ)を画像特徴クラスタとも記す。
画像特徴ベクトル20をクラスタに分類する際には、k-means法等の公知のクラスタリング手法を用いればよい。クラスタの数は、後述の画像検索部52の処理の内容を考慮すると、2のべき乗が好適であるが、2のべき乗でなくてもよい。また全ての画像に含まれる画像特徴ベクトル20を分類すると、それぞれの画像特徴クラスタには、複数の画像特徴ベクトル20が属する。クラスタ生成部62の再帰処理を2段階行う事で、木構造代表ベクトル格納部72に、2階層の情報を格納する事ができる。クラスタ生成部62の計算は、並列計算装置14を用いて行ってもよい。
図8は、代表ベクトルの木構造の一例を示す図である。クラスタ生成部62が上述の2段階の処理を行う場合、2段階のクラスタに対応する2段階の代表ベクトルが木構造を構成する。上位代表ベクトルの数は1024個であり、上位代表ベクトルのそれぞれは、512個の代表特徴ベクトルの親となっている。画像検索部52は、代表ベクトルが木構造を構成するように親子関係があることを利用して検索を行う。
図9は、画像検索部52の機能構成を示す機能ブロック図である。画像検索部52は、機能的に、代表ベクトル転送部81、クエリ特徴ベクトル取得部82、上位代表ベクトル距離計算部83、代表クラスタ選択部84、代表特徴ベクトル距離計算部85、画像特徴クラスタ選択部86、画像特徴ベクトル転送部87、画像特徴ベクトル距離計算部88、および検索結果画像選択部89を含む。
代表ベクトル転送部81は、主に並列計算装置14と、記憶部12とにより実現される。代表ベクトル転送部81は、木構造代表ベクトル格納部72に格納され、上位代表ベクトルおよびそれぞれ画像特徴クラスタを代表する複数の代表特徴ベクトルを、複数のプロセッサ41から共通にアクセスできる装置内メモリ45に転送する。代表ベクトル転送部81は、具体的には並列計算装置14やバス15のDMA(Direct Memory Access)機能を用いて記憶部12から装置内メモリ45に上記データを転送する。
図10は、装置内メモリ45でのデータ配置の一例を示す図である。装置内メモリ45には、代表特徴ベクトルを格納する領域と、上位代表ベクトルを格納する領域と、1つの画像特徴クラスタを格納する領域とが設けられる。代表ベクトル転送部81は、記憶部12に記憶される複数の代表ベクトルの情報を、予め割り当てられた装置内メモリ45のメモリ領域に格納する。画像特徴クラスタを格納する領域へのデータの格納については後述する。
ここで、代表特徴ベクトルの要素数が128次元、代表特徴ベクトルの数は画像特徴クラスタの数と同じ(1024×512)個、各要素が1バイトの整数型とすると、その複数の代表特徴ベクトルの全てのデータ量は、(1024×512×128)バイト(B)、つまり64MBとなる。また、この場合、複数の上位代表ベクトルの数は1024であるので、同様に複数の上位代表ベクトルのデータ量は(1024×128)バイト、つまり128KBとなる。例えば現行のGPUに搭載される装置内メモリ45のメモリ容量は1GB程度であり、装置内メモリ45の容量も1GBであるとすると、複数の代表ベクトルのデータ量は装置内メモリ45の容量より小さい。
一方、画像の数が100万、1つの画像から抽出される画像特徴ベクトル20の数が300とすると、複数の画像特徴クラスタに含まれる画像特徴ベクトル20のデータ量は、(100万×300×128)バイト、つまり約36GBになり、装置内メモリ45には格納できない。一方、1つの画像特徴クラスタあたりの平均的な画像特徴ベクトル20の数は、(100万×300÷(1024×512))、つまり約600であるので、データ量は75KB程度である。クラスタリングにより画像特徴クラスタに含まれる画像特徴ベクトル20の数が多少変動したとしても、複数の代表特徴ベクトルのデータ量と、複数の上位代表ベクトルのデータ量と、1つの画像特徴クラスタに含まれる画像特徴ベクトル20のデータ量との和は、装置内メモリ45の容量より小さくなる。
図11は、装置内メモリ45での代表ベクトルの配置の一例を示す図である。装置内メモリ45に格納される代表ベクトルの各要素のサイズは4バイトであり、要素の順に並んでいる。また、ある代表ベクトルのデータの先頭アドレスは、装置内メモリ45から一括して読み出すことのできるデータのバイト数(例えば32や64)の倍数となっている。このデータ構造は、後述する距離計算の処理において、装置内メモリ45に格納されるデータを複数のプロセッサ41に一括して読込ませるためのものである。代表ベクトル転送部81は、代表ベクトルの各要素のサイズが1バイトであっても、一括して読込むために、各要素のサイズを4バイトに変換したデータを装置内メモリ45に転送している。なお、上位代表ベクトルや、1つの画像特徴クラスタ内の画像特徴ベクトル20も、同様のデータ構造によって装置内メモリ45に格納される。装置内メモリ45内での複数の代表特徴ベクトル、複数の上位代表ベクトル、および1つの画像特徴クラスタに含まれる画像特徴ベクトル20のデータ量は4倍になるが、この例ではそれらのデータ量の和が装置内メモリ45の容量より小さい点は変わりない。本実施形態においては、少なくとも装置内メモリ45内での複数の代表特徴ベクトル、および複数の上位代表ベクトルのデータ量の和が装置内メモリ45の容量に収まるように、画像特徴クラスタや代表ベクトルの数を調整すればよい。
クエリ特徴ベクトル取得部82は、主にCPU11、記憶部12、および並列計算装置14によって実現される。クエリ特徴ベクトル取得部82は、クエリ画像から抽出される1または複数のクエリ特徴ベクトルを取得し、共通メモリである装置内メモリ45に格納する。
クエリ特徴ベクトル取得部82は、はじめに、クエリ画像を、クライアント装置3からウェブサーバ2を介して取得する。図12は、クエリ画像を入力する画面の一例を示す図である。クライアント装置3は、ウェブサーバ2が生成したデータにより本画面を表示する。クエリ画像は、ユーザがクライアント装置3内の画像ファイルをアップロードすることで取得されてもよいし、なんらかのウェブページに表示される画像のURLを送ることで取得されてもよいし、写真共有サービス等に格納される画像からクエリ画像を選択することで取得されてもよい。次に、クエリ特徴ベクトル取得部82は、ウェブサーバ2から、取得したクエリ画像を取得し、そのクエリ画像から1または複数のクエリ特徴ベクトルを抽出し取得する。クエリ特徴ベクトルは、画像特徴ベクトル抽出部61が画像特徴ベクトル20を抽出する手法と同じ手法を用いて生成される。次にクエリ特徴ベクトル取得部82はクエリ特徴ベクトルを装置内メモリ45に格納する。ここで、CPU11がクエリ特徴ベクトルを抽出し、CPU11が並列計算装置14がクエリ特徴ベクトルを装置内メモリ45にロードしてもよいし、クエリ画像を並列計算装置14にロードし、並列計算装置14がクエリ特徴ベクトルを抽出して装置内メモリ45に格納してもよい。
上位代表ベクトル距離計算部83は、並列計算装置14を中心として実現される。上位代表ベクトル距離計算部83は、複数の上位代表ベクトルのそれぞれと、クエリ特徴ベクトルとの距離とを、複数の並列のプロセッサ41を用いて計算する。以下では上位代表ベクトル距離計算部83での距離計算の詳細について説明する。なお、上位代表ベクトル距離計算部83、代表クラスタ選択部84、代表特徴ベクトル距離計算部85、画像特徴クラスタ選択部86および画像特徴ベクトル距離計算部88の処理は、クエリ画像から抽出されたクエリ特徴ベクトルのそれぞれについて行う。
図13は距離計算の処理フローの一例を示す図である。はじめに、上位代表ベクトル距離計算部83は、クエリ特徴ベクトルを装置内メモリ45から距離計算を行う並列実行部40の高速メモリ43にロードする(ステップS101)。次に、計算対象となるベクトル(ここでは上位代表ベクトル)の各要素を装置内メモリ45からその要素の計算を行うプロセッサ41のレジスタにロードする(ステップS102)。この際、複数のプロセッサ41は、装置内メモリ45から計算対象ベクトルのデータを一括で読込む。計算対象となるベクトルのデータが、代表ベクトル転送部81等によって予めその一括の読込ができるよう装置内メモリ45に記憶されているから、複数のプロセッサ41はその読込みを行うことができる。次に、上位代表ベクトル距離計算部83は、レジスタに格納された計算対象となるベクトルの要素と、その要素に対応するクエリ特徴ベクトルの要素とを減算し、さらにその減算結果を2乗する(ステップS103)。次に、計算対象となるベクトルの各要素についてのステップS103の計算結果を合計する(ステップS104)。そして、上位代表ベクトル距離計算部83は、合計結果を装置内メモリ45に格納する(ステップS105)。なお、ある並列実行部40に含まれる、同一の命令を実行するプロセッサ41の数がクエリ特徴ベクトルや計算対象となるベクトルの要素の数より少なければ、ステップS102からステップS104の処理は、プロセッサ41の数にあわせて分割され、複数回実行される。また、並列実行部40が複数ある場合、別の並列実行部40に、上位代表ベクトル距離計算部83は、別の計算対象となるベクトルについてステップS101からS105の処理を実行させる。また、クエリ画像から抽出された他のクエリ特徴ベクトルについても並列に計算してもよい。こうすることで、クエリ特徴ベクトルと他の複数の計算対象のベクトルとの距離計算はGPUのような並列計算装置14の並列計算能力にあわせて並列に計算される。この距離計算の処理内容からわかるように、装置内メモリ45に適切に配置された複数のベクトルと、クエリ特徴ベクトルとの距離計算はGPUのようなハードウェアと親和性が高く、非常に高速に処理される。
代表クラスタ選択部84は、並列計算装置14を中心として実現される。代表クラスタ選択部84は、上位代表ベクトル距離計算部83で計算されたクエリ特徴ベクトルと複数の上位代表ベクトルのそれぞれとの距離に基づいて、複数の代表特徴ベクトルの集合から1つの集合を選択する。より詳細には、例えば、クエリ特徴ベクトルとの距離が最も短い上位代表ベクトルの子となる複数の代表特徴ベクトルの集合を選択する。この代表特徴ベクトルの集合のそれぞれは1段目のクラスタ(代表クラスタ)に対応する。代表特徴ベクトルの集合の選択は、それに対応する代表クラスタの選択にも相当する。なお、上位代表ベクトルのそれぞれは、複数の代表特徴ベクトルを代表しているとみることもできる。代表クラスタ選択部84は、より具体的には、その代表ベクトルの集合を格納するメモリ内の領域の先頭アドレスを計算することによってその集合を選択する。例えば、ある上位代表ベクトルの子となる代表特徴ベクトルの数を上位代表ベクトルにかかわらず一定とすれば、距離が最も短い上位代表ベクトルが何番目かわかれば、かけ算等の単純な計算で先頭アドレスを求めることが可能となる。そうすれば、分岐や追加のメモリアクセスを必要とするような演算を用いずに済むため、GPUのようなハードウェアの性能をより活かした処理ができる。
代表特徴ベクトル距離計算部85は、並列計算装置14を中心として実現される。代表特徴ベクトル距離計算部85は、複数の代表特徴ベクトルの少なくとも一部のそれぞれと、クエリ特徴ベクトルとの距離とを、複数の並列のプロセッサ41を用いて計算する。ここで計算対象となる代表特徴ベクトルは、代表クラスタ選択部84で選択された集合に属する代表特徴ベクトルである。代表特徴ベクトル距離計算部85は、上位代表ベクトル距離計算部83が距離を計算するものと同様に、図13のフローに従い距離を計算する。ただし、計算対象ベクトルは上述の代表特徴ベクトルである。上位代表ベクトル距離計算部83と同様に、この処理内容はGPUのようなハードウェアと親和性が高く、非常に高速に処理される。
画像特徴クラスタ選択部86は、並列計算装置14を中心として実現される。画像特徴クラスタ選択部86は、代表特徴ベクトル距離計算部85で計算されたクエリ特徴ベクトルと複数の代表特徴ベクトルのそれぞれとの距離に基づいて、複数の画像特徴クラスタから画像特徴クラスタを選択する。より詳細には、例えば、クエリ特徴ベクトルとの距離が最も短い代表特徴ベクトルが代表する画像特徴クラスタを選択する。
画像特徴ベクトル転送部87は、記憶部12および並列計算装置14を中心として実現される。画像特徴ベクトル転送部87は画像特徴クラスタ選択部86で選択された画像特徴クラスタに属する複数の画像特徴ベクトル20を、クラスタベクトル格納部71から、複数のプロセッサ41から共通にアクセスできる装置内メモリ45に転送する。画像特徴ベクトル転送部87は、並列計算装置14やバス15のDMA機能を用いて記憶部12から装置内メモリ45に上記データを転送する。画像特徴ベクトル転送部87は、図11において代表ベクトル転送部81が代表特徴ベクトル等を転送するのと同じように、装置内メモリ45に格納されるデータを複数のプロセッサ41に一括して読込ませるように画像特徴ベクトル20のデータを配置する。
画像特徴ベクトル距離計算部88は、並列計算装置14を中心として実現される。画像特徴ベクトル距離計算部88は、複数の画像特徴ベクトル20のそれぞれと、クエリ特徴ベクトルとの距離とを、複数の並列のプロセッサ41を用いて計算する。ここで計算に用いる画像特徴ベクトル20は、画像特徴クラスタ選択部86で選択された画像特徴クラスタに属する画像特徴ベクトル20である。そのデータは画像特徴ベクトル転送部87により装置内メモリ45に転送されている。画像特徴ベクトル距離計算部88は、上位代表ベクトル距離計算部83が距離を計算するものと同様に、クエリ特徴ベクトルのそれぞれについて、図13のフローに従い距離を計算する。ただし、計算対象ベクトルは画像特徴ベクトル20である。上位代表ベクトル距離計算部83と同様に、この処理内容はGPUのようなハードウェアと親和性が高く、非常に高速に処理される。
検索結果画像選択部89は、並列計算装置14を中心として実現される。検索結果画像選択部89は、画像特徴ベクトル距離計算部88の計算結果に基づいて、検索対象となる複数の画像のうちいずれかを検索結果として選択する。まず、検索結果画像選択部89は、画像特徴ベクトル距離計算部88で計算された、クエリ特徴ベクトルと複数の画像特徴ベクトル20のそれぞれとの距離に基づいて、その距離計算に用いたクエリ特徴ベクトルに対応する画像を取得する。より詳細には、例えば、クエリ特徴ベクトルごとに、そのクエリ特徴ベクトルとの距離が最も短い画像特徴ベクトル20が抽出された画像特徴ベクトル20を選択し、その画像特徴ベクトル20が抽出された画像を取得する。その取得された画像の画像IDは、装置内メモリ45に格納する。
次に、検索結果画像選択部89は、それぞれクエリ特徴ベクトルのいずれかに対応する複数の取得された画像を統計処理し、クエリとなる画像に対して類似している1または複数の画像を選択する。図14は、クエリ特徴ベクトルに対応する画像を統計処理した結果の一例を示す図である。図14の例では、検索結果画像選択部89は、選択された画像ごとに、その画像に対応するクエリ特徴ベクトルの数(検索された回数)をカウントして画像ごとにスコアリングしている。そのスコアリングされた数値の大きい方から降順にソートする統計処理を行っている。クエリ画像から抽出される複数のクエリ特徴ベクトル画像のそれぞれについて画像が選択されるので、それを統計処理することで距離計算によって選択された画像からどの画像がクエリ画像に類似するかを評価することができる。この統計結果から、検索結果画像選択部89は1または複数の画像を検索結果の画像として選択し、ウェブサーバ2に選択した画像の情報を出力する。選択される画像は、例えば検索された回数が最も多い画像でもよいし、その回数の多い順で上位いくつかであってもよい。ウェブサーバ2は、クライアント装置3に検索結果の画像を表示させる情報を出力する。
これまでの説明からわかるように、上位代表ベクトル距離計算部83から画像特徴ベクトル距離計算部88までの処理はGPUなどの並列計算を行うハードウェアとの親和性が高く、その並列計算能力をフルに活かすことができる。また検索結果画像選択部89の処理も、ある程度並列処理が可能であり、CPU11を用いた処理より高速に処理を行うことができる。また検索結果画像選択部89の処理量は上位代表ベクトル距離計算部83から画像特徴ベクトル距離計算部88までの処理に比べれば小さいため、全体の処理時間に対する本処理の処理時間の割合は十分に小さい。これらにより、GPUによる処理時間の短縮効果を十分に享受することができる。
上述の説明では、画像特徴ベクトル距離計算部88および検索結果画像選択部89の処理は並列計算装置14を中心にして行っているが、CPU11を中心として行ってもよい。その他の処理をGPUに実行させるだけでも高速化の効果が得られるからである。また画像特徴ベクトル距離計算部88および検索結果画像選択部89の処理をCPU11で行えば、画像特徴ベクトル転送部87の処理を省略できるので、代表特徴ベクトルの距離計算などに比べれば、CPU11で処理を行うことによる計算時間の増加は抑えられる。
なお、本実施形態では上位代表ベクトルと代表特徴ベクトルのように代表ベクトルが2段階の木構造の構成になっているが、上位代表ベクトルを設けない1段の構成にしてもよい。その場合、上位代表ベクトル距離計算部83および代表クラスタ選択部84の処理は不要であり、代表特徴ベクトル距離計算部85は全ての代表特徴ベクトルについて距離計算を行う。また、上位代表ベクトルの親となる親代表ベクトルを設け、3段以上の構成にしてもよい。3段以上の構成とする場合、上位代表ベクトル距離計算部83の前にその親代表ベクトルとの距離計算をする処理と、その中から上位代表ベクトルの集合を選択する処理とが行われ、上位代表ベクトル距離計算部83は、その選択された上位代表ベクトルの集合(一部の上位代表ベクトル)について距離計算を行う。
図15は、インデックス追加部53の機能構成を示す機能ブロック図である。インデックス追加部53は、機能的に、追加特徴ベクトル抽出部91と、追加特徴ベクトル距離計算部92と、追加クラスタ選択部93と、画像特徴ベクトル追加部94とを含む。
追加特徴ベクトル抽出部91は、主にCPU11および記憶部12により実現される。追加特徴ベクトル抽出部91は、記憶部12に格納されている検索対象として追加される画像から、複数の画像特徴ベクトル20を抽出する。この抽出の手法は、画像特徴ベクトル抽出部61と同じ手法でよい。以下、この画像特徴ベクトル20を、追加特徴ベクトルと記す。
追加特徴ベクトル距離計算部92は、並列計算装置14を中心として実現される。追加特徴ベクトル距離計算部92は、追加特徴ベクトルと、木構造代表ベクトル格納部72に格納される代表特徴ベクトルのそれぞれとの距離を計算する。その距離は、図13に示す処理方法におけるクエリ特徴ベクトルと計算対象となるベクトルとを、それぞれ追加特徴ベクトルと全ての代表クラスタに含まれる代表特徴ベクトルとに替えたフローに基づいて計算される。
追加クラスタ選択部93は、並列計算装置14を中心として計算される。追加クラスタ選択部93は、追加特徴ベクトル距離計算部92の計算結果に基づいて、追加特徴ベクトルの属する画像特徴クラスタを選択する。例えば、追加特徴ベクトルのそれぞれについて、その追加特徴ベクトルとの距離が最も短い代表特徴ベクトルが代表する画像特徴クラスタをその追加特徴ベクトルに対応する画像特徴クラスタとして選択する。
画像特徴ベクトル追加部94は、CPU11および記憶部12を中心として実現される。画像特徴ベクトル追加部94は、追加クラスタ選択部93により選択された画像特徴クラスタにそれに対応する追加特徴ベクトルを追加し、その画像特徴クラスタのデータをクラスタベクトル格納部71に格納する。こうすることで、検索対象となる画像を追加する場合にも、再度クラスタリングすることなく追加される画像を検索対象に加えることができ、その追加に伴う処理時間を節約することができる。
Claims (9)
- 共通メモリと、
同一の命令を実行する複数の並列のプロセッサであって、それぞれ前記共通メモリに格納されるデータを一括して読込んで処理する複数の並列のプロセッサと、
を含む画像検索装置であって、
検索対象となる複数の画像から抽出される複数の画像特徴ベクトルであってそれぞれ複数のクラスタのいずれかに属する画像特徴ベクトルと、それぞれ前記複数のクラスタのいずれかを代表する複数の代表特徴ベクトルと、を記憶する記憶手段から、前記共通メモリに前記複数の代表特徴ベクトルを転送する代表ベクトル転送手段と、
クエリとなる画像から抽出される1または複数のクエリ特徴ベクトルを取得し、前記共通メモリに格納するクエリ特徴ベクトル取得手段と、
前記転送された複数の代表特徴ベクトルの少なくとも一部と前記クエリ特徴ベクトルとの距離を前記複数の並列のプロセッサを用いて計算する第1の距離計算手段と、
前記第1の距離計算手段による計算結果に基づいて選択されるクラスタに属する画像特徴ベクトルと、前記クエリ特徴ベクトルとの距離を計算する第2の距離計算手段と、
前記第2の距離計算手段による計算結果に基づいて、前記複数の画像のうち少なくとも1つを選択する手段と、
を含むことを特徴とする画像検索装置。 - 前記第1の距離計算手段による計算結果に基づいて選択されるクラスタに属する画像特徴ベクトルを前記記憶手段から前記共通メモリに転送する画像特徴ベクトル転送手段をさらに含み、
前記第2の距離計算手段は、前記転送された画像特徴ベクトルと前記クエリ特徴ベクトルとの距離を前記複数の並列のプロセッサを用いて計算する、
ことを特徴とする請求項1に記載の画像検索装置。 - 前記複数の代表特徴ベクトルのデータ量は、前記共通メモリの容量より小さい、
ことを特徴とする請求項1または2に記載の画像検索装置。 - 前記複数のクラスタのうち1つに属する画像特徴ベクトルのデータ量は、前記共通メモリの容量より小さく、
前記複数のクラスタに属する画像特徴ベクトルのデータ量は、前記共通メモリの容量より大きい、
ことを特徴とする請求項3に記載の画像検索装置。 - 前記複数のクラスタのうち1つに属する画像特徴ベクトルと前記複数の代表ベクトルとのデータ量は、前記共通メモリの容量より小さく、
前記画像特徴ベクトル転送手段は、前記選択されたクラスタに属する画像特徴ベクトルを、共通メモリに記憶されている他の画像特徴ベクトルと置き換える、
ことを特徴とする請求項2に記載の画像検索装置。 - 追加される検索対象となる画像から複数の画像特徴ベクトルを抽出する追加画像特徴ベクトル抽出手段と、
前記追加画像特徴ベクトル抽出手段により抽出された画像特徴ベクトルを前記クラスタのうちいずれかに追加する画像特徴ベクトル追加手段と、
をさらに含むことを特徴とする請求項1に記載の画像検索装置。 - 共通メモリと、同一の命令を実行する複数の並列のプロセッサであって、それぞれ前記共通メモリに格納されるデータを一括して読込んで処理する複数の並列のプロセッサと、を含むコンピュータを、
検索対象となる複数の画像から抽出される複数の画像特徴ベクトルであってそれぞれ複数のクラスタのいずれかに属する画像特徴ベクトルと、それぞれ前記複数のクラスタのいずれかを代表する複数の代表特徴ベクトルと、を記憶する記憶手段から、前記共通メモリに前記複数の代表特徴ベクトルを転送する代表ベクトル転送手段、
クエリとなる画像から抽出される1または複数のクエリ特徴ベクトルを、前記共通メモリに設定するクエリ設定手段、
前記転送された複数の代表特徴ベクトルの少なくとも一部と前記クエリ特徴ベクトルとの距離を前記複数の並列のプロセッサを用いて計算する第1の距離計算手段、
前記第1の距離計算手段による計算結果に基づいて選択されるクラスタに属する画像特徴ベクトルと、前記クエリ特徴ベクトルとの距離を計算する第2の距離計算手段、および
前記第2の距離計算手段による計算結果に基づいて、前記複数の画像のうち少なくとも1つを選択する手段、
として機能させるためのプログラム。 - 共通メモリと、同一の命令を実行する複数の並列のプロセッサであって、それぞれ前記共通メモリに格納されるデータを一括して読込んで処理する複数の並列のプロセッサと、を含むコンピュータに画像を検索させる画像検索方法であって、
検索対象となる複数の画像から抽出される複数の画像特徴ベクトルであってそれぞれ複数のクラスタのいずれかに属する画像特徴ベクトルと、それぞれ前記複数のクラスタのいずれかを代表する複数の代表特徴ベクトルと、を記憶する記憶手段から、前記共通メモリに前記複数の代表特徴ベクトルを転送する代表ベクトル転送ステップと、
クエリとなる画像から抽出される1または複数のクエリ特徴ベクトルを、前記共通メモリに設定するクエリ設定ステップと、
前記転送された複数の代表特徴ベクトルの少なくとも一部と前記クエリ特徴ベクトルとの距離を前記複数の並列のプロセッサを用いて計算する第1の距離計算ステップと、
前記第1の距離計算ステップによる計算結果に基づいて選択されるクラスタに属する画像特徴ベクトルと、前記クエリ特徴ベクトルとの距離を計算する第2の距離計算ステップと、
前記第2の距離計算ステップによる計算結果に基づいて、前記複数の画像のうち少なくとも1つを選択するステップと、
を含むことを特徴とする画像検索方法。 - 共通メモリと、同一の命令を実行する複数の並列のプロセッサであって、それぞれ前記共通メモリに格納されるデータを一括して読込んで処理する複数の並列のプロセッサと、を含むコンピュータを、
検索対象となる複数の画像から抽出される複数の画像特徴ベクトルであってそれぞれ複数のクラスタのいずれかに属する画像特徴ベクトルと、それぞれ前記複数のクラスタのいずれかを代表する複数の代表特徴ベクトルと、を記憶する記憶手段から、前記共通メモリに前記複数の代表特徴ベクトルを転送する代表ベクトル転送手段、
クエリとなる画像から抽出される1または複数のクエリ特徴ベクトルを、前記共通メモリに設定するクエリ設定手段、
前記転送された複数の代表特徴ベクトルの少なくとも一部と前記クエリ特徴ベクトルとの距離を前記複数の並列のプロセッサを用いて計算する第1の距離計算手段、
前記第1の距離計算手段による計算結果に基づいて選択されるクラスタに属する画像特徴ベクトルと、前記クエリ特徴ベクトルとの距離を計算する第2の距離計算手段、および
前記第2の距離計算手段による計算結果に基づいて、前記複数の画像のうち少なくとも1つを選択する手段、
として機能させるためのプログラムを記憶したコンピュータ読み取り可能な記憶媒体。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201180073446.1A CN103797509B (zh) | 2011-09-16 | 2011-11-25 | 图像检索装置和图像检索方法 |
US14/344,913 US9588991B2 (en) | 2011-09-16 | 2011-11-25 | Image search device, image search method, program, and computer-readable storage medium |
ES11872292T ES2699252T3 (es) | 2011-09-16 | 2011-11-25 | Aparato de búsqueda de imágenes, método de búsqueda de imágenes, programa y medio de registro legible por ordenador |
EP11872292.5A EP2757521B1 (en) | 2011-09-16 | 2011-11-25 | Image search apparatus, image search method, program, and computer-readable recording medium |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011202713A JP4976578B1 (ja) | 2011-09-16 | 2011-09-16 | 画像検索装置およびプログラム |
JP2011-202713 | 2011-09-16 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2013038574A1 true WO2013038574A1 (ja) | 2013-03-21 |
Family
ID=46678851
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2011/077149 WO2013038574A1 (ja) | 2011-09-16 | 2011-11-25 | 画像検索装置、画像検索方法、プログラムおよびコンピュータ読み取り可能な記憶媒体 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9588991B2 (ja) |
EP (1) | EP2757521B1 (ja) |
JP (1) | JP4976578B1 (ja) |
CN (1) | CN103797509B (ja) |
ES (1) | ES2699252T3 (ja) |
WO (1) | WO2013038574A1 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015167562A1 (en) * | 2014-04-30 | 2015-11-05 | Hewlett-Packard Development Company, L.P. | Using local memory nodes of a multicore machine to process a search query |
US10503732B2 (en) | 2013-10-31 | 2019-12-10 | Micro Focus Llc | Storing time series data for a search query |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103870485B (zh) * | 2012-12-13 | 2017-04-26 | 华为终端有限公司 | 实现增强现实应用的方法及设备 |
JP5755823B1 (ja) | 2014-03-31 | 2015-07-29 | 楽天株式会社 | 類似度算出システム、類似度算出方法およびプログラム |
US20150302036A1 (en) * | 2014-04-18 | 2015-10-22 | Inplore Inc. | Method, system and computer program for information retrieval using content algebra |
WO2016001998A1 (ja) * | 2014-06-30 | 2016-01-07 | 楽天株式会社 | 類似度算出システム、類似度算出方法およびプログラム |
GB2534535A (en) * | 2014-10-08 | 2016-08-03 | Lancaster Univ Business Entpr Ltd | Data structuring and searching methods and apparatus |
JP6420162B2 (ja) * | 2015-01-22 | 2018-11-07 | 株式会社デンソーアイティーラボラトリ | 画像検索装置、画像検索方法および画像検索プログラム |
US9311342B1 (en) | 2015-02-09 | 2016-04-12 | Sony Corporation | Tree based image storage system |
US9430718B1 (en) * | 2015-02-09 | 2016-08-30 | Sony Corporation | Efficient local feature descriptor filtering |
JP6393230B2 (ja) * | 2015-04-20 | 2018-09-19 | 株式会社日立製作所 | オブジェクト検出方法及び画像検索システム |
US10528613B2 (en) | 2015-11-23 | 2020-01-07 | Advanced Micro Devices, Inc. | Method and apparatus for performing a parallel search operation |
US11816143B2 (en) | 2017-07-18 | 2023-11-14 | Ebay Inc. | Integrated image system based on image search feature |
CN110019867A (zh) * | 2017-10-10 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 图像搜索方法、系统和索引构建方法和介质 |
CN108241745B (zh) * | 2018-01-08 | 2020-04-28 | 阿里巴巴集团控股有限公司 | 样本集的处理方法及装置、样本的查询方法及装置 |
WO2019212537A1 (en) | 2018-05-01 | 2019-11-07 | Google Llc | Accelerated large-scale similarity calculation |
WO2020051704A1 (en) * | 2018-09-12 | 2020-03-19 | Avigilon Corporation | System and method for improving speed of similarity based searches |
US10956778B2 (en) * | 2019-03-05 | 2021-03-23 | International Business Machines Corporation | Multi-level deep feature and multi-matcher fusion for improved image recognition |
US20210035025A1 (en) * | 2019-07-29 | 2021-02-04 | Oracle International Corporation | Systems and methods for optimizing machine learning models by summarizing list characteristics based on multi-dimensional feature vectors |
CN110659373B (zh) * | 2019-08-27 | 2022-11-08 | 浙江大华技术股份有限公司 | 图像检索的方法、设备、计算机设备和存储介质 |
CN113495965A (zh) | 2020-04-08 | 2021-10-12 | 百度在线网络技术(北京)有限公司 | 一种多媒体内容检索方法、装置、设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06274548A (ja) * | 1993-03-22 | 1994-09-30 | A T R Jido Honyaku Denwa Kenkyusho:Kk | 類似度計算装置 |
JP2000076268A (ja) * | 1998-08-31 | 2000-03-14 | Canon Inc | 画像検索装置及びその方法、コンピュータ可読メモリ |
JP2001160070A (ja) * | 1999-09-30 | 2001-06-12 | Hewlett Packard Co <Hp> | コンテンツベース画像の検索の階層的方法 |
WO2009060722A1 (ja) * | 2007-11-06 | 2009-05-14 | National University Corporation Hokkaido University | 類似画像検索装置 |
JP2011107795A (ja) | 2009-11-13 | 2011-06-02 | Hitachi Ltd | 画像検索システム |
JP2011523137A (ja) * | 2008-06-06 | 2011-08-04 | トムソン ライセンシング | 画像の類似検索システム及び方法 |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4344134A (en) * | 1980-06-30 | 1982-08-10 | Burroughs Corporation | Partitionable parallel processor |
US4742552A (en) * | 1983-09-27 | 1988-05-03 | The Boeing Company | Vector image processing system |
JPS6432379A (en) * | 1987-07-29 | 1989-02-02 | Hitachi Ltd | Computer |
US5253308A (en) * | 1989-06-21 | 1993-10-12 | Amber Engineering, Inc. | Massively parallel digital image data processor using pixel-mapped input/output and relative indexed addressing |
US6134541A (en) * | 1997-10-31 | 2000-10-17 | International Business Machines Corporation | Searching multidimensional indexes using associated clustering and dimension reduction information |
US6285995B1 (en) * | 1998-06-22 | 2001-09-04 | U.S. Philips Corporation | Image retrieval system using a query image |
US6728752B1 (en) * | 1999-01-26 | 2004-04-27 | Xerox Corporation | System and method for information browsing using multi-modal features |
GB2382886B (en) * | 2001-10-31 | 2006-03-15 | Alphamosaic Ltd | Vector processing system |
US7219085B2 (en) | 2003-12-09 | 2007-05-15 | Microsoft Corporation | System and method for accelerating and optimizing the processing of machine learning techniques using a graphics processing unit |
JP2005234994A (ja) | 2004-02-20 | 2005-09-02 | Fujitsu Ltd | 類似度判定プログラム、マルチメディアデータ検索プログラム、類似度判定方法、および類似度判定装置 |
US7548892B2 (en) | 2004-04-30 | 2009-06-16 | Microsoft Corporation | Processing machine learning techniques using a graphics processing unit |
JP2006031567A (ja) | 2004-07-20 | 2006-02-02 | Chuden Gijutsu Consultant Kk | 建造物画像検索システム |
JPWO2006033257A1 (ja) | 2004-09-24 | 2008-05-15 | 松下電器産業株式会社 | 画像変換方法、画像変換装置、サーバークライアントシステム、携帯機器およびプログラム |
JP4545641B2 (ja) | 2005-06-01 | 2010-09-15 | 日本電信電話株式会社 | 類似画像検索方法,類似画像検索システム,類似画像検索プログラム及び記録媒体 |
US20070244925A1 (en) * | 2006-04-12 | 2007-10-18 | Jean-Francois Albouze | Intelligent image searching |
JP4753082B2 (ja) | 2006-07-11 | 2011-08-17 | 独立行政法人産業技術総合研究所 | 高次局所共起特徴導出方法及びプログラム |
JP5098559B2 (ja) | 2007-10-11 | 2012-12-12 | 富士ゼロックス株式会社 | 類似画像検索装置、及び類似画像検索プログラム |
US8195689B2 (en) * | 2009-06-10 | 2012-06-05 | Zeitera, Llc | Media fingerprinting and identification system |
US8144947B2 (en) | 2008-06-27 | 2012-03-27 | Palo Alto Research Center Incorporated | System and method for finding a picture image in an image collection using localized two-dimensional visual fingerprints |
JP2010250637A (ja) | 2009-04-17 | 2010-11-04 | Seiko Epson Corp | 画像サーバー、画像検索システム、画像検索方法および画像管理方法 |
US8429173B1 (en) * | 2009-04-20 | 2013-04-23 | Google Inc. | Method, system, and computer readable medium for identifying result images based on an image query |
JP5673540B2 (ja) | 2009-08-18 | 2015-02-18 | 公立大学法人大阪府立大学 | 物体検出方法 |
JP5458815B2 (ja) | 2009-11-11 | 2014-04-02 | 株式会社デンソーアイティーラボラトリ | マルチメディア検索システム |
JP5385105B2 (ja) | 2009-11-25 | 2014-01-08 | Kddi株式会社 | 画像検索方法およびシステム |
RU2533441C2 (ru) | 2009-12-30 | 2014-11-20 | Нокиа Корпорейшн | Способ и устройство для обеспечения поиска изображения по содержимому |
JP2012033022A (ja) | 2010-07-30 | 2012-02-16 | Panasonic Corp | 空間における変化領域検出装置及び方法 |
CN102129451B (zh) * | 2011-02-17 | 2013-05-01 | 上海交通大学 | 图像检索系统中数据聚类方法 |
US8515193B1 (en) * | 2011-04-08 | 2013-08-20 | Google Inc. | Image compression using exemplar dictionary based on hierarchical clustering |
JP5577372B2 (ja) * | 2012-03-29 | 2014-08-20 | 楽天株式会社 | 画像検索装置、画像検索方法、プログラムおよびコンピュータ読取り可能な記憶媒体 |
JP5577371B2 (ja) * | 2012-03-29 | 2014-08-20 | 楽天株式会社 | 画像検索装置、画像検索方法およびプログラム |
WO2014158169A1 (en) * | 2013-03-28 | 2014-10-02 | Hewlett-Packard Development Company, L.P. | Generating a feature set |
-
2011
- 2011-09-16 JP JP2011202713A patent/JP4976578B1/ja active Active
- 2011-11-25 WO PCT/JP2011/077149 patent/WO2013038574A1/ja active Application Filing
- 2011-11-25 CN CN201180073446.1A patent/CN103797509B/zh active Active
- 2011-11-25 ES ES11872292T patent/ES2699252T3/es active Active
- 2011-11-25 EP EP11872292.5A patent/EP2757521B1/en active Active
- 2011-11-25 US US14/344,913 patent/US9588991B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06274548A (ja) * | 1993-03-22 | 1994-09-30 | A T R Jido Honyaku Denwa Kenkyusho:Kk | 類似度計算装置 |
JP2000076268A (ja) * | 1998-08-31 | 2000-03-14 | Canon Inc | 画像検索装置及びその方法、コンピュータ可読メモリ |
JP2001160070A (ja) * | 1999-09-30 | 2001-06-12 | Hewlett Packard Co <Hp> | コンテンツベース画像の検索の階層的方法 |
WO2009060722A1 (ja) * | 2007-11-06 | 2009-05-14 | National University Corporation Hokkaido University | 類似画像検索装置 |
JP2011523137A (ja) * | 2008-06-06 | 2011-08-04 | トムソン ライセンシング | 画像の類似検索システム及び方法 |
JP2011107795A (ja) | 2009-11-13 | 2011-06-02 | Hitachi Ltd | 画像検索システム |
Non-Patent Citations (1)
Title |
---|
See also references of EP2757521A4 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10503732B2 (en) | 2013-10-31 | 2019-12-10 | Micro Focus Llc | Storing time series data for a search query |
WO2015167562A1 (en) * | 2014-04-30 | 2015-11-05 | Hewlett-Packard Development Company, L.P. | Using local memory nodes of a multicore machine to process a search query |
US10423616B2 (en) | 2014-04-30 | 2019-09-24 | Hewlett Packard Enterprise Development Lp | Using local memory nodes of a multicore machine to process a search query |
Also Published As
Publication number | Publication date |
---|---|
EP2757521A4 (en) | 2015-09-23 |
CN103797509A (zh) | 2014-05-14 |
US9588991B2 (en) | 2017-03-07 |
US20150052139A1 (en) | 2015-02-19 |
ES2699252T3 (es) | 2019-02-08 |
JP2013065146A (ja) | 2013-04-11 |
JP4976578B1 (ja) | 2012-07-18 |
CN103797509B (zh) | 2017-07-07 |
EP2757521B1 (en) | 2018-10-10 |
EP2757521A1 (en) | 2014-07-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4976578B1 (ja) | 画像検索装置およびプログラム | |
JP5577372B2 (ja) | 画像検索装置、画像検索方法、プログラムおよびコンピュータ読取り可能な記憶媒体 | |
JP5577371B2 (ja) | 画像検索装置、画像検索方法およびプログラム | |
CN110287961B (zh) | 中文分词方法、电子装置及可读存储介质 | |
US8943091B2 (en) | System, method, and computer program product for performing a string search | |
JP5681558B2 (ja) | データの保存を制御する装置及び方法 | |
JP2020074193A (ja) | サーチ方法、装置、設備および不揮発性計算機メモリ | |
WO2022007596A1 (zh) | 图像检索系统、方法和装置 | |
Wang et al. | GPU-based MapReduce for large-scale near-duplicate video retrieval | |
JP5869948B2 (ja) | パッセージ分割方法、装置、及びプログラム | |
Yin et al. | Content‐Based Image Retrial Based on Hadoop | |
JP6746472B2 (ja) | 生成装置、生成方法および生成プログラム | |
CN113343137A (zh) | 优化seo页面生成方法、装置、电子设备及存储介质 | |
CN118296445B (zh) | 社交媒体数据加速计算方法及装置 | |
WO2022130578A1 (ja) | 類似度判定プログラム、類似度判定装置、及び、類似度判定方法 | |
JP5181821B2 (ja) | 画像処理装置、画像処理方法、プログラム | |
JP2020112919A (ja) | データ統合支援装置、データ統合支援方法、及びデータ統合支援プログラム | |
CN118114741A (zh) | 模型的处理方法、装置及计算机可读存储介质 | |
CN116401337A (zh) | 一种信息处理方法和装置 | |
Łagiewka et al. | Color-based large-scale image retrieval with limited hardware resources | |
CN117216090A (zh) | 数据分析方法、装置、计算机设备及其存储介质 | |
CN113792210A (zh) | 一种基于语义实时分析的热控方法及系统 | |
Eick et al. | A visualization testbed for analyzing the performance of computational linguistics algorithms |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 11872292 Country of ref document: EP Kind code of ref document: A1 |
|
WWE | Wipo information: entry into national phase |
Ref document number: 14344913 Country of ref document: US |
|
NENP | Non-entry into the national phase |
Ref country code: DE |