Conformidade com planograma de prateleira (visualização)
Um planograma é um diagrama que indica o posicionamento correto dos produtos de varejo nas prateleiras. A API de conformidade de planograma permite comparar os resultados da análise de uma foto com a entrada de planograma da loja. Ele retorna uma conta de todas as posições no planograma e se um produto foi encontrado em cada posição.
Nota
As marcas mostradas nas imagens não são afiliadas à Microsoft e não indicam qualquer forma de endosso dos produtos da Microsoft ou da Microsoft pelos proprietários da marca, ou um endosso dos proprietários da marca ou seus produtos pela Microsoft.
Pré-requisitos
- Você já deve ter configurado e executado a análise básica de Compreensão do Produto com a API de Compreensão do Produto.
- cURL instalado. Ou, você pode usar uma plataforma REST diferente, como Swagger ou a extensão REST Client para VS Code.
Preparar um esquema de planograma
Você precisa ter seus dados de planograma em um formato JSON específico. Consulte as seções abaixo para obter definições de campo.
"planogram": {
"width": 100.0,
"height": 50.0,
"products": [
{
"id": "string",
"name": "string",
"w": 12.34,
"h": 123.4
}
],
"fixtures": [
{
"id": "string",
"w": 2.0,
"h": 10.0,
"x": 0.0,
"y": 3.0
}
],
"positions": [
{
"id": "string",
"productId": "string",
"fixtureId": "string",
"x": 12.0,
"y": 34.0
}
]
}
As coordenadas X e Y são relativas a uma origem superior esquerda, e a largura e a altura estendem cada caixa delimitadora para baixo e para a direita. O diagrama a seguir mostra exemplos do sistema de coordenadas.
Nota
As marcas mostradas nas imagens não são afiliadas à Microsoft e não indicam qualquer forma de endosso dos produtos da Microsoft ou da Microsoft pelos proprietários da marca, ou um endosso dos proprietários da marca ou seus produtos pela Microsoft.
As quantidades no esquema de planograma estão em unidades não específicas. Podem corresponder a polegadas, centímetros ou qualquer outra unidade de medida. O algoritmo de correspondência calcula a relação entre as unidades de análise fotográfica (pixels) e as unidades de planograma.
Modelo de API de planograma
Descreve o planograma para operações de correspondência de planograma.
Nome | Tipo | Descrição | Obrigatório |
---|---|---|---|
width |
duplo | Largura do planograma. | Sim |
height |
duplo | Altura do planograma. | Sim |
products |
ProdutoApiModel | Lista de produtos no planograma. | Sim |
fixtures |
FixtureApiModel | Lista de equipamentos no planograma. | Sim |
positions |
PositionApiModel | Lista de posições no planograma. | Sim |
Modelo de API do produto
Descreve um produto no planograma.
Nome | Tipo | Descrição | Obrigatório |
---|---|---|---|
id |
string | ID do produto. | Sim |
name |
string | Nome do produto. | Sim |
w |
duplo | Largura do produto. | Sim |
h |
duplo | Altura da luminária. | Sim |
Modelo de API de fixação
Descreve um acessório (prateleira ou hardware semelhante) em um planograma.
Nome | Tipo | Descrição | Obrigatório |
---|---|---|---|
id |
string | ID do equipamento. | Sim |
w |
duplo | Largura da luminária. | Sim |
h |
duplo | Altura da luminária. | Sim |
x |
duplo | Deslocamento esquerdo da origem, em unidades de polegadas ou centímetros. | Sim |
y |
duplo | Deslocamento superior da origem, em unidades de polegadas ou centímetros. | Sim |
Modelo de API de posição
Descreve a posição de um produto em um planograma.
Nome | Tipo | Descrição | Obrigatório |
---|---|---|---|
id |
string | ID do cargo. | Sim |
productId |
string | ID do produto. | Sim |
fixtureId |
string | ID do equipamento em que o produto se encontra. | Sim |
x |
duplo | Deslocamento esquerdo da origem, em unidades de polegadas ou centímetros. | Sim |
y |
duplo | Deslocamento superior da origem, em unidades de polegadas ou centímetros. | Sim |
Obter resultados de análise
Em seguida, você precisa fazer uma chamada de API de Compreensão do Produto com um modelo personalizado.
O texto JSON retornado deve ser uma "detectedProducts"
estrutura. Ele mostra todos os produtos que foram detetados na prateleira, com os rótulos específicos do produto que você usou na etapa de treinamento.
"detectedProducts": {
"imageMetadata": {
"width": 21,
"height": 25
},
"products": [
{
"id": "01",
"boundingBox": {
"x": 123,
"y": 234,
"w": 34,
"h": 45
},
"classifications": [
{
"confidence": 0.8,
"label": "Product1"
}
]
}
],
"gaps": [
{
"id": "02",
"boundingBox": {
"x": 12,
"y": 123,
"w": 1234,
"h": 123
},
"classifications": [
{
"confidence": 0.9,
"label": "Product1"
}
]
}
]
}
Preparar o pedido de correspondência
Junte o conteúdo JSON do seu esquema de planograma com o conteúdo JSON dos resultados da análise, da seguinte forma:
"planogram": {
"width": 100.0,
"height": 50.0,
"products": [
{
"id": "string",
"name": "string",
"w": 12.34,
"h": 123.4
}
],
"fixtures": [
{
"id": "string",
"w": 2.0,
"h": 10.0,
"x": 0.0,
"y": 3.0
}
],
"positions": [
{
"id": "string",
"productId": "string",
"fixtureId": "string",
"x": 12.0,
"y": 34.0
}
]
},
"detectedProducts": {
"imageMetadata": {
"width": 21,
"height": 25
},
"products": [
{
"id": "01",
"boundingBox": {
"x": 123,
"y": 234,
"w": 34,
"h": 45
},
"classifications": [
{
"confidence": 0.8,
"label": "Product1"
}
]
}
],
"gaps": [
{
"id": "02",
"boundingBox": {
"x": 12,
"y": 123,
"w": 1234,
"h": 123
},
"classifications": [
{
"confidence": 0.9,
"label": "Product1"
}
]
}
]
}
Este é o texto que você usará no corpo da solicitação da API.
Chamar a API de correspondência de planograma
Copie o seguinte
curl
comando para um editor de texto.curl.exe -H "Ocp-Apim-Subscription-Key: <subscriptionKey>" -H "Content-Type: application/json" "<endpoint>/computervision/planogramcompliance:match?api-version=2023-04-01-preview" -d "<body>"
Faça as alterações seguintes ao comando, se for necessário:
- Substitua o valor de pela sua chave de recurso Visão
<subscriptionKey>
. - Substitua o valor de pelo seu ponto de extremidade de recurso Vision
<endpoint>
. Por exemplo:https://YourResourceName.cognitiveservices.azure.com
. - Substitua o valor de pela cadeia de caracteres JSON unida
<body>
que você preparou na seção anterior.
- Substitua o valor de pela sua chave de recurso Visão
Abra uma janela da linha de comandos.
Cole o comando editado
curl
do editor de texto na janela do prompt de comando e execute o comando.
Examinar a resposta
Uma resposta bem-sucedida é retornada em JSON, mostrando os produtos (ou lacunas) detetados em cada posição de planograma. Consulte as seções abaixo para obter definições de campo.
{
"matchedResultsPerPosition": [
{
"positionId": "01",
"detectedObject": {
"id": "01",
"boundingBox": {
"x": 12,
"y": 1234,
"w": 123,
"h": 12345
},
"classifications": [
{
"confidence": 0.9,
"label": "Product1"
}
]
}
}
]
}
Modelo de API de posição de correspondência de planograma
ID da posição do planograma emparelhado e o objeto detetado correspondente do resultado de compreensão do produto.
Nome | Tipo | Descrição | Obrigatório |
---|---|---|---|
positionId |
string | O ID de posição do planograma correspondia ao objeto detetado correspondente. | Não |
detectedObject |
DetectedObjectApiModel | Descreve um objeto detetado em uma imagem. | Não |