Dela via


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.

Foto av en butikshylla med identifierade produkter som beskrivs och planogram position rektanglar som beskrivs separat.

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.

Diagram över en hyllbild med armaturer och produkter markerade och deras koordinater visas.

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

  1. 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>"
    
  2. Gör följande ändringar i kommandot där det behövs:

    1. Ersätt värdet <subscriptionKey> för med din visionsresursnyckel.
    2. Ersätt värdet <endpoint> för med slutpunkten för visionsresursen. Exempel: https://YourResourceName.cognitiveservices.azure.com.
    3. Ersätt värdet <body> för med den anslutna JSON-strängen som du förberedde i föregående avsnitt.
  3. Öppna ett kommandotolksfönster.

  4. 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

Nästa steg