Udostępnij za pośrednictwem


Zgodność planogramu z półką (wersja zapoznawcza)

Ważne

Ta funkcja jest teraz przestarzała. 31 marca 2025 r. zostanie wycofana usługa Azure AI Image Analysis 4.0 Custom Image Classification, Custom Object Detection i Product Recognition (wersja zapoznawcza). Po tej dacie wywołania interfejsu API do tych usług nie powiedzą się.

Aby zapewnić bezproblemową obsługę modeli, przejdź do usługi Azure AI Custom Vision, która jest teraz ogólnie dostępna. Usługa Custom Vision oferuje podobne funkcje do tych funkcji wycofywania.

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 podwójny Szerokość planogramu. Tak
height podwójny 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 sznurek Identyfikator produktu. Tak
name sznurek Nazwa produktu. Tak
w podwójny Szerokość produktu. Tak
h podwójny Wysokość urządzenia. Tak

Model interfejsu API oprawy

Opisuje oprawę (półkę lub podobny sprzęt) w planogramie.

Nazwisko Pisz Opis Wymagania
id sznurek Identyfikator urządzenia. Tak
w podwójny Szerokość oprawy. Tak
h podwójny Wysokość urządzenia. Tak
x podwójny Lewe przesunięcie od źródła, w jednostkach cali lub centymetrów. Tak
y podwójny 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 sznurek Identyfikator pozycji. Tak
productId sznurek Identyfikator produktu. Tak
fixtureId sznurek Identyfikator urządzenia, na który jest włączony produkt. Tak
x podwójny Lewe przesunięcie od źródła, w jednostkach cali lub centymetrów. Tak
y podwójny 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 sznurek Identyfikator położenia z planuogramu dopasowany do odpowiedniego wykrytego obiektu. Nie.
detectedObject Model API dla Wykrytego Obiektu (DetectedObjectApiModel) Opisuje wykryty obiekt na obrazie. Nie.