Соответствие планограммы полки (предварительная версия)
Планограмма — это схема, указывающая правильное размещение розничных продуктов на полках. API соответствия планограмм позволяет сравнить результаты анализа с фотографии с входным вводом планограммы в магазине. Он возвращает учет всех позиций в планограмме и указывает, найден ли продукт в каждой позиции.
Примечание.
Бренды, отображаемые на изображениях, не связаны с корпорацией Майкрософт и не указывают ни одну форму подтверждения продуктов Майкрософт или Майкрософт владельцами бренда, или одобрение владельцев бренда или их продуктов корпорацией Майкрософт.
Необходимые компоненты
- Необходимо уже настроить и запустить базовый анализ распознавания продуктов с помощью API распознавания продуктов.
- Установленная программа cURL. Кроме того, можно использовать другую платформу REST, например Swagger или расширение REST Client для VS Code.
Подготовка схемы планограммы
Необходимо иметь данные планограммы в определенном формате JSON. Дополнительные сведения о определениях полей см. в разделах ниже.
"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
}
]
}
Координаты X и Y относятся к левому верхнему источнику, а ширина и высота расширяют каждый ограничивающий прямоугольник вниз и справа. На следующей схеме показаны примеры системы координат.
Примечание.
Бренды, отображаемые на изображениях, не связаны с корпорацией Майкрософт и не указывают ни одну форму подтверждения продуктов Майкрософт или Майкрософт владельцами бренда, или одобрение владельцев бренда или их продуктов корпорацией Майкрософт.
Числа в схеме планограммы находятся в неспецифичных единицах. Они могут соответствовать дюймам, сантиметрам или любой другой единице измерения. Алгоритм сопоставления вычисляет связь между единицами анализа фотографий (пикселями) и единицами планограммы.
Модель API планограммы
Описывает планограмму для операций сопоставления планограмм.
Имя. | Тип | Описание | Обязательное поле |
---|---|---|---|
width |
двойной точности | Ширина планограммы. | Да |
height |
двойной точности | Высота планограммы. | Да |
products |
ProductApiModel | Список продуктов в планограмме. | Да |
fixtures |
FixtureApiModel | Список светильников в планограмме. | Да |
positions |
PositionApiModel | Список позиций в планограмме. | Да |
Модель API продукта
Описывает продукт в планограмме.
Имя. | Тип | Описание | Обязательное поле |
---|---|---|---|
id |
строка | Идентификатор продукта. | Да |
name |
строка | Имя продукта. | Да |
w |
двойной точности | Ширина продукта. | Да |
h |
двойной точности | Высота светильника. | Да |
Модель API исправления
Описывает светильник (полку или аналогичное оборудование) в планограмме.
Имя. | Тип | Описание | Обязательное поле |
---|---|---|---|
id |
строка | Идентификатор светильника. | Да |
w |
двойной точности | Ширина светильника. | Да |
h |
двойной точности | Высота светильника. | Да |
x |
двойной точности | Левое смещение от источника в единицах в дюймах или сантиметрах. | Да |
y |
двойной точности | Верхнее смещение от источника в единицах дюйма или сантиметров. | Да |
Модель API позиции
Описывает положение продукта в планограмме.
Имя. | Тип | Описание | Обязательное поле |
---|---|---|---|
id |
строка | Идентификатор позиции. | Да |
productId |
строка | Идентификатор продукта. | Да |
fixtureId |
строка | Идентификатор светильника, на который находится продукт. | Да |
x |
двойной точности | Левое смещение от источника в единицах в дюймах или сантиметрах. | Да |
y |
двойной точности | Верхнее смещение от источника в единицах дюйма или сантиметров. | Да |
Получение результатов анализа
Затем необходимо выполнить вызов API распознавания продуктов с пользовательской моделью.
Возвращаемый текст JSON должен быть структурой "detectedProducts"
. В нем показаны все продукты, обнаруженные на полке, с метками для конкретного продукта, которые вы использовали на этапе обучения.
"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"
}
]
}
]
}
Подготовка соответствующего запроса
Присоедините содержимое JSON схемы планограммы с содержимым JSON результатов анализа, как показано ниже.
"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"
}
]
}
]
}
Это текст, который вы будете использовать в тексте запроса API.
Вызов API сопоставления планограммы
Скопируйте следующую
curl
команду в текстовый редактор.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>"
При необходимости внесите следующие изменения в команду.
- Замените значение ключа ресурса Визуального
<subscriptionKey>
зрения. - Замените значение конечной точки ресурса Визуального
<endpoint>
зрения. Например:https://YourResourceName.cognitiveservices.azure.com
. - Замените значение
<body>
присоединенной строки JSON, подготовленной в предыдущем разделе.
- Замените значение ключа ресурса Визуального
Откройте окно командной строки.
Вставьте измененную
curl
команду из текстового редактора в окно командной строки и выполните команду.
Изучите ответ.
Успешный ответ возвращается в формате JSON, где отображаются продукты (или пробелы), обнаруженные на каждой позиции планограммы. Дополнительные сведения о определениях полей см. в разделах ниже.
{
"matchedResultsPerPosition": [
{
"positionId": "01",
"detectedObject": {
"id": "01",
"boundingBox": {
"x": 12,
"y": 1234,
"w": 123,
"h": 12345
},
"classifications": [
{
"confidence": 0.9,
"label": "Product1"
}
]
}
}
]
}
Модель API сопоставления позиций планограммы
Идентификатор спарной планограммы и соответствующий обнаруженный объект из результата понимания продукта.
Имя. | Тип | Описание | Обязательное поле |
---|---|---|---|
positionId |
строка | Идентификатор позиции из планограммы, сопоставленной с соответствующим обнаруженным объектом. | No |
detectedObject |
DetectedObjectApiModel | Описывает обнаруженный объект на изображении. | No |