Conformidade com o planograma de prateleira (versão prévia)
Um planograma é um diagrama que indica o posicionamento correto dos produtos de varejo nas prateleiras. Com a API de Conformidade do Planograma você compara os resultados da análise de uma foto com a entrada do planograma da loja. Ela retorna uma conta de todas as posições no planograma e se um produto foi encontrado em cada posição.
Observação
As marcas mostradas nas imagens não são afiliadas à Microsoft e não indicam nenhuma 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. Confira 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.
Observação
As marcas mostradas nas imagens não são afiliadas à Microsoft e não indicam nenhuma 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. Eles podem corresponder a polegadas, centímetros ou a qualquer outra unidade de medida. O algoritmo correspondente calcula a relação entre as unidades de análise de foto (pixels) e as unidades do planograma.
Modelo de API de planograma
Descreve o planograma para operações de correspondência de planograma.
Nome | Tipo | Descrição | Obrigatório |
---|---|---|---|
width |
double | Largura do planograma. | Sim |
height |
double | Altura do planograma. | Yes |
products |
ProductApiModel | Lista de produtos no planograma. | Yes |
fixtures |
FixtureApiModel | Lista dos acessórios no planograma. | Yes |
positions |
PositionApiModel | Lista das posições no planograma. | Yes |
Modelo de API de produto
Descreve um produto no planograma.
Nome | Tipo | Descrição | Obrigatório |
---|---|---|---|
id |
string | ID do produto. | Sim |
name |
string | O nome do produto. | Sim |
w |
double | Largura do produto. | Sim |
h |
double | Altura do acessório. | Yes |
Modelo de API de acessório
Descreve um acessório (prateleira ou hardware semelhante) em um planograma.
Nome | Tipo | Descrição | Obrigatório |
---|---|---|---|
id |
string | ID do acessório. | Sim |
w |
double | Largura do acessório. | Sim |
h |
double | Altura do acessório. | Sim |
x |
double | Deslocamento para a esquerda em relação à origem, em unidades de polegadas ou centímetros. | Sim |
y |
double | Deslocamento para cima em relação à origem, em unidades de polegadas ou centímetros. | Yes |
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 da posição. | Sim |
productId |
string | ID do produto. | Sim |
fixtureId |
string | ID do acessório em que o produto está. | Sim |
x |
double | Deslocamento para a esquerda em relação à origem, em unidades de polegadas ou centímetros. | Sim |
y |
double | Deslocamento para cima em relação à origem, em unidades de polegadas ou centímetros. | Sim |
Obter resultados da análise
Em seguida, você precisa fazer uma chamada à API de Compreensão do Produto com um modelo personalizado.
O texto JSON retornado deve ser uma estrutura "detectedProducts"
. Ele mostra todos os produtos que foram detectados na prateleira, com os rótulos específicos usados na fase 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 a solicitação de correspondência
Una o conteúdo JSON do esquema de planograma com o conteúdo JSON dos resultados da análise, desta 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"
}
]
}
]
}
Esse é o texto que você usará no corpo da solicitação da API.
Chamar a API de correspondência do planograma
Copie o comando
curl
a seguir em 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 a seguir no comando quando necessário:
- Substitua o valor
<subscriptionKey>
por sua chave de recurso de Visão. - Substitua o valor
<endpoint>
pelo ponto de extremidade do recurso de Visão. Por exemplo:https://YourResourceName.cognitiveservices.azure.com
. - Substitua o valor de
<body>
pela cadeia de caracteres JSON unida que você preparou na seção anterior.
- Substitua o valor
Abra una janela de prompt de comando.
Cole o comando
curl
modificado do editor de texto na janela do prompt de comando e, em seguida, execute-o.
Examinar a resposta
Uma resposta bem-sucedida é retornada em JSON, mostrando os produtos (ou lacunas) detectados em cada posição do planograma. Confira 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 correspondente ao planograma
O par unido da ID de posição do planograma com o objeto detectado correspondente do resultado da compreensão do produto.
Nome | Tipo | Descrição | Obrigatório |
---|---|---|---|
positionId |
string | A ID da posição do planograma correspondeu ao objeto detectado correspondente. | No |
detectedObject |
DetectedObjectApiModel | Descreve um objeto detectado em uma imagem. | Não |