カメラをかざすだけでカート内金額計算と最安値表示のAIショッピング計算機「ピクサム」のR&D

カメラをかざすだけでカート内金額計算と最安値表示のAIショッピング計算機「ピクサム」のR&D

こんにちは、アドバンスドテクノロジーラボ(ATL)の塩澤繁です。

今回は、私がR&Dを実施したデモアプリのご紹介をさせて頂きます。
AI領域ではニッチなライブラリである「YOLO: Real-Time Object Detection」を利用した物体認識アプリとなります。

YOLOの特徴としては、動画、静止画内のオブジェクト検知、検知した座標情報、大きさを特定する事が可能なR-CNNです。

買物をする際に、レジに行かなくてもカート/カゴに入っている商品の合計が気になったり、買おうとしている商品がもっと安い価格で最寄りのお店で買えないかを知りたいと思った事は無いでしょうか?

私の場合、お店のポップに書かれている値段をスマホの計算機へ、手入力で入力して合計金額を出したり、買おうとしている商品を最寄りの店舗のチラシにもっと安い価格で掲載されていないかをググったりする事があります。

そんな煩わしい作業を、一瞬で計算、調べてくれる「ピクサム」を作ってみました。

■機能紹介 カート内に入っている合計金額と最寄り店舗の最安値情報の表示

今回は、オムライスを作る想定の食材で試します。

<1>「ピクサム」アプリの起動

アプリアイコン

アプリアイコン

<2>地図から買物店舗を選択

お店に地図のピンから自分が買物をする店舗を選びます。

店舗選択

店舗選択

<3>カメラで買物カート/カゴ内を写す

商品認識が開始されます。全商品の認識がされるまで、カメラをかざし続けます。

商品認識スタート

商品認識スタート

<4>商品名と価格が表示

認識すると、丸い斑点が商品に付き、商品名と価格がラベル表示されます。
全商品の認識が完了したら、リンゴのマークをクリックします。

商品認識完了

商品認識完了

<5>合計金額の表示と最寄り店舗の最安値情報

現在カート/カゴに入っている商品の合計金額と、最寄り店舗における最安値情報の表示がされます。

オムライス合計画面

オムライス合計画面

■物体認識の精度
パッケージや形の似た商品の見分けを正しく出来るかのテスト

同じように、「ピクサム」を起動して、カメラ内にカート/カゴをおさめます。
今回は形状が似ている"りんご"と"タマネギ"、形状が一緒でパッケージが異なるだけの缶コーヒーを2種類(ジョージア、ボス)を入れています。
更に、ボスは立てており、ジョージアは寝かせています。

物体認識精度の確認

物体認識精度の確認

問題無く、"りんご"と"タマネギ"、"ジョージア"と"ボス"を見分ける事が出来ました。
特に、ボスは立っている状態で、ラベルは若干しか写り込んでいませんが、判別出来ました。

■教師データ準備
商品毎に教師データを下記の撮影手法で作成

各商品をクロマキーのグリーンバックにて撮影(各商品100枚程度)

グリーンバックりんご

グリーンバックりんご

背景抜き写真

グリーン部分を除去しました。

背景除去りんご

背景除去りんご

ジェネレート&背景合成

ディープラーニングでの学習の為のジェネレートを100倍施し、背景にもバリエーションを持たせる為に、様々な背景イメージで合成しました。

■環境について 開発ハードとトレーニング環境

開発ハード

CPU:Core i7-8700
メモリ:DDR4 2666 16GB×4
GPU:NVIDIA GeForce GTX 1080 Ti×2
SSD:M2. 2TB

トレーニング環境

OS:Ubuntu
ライブラリ:YOLO V3
検証データ:トレーニングイメージ数に対する1割
EPOCH:10

クライアント側環境

スマートフォン:iPhoneX
OS:iOS ver 12.1

■まとめ

今回のR&Dでは、開発期間は1ヵ月であった為、必要最低限の機能、データ準備、トレーニングとなりました。

その為、買い物カゴの中で商品が重ならない様にしたり、商品認識するまでの時間が数秒かかったり、iOSのカメラが高熱を持ったり等でα~β版という状態でした。苦労したのは、グリーンバックで撮影し、背景を抜きやすくはしたものの、10数種類の商品は、手作業で撮影をする時間に多くの時間を要しました。

また、食材の劣化の速さもあり、バナナ等は週に1回は買い足す等の苦労もありました。(食材は破棄せず、メンバーで持ち帰りました)

今回の機能は、リリースできるクオリティに高める事ができれば、本当に便利だと感じました。最寄り店舗の最安値情報をどの様に取得するか、店舗毎の商品情報はめまぐるしく変わりますので、店舗のレジと紐付くデータベースとの連携等の検討も必要となりますが、将来ぜひ実現して欲しい機能です。ディープラーニングによって、これまで実現が難しかったことが、少しでも改善される世界を目指し、私もR&Dを継続して行きたいと考えています。