Images are an important part of today’s society. They are everywhere on the internet
and computing, from news articles to diverse areas such as medicine, autonomous
vehicles and social media. This enormous amount of images requires massive amounts
of processing power to process, upload, download and search for images. The ability to
search an image, and find similar images in a library of millions of others empowers users
with great advantages. Different fields have different constraints, but all benefit from the
quick processing that can be achieved.
Problems arise when creating a solution for this. The similarity calculation between
several images, performing thousands of comparisons every second, is a challenge. The
results of such computations are very large, and pose a challenge when attempting to
process. Solutions for these problems often take advantage of graphs in order to index
images and their similarity. The graph can then be used for the querying process. Creating
and processing such a graph in an acceptable time frame poses yet another challenge.
In order to tackle these challenges, we take advantage of a cluster of machines equipped
with Graphics Processing Units (GPUs), enabling us to parallelize the process of describing
an image visually and finding other images similar to it in an acceptable time frame.
GPUs are incredibly efficient at processing data such as images and graphs, through algorithms
that are heavily parallelizable. We propose a scalable and modular system that
takes advantage of GPUs, distributed computing and fine-grained parallellism to detect
image features, index images in a graph and allow users to search for similar images.
The solution we propose is able to compare up to 5000 images every second. It is
also able to query a graph with thousands of nodes and millions of edges in a matter
of milliseconds, achieving a very efficient query speed. The modularity of our solution
allows the interchangeability of algorithms and different steps in the solution, which
provides great adaptability to any needs