Editar

Partilhar via


Pesquisa visual no varejo com o Azure Cosmos DB

Azure Blob Storage
Azure Cosmos DB
Azure Kubernetes Service (AKS)
Azure SQL Database

A Inteligência Artificial oferece o potencial de transformar o varejo como o conhecemos hoje. É razoável acreditar que os varejistas desenvolverão uma arquitetura de experiência do cliente suportada pela IA. Algumas expectativas são de que uma plataforma aprimorada com IA proporcione um aumento de receita devido à hiperpersonalização. O comércio digital continua a aumentar as expectativas, preferências e comportamento dos clientes. Demandas como engajamento em tempo real, recomendações relevantes e hiperpersonalização estão impulsionando a velocidade e a conveniência com um clique de um botão. Possibilitamos a inteligência em aplicações através da fala natural, visão e assim por diante. Essa inteligência permite melhorias no varejo que aumentarão o valor ao mesmo tempo em que interromperão a forma como os clientes compram.

Este documento centra-se no conceito de IA de pesquisa visual e oferece algumas considerações fundamentais sobre a sua implementação. Ele fornece um exemplo de fluxo de trabalho e mapeia seus estágios para as tecnologias relevantes do Azure. O conceito baseia-se na possibilidade de os clientes tirarem partido de uma imagem que é tirada com o seu dispositivo móvel ou que está localizada na internet. Eles realizariam uma pesquisa de itens relevantes e semelhantes, dependendo da intenção da experiência. Assim, a pesquisa visual melhora a velocidade da entrada de texto para uma imagem com vários pontos de metadados para revelar rapidamente todos os itens aplicáveis que estão disponíveis.

Motores de busca visual

Os mecanismos de pesquisa visual recuperam informações usando imagens como entrada e, muitas vezes, mas não exclusivamente, como saída também.

Os motores estão se tornando cada vez mais comuns no setor de varejo, e por boas razões:

  • Cerca de 75% dos internautas pesquisam fotos ou vídeos de um produto antes de fazer uma compra, de acordo com um relatório da Emarketer publicado em 2017.
  • 74% dos consumidores também consideram as pesquisas de texto ineficientes, de acordo com um relatório de 2015 da Slyce (uma empresa de pesquisa visual).

Portanto, o mercado de reconhecimento de imagem valerá mais de US$ 25 bilhões até 2019, de acordo com pesquisa da Markets & Markets.

A tecnologia já se firmou com grandes marcas de e-commerce, que também contribuíram significativamente para o seu desenvolvimento. Os primeiros a adotar mais proeminentes são, provavelmente:

  • eBay com suas ferramentas de Pesquisa de Imagens e "Find It on eBay" em seu aplicativo (atualmente esta é apenas uma experiência móvel).
  • Pinterest com a ferramenta de descoberta visual Lens.
  • Microsoft com Pesquisa Visual do Bing.

Adotar e adaptar

Felizmente, você não precisa de grandes quantidades de poder de computação para lucrar com a pesquisa visual. Qualquer empresa com um catálogo de imagens pode tirar partido da experiência em IA da Microsoft incorporada nos seus serviços do Azure.

A API de Pesquisa Visual do Bing fornece uma maneira de extrair informações de contexto de imagens, identificando, por exemplo, móveis para casa, moda, vários tipos de produtos e assim por diante.

Ele também retornará imagens visualmente semelhantes de seu próprio catálogo, produtos com fontes de compras relativas, pesquisas relacionadas. Embora interessante, isso será de uso limitado se sua empresa não for uma dessas fontes.

O Bing também fornecerá:

  • Tags que permitem explorar objetos ou conceitos encontrados na imagem.
  • Caixas delimitadoras para regiões de interesse na imagem (como para roupas ou itens de mobiliário).

Você pode usar essas informações para reduzir significativamente o espaço (e o tempo) de pesquisa no catálogo de produtos de uma empresa, restringindo-o a objetos como os da região e da categoria de interesse.

Implemente o seu próprio

Há alguns componentes-chave a serem considerados ao implementar a pesquisa visual:

  • Ingestão e filtragem de imagens
  • Técnicas de armazenamento e recuperação
  • Featurização, codificação ou "hashing"
  • Medidas de semelhança ou distâncias e classificação

Figura 1: Exemplo de pipeline de pesquisa visual

Fornecendo as fotos

Se você não possui um catálogo de imagens, talvez seja necessário treinar os algoritmos em conjuntos de dados disponíveis abertamente, como MNIST de moda, moda profunda e assim por diante. Eles contêm várias categorias de produtos e são comumente usados para avaliar a categorização de imagens e algoritmos de pesquisa.

Figura 2: Um exemplo do conjunto de dados DeepFashion

Filtrar as imagens

A maioria dos conjuntos de dados de referência, como os mencionados anteriormente, já foi pré-processada.

Se você construir seu próprio benchmark, no mínimo você vai querer que as imagens tenham todas o mesmo tamanho, principalmente ditado pela entrada para a qual seu modelo é treinado.

Em muitos casos, é melhor também normalizar a luminosidade das imagens. Dependendo do nível de detalhe da sua pesquisa, a cor também pode ser uma informação redundante, portanto, reduzir para preto e branco ajudará nos tempos de processamento.

Por último, mas não menos importante, o conjunto de dados de imagem deve ser equilibrado entre as diferentes classes que representa.

Base de dados de imagens

A camada de dados é um componente particularmente delicado da sua arquitetura. Deve conter:

  • Imagens
  • Quaisquer metadados sobre as imagens (tamanho, tags, SKUs do produto, descrição)
  • Dados gerados pelo modelo de aprendizado de máquina (por exemplo, um vetor numérico de 4096 elementos por imagem)

À medida que você recupera imagens de diferentes fontes ou usa vários modelos de aprendizado de máquina para obter um desempenho ideal, a estrutura dos dados será alterada. Portanto, é importante escolher uma tecnologia ou combinação que possa lidar com dados semiestruturados e sem esquema fixo.

Você também pode querer exigir um número mínimo de pontos de dados úteis (como um identificador de imagem ou chave, uma sku de produto, uma descrição ou um campo de tag).

O Azure Cosmos DB oferece a flexibilidade necessária e uma variedade de mecanismos de acesso para aplicativos criados sobre ele (o que ajudará na pesquisa do catálogo). No entanto, é preciso ter cuidado para conduzir o melhor preço / desempenho. O Azure Cosmos DB permite que anexos de documentos sejam armazenados, mas há um limite total por conta e pode ser uma proposta cara. É uma prática comum armazenar os arquivos de imagem reais em blobs e inserir um link para eles no banco de dados. No caso do Azure Cosmos DB, isso implica criar um documento que contenha as propriedades do catálogo associadas a essa imagem (como uma SKU, tag e assim por diante) e um anexo que contenha a URL do arquivo de imagem (por exemplo, no armazenamento de Blob do Azure, OneDrive e assim por diante).

Figura 3: Modelo de recursos hierárquicos do Azure Cosmos DB

Se você planeja aproveitar a distribuição global do Azure Cosmos DB, observe que ele replicará os documentos e anexos, mas não os arquivos vinculados. Você pode considerar uma rede de distribuição de conteúdo para esses.

Outras tecnologias aplicáveis são uma combinação de Banco de Dados SQL do Azure (se o esquema fixo for aceitável) e blobs, ou até mesmo Tabelas e blobs do Azure para armazenamento e recuperação rápidos e baratos.

Extração de recursos e codificação

O processo de codificação extrai características salientes de imagens no banco de dados e mapeia cada uma delas para um vetor de "recurso" esparso (um vetor com muitos zeros) que pode ter milhares de componentes. Este vetor é uma representação numérica das características (como bordas e formas) que caracterizam a imagem. É semelhante a um código.

As técnicas de extração de recursos normalmente usam mecanismos de aprendizagem de transferência. Isso ocorre quando você seleciona uma rede neural pré-treinada, executa cada imagem através dela e armazena o vetor de recurso produzido de volta em seu banco de dados de imagens. Dessa forma, você "transfere" o aprendizado de quem treinou a rede. A Microsoft desenvolveu e publicou várias redes pré-treinadas que têm sido amplamente utilizadas para tarefas de reconhecimento de imagem, como a ResNet50.

Dependendo da rede neural, o vetor de recurso será mais ou menos longo e esparso, portanto, os requisitos de memória e armazenamento variarão.

Além disso, você pode achar que diferentes redes são aplicáveis a diferentes categorias, portanto, uma implementação de pesquisa visual pode realmente gerar vetores de recursos de tamanho variável.

Redes neurais pré-treinadas são relativamente fáceis de usar, mas podem não ser tão eficientes quanto um modelo personalizado treinado em seu catálogo de imagens. Essas redes pré-treinadas são normalmente projetadas para classificação de conjuntos de dados de referência, em vez de pesquisar em sua coleção específica de imagens.

Você pode querer modificá-los e treiná-los novamente para que produzam uma previsão de categoria e um vetor denso (ou seja, menor, não esparso), que será muito útil para restringir o espaço de pesquisa, reduzir os requisitos de memória e armazenamento. Vetores binários podem ser usados e são frequentemente referidos como " hash semântico " - um termo derivado de técnicas de codificação e recuperação de documentos. A representação binária simplifica outros cálculos.

Figura 4: Modificações no ResNet para Pesquisa Visual – F. Yang et al., 2017

Quer escolha modelos pré-treinados ou para desenvolver o seu próprio, terá ainda de decidir onde executar a featurização e/ou formação do próprio modelo.

O Azure oferece várias opções: VMs, Azure Batch, Batch AI, clusters Databricks. Em todos os casos, no entanto, o melhor preço/desempenho é dado pelo uso de GPUs.

A Microsoft também anunciou recentemente a disponibilidade de FPGAs para computação rápida a uma fração do custo da GPU (projeto Brainwave). No entanto, no momento em que este artigo foi escrito, esta oferta está limitada a determinadas arquiteturas de rede, pelo que terá de avaliar o seu desempenho de perto.

Medida de semelhança ou distância

Quando as imagens são representadas no espaço vetorial do recurso, encontrar semelhanças torna-se uma questão de definir uma medida de distância entre pontos nesse espaço. Uma vez definida uma distância, você pode calcular clusters de imagens semelhantes e/ou definir matrizes de similaridade. Dependendo da métrica de distância selecionada, os resultados podem variar. A medida de distância euclidiana mais comum sobre vetores de números reais, por exemplo, é fácil de entender: captura a magnitude da distância. No entanto, é bastante ineficiente em termos de computação.

A distância cosseno é frequentemente usada para capturar a orientação do vetor, em vez de sua magnitude.

Alternativas como a distância de Hamming sobre representações binárias trocam alguma precisão por eficiência e velocidade.

A combinação do tamanho do vetor e da medida de distância determinará o quão intensiva computacionalmente e memória a pesquisa será.

Pesquisa e classificação

Uma vez que a semelhança é definida, precisamos desenvolver um método eficiente para recuperar os itens N mais próximos daquele passado como entrada e, em seguida, retornar uma lista de identificadores. Isso também é conhecido como "ranking de imagens". Em um grande conjunto de dados, o tempo para calcular cada distância é proibitivo, por isso usamos algoritmos aproximados do vizinho mais próximo. Existem várias bibliotecas de código aberto para eles, então você não terá que codificá-las do zero.

Finalmente, os requisitos de memória e computação determinarão a escolha da tecnologia de implantação para o modelo treinado, bem como a alta disponibilidade. Normalmente, o espaço de pesquisa será particionado e várias instâncias do algoritmo de classificação serão executadas em paralelo. Uma opção que permite escalabilidade e disponibilidade são os clusters Kubernetes do Azure. Nesse caso, é aconselhável implantar o modelo de classificação em vários contêineres (manipulando uma partição do espaço de pesquisa cada) e vários nós (para alta disponibilidade).

Contribuidores

Este artigo é mantido pela Microsoft. Foi originalmente escrito pelos seguintes contribuidores.

Principais autores:

Outros contribuidores:

Próximos passos

A implementação da pesquisa visual não precisa ser complexa. Você pode usar o Bing ou criar o seu próprio com os serviços do Azure, enquanto se beneficia da pesquisa e das ferramentas de IA da Microsoft.

Programar

Fundo