Conformité du planogramme d’étagère (préversion)
Un planogramme est un diagramme qui indique l’emplacement correct des produits de vente au détail sur les étagères. L’API Planogram Compliance (Conformité du planogramme) vous permet de comparer les résultats d’analyse d’une photo à l’entrée du planogramme du magasin. Elle retourne les détails de toutes les positions dans le planogramme et indique si un produit a été trouvé à chaque position.
Notes
Les marques affichées dans les images ne sont pas affiliées à Microsoft et n’indiquent aucune forme d’approbation de Microsoft ou de produits Microsoft par les propriétaires de la marque, ni d’approbation des propriétaires de la marque ou de leurs produits par Microsoft.
Prérequis
- Vous devez déjà avoir configuré et exécuté l’analyse de Compréhension des produits de base avec l’API Compréhension des produits.
- cURL installé. Vous pouvez également utiliser une plateforme REST différente, telle que Swagger ou l’extension client REST pour VS Code.
Préparer un schéma de planogramme
Vous devez avoir vos données de planogramme dans un format JSON spécifique. Consultez les sections ci-dessous pour connaître les définitions de champs.
"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
}
]
}
Les coordonnées X et Y sont relatives à une origine supérieure gauche, et la largeur et la hauteur étendent chaque cadre englobant vers le bas et la droite. Le diagramme suivant montre des exemples de système de coordonnées.
Notes
Les marques affichées dans les images ne sont pas affiliées à Microsoft et n’indiquent aucune forme d’approbation de Microsoft ou de produits Microsoft par les propriétaires de la marque, ni d’approbation des propriétaires de la marque ou de leurs produits par Microsoft.
Les quantités du schéma de planogramme sont en unités non spécifiques. Elles peuvent correspondre à des pouces, des centimètres ou toute autre unité de mesure. L’algorithme de correspondance calcule la relation entre les unités d’analyse photo (pixels) et les unités de planogramme.
Modèle d’API Planogramme
Décrit le planogramme pour les opérations de correspondance de planogramme.
Nom | Type | Description | Obligatoire |
---|---|---|---|
width |
double | Largeur du planogramme. | Oui |
height |
double | Hauteur du planogramme. | Oui |
products |
ProductApiModel | Liste des produits dans le planogramme. | Oui |
fixtures |
FixtureApiModel | Liste des fixtures dans le planogramme. | Oui |
positions |
PositionApiModel | Liste des positions dans le planogramme. | Oui |
Modèle d’API Produit
Décrit un produit dans le planogramme.
Nom | Type | Description | Obligatoire |
---|---|---|---|
id |
string | ID du produit. | Oui |
name |
string | Nom du produit. | Oui |
w |
double | Largeur du produit. | Oui |
h |
double | Hauteur de fixture. | Oui |
Modèle d’API Fixture
Décrit une fixture (étagère ou matériel similaire) dans un planogramme.
Nom | Type | Description | Obligatoire |
---|---|---|---|
id |
string | ID de la fixture. | Oui |
w |
double | Largeur de la fixture. | Oui |
h |
double | Hauteur de fixture. | Oui |
x |
double | Décalage gauche par rapport à l’origine, en unités de pouces ou de centimètres. | Oui |
y |
double | Décalage supérieur par rapport à l’origine, en unités de pouces ou de centimètres. | Oui |
Modèle d’API Position
Décrit la position d’un produit dans un planogramme.
Nom | Type | Description | Obligatoire |
---|---|---|---|
id |
string | ID de la position. | Oui |
productId |
string | ID du produit. | Oui |
fixtureId |
string | ID de la fixture sur laquelle se trouve le produit. | Oui |
x |
double | Décalage gauche par rapport à l’origine, en unités de pouces ou de centimètres. | Oui |
y |
double | Décalage supérieur par rapport à l’origine, en unités de pouces ou de centimètres. | Oui |
Obtenir les résultats de l’analyse
Ensuite, vous devez effectuer un appel d’API Compréhension des produits avec un modèle personnalisé.
Le texte JSON retourné doit être une structure "detectedProducts"
. Il affiche tous les produits qui ont été détectés sur l’étagère, avec les étiquettes spécifiques au produit que vous avez utilisées lors de l’étape de formation.
"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"
}
]
}
]
}
Préparer la requête de correspondance
Joignez le contenu JSON de votre schéma de planogramme au contenu JSON des résultats de l’analyse, comme suit :
"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"
}
]
}
]
}
Il s’agit du texte que vous allez utiliser dans le corps de votre requête d’API.
Appeler l’API de correspondance de planogramme
Copiez la commande
curl
ci-après dans un éditeur de texte.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>"
Modifiez la commande comme ci-dessous :
- Remplacez la valeur de
<subscriptionKey>
par votre clé de ressource Vision. - Remplacez la valeur de
<endpoint>
par votre point de terminaison de ressource Vision. Par exemple :https://YourResourceName.cognitiveservices.azure.com
. - Remplacez la valeur de
<body>
par la chaîne JSON jointe que vous avez préparée dans la section précédente.
- Remplacez la valeur de
Ouvrir une fenêtre d’invite de commandes.
Collez votre commande
curl
modifiée à partir de l’éditeur de texte dans la fenêtre d’invite de commandes, puis exécutez la commande.
Examiner la réponse
Une réponse correcte est retournée dans JSON, montrant les produits (ou les vides) détectés à chaque position de planogramme. Consultez les sections ci-dessous pour connaître les définitions de champs.
{
"matchedResultsPerPosition": [
{
"positionId": "01",
"detectedObject": {
"id": "01",
"boundingBox": {
"x": 12,
"y": 1234,
"w": 123,
"h": 12345
},
"classifications": [
{
"confidence": 0.9,
"label": "Product1"
}
]
}
}
]
}
Modèle d’API de position de correspondance d’un planogramme
ID de position du planogramme jumelé et objet correspondant détecté à partir du résultat de la compréhension des produits.
Nom | Type | Description | Obligatoire |
---|---|---|---|
positionId |
string | ID de position du planogramme correspondant à l’objet détecté correspondant. | Non |
detectedObject |
DetectedObjectApiModel | Décrit un objet détecté dans une image. | Non |