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.
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.
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
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>"
Nehmen Sie die folgenden Änderungen im Befehl vor, falls dies erforderlich ist:
- Ersetzen Sie den Wert
<subscriptionKey>
durch Ihren Vision-Ressourcenschlüssel. - Ersetzen Sie den Wert
<endpoint>
durch Ihren Vision-Ressourcenendpunkt. Beispiel:https://YourResourceName.cognitiveservices.azure.com
- Ersetzen Sie den Wert von
<body>
durch die zusammengeführte JSON-Zeichenfolge, die Sie im vorherigen Abschnitt vorbereitet haben.
- Ersetzen Sie den Wert
Öffnen Sie ein Eingabeaufforderungsfenster.
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 |