Tutorial de pesquisa de vestuário

Este tutorial foi elaborado para permitir que um desenvolvedor comece rapidamente a explorar e desenvolver aplicativos com a pesquisa de produtos do Cloud Vision.

O aplicativo de pesquisa de produtos de vestuário permite que os varejistas configurem toda a lista desse tipo de produto, como roupas, óculos, acessórios, calçados e chapelaria com imagens, além de recuperar o código do produto quando um usuário fizer uma consulta com a própria imagem.

Visão geral dos métodos da pesquisa de produtos

Este tutorial inclui os seguintes métodos:

  • import_product_sets: executa a configuração necessária, incluindo a criação de um conjunto e de produtos, além de adicionar produtos ao conjunto e importar imagens para os produtos usando um arquivo CSV.

  • get_similar_products: pesquisa produtos que correspondem a uma imagem.

Instalação

Java

Node.js

Python

Defina as seguintes variáveis de ambiente, em que /path/to/service_account.json é o caminho para os arquivos de chave da conta de serviço (consulte Antes de começar). project-id é o código do seu projeto do Google Cloud Platform (GCP). region-name é o local do GCP que executará seu tutorial, por exemplo, "us-east1". Os identificadores de local válidos são: "us-west1", "us-east1", "europe-west1" e "asia-east1".

export GOOGLE_APPLICATION_CREDENTIALS=/path/to/service_account.json
export PROJECT_ID=project-id
export REGION_NAME=region-name

Arquivos de origem

Java

Node.js

Python

Importar bibliotecas

Para usar a pesquisa de produtos do Cloud Vision, faça o download e instale a biblioteca de cliente e importe os módulos a seguir:

Java

Node.js

Não é necessário importar bibliotecas para a versão do Node.js deste tutorial.

Python

Como executar o aplicativo

Etapa 1: importar o conjunto de produtos

Primeiro, o varejista precisa transmitir a lista de produtos pertencentes ao departamento de vestuário (conjunto de produtos) e criar um índice na pesquisa de produtos do Vision. A interface import_product_sets cria uma lista a partir da criação de um conjunto e de produtos, além de adicionar produtos ao conjunto e importar imagens para os produtos usando um arquivo CSV.

Arquivo CSV com imagens do produto

Você pode fornecer dados de imagem para a pesquisa de produtos do Vision usando um arquivo CSV. O arquivo CSV contém a lista de locais de imagem de todos os produtos que precisam ser indexados ao seu conjunto de produtos. O arquivo precisa ser enviado para um intervalo do Google Cloud Storage. O formato CSV é descrito aqui.

Veja um exemplo de linhas de um arquivo CSV a seguir:

gs://cloud-ai-vision-data/product-search-tutorial/dress-shoe-dataset/469a896b70ba11e8be97d20059124800.jpg,image-id1,12000002,469a896b,apparel,"product name","style=women,category=dress","0.0,0.0,0.4,0.5",
gs://cloud-ai-vision-data/product-search-tutorial/dress-shoe-dataset/469ac87870ba11e88fe4d20059124800.jpg,image-id2,12000002,469ac878,apparel,"product name","style=women,category=dress,kids=true",,
gs://cloud-ai-vision-data/product-search-tutorial/dress-shoe-dataset/469ae13370ba11e894f4d20059124800.jpg,image-id3,12000002,469ae133,apparel,"product name","style=women,category=shoe","0.0,0.1,0.2,0.3",

O método import_product_sets cria o conjunto de produtos com um código (departamento) “12000002” e adiciona todos os produtos e imagens de referência. Os rótulos são criados para colunas como "style", "category" e "kids".

As imagens do produto são importadas do local do intervalo do Google Cloud Storage, conforme especificado na coluna "ImageUri" no arquivo CSV.

Solicitação

Faça uma solicitação a import_product_sets para criar um conjunto e produtos. Em seguida, adicione esses produtos ao conjunto e importe as imagens de referência. Transmita o caminho do arquivo CSV que contém a lista de locais de imagem de todos os produtos como um argumento.

Java

Node.js

Python

Código

A função import_product_sets() usa os seguintes parâmetros, cria um conjunto e produtos e adiciona esses produtos ao conjunto. A função então adiciona referências de imagem aos produtos no conjunto.

  • projectId: código do projeto.
  • computeRegion: nome da região.
  • gcs_uri: caminho do arquivo de imagem do produto (Google Cloud Storage). Esse arquivo csv contém uma lista de localizações de imagens de todos os produtos que precisam ser indexados.

Java

Node.js

Python

Resposta

Processing operation name: locations/us-east1/operations/bf639a4355989c9b Processing done.
Results of the processing:
....
Status of processing line 20 of the csv:
name: "projects/prj-prod-search-tutorials/locations/us-east1/products/p46916b401/referenceImages/46916b4070ba11e89dbed20059124800"
uri: "gs://product-search-tutorial/dress-shoe-dataset/46916b4070ba11e89dbed20059124800.jpg"

Status of processing line 21 of the csv:
name: "projects/prj-prod-search-tutorials/locations/us-east1/products/p4691aea11/referenceImages/4691aea170ba11e8a1b3d20059124800"
uri: "gs://product-search-tutorial/dress-shoe-dataset/4691aea170ba11e8a1b3d20059124800.jpg"
...

O varejista agora pode transmitir uma imagem enviada por upload de um consumidor à pesquisa de produtos do Vision. Assim, será possível encontrar um código de produto em que a imagem corresponda exatamente a uma do catálogo.

Etapa 2: pesquisar e exibir produtos

Um usuário pode tirar fotos do vestido em que está interessado e procurar produtos iguais ou similares no portal do varejista. A interface get_similar_product recebe como entrada a foto do consumidor, localiza o código do produto que melhor corresponde a ela e exibe as informações completas do produto.

A interface usa, como entrada, o código do conjunto de produtos, a localização da imagem do consumidor a ser pesquisada, a condição de filtragem com base nos rótulos.

Como a API da pesquisa de produtos retorna uma lista de códigos de produto com confiança, este tutorial usa apenas o código do produto com a mais alta confiança para ser o produto de correspondência aproximada.

Solicitação

Faça uma solicitação de pesquisa executando a seguinte solicitação com o tipo de operação "get_similar_product". O código do conjunto de produtos, o caminho do arquivo de imagem local e o filtro vazio são transmitidos como argumentos. Essa imagem de entrada também está presente em "resources/input/".

Java

Node.js

Python

Código

A função get_similar_product() usa os parâmetros a seguir, pesquisa a imagem do produto que melhor corresponde à imagem de entrada e exibe as informações completas do produto. A função draw_image() exibe a melhor imagem do produto correspondente com as informações do produto.

  • project_id: código do projeto.
  • compute_region: nome da região.
  • product_set_id: código do conjunto de produtos a pesquisar.
  • search_image: caminho da imagem a ser pesquisada.
  • filter: condição a ser aplicada aos rótulos.

Java

Node.js

Python

Resposta

Search Image:
  D:/product/final/images-20180618T073733Z-01/images/469355b570ba11e88ff2d20059124800.jpg

Resultado da pesquisa de imagens

Similar product information:
 Product id: 46930b6b
 Product display name: Evening gown
 Product description: Blue evening gown in 1940s style
 Product category: apparel
 style: women
 category: dress
 color: blue

Como pesquisar com um rótulo

O exemplo de pesquisa a seguir inclui um filtro com base na cor.

Solicitação

Faça uma solicitação de pesquisa executando a seguinte solicitação com o tipo de operação "get_similar_product". O código do conjunto de produtos, o caminho do arquivo de imagem local e o filtro vazio são transmitidos como argumentos. Essa imagem de entrada também está presente em "resources/input/".

Java

Node.js

Python

Resposta

Search Image:
  D:/product/final/images-20180618T073733Z-001/images/469355b570ba11e88ff2d20059124800.jpg

Resultado da pesquisa de imagens 2

Similar product information:
 Product id: p569d4e7a1
 Product display name: Wedding Dress
 Product description: Elegant Wedding Dress for women
 Product category: apparel
 style: women
 category: dress
 color: white