分享方式:


貨架計畫圖合規性 (預覽)

計畫圖是一個圖表,指出零售產品在擱置時的正確放置。 計畫圖合規性 API 可讓您比較相片中的分析結果與商店的計畫圖輸入。 它會傳回計畫投影中所有位置的帳戶,以及是否在每個位置找到產品。

零售貨架的圖片,其框出偵測到的產品,並分別框出貨架計劃圖位置矩形。

注意

影像中顯示的品牌不會與 Microsoft 建立關聯,也不會指出品牌擁有者簽署 Microsoft 或 Microsoft 產品的任何形式,或由 Microsoft 簽署品牌擁有者或其產品。

必要條件

  • 您必須已經使用 Product Understanding API 來設定並執行基本 Product Understanding 分析
  • 已安裝 cURL。 或者,您可以使用不同的 REST 平台,例如 Swagger 或 VS Code 的 REST 用戶端擴充功能。

準備計畫圖架構

您需要以特定 JSON 格式擁有計劃投影資料。 如需欄位定義,請參閱下列各節。

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

X 和 Y 座標相對於左上方原點,寬度和高度會向下和向右延伸每個周框方塊。 下圖顯示座標系統的範例。

貨架影像圖表,醒目顯示固件和產品並顯示其坐標。

注意

影像中顯示的品牌不會與 Microsoft 建立關聯,也不會指出品牌擁有者簽署 Microsoft 或 Microsoft 產品的任何形式,或由 Microsoft 簽署品牌擁有者或其產品。

計畫圖架構中的數量以非特定單位表示。 它們可以對應到英吋、公分或任何其他度量單位。 比對演算法會計算相片分析單位 (像素) 與平面圖單位之間的關聯性。

計畫圖 API 模型

描述計畫投影比對作業的計畫投影。

名稱 類型​​ 描述 必要
width double 計畫投影的寬度。 Yes
height double 計畫投影的高度。 Yes
products ProductApiModel Planogram 中的產品清單。 Yes
fixtures FixtureApiModel 計畫投影中的裝置清單。 Yes
positions PositionApiModel 計畫投影中的位置清單。 Yes

產品 API 模型

描述計畫投影中的產品。

名稱 類型​​ 描述 必要
id string 產品識別碼。 Yes
name string 產品的名稱。 Yes
w double 產品的寬度。 Yes
h double 裝置的高度。 Yes

裝置 API 模型

描述計畫投影中的裝置 (架子或類似的硬體)。

名稱 類型​​ 描述 必要
id string 裝置的識別碼。 Yes
w double 裝置的寬度。 Yes
h double 裝置的高度。 Yes
x double 從原點向左位移,單位為英吋或公分。 Yes
y double 從原點向上位移,單位為英吋或公分。 Yes

位置 API 模型

描述產品在計畫投影中的位置。

名稱 類型​​ 描述 必要
id string 位置的識別碼。 Yes
productId string 產品識別碼。 Yes
fixtureId string 產品所在的裝置識別碼。 Yes
x double 從原點向左位移,單位為英吋或公分。 Yes
y double 從原點向上位移,單位為英吋或公分。 Yes

取得分析結果

接下來,您必須使用自訂模型執行 Product Understanding API 呼叫。

傳回的 JSON 文字應該是 "detectedProducts" 結構。 它會顯示在架上偵測到的所有產品,以及您在訓練階段中使用的產品特定標籤。

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

準備配對要求

將計畫圖架構的 JSON 內容與分析結果的 JSON 內容聯結,如下所示:

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

這是您將在 API 要求本文中使用的文字。

呼叫計畫圖比對 API

  1. 將下列 curl 命令複製到文字編輯器。

    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. 視需要在命令中進行下列變更:

    1. 以您的視覺資源金鑰取代 <subscriptionKey> 的值。
    2. 以您的視覺資源端點取代 <endpoint> 的值。 例如: https://YourResourceName.cognitiveservices.azure.com
    3. <body> 的值取代為您在上一節中準備的聯結 JSON 字串。
  3. 開啟 [命令提示字元] 視窗。

  4. 從文字編輯器將經過編輯的 curl 命令貼上到命令提示字元視窗中,然後執行該命令。

檢查回應

JSON 中會傳回成功的回應,其中顯示在每個計畫投影位置偵測到的產品 (或) 間距。 如需欄位定義,請參閱下列各節。

{
  "matchedResultsPerPosition": [
    {
      "positionId": "01",
      "detectedObject": {
        "id": "01",
        "boundingBox": {
          "x": 12,
          "y": 1234,
          "w": 123,
          "h": 12345
        },
        "classifications": [
          {
            "confidence": 0.9,
            "label": "Product1"
          }
        ]
      }
    }
  ]
}

計畫圖比對位置 API 模型

配對的計畫圖位置識別碼,以及來自產品了解結果的對應偵測到物件。

名稱 類型​​ 描述 必要
positionId string 計畫圖中與對應偵測到的物件相符的位置識別碼。 No
detectedObject DetectedObjectApiModel 描述影像中偵測到的物件。 No

下一步