Zgodność planogramu z półką (wersja zapoznawcza)
Planogram to diagram, który wskazuje prawidłowe rozmieszczenie produktów detalicznych na półkach. Interfejs API zgodności planogramu umożliwia porównywanie wyników analizy ze zdjęcia do danych wejściowych planogramu sklepu. Zwraca on konto wszystkich pozycji w planogramie i informację, czy produkt został znaleziony na każdej pozycji.
Uwaga
Marki pokazane na obrazach nie są powiązane z firmą Microsoft i nie wskazują żadnej formy poparcia produktów firmy Microsoft lub firmy Microsoft przez właścicieli marki, ani poparcia właścicieli marki lub ich produktów przez firmę Microsoft.
Wymagania wstępne
- Musisz już skonfigurować i uruchomić podstawową analizę usługi Product Understanding przy użyciu interfejsu API usługi Product Understanding.
- Zainstalowano bibliotekę cURL . Możesz też użyć innej platformy REST, takiej jak Swagger lub rozszerzenie klienta REST dla programu VS Code.
Przygotowywanie schematu planogramu
Musisz mieć dane planogramu w określonym formacie JSON. Zapoznaj się z poniższymi sekcjami, aby zapoznać się z definicjami pól.
"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
}
]
}
Współrzędne X i Y są względne względem lewego górnego źródła, a szerokość i wysokość rozszerzają każde pole ograniczenia w dół i po prawej stronie. Na poniższym diagramie przedstawiono przykłady układu współrzędnych.
Uwaga
Marki pokazane na obrazach nie są powiązane z firmą Microsoft i nie wskazują żadnej formy poparcia produktów firmy Microsoft lub firmy Microsoft przez właścicieli marki, ani poparcia właścicieli marki lub ich produktów przez firmę Microsoft.
Ilości w schemacie planogramu znajdują się w jednostkach nieokreślonych. Mogą one odpowiadać cali, centymetrom lub innej jednostce miary. Algorytm dopasowania oblicza relację między jednostkami analizy zdjęć (pikseli) i jednostkami planogramu.
Model interfejsu API planogramu
Opisuje planogram operacji dopasowywania planogramu.
Nazwisko | Pisz | Opis | Wymagania |
---|---|---|---|
width |
double | Szerokość planogramu. | Tak |
height |
double | Wysokość planogramu. | Tak |
products |
ProductApiModel | Lista produktów w planieogramie. | Tak |
fixtures |
FixtureApiModel | Lista opraw w planogramie. | Tak |
positions |
PositionApiModel | Lista pozycji na planogramie. | Tak |
Model interfejsu API produktu
Opisuje produkt w planieogramie.
Nazwisko | Pisz | Opis | Wymagania |
---|---|---|---|
id |
string | Identyfikator produktu. | Tak |
name |
string | Nazwa produktu. | Tak |
w |
double | Szerokość produktu. | Tak |
h |
double | Wysokość urządzenia. | Tak |
Model interfejsu API oprawy
Opisuje oprawę (półkę lub podobny sprzęt) w planogramie.
Nazwisko | Pisz | Opis | Wymagania |
---|---|---|---|
id |
string | Identyfikator urządzenia. | Tak |
w |
double | Szerokość oprawy. | Tak |
h |
double | Wysokość urządzenia. | Tak |
x |
double | Lewe przesunięcie od źródła, w jednostkach cali lub centymetrów. | Tak |
y |
double | Od góry przesunięcie od źródła, w jednostkach cali lub centymetrach. | Tak |
Model interfejsu API pozycjonowania
Opisuje pozycję produktu w planieogramie.
Nazwisko | Pisz | Opis | Wymagania |
---|---|---|---|
id |
string | Identyfikator pozycji. | Tak |
productId |
string | Identyfikator produktu. | Tak |
fixtureId |
string | Identyfikator urządzenia, na który jest włączony produkt. | Tak |
x |
double | Lewe przesunięcie od źródła, w jednostkach cali lub centymetrów. | Tak |
y |
double | Od góry przesunięcie od źródła, w jednostkach cali lub centymetrach. | Tak |
Pobieranie wyników analizy
Następnie należy wykonać wywołanie interfejsu API Usługi Product Understanding z modelem niestandardowym.
Zwrócony tekst JSON powinien być strukturą "detectedProducts"
. Przedstawia wszystkie produkty, które zostały wykryte na półce, z etykietami specyficznymi dla produktu użytymi na etapie trenowania.
"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"
}
]
}
]
}
Przygotowywanie zgodnego żądania
Dołącz zawartość JSON schematu planogramu przy użyciu zawartości JSON wyników analizy, w następujący sposób:
"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"
}
]
}
]
}
Jest to tekst, którego użyjesz w treści żądania interfejsu API.
Wywoływanie interfejsu API dopasowywania planogramu
Skopiuj następujące
curl
polecenie do edytora tekstów.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>"
W razie potrzeby wprowadź w poleceniu następujące zmiany:
- Zastąp wartość
<subscriptionKey>
kluczem zasobu usługi Vision. - Zastąp wartość
<endpoint>
punktem końcowym zasobu usługi Vision. Na przykład:https://YourResourceName.cognitiveservices.azure.com
. - Zastąp wartość
<body>
sprzężonym ciągiem JSON przygotowanym w poprzedniej sekcji.
- Zastąp wartość
Otwórz okno wiersza polecenia.
Wklej edytowane
curl
polecenie z edytora tekstów w oknie wiersza polecenia, a następnie uruchom polecenie.
Sprawdzanie odpowiedzi
W formacie JSON zostanie zwrócona pomyślna odpowiedź, pokazująca produkty (lub luki) wykryte na każdej pozycji planogramu. Zapoznaj się z poniższymi sekcjami, aby zapoznać się z definicjami pól.
{
"matchedResultsPerPosition": [
{
"positionId": "01",
"detectedObject": {
"id": "01",
"boundingBox": {
"x": 12,
"y": 1234,
"w": 123,
"h": 12345
},
"classifications": [
{
"confidence": 0.9,
"label": "Product1"
}
]
}
}
]
}
Model interfejsu API dopasowywania planuogramu
Identyfikator pozycji planogramu sparowanego i odpowiadający mu obiekt wykryty z wyniku zrozumienia produktu.
Nazwisko | Pisz | Opis | Wymagania |
---|---|---|---|
positionId |
string | Identyfikator położenia z planuogramu dopasowany do odpowiedniego wykrytego obiektu. | Nie. |
detectedObject |
DetectedObjectApiModel | Opisuje wykryty obiekt na obrazie. | Nie. |