[Amazon SageMaker] 商品棚の品切れを検出してみました

2021.03.13

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

1 はじめに

CX事業本部の平内(SIN)です。

制度の高い物体検出モデルを作成するには、質の良い大量のデータセットが必要です。

商品棚に置かれている多数の商品(また、パッケージは定期的に更新されたりする)のデータセットを作成するとなると、非常にコストの高い作業となる事は容易に想像出来ます。

今回は、商品自体ではなく、商品が品切れとなった時の「背景」を学習させることで、少ない画像で、品切れ状態を検出するモデルを作成してみました。

最初に動作している状況です。品切れとなった部分が検出できている事を確認できます。

2 元データ

元データとして撮影した画像は、以下のようなものです。

(1) 商品がない状態

照明の加減を変化させて、5枚程度撮影しました。

(2) 商品がある状態

合成時に背景とするためのもので、こちらも照明の加減を変化させて20枚程度撮影しました。

3 品切れの背景のデータセット

「商品がない状態の画像」から、1個商品分の背景を切り取ります。

プレビューで表示して、ドラッグで「選択」してCommand+C、Command+Nで簡単に切りとし画像は作成できます。

これを繰り返して、30枚の画像を切り出しました。

4 合成

配置する「品切れの背景」と、背景となる「商品がある状態」をランダムに合成し、データセットを作成しています。

アフィン変換して合成する手法は、以前のものと同じですが、今回は、オブジェクトの回転(Role)はせず、また、大きさも、カメラ画角に対して妥当な長方形となるようにしました。

これは、下記のような商品の余白に見える、「背景」を検出しないようになるのでは?と考えたためです。

作成されたGroundTruthの形式の3000枚のデータセットの画像です。

5 学習

学習は、Amazon SageMakerの組み込みアルゴリズム(物体検出)で行っています。

6 最後に

「品切れの背景」だと、すべての商品を検出するより、格段に低コストで検出できるかも知れません。

商品棚にマーカーなどがあれば、どの棚で、「品切れ」となっているのかを通知するような事も可能かもしれません。