Condividi tramite


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.

Foto dello scaffale di un negozio con i prodotti rilevati delineati e rettangoli di posizione planogramma delineati separatamente.

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

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.

Diagramma dell'immagine di uno scaffale con strutture e prodotti evidenziati e le relative coordinate visualizzate.

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.
height double Altezza del planogramma.
products ProductApiModel Elenco di prodotti nel planogramma.
fixtures FixtureApiModel Elenco di strutture nel planogramma.
positions PositionApiModel Elenco di posizioni nel planogramma.

Modello API del prodotto

Descrive un prodotto nel planogramma.

Nome Tipo Descrizione Richiesto
id string ID del prodotto.
name string Nome del prodotto.
w double Larghezza del prodotto.
h double Altezza della struttura.

Modello API della struttura

Descrive una struttura (scaffale o strumento simile) in un planogramma.

Nome Tipo Descrizione Richiesto
id string Tipo di struttura.
w double Larghezza della struttura.
h double Altezza della struttura.
x double Offset sinistro dall'origine, espresso in unità di pollici o centimetri.
y double Offset superiore dall'origine, espresso in unità di pollici o centimetri.

Modello API della posizione

Descrive la posizione di un prodotto in un planogramma.

Nome Tipo Descrizione Richiesto
id string ID della posizione.
productId string ID del prodotto.
fixtureId string ID della struttura su cui si trova il prodotto.
x double Offset sinistro dall'origine, espresso in unità di pollici o centimetri.
y double Offset superiore dall'origine, espresso in unità di pollici o centimetri.

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

  1. 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>"
    
  2. Apportare le modifiche seguenti al comando, dove necessario:

    1. Sostituire il valore di <subscriptionKey> con la chiave della risorsa Visione.
    2. Sostituire il valore di <endpoint> l'endpoint della risorsa Visione. Ad esempio: https://YourResourceName.cognitiveservices.azure.com.
    3. Sostituire il valore di <body> con la stringa JSON unita preparata nella sezione precedente.
  3. Aprire una finestra del prompt dei comandi.

  4. 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