Efterlevnad av hyllplanogram (förhandsversion)
Ett planogram är ett diagram som anger rätt placering av detaljhandelsprodukter på hyllor. Med API:et för planogramefterlevnad kan du jämföra analysresultat från ett foto med butikens planogramindata. Den returnerar ett konto för alla positioner i planogrammet och om en produkt hittades i varje position.
Kommentar
Varumärkena som visas i bilderna är inte kopplade till Microsoft och anger inte någon form av godkännande av Microsoft- eller Microsoft-produkter av varumärkesägarna, eller ett godkännande av varumärkesägarna eller deras produkter av Microsoft.
Förutsättningar
- Du måste redan ha konfigurerat och kört grundläggande Product Understanding-analys med Product Understanding-API:et.
- cURL installerat. Eller så kan du använda en annan REST-plattform, till exempel Swagger eller REST-klienttillägget för VS Code.
Förbereda ett planogramschema
Du måste ha dina planogramdata i ett specifikt JSON-format. Se avsnitten nedan för fältdefinitioner.
"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- och Y-koordinaterna är relativa till ett övre vänstra ursprung, och bredden och höjden förlänger varje avgränsningsruta nedåt och till höger. Följande diagram visar exempel på koordinatsystemet.
Kommentar
Varumärkena som visas i bilderna är inte kopplade till Microsoft och anger inte någon form av godkännande av Microsoft- eller Microsoft-produkter av varumärkesägarna, eller ett godkännande av varumärkesägarna eller deras produkter av Microsoft.
Kvantiteterna i planogramschemat finns i icke-specifika enheter. De kan motsvara tum, centimeter eller någon annan måttenhet. Matchande algoritm beräknar relationen mellan fotoanalysenheterna (bildpunkterna) och planogramenheterna.
Planogram-API-modell
Beskriver planogrammet för planogrammatchningsåtgärder.
Namn | Type | Beskrivning | Obligatoriskt |
---|---|---|---|
width |
dubbel | Planogrammets bredd. | Ja |
height |
dubbel | Planogrammets höjd. | Ja |
products |
ProductApiModel | Lista över produkter i planogrammet. | Ja |
fixtures |
FixtureApiModel | Lista över armaturer i planogrammet. | Ja |
positions |
PositionApiModel | Lista över positioner i planogrammet. | Ja |
Produkt-API-modell
Beskriver en produkt i planogrammet.
Namn | Type | Beskrivning | Obligatoriskt |
---|---|---|---|
id |
sträng | ID för produkten. | Ja |
name |
sträng | Namn på produkten. | Ja |
w |
dubbel | Produktens bredd. | Ja |
h |
dubbel | Höjd på fixturen. | Ja |
Fixtur-API-modell
Beskriver en fixtur (hylla eller liknande maskinvara) i ett planogram.
Namn | Type | Beskrivning | Obligatoriskt |
---|---|---|---|
id |
sträng | ID för armaturen. | Ja |
w |
dubbel | Bredd på armaturen. | Ja |
h |
dubbel | Höjd på fixturen. | Ja |
x |
dubbel | Vänster förskjutning från ursprunget, i enheter i tum eller centimeter. | Ja |
y |
dubbel | Övre förskjutning från ursprunget, i enheter med tum eller centimeter. | Ja |
Position API-modell
Beskriver en produkts position i ett planogram.
Namn | Type | Beskrivning | Obligatoriskt |
---|---|---|---|
id |
sträng | ID för positionen. | Ja |
productId |
sträng | ID för produkten. | Ja |
fixtureId |
sträng | ID för den fixtur som produkten är på. | Ja |
x |
dubbel | Vänster förskjutning från ursprunget, i enheter i tum eller centimeter. | Ja |
y |
dubbel | Övre förskjutning från ursprunget, i enheter med tum eller centimeter. | Ja |
Hämta analysresultat
Därefter måste du göra ett Product Understanding API-anrop med en anpassad modell.
Den returnerade JSON-texten ska vara en "detectedProducts"
struktur. Den visar alla produkter som har identifierats på hyllan, med de produktspecifika etiketter som du använde i träningssteget.
"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"
}
]
}
]
}
Förbereda matchande begäran
Anslut JSON-innehållet i ditt planogramschema med JSON-innehållet i analysresultatet, så här:
"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"
}
]
}
]
}
Det här är den text som du ska använda i api-begärandetexten.
Anropa planogrammets matchande API
Kopiera följande
curl
kommando till en textredigerare.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>"
Gör följande ändringar i kommandot där det behövs:
- Ersätt värdet
<subscriptionKey>
för med din visionsresursnyckel. - Ersätt värdet
<endpoint>
för med slutpunkten för visionsresursen. Exempel:https://YourResourceName.cognitiveservices.azure.com
. - Ersätt värdet
<body>
för med den anslutna JSON-strängen som du förberedde i föregående avsnitt.
- Ersätt värdet
Öppna ett kommandotolksfönster.
Klistra in det redigerade
curl
kommandot från textredigeraren i kommandotolken och kör sedan kommandot.
Granska svaret
Ett lyckat svar returneras i JSON, som visar de produkter (eller luckor) som identifieras vid varje planogramposition. Se avsnitten nedan för fältdefinitioner.
{
"matchedResultsPerPosition": [
{
"positionId": "01",
"detectedObject": {
"id": "01",
"boundingBox": {
"x": 12,
"y": 1234,
"w": 123,
"h": 12345
},
"classifications": [
{
"confidence": 0.9,
"label": "Product1"
}
]
}
}
]
}
Api-modell för planogrammatchningsposition
Parkopplat planogrampositions-ID och motsvarande identifierade objekt från resultatet av produkttolkning.
Namn | Type | Beskrivning | Obligatoriskt |
---|---|---|---|
positionId |
sträng | Positions-ID:t från planogrammet matchade motsvarande identifierade objekt. | Nej |
detectedObject |
DetectedObjectApiModel | Beskriver ett identifierat objekt i en bild. | Nej |