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 を呼び出す

  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> の値を Vision リソース キーに置き換えます。
    2. <endpoint> の値を Vision リソース エンドポイントに置き換えます。 (例: 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"
          }
        ]
      }
    }
  ]
}

Planogram Matching Position API モデル

プラノグラム位置 ID と、商品理解の結果から検出された対応する物体のペア。

名前 種類 内容 必須
positionId string 検出された対応するオブジェクトと照合されたプラノグラムからの位置 ID。 いいえ
detectedObject DetectedObjectApiModel 画像内で検出されたオブジェクトについての説明。 いいえ

次の手順