貨架計畫圖合規性 (預覽)
計畫圖是一個圖表,指出零售產品在擱置時的正確放置。 計畫圖合規性 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
將下列
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>"
視需要在命令中進行下列變更:
- 以您的視覺資源金鑰取代
<subscriptionKey>
的值。 - 以您的視覺資源端點取代
<endpoint>
的值。 例如:https://YourResourceName.cognitiveservices.azure.com
。 - 將
<body>
的值取代為您在上一節中準備的聯結 JSON 字串。
- 以您的視覺資源金鑰取代
開啟 [命令提示字元] 視窗。
從文字編輯器將經過編輯的
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 |