Shelf Planogram コンプライアンス (プレビュー)
プラノグラムは、棚上の小売製品の正しい配置を示す図です。 Planogram Matching API を使用すると、写真の分析結果を店舗のプロノグラム入力と比較できます。 これにより、プラノグラム内のすべての位置のアカウントと、各位置で商品が見つかったかどうかが返されます。
注意
画像に表示されているブランドは Microsoft と提携しておらず、Microsoft または Microsoft 製品のブランド所有者による保証、またはブランド所有者またはその製品の Microsoft による保証を示すものではありません。
前提条件
- Product Understanding API を使用して、基本的な Product Understanding 分析を既に設定し、実行済みである必要があります。
- インストールされた cURL。 または、Swagger または VS Code 用の REST クライアント拡張機能など、別の 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 による保証を示すものではありません。
プラノグラム スキーマの数量は、非特定単位です。 インチ、センチメートル、またはその他の任意の測定単位に対応できます。 照合アルゴリズムにより、写真分析の単位 (ピクセル) とプラノグラム単位の間の関係が計算されます。
Planogram API モデル
プラノグラム照合操作のプラノグラムについて記述します。
名前 | 種類 | 内容 | 必須 |
---|---|---|---|
width |
double | プラノグラムの幅。 | はい |
height |
double | プラノグラムの高さ。 | はい |
products |
ProductApiModel | プラノグラム内の商品のリスト。 | はい |
fixtures |
FixtureApiModel | プラノグラム内の備品のリスト。 | はい |
positions |
PositionApiModel | プラノグラム内の位置のリスト。 | はい |
Product API モデル
プラノグラム内の商品について記述します。
名前 | 種類 | 内容 | 必須 |
---|---|---|---|
id |
string | 商品の ID。 | はい |
name |
string | 製品の名前。 | はい |
w |
double | 商品の 幅。 | はい |
h |
double | 備品の高さ。 | はい |
Fixture API モデル
プラノグラム内の備品 (棚または同様のハードウェア) について記述します。
名前 | 種類 | 内容 | 必須 |
---|---|---|---|
id |
string | 備品の ID。 | はい |
w |
double | 備品の幅。 | はい |
h |
double | 備品の高さ。 | はい |
x |
double | 原点からの左オフセット (インチまたはセンチメートル単位)。 | はい |
y |
double | 原点からの上部オフセット (インチまたはセンチメートル単位)。 | はい |
Position API モデル
プラノグラムでの商品の位置を記述します。
名前 | 種類 | 内容 | 必須 |
---|---|---|---|
id |
string | 位置の ID。 | はい |
productId |
string | 商品の ID。 | はい |
fixtureId |
string | 製品が配置されている備品の ID。 | はい |
x |
double | 原点からの左オフセット (インチまたはセンチメートル単位)。 | はい |
y |
double | 原点からの上部オフセット (インチまたはセンチメートル単位)。 | はい |
分析結果を取得する
次に、カスタム モデルを使用して 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>
の値を Vision リソース キーに置き換えます。<endpoint>
の値を Vision リソース エンドポイントに置き換えます。 (例: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"
}
]
}
}
]
}
Planogram Matching Position API モデル
プラノグラム位置 ID と、商品理解の結果から検出された対応する物体のペア。
名前 | 種類 | 内容 | 必須 |
---|---|---|---|
positionId |
string | 検出された対応するオブジェクトと照合されたプラノグラムからの位置 ID。 | いいえ |
detectedObject |
DetectedObjectApiModel | 画像内で検出されたオブジェクトについての説明。 | いいえ |