Freigeben über


Regalplanogrammkonformität (Vorschau)

Ein Planogramm ist ein Diagramm, das die richtige Platzierung von Einzelhandelsprodukten in Regalen angibt. Mit der Planogramm-Compliance-API der Bildanalyse können Sie Analyseergebnisse aus einem Foto mit der Planogrammeingabe des Stores vergleichen. Es wird eine Übersicht aller Positionen im Planogramm zurückgegeben, und es wird angegeben, ob an jeder Position ein Produkt gefunden wurde.

Foto eines Einzelhandelsregals mit markierten erkannten Produkten und separaten Planogramm-Positionsrechtecken.

Hinweis

Die in den Bildern gezeigten Marken sind nicht mit Microsoft verbunden und stellen keine Form der Unterstützung von Microsoft oder Microsoft-Produkten durch die Markeninhaber oder eine Unterstützung der Markeninhaber oder ihrer Produkte durch Microsoft dar.

Voraussetzungen

  • Sie müssen bereits eine grundlegende Produktverständnisanalyse mithilfe der Produktverständnis-API eingerichtet und ausgeführt haben.
  • cURL muss installiert sein. Sie können auch eine andere REST-Plattform wie Postman, Swagger oder die REST-Clienterweiterung für VS Code verwenden.

Vorbereiten eines Planogrammschemas

Ihre Planogrammdaten müssen in einem bestimmten JSON-Format vorliegen. Felddefinitionen finden Sie in den folgenden Abschnitten.

"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
    }
  ]
}

Die X- und Y-Koordinaten sind relativ zu einem links oben stehenden Ursprung, und die Breite und Höhe erweitern die einzelnen Begrenzungsrahmen nach unten und rechts. Das folgende Diagramm zeigt Beispiele für das Koordinatensystem.

Diagramm eines Regals mit hervorgehobenen Einrichtungsgegenständen und Produkten, deren Koordinaten angezeigt werden.

Hinweis

Die in den Bildern gezeigten Marken sind nicht mit Microsoft verbunden und stellen keine Form der Unterstützung von Microsoft oder Microsoft-Produkten durch die Markeninhaber oder eine Unterstützung der Markeninhaber oder ihrer Produkte durch Microsoft dar.

Die Mengen im Planogrammschema sind in unspezifischen Einheiten angegeben. Sie können Zoll, Zentimeter oder jeder anderen Maßeinheit entsprechen. Der Abgleichungsalgorithmus berechnet die Beziehung zwischen den Fotoanalyseeinheiten (Pixel) und den Planogrammeinheiten.

Planogramm-API-Modell

Beschreibt das Planogramm für Planogrammabgleichvorgänge.

Name Typ Beschreibung Erforderlich
width double Breite des Planogramms. Ja
height double Höhe des Planogramms. Ja
products ProductApiModel Liste der Produkte im Planogramm. Ja
fixtures FixtureApiModel Liste der Einrichtungsgegenstände im Planogramm. Ja
positions PositionApiModel Liste der Positionen im Planogramm. Ja

Produkt-API-Modell

Beschreibt ein Produkt im Planogramm.

Name Typ Beschreibung Erforderlich
id Zeichenfolge ID des Produkts. Ja
name Zeichenfolge Der Name des Produkts. Ja
w double Breite des Produkts. Ja
h double Höhe des Einrichtungsgegenstands. Ja

Fixture-API-Modell

Beschreibt einen Einrichtungsgegenstand (Regal oder ähnliches Möbelstück) in einem Planogramm.

Name Typ Beschreibung Erforderlich
id Zeichenfolge ID des Einrichtungsgegenstands. Ja
w double Breite des Einrichtungsgegenstands. Ja
h double Höhe des Einrichtungsgegenstands. Ja
x double Linker Versatz vom Ursprung, in Einheiten (Zoll oder Zentimeter). Ja
y double Oberer Versatz vom Ursprung, in Einheiten (Zoll oder Zentimeter). Ja

Positions-API-Modell

Beschreibt die Position eines Produkts in einem Planogramm.

Name Typ Beschreibung Erforderlich
id Zeichenfolge ID der Position. Ja
productId Zeichenfolge ID des Produkts. Ja
fixtureId Zeichenfolge ID des Einrichtungsgegenstands, in dem sich das Produkt befindet. Ja
x double Linker Versatz vom Ursprung, in Einheiten (Zoll oder Zentimeter). Ja
y double Oberer Versatz vom Ursprung, in Einheiten (Zoll oder Zentimeter). Ja

Erhalten von Analyseergebnissen

Als Nächstes müssen Sie die Produktverständnis-API mit einem benutzerdefinierten Modell ausführen.

Der zurückgegebene JSON-Text sollte eine "detectedProducts"-Struktur sein. Er zeigt alle Produkte, die im Regal gefunden wurden, mit den produktspezifischen Bezeichnungen, die Sie in der Trainingsphase verwendet haben.

"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"
        }
      ]
    }
  ]
}

Vorbereiten der Abgleichsanforderung

Führen Sie den JSON-Inhalt Ihres Planogrammschemas wie folgt mit dem JSON-Inhalt der Analyseergebnisse zusammen:

"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"
        }
      ]
    }
  ]
}

Dies ist der Text, den Sie in Ihrer API-Anforderung verwenden.

Aufrufen der Planogrammabgleichs-API

  1. Kopieren Sie den folgenden curl-Befehl, und fügen Sie ihn in einen Text-Editor ein.

    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. Nehmen Sie die folgenden Änderungen im Befehl vor, falls dies erforderlich ist:

    1. Ersetzen Sie den Wert <subscriptionKey> durch Ihren Vision-Ressourcenschlüssel.
    2. Ersetzen Sie den Wert <endpoint> durch Ihren Vision-Ressourcenendpunkt. Beispiel: https://YourResourceName.cognitiveservices.azure.com
    3. Ersetzen Sie den Wert von <body> durch die zusammengeführte JSON-Zeichenfolge, die Sie im vorherigen Abschnitt vorbereitet haben.
  3. Öffnen Sie ein Eingabeaufforderungsfenster.

  4. Fügen Sie den von Ihnen bearbeiteten curl-Befehl aus dem Text-Editor in das Eingabeaufforderungsfenster ein, und führen Sie den Befehl aus.

Untersuchen der Antwort

Eine erfolgreiche Antwort wird in JSON zurückgegeben und zeigt die an jeder Planogrammposition erkannten Produkte (oder Lücken). Felddefinitionen finden Sie in den folgenden Abschnitten.

{
  "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 Planogrammabgleichspositionen

Gekoppelte Planogrammpositions-ID und entsprechendes erkanntes Objekt aus dem Produktverständnisergebnis.

Name Typ Beschreibung Erforderlich
positionId Zeichenfolge Die Positions-ID aus dem Planogramm, die dem entsprechenden erkannten Objekt zugeordnet wurde. Nein
detectedObject DetectedObjectApiModel Beschreibt ein erkanntes Objekt in einem Bild. Nein

Nächste Schritte