Giornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI Giovanni
Tecniche e Architetture per il Riconoscimento, il Confronto e la Ricerca di Corrispondenze di Immagini.pdf
1. Tecniche e Architetture per il
Riconoscimento, il Confronto e la
Ricerca di Corrispondenze di Immagini
Laureando:
Ulysse Rosset
Relatore:
Prof. Ing. Giovanni Ramponi
Correlatori:
Prof. Ing. Livio Tenze
Ing. Alessandro Segatto
Università degli Studi di Trieste
Dipartimento di Ingegneria e Architettura
LAUREA MAGISTRALE in
INGEGNERIA INFORMATICA e ELETTRONICA
2. Problema Affrontato e Obiettivo
Problema: trovare la migliore corrispondenza data un’immagine di input
Obiettivo: ricerca di metodi e tecniche di image matching che eseguano il
confronto tra un’immagine di input e N immagini di un dataset
Immagine raffigurante lo stesso oggetto dell’immagine di input
Tipologia di immagini: bottiglie o etichette di bottiglie di vino
Confronti basandosi solo su feature intrinseche alle stesse immagini (no OCR)
4. ESTECO SpA
Azienda di software altamente specializzata nell'ottimizzazione numerica e
nella gestione di processi e dati di simulazione
Risultati dei test eseguiti per valutare le performance dei metodi verranno
analizzati dall’azienda → ricerca tramite immagine nell’app Vinnie
Immagine della bottiglia di vino utilizzata come input di ricerca invece
della stringa testuale (nome del vino) da digitare nella barra di ricerca
5. Vinnie
Principali funzionalità di Vinnie:
Assistente virtuale in modalità chat che, sfruttando una AI ed in base alle
indicazione dell’utente, trova l’abbinamento vino-cibo ideale
AI integrata per apprendere preferenze e gusti dell’utente e fornirgli consigli e
suggerimenti sempre più personalizzati
Attribuire una valutazione personale (non pubblica) al vino
Compilare una scheda di degustazione con note visive, olfattive e gustative
Informazioni di degustazione, abbinamenti consigliati, informazioni di servizio
6. App e Servizi Concorrenti
Funzionalità non presenti in Vinnie ma disponibili in app e servizi concorrenti:
Inserire valutazioni e giudizi pubblici (Vivino, Wine-Searcher, CellarTracker)
Ampia raccolta di recensioni e giudizi su vini (Vivino, CellarTracker)
Store interno (Vivino, Delectable tramite Banquet) o store esterno (Wine-Searcher)
Contatti diretti con produttori di vino → prezzi competitivi (Wine-Searcher, TWIL)
Forum di discussione con anche utenti esperti e qualificati (CellarTracker)
Seguire consigli di esperti sommelier (Delectable)
Punto di forza Vinnie: assistente virtuale in modalità chat che sfrutta una AI
7. Metodi Sperimentati
• Descrizione delle principali caratteristiche e del funzionamento di ogni metodo
• Risultati dei migliori metodi e soluzione di image matching proposta
8. Metriche di Somiglianza tra Immagini
Metriche di somiglianza tra immagini utilizzate:
• MSE • PSNR • SSIM index • UQI index
• ERGAS • RASE • SAM
1. Lettura immagine di input e di un’immagine del dataset
2. Resize immagine input → immagine dataset e immagini dataset → immagine input
3. Calcolo della metrica tra immagine di input e ogni immagine del dataset
4. Memorizzazione dei valori in un dizionario (nome immagine, valore metrica)
5. Ordinamento dizionario e restituzione del 1° elemento → immagine più simile
9. Firme di Immagini
Calcolo di un identificatore per ogni immagine → signature (firma)
Firma derivata da codifica della luminosità relativa delle regioni dell’immagine
Metrica di confronto: distanza normalizzata tra firme
Firme di versioni diverse della stessa immagine hanno una distanza vettoriale ridotta
1. Calcolo delle firme delle immagini
2. Calcolo della distanza normalizzata tra le firme
3. Memorizzazione dei valori distanze in dizionario (nome immagine, valore distanza)
4. Ordinamento dizionario e restituzione del 1° elemento → immagine più simile
Formato Signature
10. Algoritmi di Image Hashing
Algoritmi di image hashing utilizzati:
• A-Hash (Average Hash) • P-Hash (Perceptual Hash) struttura immagine
• D-Hash (Difference Hash) • W-Hash (Wavelet Hash) in base alla luminanza
• HSV Color Hash (color hash) distribuzione del colore dell’immagine
Hash: stringhe alfanumeriche di simboli hex di lunghezza 16
Ad immagini simili per contenuto corrispondono hash simili per simboli (≠ MD5, SHA)
Metriche di distanza tra hash: distanza di Hamming, Levenshtein, Jaccard e Sorensen
1. Fase di setup: lettura immagini, calcolo hash, creazione dataframe
|nome immagine|valore hash|, conversione in .csv e salvataggio in locale del file
2. Fase di evaluation: importazione .csv, conversione in un dataframe, calcolo distanza tra
hash immagine di input e hash immagini del dataset, aggiunta distanze al dataframe
3. Ordinamento dataframe e restituzione della 1a riga → immagine più simile
Formato Hash
11. CNN pre-allenate
Reti neurali convoluzionali (CNN) pre-allenate su dataset Imagenet:
• MobileNet • MobileNetV2
• InceptionV3 • ResNet • ResNetV2 • InceptionResNetV2 • Xception
Metrica di confronto tra immagini: cosine similarity
1. Calcolo della cosine similarity tra immagine di input e immagini del dataset
2. Memorizzazione valori in dizionario [immagine, (immagine simile, valore cosine
similarity)] per immagini simili aventi valore > rispetto ad una soglia ottimale
3. Selezione lista (immagine simile, valore cosine similarity) dell’immagine di input
4. Ordinamento lista e restituzione della 1a coppia della lista → immagine più simile
12. Confronto tra Istogrammi di Immagini
Calcolo e confronto degli istogrammi tramite le seguenti metriche o distanze:
• Correlazione tra istogrammi • distanza Chi-Square usando metodi
• Intersezione tra istogrammi • distanza di Hellinger nativi di OpenCV
• Distanza Euclidea • Distanza di Manhattan • Distanza di Chebyshev usando SciPy
Istogrammi costituiti da bin → intervalli di valori assumibili dai pixel
1. Lettura immagini, conversione BGR → RGB
2. Estrazione istogrammi 3D RGB, 8 bin, intervallo [0, 255], normalizzazione min-max ,
concatenazione istogramma di ogni canale in un unico array → feature array da 512 dim
3. Creazione dizionario (immagine, istogramma) e calcolo metrica/distanza tra istogrammi
4. Creazione dizionario (immagine, valore metrica o distanza), ordinamento e restituzione
del 1° elemento → immagine più simile
13. Algoritmi di Feature Extraction e Matching
Varie tecniche di image matching con algoritmi AKAZE, BRISK, ORB e SIFT, SURF
e una combinazione delle seguenti procedure:
• Matching tra descriptor: 1) BF Matcher o 2) FLANN-based Matcher
• Metrica per match tra descriptor: 1) Distanza di Manhattan o Euclidea o di Hamming
2) Algoritmi KD-TREE o LSH
• Lowe’s ratio test: soglia 0.6 o 0.7 o 0.75 • Omografia: errore di riproiezione 2.0 o 5.0
• Algoritmi di mismatch removal: RANSAC o PROSAC
1. Lettura immagini, rilevazione keypoint, calcolo descriptor
2. Calcolo # match tra descriptor immagine di input e descriptor immagini del dataset
3. Creazione dizionario ed inserimento elementi (immagine, # match) per immagini
aventi # match > rispetto ad una soglia ottimale
4. Ordinamento dizionario e restituzione del 1° elemento → immagine più simile
Formato Descriptor
16. Caso di Studio
Dataset: 160 immagini di bottiglie di vino diverse Test set: 1600 immagini
Applicazione di 10 tipi di trasformazioni - distorsioni alle immagini del dataset:
• scaling (al 50 %, al 25 %) • rotation (+20°, +50°, -30°)
• compression (downsampling 4:2:0) • cropping (del 30 %, zona random)
• near (varie distorsioni presenti) • g_s (gamma correction, histogram stretching)
• s_n_f (shifting, speckle noise, filtri mediano e gaussiano)
Valutazione delle performance dei metodi in termini di precision e runtime
Relativamente agli algoritmi di feature matching anche:
# medio feature rilevate # medio di match tra feature
ORB >> BRISK > SURF > SIFT > AKAZE ORB >> SIFT > BRISK > SURF > AKAZE
17. Risultati Principali
Miglior metodo in termini di runtime:
• D-Hash + distanza di Hamming / Levenshtein (Runtime: 0.08 s, Precision: 40 %)
Migliori metodi in termini di precision:
• ORB, BRISK, SIFT (Runtime: 4-5 s, Precision: 98-99 %)
Migliori metodi in termini di precision e runtime:
• Estrazione istogrammi RGB + distanza di Hellinger (Runtime: 0.45 s, Precision: 95 %)
Tuttavia, non scalabile per dataset più ampi, peggioramento performance
• ORB (BRISK) + LSH + Lowe’s RT 0.75 + omografia 5.0 (2.0) + RANSAC (PROSAC)
(Runtime: 3.75 s (4.25 s), Precision: 98 % (99 %))
18. Soluzione di Image Matching proposta
Setup:
♦ Downsampling delle immagini del dataset al ≈ 10 % della dimensione originaria
♦ Calcolo degli hash delle immagini del dataset e memorizzazione hash in un file .csv
Evaluation:
♦ Lettura dal .csv delle stringhe hash delle immagini, calcolo hash dell’immagine di input
♦ Calcolo delle distanze tra hash immagine di input e gli hash delle immagini del dataset
♦ Inserimento (immagine, distanza tra hash) in dataframe e ordinamento in ordine crescente
♦ Memorizzazione e scrittura in un file .txt del filename delle immagini aventi distanza < rispetto
ad una soglia ottimale → elenco dei putative match
♦ Downsampling dell’immagine di input al ≈ 10 % della dimensione originaria
♦ Esecuzione di un algoritmo di feature extraction e matching sui putative match
♦ Restituzione della migliore corrispondenza → immagine più simile
19. Soluzione di Image Matching proposta
* Downsampling dell’immagine di input ≈ 0.15 s
Tuttavia, per dataset di dimensioni maggiori, in vari esperimenti in letteratura:
• BRISK ha una precision quasi pari a ORB e un runtime leggermente superiore
• ORB è il più efficiente algoritmo di feature matching in termini di precision con
un runtime secondo solo a quello di AKAZE
Alg. Image
Hashing
Distanza tra
stringhe hash
Alg. feature matching Precision Runtime
A-Hash (0.08 s) Levenshtein AKAZE (0.85 s) 98 % 1.10 s *
D-Hash (0.08 s) Hamming BRISK (1.15 s) 99 % 1.30 s *
D-Hash (0.08 s) Hamming ORB (1.60 s) 98 % 1.80 s *
20. Image Matching tramite OCR
Google Cloud Vision
Riconosce correttamente ogni
area testuale
Font molto stilizzati e particolari
Scritte poco nitide, parole sfocate
Numerosi formati supportati: JPEG,
PNG, GIF, Raw, WebP e altri
Aree testuali non presenti, molto
spesso formate da un carattere
Amazon Rekognition Text In Image
Rileva correttamente tutte e le
sole aree testuali
Facile sfruttamento del servizio,
rapida configurazione Rekognition
API request
Problemi nell’identificazione di font
stilizzati e parole sfocate
Formati immagine supportati sono
solo JPEG e PNG