Udostępnij za pośrednictwem


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.

Zdjęcie półki detalicznej z wykrytymi produktami nakreślanymi i prostokątami planogramu nakreślanymi oddzielnie.

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.

Diagram przedstawiający obraz półki z wyróżnionymi oprawami i produktami oraz ich współrzędnymi.

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

  1. 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>"
    
  2. W razie potrzeby wprowadź w poleceniu następujące zmiany:

    1. Zastąp wartość <subscriptionKey> kluczem zasobu usługi Vision.
    2. Zastąp wartość <endpoint> punktem końcowym zasobu usługi Vision. Na przykład: https://YourResourceName.cognitiveservices.azure.com.
    3. Zastąp wartość <body> sprzężonym ciągiem JSON przygotowanym w poprzedniej sekcji.
  3. Otwórz okno wiersza polecenia.

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

Następne kroki