Ricerca visiva nel settore della vendita 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 immaginare che i rivenditori svilupperanno un'architettura di interazione coi clienti supportata dall'intelligenza artificiale. 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à dall'immissione di testo a un'immagine con più punti di metadati per far emergere 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 ritiene che le ricerche di testo siano inefficienti, secondo uno studio del 2015 condotto da Slyce, una società di ricerca visiva.

Pertanto, il mercato del riconoscimento delle immagini avrà un valore superiore ai 25 miliardi di dollari entro il 2019, secondo una ricerca di Markets & Markets.

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.

Adottarla e adattarsi

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 contestuali dalle immagini, identificando, ad esempio, l'arredamento per la casa, la 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. Benché interessanti, questi suggerimenti hanno un interesse limitato se la propria azienda non è una di quelle che vende i prodotti proposti.

Bing fornisce anche:

  • Tag che consentono di esplorare gli oggetti o i concetti illustrati nell'immagine.
  • Riquadri per isolare le aree di interesse dell'immagine, ad esempio 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 la propria soluzione

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 possiede un catalogo di immagini, potrebbe essere necessario eseguire il training degli algoritmi in set di dati disponibili pubblicamente, 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: Un esempio dal set di dati DeepFashion

Filtrare le immagini

La maggior parte dei set di dati di benchmark, ad esempio quelli menzionati in precedenza, sono già stati pre-elaborati.

Se si crea il proprio benchmark, è opportuno che, come minimo, tutte le immagini abbiano le stesse dimensioni, che dipendono, principalmente, dall'input per cui è stato eseguito il training del modello.

In molti casi, è consigliabile anche uniformare 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 semi-strutturati e senza uno schema fisso.

È anche consigliabile richiedere un numero minimo di punti dati utili, ad esempio, un identificatore o una chiave dell'immagine, lo SKU di un prodotto, una descrizione o un campo di tag.

Azure CosmosDB offre la flessibilità e la varietà di meccanismi di accesso di cui hanno bisogno le applicazioni basate su di esso. Questo faciliterà anche le ricerche nel catalogo. Tuttavia, è necessario prestare attenzione a ottenere il miglior rapporto prezzo/prestazioni. Azure CosmosDB consente di archiviare documenti allegati, ma poiché è previsto un limite totale per account, la proposta può risultare costosa. È pratica comune archiviare i file di immagine in BLOB e inserire un collegamento ai BLOB nel database. Nel caso di Azure Cosmos DB, ciò implica la creazione di un documento che contiene le proprietà del catalogo associate a tale immagine (ad esempio, SKU, 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 gerarchico delle risorse di Azure Cosmos DB

Se si prevede di sfruttare la distribuzione globale di Azure Cosmos DB, si noti che replicherà 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.

Codifica & estrazione 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 funzionalità, ad esempio, forme e bordi, 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 quanto un modello personalizzato in cui il training è stato eseguito con il proprio catalogo di 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à, ovvero più piccolo e sparso, 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

Sia che si scelga un modello con training preliminare o che si opti per sviluppare il proprio modello, sarà comunque necessario decidere dove eseguire la definizione delle funzionalità 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 scrittura di questo articolo, questa offerta è limitata a determinate architetture di rete, pertanto è necessario valutarne attentamente le prestazioni.

Misura della similarità o distanza

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 & 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. Poiché esistono in numerose librerie open source, non è necessario codificarli 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 in diversi contenitori, in cui ognuno gestisce una partizione dello spazio ricerca, 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