Magnanelli, Lorenzo
(2023)
Soluzione end-to-end per la ricerca di similarità per immagini.
[Laurea magistrale], Università di Bologna, Corso di Studio in
Ingegneria informatica [LM-DM270], Documento full-text non disponibile
Il full-text non è disponibile per scelta dell'autore.
(
Contatta l'autore)
Abstract
La ricerca di vicini in uno spazio vettoriale è un servizio che sta diventando sempre più essenziale per la ricerca o la raccomandazione di contenuti. Nel tempo sono state create diverse soluzioni per l’implementazione di un’efficiente ricerca per similarità, tra cui le più famose Faiss ed Elasticsearch.
In questo elaborato sono presi in considerazione Redis e i servizi di Google Cloud Platform per la realizzazione di una applicazione web di ricerca di similarità per immagini. Redis è un database NoSQL in memoria molto performante che gestisce i dati in forma di chiave-valore e permette di effettuare ricerche knn con indici esatti e approssimati.
Per prima cosa è stato necessario occuparsi del calcolo degli embedding delle immagini, ovvero delle loro rappresentazioni vettoriali. Ciò è reso possibile grazie al modello di machine learning CLIP, pre-allenato con più di 400 milioni di coppie immagine-testo. Si tratta di un modello in grado di risolvere una grande varietà di problemi, con elevate performance in diversi benchmark di classificazione.
Come dataset sono stati scelti Unsplash Lite e Amazon Berkley Objects, differenti in termini di dimensioni, tipologia di immagini e metadati associati.
Successivamente sono state realizzate due pipeline di gestione dati con Beam e Dataflow. La prima si occupa della generazione degli embedding, mentre la seconda carica questi ultimi su Redis.
Infine, sono stati sviluppati front-end e back-end con Streamlit e FastAPI.
I test svolti hanno mostrato quanto una singola istanza di Redis sia un’alternativa molto promettente per la ricerca di immagini simili. Infatti, è stato possibile recuperare risultati in pochi millisecondi. In più, gli indici hanno tempi di creazione e requisiti di memoria molto bassi.
Ricerche future potrebbero essere volte all’utilizzo di dataset di dimensioni più elevate (decine o centinaia di milioni di dati) e allo studio di Redis Cluster (Redis distribuito orizzontalmente su più nodi replica).
Abstract
La ricerca di vicini in uno spazio vettoriale è un servizio che sta diventando sempre più essenziale per la ricerca o la raccomandazione di contenuti. Nel tempo sono state create diverse soluzioni per l’implementazione di un’efficiente ricerca per similarità, tra cui le più famose Faiss ed Elasticsearch.
In questo elaborato sono presi in considerazione Redis e i servizi di Google Cloud Platform per la realizzazione di una applicazione web di ricerca di similarità per immagini. Redis è un database NoSQL in memoria molto performante che gestisce i dati in forma di chiave-valore e permette di effettuare ricerche knn con indici esatti e approssimati.
Per prima cosa è stato necessario occuparsi del calcolo degli embedding delle immagini, ovvero delle loro rappresentazioni vettoriali. Ciò è reso possibile grazie al modello di machine learning CLIP, pre-allenato con più di 400 milioni di coppie immagine-testo. Si tratta di un modello in grado di risolvere una grande varietà di problemi, con elevate performance in diversi benchmark di classificazione.
Come dataset sono stati scelti Unsplash Lite e Amazon Berkley Objects, differenti in termini di dimensioni, tipologia di immagini e metadati associati.
Successivamente sono state realizzate due pipeline di gestione dati con Beam e Dataflow. La prima si occupa della generazione degli embedding, mentre la seconda carica questi ultimi su Redis.
Infine, sono stati sviluppati front-end e back-end con Streamlit e FastAPI.
I test svolti hanno mostrato quanto una singola istanza di Redis sia un’alternativa molto promettente per la ricerca di immagini simili. Infatti, è stato possibile recuperare risultati in pochi millisecondi. In più, gli indici hanno tempi di creazione e requisiti di memoria molto bassi.
Ricerche future potrebbero essere volte all’utilizzo di dataset di dimensioni più elevate (decine o centinaia di milioni di dati) e allo studio di Redis Cluster (Redis distribuito orizzontalmente su più nodi replica).
Tipologia del documento
Tesi di laurea
(Laurea magistrale)
Autore della tesi
Magnanelli, Lorenzo
Relatore della tesi
Correlatore della tesi
Scuola
Corso di studio
Ordinamento Cds
DM270
Parole chiave
vector similarity search,Google Cloud Platform,dataflow,pipeline,Redis
Data di discussione della Tesi
23 Marzo 2023
URI
Altri metadati
Tipologia del documento
Tesi di laurea
(NON SPECIFICATO)
Autore della tesi
Magnanelli, Lorenzo
Relatore della tesi
Correlatore della tesi
Scuola
Corso di studio
Ordinamento Cds
DM270
Parole chiave
vector similarity search,Google Cloud Platform,dataflow,pipeline,Redis
Data di discussione della Tesi
23 Marzo 2023
URI
Gestione del documento: