Ricerca visiva al dettaglio con Azure Cosmos DB

Archiviazione BLOB di Azure
Azure Cosmos DB
Servizio Azure Kubernetes
database SQL di Azure

L'intelligenza artificiale ha il potenziale di trasformare la vendita al dettaglio come è intesa attualmente. È ragionevole credere che i rivenditori sviluppino un'architettura dell'esperienza cliente supportata dall'IA. Ci sono delle aspettative in merito al fatto che una piattaforma potenziata dall'intelligenza artificiale possa far incrementare i guadagni grazie alla notevole personalizzazione. L'e-commerce continua ad accrescere le aspettative dei clienti e ad ampliarne le preferenze e i comportamenti. Le interazioni in tempo reale, la visualizzazione di suggerimenti pertinenti e la personalizzazione estrema sono fattori che favoriscono la velocità e la comodità a cui si accede con un semplice clic. L'intelligenza nelle applicazioni viene abilitata tramite il riconoscimento vocale naturale, la visione e così via. Questa intelligenza consente miglioramenti nella vendita al dettaglio che aumenteranno il valore interrompendo il modo in cui i clienti acquistano.

Questo documento è incentrato sul concetto di ricerca visiva proprio dell'intelligenza artificiale e propone alcune importanti considerazioni per la sua implementazione. Propone un esempio di flusso di lavoro e ne associa le varie fasi alle tecnologie di Azure pertinenti. Il concetto si basa sul fatto che i clienti possono sfruttare un'immagine acquisita con il proprio dispositivo mobile o che si trova su Internet. Condurrebbero una ricerca di elementi rilevanti e simili, a seconda dell'intenzione dell'esperienza. Pertanto, la ricerca visiva migliora la velocità dalla voce di testo a un'immagine con più punti metadati per visualizzare rapidamente tutti gli elementi applicabili disponibili.

Motori di ricerca visiva

I motori di ricerca visiva recuperano le informazioni usando le immagini come input e spesso, ma non sempre, anche come output.

Questi motori stanno diventando sempre più comuni nel settore delle vendite al dettaglio per una serie di buoni motivi:

  • Circa il 75% degli utenti Internet cerca immagini o video di un prodotto prima di effettuare un acquisto, secondo uno studio Emarketer pubblicato nel 2017.
  • Il 74% dei consumatori trova anche ricerche di testo inefficienti, secondo un report di Slyce (una società di ricerca visiva) 2015.

Pertanto, il mercato del riconoscimento delle immagini varrà più di $ 25 miliardi entro il 2019, secondo la ricerca di Mercati e mercati.

La tecnologia ha già preso piede presso i principali marchi di e-commerce che hanno, a loro volta, contribuito anche in modo significativo al suo sviluppo. I marchi più importanti che l'hanno utilizzata per primi sono probabilmente:

  • eBay con le funzioni di ricerca per immagini e "Find IT on eBay" (Trova su eBay) della propria app (per il momento si tratta di una funzione riservata ai dispositivi mobili).
  • Pinterest con lo strumento di ricerca visiva Lens (Obiettivo).
  • Microsoft con Ricerca visiva Bing.

Adottare e adattare

Fortunatamente, non occorrono grandi quantità di potenza di calcolo per trarre vantaggio dalla ricerca visiva. Qualsiasi azienda con un catalogo di immagini può sfruttare le funzionalità di intelligenza artificiale che Microsoft ha incorporato nei servizi di Azure.

L'API Ricerca visiva Bing consente di estrarre informazioni di contesto dalle immagini, identificando, ad esempio, arredamento di casa, moda, diversi tipi di prodotti e così via.

Restituisce, inoltre, immagini visivamente simili prelevate dal catalogo dell'azienda, prodotti con informazioni di dove acquistarli e ricerche correlate. Anche se interessante, questo sarà di uso limitato se l'azienda non è una di queste origini.

Bing fornisce anche:

  • Tag che consentono di esplorare gli oggetti o i concetti illustrati nell'immagine.
  • Rettangoli di delimitazione per le aree di interesse nell'immagine (ad esempio per capi di abbigliamento o mobili).

È possibile sfruttare tali informazioni per ridurre in modo significativo lo spazio, e il tempo, di ricerca nel catalogo dei prodotti dell'azienda, limitando la ricerca agli oggetti simili e a quelli che appartengono alla categoria di interesse.

Implementare il proprio

Quando si implementa la ricerca visiva bisogna considerare alcuni componenti chiave:

  • Inserimento e filtro delle immagini
  • Tecniche di archiviazione e recupero
  • Definizione delle funzionalità, codifica o "hashing"
  • Misure della similarità o distanza e classificazione

Figura 1: Esempio di pipeline di ricerca visiva

Origine delle immagini

Se non si è proprietari di un catalogo immagini, potrebbe essere necessario eseguire il training degli algoritmi su set di dati disponibili, ad esempio fashion MNIST, deep fashion e così via. Contengono diverse categorie di prodotti e vengono comunemente usati per il benchmark della categorizzazione delle immagini e degli algoritmi di ricerca.

Figura 2: Esempio del set di dati DeepFashion

Filtro delle immagini

La maggior parte dei set di dati di benchmark, ad esempio quelli menzionati in precedenza, è già stata pre-elaborata.

Se crei un benchmark personalizzato, almeno vuoi che le immagini abbiano tutte le stesse dimensioni, principalmente dettate dall'input per cui viene eseguito il training del modello.

In molti casi, è consigliabile normalizzare anche la luminosità delle immagini. A seconda del livello di dettaglio della ricerca, il colore potrebbe essere un'informazione ridondante, quindi limitando i colori a bianco e nero si velocizzerà l'elaborazione.

Ultimo ma non meno importante, il set di dati delle immagini deve essere bilanciato tra le diverse classi che rappresenta.

Database di immagini

Il livello dati è un componente particolarmente delicato dell'architettura. Contiene:

  • Immagini
  • Tutti i metadati sulle immagini (dimensione, tag, SKU del prodotto, descrizione)
  • I dati generati dal modello di machine learning, ad esempio un vettore numerico di 4096 elementi per ogni immagine

Quando si recuperano immagini provenienti da origini diverse oppure si usano modelli diversi di machine learning per ottenere prestazioni ottimali, la struttura dei dati si modificherà. È quindi importante scegliere una tecnologia o una combinazione in grado di gestire dati semistrutturati e senza schemi fissi.

È anche possibile richiedere un numero minimo di punti dati utili, ad esempio un identificatore di immagine o una chiave, uno SKU del prodotto, una descrizione o un campo tag.

Azure Cosmos DB offre la flessibilità necessaria e un'ampia gamma di meccanismi di accesso per le applicazioni basate su di esso, che consentono di eseguire la ricerca nel catalogo. Tuttavia, è necessario prestare attenzione a ottenere il miglior rapporto prezzo/prestazioni. Azure Cosmos DB consente l'archiviazione degli allegati di documenti, ma esiste un limite totale per ogni account e può essere una proposta costosa. È pratica comune archiviare i file di immagine effettivi nei BLOB e inserire un collegamento al file nel database. Nel caso di Azure Cosmos DB, questo implica la creazione di un documento contenente le proprietà del catalogo associate a tale immagine (ad esempio uno SKU, un tag e così via) e un allegato che contiene l'URL del file di immagine (ad esempio, in Archiviazione BLOB di Azure, OneDrive e così via).

Figura 3: Modello di risorse gerarchico di Azure Cosmos DB

Se si prevede di sfruttare la distribuzione globale di Azure Cosmos DB, tenere presente che verranno replicati i documenti e gli allegati, ma non i file collegati. Per questi si può prendere in considerazione di utilizzare una rete di distribuzione dei contenuti.

Altre tecnologie utilizzabili sono una combinazione di database SQL di Azure, se lo schema fisso è accettabile, e i BLOB, oppure le tabelle di Azure e i BLOB per rendere le attività di archiviazione e recupero facili ed economiche.

Estrazione e codifica delle funzionalità

Il processo di codifica estrae le funzionalità principali dalle immagini del database ed esegue il mapping di ognuna di esse a un vettore di "funzionalità" di tipo sparse, cioè un vettore con molti zeri, che può avere migliaia di componenti. Questo vettore è una rappresentazione numerica delle caratteristiche (ad esempio bordi e forme) che caratterizzano l'immagine. È simile a un codice.

Le tecniche di estrazione delle funzionalità usano il trasferimento dei meccanismi di apprendimento. Ciò si verifica quando si seleziona una rete neurale con training preliminare, si elabora ogni immagine con la rete e si archivia il vettore della funzionalità generato nuovamente nel database di immagini. In questo senso, l'apprendimento viene "trasferito" da chiunque abbia sottoposto a training la rete. Microsoft ha sviluppato e pubblicato diverse reti con training preliminare che sono ampiamente utilizzate per attività di riconoscimento delle immagini, ad esempio ResNet50.

A seconda della rete neurale, il vettore di funzionalità sarà più o meno lungo e sparse, quindi i requisiti di memoria e archiviazione varieranno.

Inoltre, è possibile che reti diverse vengano usate per categorie diverse, pertanto un'implementazione di ricerca visiva potrebbe generare vettori di funzionalità di dimensioni diverse.

Le reti neurali con training preliminare sono relativamente facili da usare, ma potrebbero non essere efficienti come un modello personalizzato sottoposto a training nel catalogo immagini. Le reti con training preliminare sono in genere progettate per la classificazione dei set di dati di benchmark piuttosto che per svolgere ricerche in una raccolta di immagini specifica.

Si può prendere in considerazione di modificarle e ripetere il training in modo che producano sia una stima della categoria sia un vettore ad alta densità, rispetto a uno più piccolo e sparse, che sarà molto utile per limitare lo spazio di ricerca e ridurre i requisiti per la memorizzazione e l'archiviazione. È ammesso l'uso dei vettori binari, che vengono spesso indicati come " hashing semantico", un termine derivato dalle tecniche di codifica e recupero dei documenti. La rappresentazione binaria semplifica i calcoli ulteriori.

Figura 4: Modifiche a ResNet per la ricerca visiva – F. Yang e altri, 2017

Indipendentemente dal fatto che si scelgano modelli con training preliminare o si sviluppino modelli personalizzati, è comunque necessario decidere dove eseguire la definizione delle caratteristiche e/o il training del modello stesso.

Azure offre diverse opzioni: macchine virtuali, Azure Batch, Batch per intelligenza artificiale, cluster Databricks. In tutti i casi, tuttavia, il miglior rapporto prezzo/prestazioni si ottiene utilizzando le GPU, o unità di elaborazione grafica.

Microsoft ha, inoltre, annunciato di recente la disponibilità di FPGA per il calcolo rapido a una frazione del costo delle GPU (progetto Brainwave). Tuttavia, al momento della stesura di questo articolo, questa offerta è limitata a determinate architetture di rete, quindi è necessario valutarne attentamente le prestazioni.

Misura o distanza di somiglianza

Quando le immagini sono rappresentate nello spazio del vettore di funzionalità, la ricerca di similarità diventa una questione di misurazione della distanza tra i punti in tale spazio. Dopo aver definita una distanza, è possibile calcolare i cluster di immagini simili e/o definire le matrici di similarità. A seconda della metrica di distanza selezionata, i risultati possono variare. La misura della distanza euclidea più comune su vettori di numeri reali, ad esempio, è facile da comprendere: misura l'entità della distanza. Tuttavia, è piuttosto inefficiente in termini di calcolo.

La distanza del coseno viene spesso usata per misurare l'orientamento del vettore, anziché l'entità.

Le alternative disponibili, ad esempio la distanza Hamming delle rappresentazioni binarie, sacrificano un po' di precisione a vantaggio dell'efficienza e della velocità.

La combinazione delle dimensioni del vettore e della misura di distanza determinerà quanto sarà intensivo l'utilizzo del calcolo e della memoria della ricerca.

Ricerca e classificazione

Una volta definita la similarità, è necessario definire un metodo efficiente per recuperare gli N elementi più vicini a quello passato come input e per restituire un elenco di identificatori. Questa operazione è nota anche come "classificazione dell'immagine". In grandi set di dati, il tempo necessario per calcolare ogni distanza è proibitivo, perciò si usano gli algoritmi approssimativi del vicino più prossimo. Esistono diverse librerie open source per tali librerie, quindi non è necessario codificarle da zero.

Infine, i requisiti di calcolo e memoria determineranno la scelta della tecnologia di distribuzione per il modello con training, nonché l'elevata disponibilità. In genere, lo spazio di ricerca verrà partizionato e verranno eseguite in parallelo diverse istanze dell'algoritmo di classificazione. Un'opzione che offre scalabilità e disponibilità è rappresentata dai cluster Azure Kubernetes. In tal caso, è consigliabile distribuire il modello di classificazione tra più contenitori (gestione di una partizione dello spazio di ricerca ciascuno) e diversi nodi (per la disponibilità elevata).

Collaboratori

Questo articolo viene gestito da Microsoft. Originariamente è stato scritto dai seguenti contributori.

Autori principali:

Altri contributori:

Passaggi successivi

L'implementazione della ricerca visiva non deve essere necessariamente complessa. È possibile utilizzare Bing o creare la propria implementazione personalizzata con i servizi di Azure sfruttando la ricerca e gli strumenti messi a disposizione da Microsoft per l'intelligenza artificiale.

Sviluppo

Background