Searching for image in large database

asked 2019-04-23 08:09:53 -0500

termos gravatar image

Hi,

I am trying to build image search engine that would allow searching for image/part of the image inside a large database of images.

The plan is following:

1) Index all database images by extracting their SURF feature descriptors
2) Extract SURF descriptors from the file we want to find
3) Find the best match inside a database

I am stuck in a 3) where I cannot perform really fast search inside a database. Approaches like "Feature Matching with FLANN" work, but are slow and unscalable on large datasets.

Please point me to the right direction on how to: 1) perform a really fast search 2) prepare SURF descriptors so that they could be indexed (the size of outgoing descriptors varies from image to image, and I guess needs to be normalized somehow)

edit retag flag offensive close merge delete

Comments

Have you tried using image pyramids for feature matching? I recall having a similar problem and it helped me speed up the process

eshirima gravatar imageeshirima ( 2019-04-23 08:41:54 -0500 )edit

@eshirima, no, I haven't. But I am reading about it right now and haven't found any similar use cases.

termos gravatar imagetermos ( 2019-04-23 08:49:07 -0500 )edit

Approaches like "Feature Matching with FLANN" work

no, you're wrong about it. this kind of matching is good to find a homography between 2 images, but most keypoints / descriptors are statistically irrelevant for similarity search, and the matching algorithm is not made for your task (it won't ever give you ameasure of "similarity").

.

so that they could be indexed (the size of outgoing descriptors varies from image to image

usually, some kind of clustering is used (kmeans / BoW / VLAD), followed by some ml /tree based search.

please do more research on this (CBIR), there are also some ready made solutions to inspect (like pastec)

berak gravatar imageberak ( 2019-04-24 02:10:39 -0500 )edit