/hawkeye

Primary LanguageJupyter NotebookApache License 2.0Apache-2.0

What is hawkeye?

Hawkeye is an image search engine developed for the Multimedia Information Retrieval and Computer Vision course of the MSc Artificial Intelligence and Data Engineering at UniversitĂ  di Pisa.

It is a search engine based on the query-by-example paradigm: a user submit an image, the search engine returns the most similar ones belonging to the image collection. It uses as index a Vantage Point Tree and the MobileNetV2 for feature extraction. We extract two times the features: first, using the un-modified MobileNetV2, then with a fine-tuned version.

The fine-tuned model is in the \model directory. Each file contains a description of the steps performed.

Project files:

Query pre-processing pipeline issue

During search engine developing, we found that using the following preprocessing pipeline gives us strange results:

query = tf.keras.preprocessing.image.load_img(path_to_query, target_size=(224,224), interpolation='bilinear')
query = tf.keras.preprocessing.image.img_to_array(query)
query= tf.keras.applications.mobilenet_v2.preprocess_input(query)
query = np.array([query])

A careful investigation let us discover that loading the query using this pipeline gives us different results in terms of pixels, and so features, compared to what we obtain using the image_dataset_from_directory function. We decided to use the same pipeline used in the image_dataset_from_directory to avoid such discrepancy and have good results. Moreover, we investigate the performance of the two functions the code is available in this notebook: Pipelines performance comparison

Credits

@thorongil05, @matildao-pane, @ragnar1002, @nooshinnr, @seraogianluca