Conformità del planogramma di scaffale (anteprima)
Importante
Questa funzionalità è ora deprecata. Il 31 marzo 2025, l'API di anteprima Analisi immagini di Intelligenza artificiale di Azure 4.0 personalizzata, rilevamento oggetti personalizzati e api di anteprima del riconoscimento del prodotto verrà ritirata. Dopo questa data, le chiamate API a questi servizi avranno esito negativo.
Per mantenere il funzionamento dei modelli, passare a Visione personalizzata di Azure AI, ora disponibile a livello generale. Visione personalizzata offre funzionalità simili a quelle in fase di ritiro.
Un planogramma è un diagramma che indica il posizionamento corretto dei prodotti sugli scaffali in un punto vendita al dettaglio. L'API di conformità del planogramma consente di confrontare i risultati dell'analisi tra una foto e l'input planogramma del negozio. Restituisce un resoconto di tutte le posizioni nel planogramma e indica se un prodotto è stato trovato in ogni posizione.
Nota
I marchi mostrati nelle immagini non sono associati a Microsoft, né indicano alcuna forma di approvazione di Microsoft o prodotti Microsoft da parte dei proprietari dei marchi o approvazione dei proprietari dei marchi o dei loro prodotti da parte di Microsoft.
Prerequisiti
- È necessario aver già configurato ed eseguito l'analisi di base del riconoscimento dei prodotti con l'API corrispondente.
- cURL installato. In alternativa, è possibile usare una piattaforma REST diversa, ad esempio Swagger o l’estensione client REST per VS Code.
Preparare uno schema di planogramma
È necessario disporre dei dati del planogramma in un formato JSON specifico. Vedere le sezioni seguenti per le definizioni dei campi.
"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
}
]
}
Le coordinate X e Y sono relative a un'origine superiore sinistra, mentre la larghezza e l'altezza estendono ogni rettangolo di selezione verso il basso e verso destra. Il diagramma seguente mostra esempi del sistema di coordinate.
Nota
I marchi mostrati nelle immagini non sono associati a Microsoft, né indicano alcuna forma di approvazione di Microsoft o prodotti Microsoft da parte dei proprietari dei marchi o approvazione dei proprietari dei marchi o dei loro prodotti da parte di Microsoft.
Le quantità nello schema del planogramma sono espresse in unità non specifiche. Possono corrispondere a pollici, centimetri o qualsiasi altra unità di misura. L'algoritmo di corrispondenza calcola la relazione tra le unità di analisi delle foto (pixel) e le unità del planogramma.
Modello API del planogramma
Descrive il planogramma per le operazioni di corrispondenza con i planogrammi.
Nome | Tipo | Descrizione | Richiesto |
---|---|---|---|
width |
double | Larghezza del planogramma. | Sì |
height |
double | Altezza del planogramma. | Sì |
products |
ProductApiModel | Elenco di prodotti nel planogramma. | Sì |
fixtures |
FixtureApiModel | Elenco di strutture nel planogramma. | Sì |
positions |
PositionApiModel | Elenco di posizioni nel planogramma. | Sì |
Modello API del prodotto
Descrive un prodotto nel planogramma.
Nome | Tipo | Descrizione | Richiesto |
---|---|---|---|
id |
string | ID del prodotto. | Sì |
name |
string | Nome del prodotto. | Sì |
w |
double | Larghezza del prodotto. | Sì |
h |
double | Altezza della struttura. | Sì |
Modello API della struttura
Descrive una struttura (scaffale o strumento simile) in un planogramma.
Nome | Tipo | Descrizione | Richiesto |
---|---|---|---|
id |
string | Tipo di struttura. | Sì |
w |
double | Larghezza della struttura. | Sì |
h |
double | Altezza della struttura. | Sì |
x |
double | Offset sinistro dall'origine, espresso in unità di pollici o centimetri. | Sì |
y |
double | Offset superiore dall'origine, espresso in unità di pollici o centimetri. | Sì |
Modello API della posizione
Descrive la posizione di un prodotto in un planogramma.
Nome | Tipo | Descrizione | Richiesto |
---|---|---|---|
id |
string | ID della posizione. | Sì |
productId |
string | ID del prodotto. | Sì |
fixtureId |
string | ID della struttura su cui si trova il prodotto. | Sì |
x |
double | Offset sinistro dall'origine, espresso in unità di pollici o centimetri. | Sì |
y |
double | Offset superiore dall'origine, espresso in unità di pollici o centimetri. | Sì |
Recuperare i risultati dell'analisi
Successivamente, è necessario eseguire una chiamata all'API di riconoscimento dei prodotti con un modello personalizzato.
Il testo JSON restituito deve essere una struttura "detectedProducts"
. Mostra tutti i prodotti rilevati sullo scaffale, con le etichette specifiche del prodotto usate nella fase di training.
"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"
}
]
}
]
}
Preparare la richiesta di corrispondenza
Unire il contenuto JSON dello schema del planogramma con il contenuto JSON dei risultati dell'analisi, come illustrato di seguito:
"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"
}
]
}
]
}
Questo è il testo che verrà usato nel corpo della richiesta API.
Chiamare l'API di corrispondenza con i planogrammi
Copiare il comando
curl
seguente in un editor di testo.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>"
Apportare le modifiche seguenti al comando, dove necessario:
- Sostituire il valore di
<subscriptionKey>
con la chiave della risorsa Visione. - Sostituire il valore di
<endpoint>
l'endpoint della risorsa Visione. Ad esempio:https://YourResourceName.cognitiveservices.azure.com
. - Sostituire il valore di
<body>
con la stringa JSON unita preparata nella sezione precedente.
- Sostituire il valore di
Aprire una finestra del prompt dei comandi.
Incollare il comando
curl
modificato dall'editor di testo nella finestra del prompt dei comandi e quindi eseguire il comando.
Esaminare i risultati
Viene restituita una risposta con esito positivo in JSON, che mostra i prodotti (o gli spazi vuoti) rilevati in ogni posizione del planogramma. Vedere le sezioni seguenti per le definizioni dei campi.
{
"matchedResultsPerPosition": [
{
"positionId": "01",
"detectedObject": {
"id": "01",
"boundingBox": {
"x": 12,
"y": 1234,
"w": 123,
"h": 12345
},
"classifications": [
{
"confidence": 0.9,
"label": "Product1"
}
]
}
}
]
}
Modello API per la posizione nella corrispondenza con il planogramma
ID posizione del planogramma associato e oggetto rilevato corrispondente dal risultato del riconoscimento dei prodotti.
Nome | Tipo | Descrizione | Richiesto |
---|---|---|---|
positionId |
string | ID della posizione dal planogramma corrispondente al relativo oggetto rilevato. | No |
detectedObject |
DetectedObjectApiModel | Descrive un oggetto rilevato in un'immagine. | No |