4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

人の目では困難!!商品パッケージの新旧をTeachable MachineとLINE Botで見分けます

Last updated at Posted at 2023-07-20

間違い探しのような商品パッケージ変更を見分ける

こんにちは、私はスーパーでバイヤーをしているアラフォー会社員です。
皆さんスーパーのチラシを見たことはありますよね?
あのチラシですが、出来上がるまでには多くの人間の度重なるチェックがあるのです。
もちろん私を含めたバイヤーのチェックも必須です。
そんなチラシチェックでの「あるあるネタ」
商品パッケージのマイナーチェンジがほぼ間違い探しレベル!
長年何度も悩まされたこの問題の解決に一筋の光が見えました。
「これってAIに画像判別してもらえば間違いが無くなるんじゃないか!?」
最近知ったTeachable Machineという簡単に画像や音声を機械学習できる仕組み。
これを使えば人間では判別の難しいパッケージ画像でもズバッと仕分けてくれるはずです。
ということでこの問題をTeachable MachineとLINE Botを組み合わせて解決してみます。

⇩⇩出来上がったのがこちら⇩⇩

なんで作ったのか

まずは誤解を与えぬように言っておきます。
パッケージリニューアルはメーカーがお客さまに商品をより良く伝えるための努力です。
そして一見変化が分かりにくい=いつも買ってくれてる人が戸惑わないようにへの配慮です。
素晴らしいことなんです。
それを大前提としつつ下の画像をご覧下さい。

画像4.png
※掲載についてはメーカー様の許諾を得ています。

ねっ? 画像だけみるとどれが何時のものだか判別できないでしょう?
我々はチラシに掲載される画像が今現在売場に並んでいるものと同じかチェックしなくてはなりません。
でもこれが容易ではない。。
人間の目では間違う可能性が高いので、いっそのことデジタルで解決しようと思いました。
ということで LINEで商品画像を送り、その商品がいつのパッケージかを返答してくれるものを作ります。

☆作成手順☆

使用ツールはこちら

  • LINE Developers (公式LINEの作成)
  • Teachable Machine(画像判別の機械学習)
  • Node-RED (LINE、Teachable Machineの連携)

Teachable Machineで機械学習

Teachable Machine自体は登録も無しで直ぐに使えます。
説明も日本語だし操作も簡単なので初心者の私でも使いやすいです。
今回は手元に無い古い商品も機械学習させるため、画像データをアップロードし学習させました。
しかしこれがつまずきポイントに…
各画像を1枚づつアップロードしたのですが、それでは全く判別してくれませんでした。。
この時の正解率は20%。 というか全てを同じ画像として認識していました😢
本当は実物を100枚程度角度等を変えて学習させるのがいいのでしょうが、古いパッケージは手元にありません。。
そこで同じ画像を大きさを変えたり、全く同じ画像を何枚かアップロードしてみました。
するとみるみる精度があがり3~4枚づつ学習させた時点で正解率はほぼ100%になりました😃

機械学習が終わったら画面右上のモデルをエクスポートするをクリックします。
画像5.png

さらにモデルをアップロードをクリックし共有可能なリンクをコピーします。
このリンクを後で使用します。
画像7.png

Node-REDの設定

最終的に出来上がったものがこちらです。 かなりシンプルです。
画像8.png

Node-REDの設定については引用記事を大変参考にさせていただきました。
初心者にもわかりやすい記事をありがとうございます。
ノードの各設定については引用記事にも詳しく記されておりますので是非読んでみてください!

では各種設定の説明です。 引用記事と重複する内容が多数ありますがご了承下さい。

①http inノードの設定

画像9.png
メソッドをPOSTにします。
URLに/linebotと入力します。

②functionノード(1つ目)の設定

画像10.png
コード欄に以下のコードを入力します。

const messageID = msg.payload.events[0].message.id;
const replyToken = msg.payload.events[0].replyToken;

msg.messageID = messageID;
msg.replyToken = replyToken;

return msg;

③http requestノードの設定

画像11.png
メソッドはGETを選択。
URL欄に下記のURLを入力。

https://api-data.line.me/v2/bot/message/{{{messageID}}}/content

認証にチェックを入れる。
種別はBearer認証を選択。
トークンにLINE botのチャンネルアクセストークンを入力。
出力形式はバイナリバッファを選択。

④Teachable Machineノードの設定

画像12.png
ModeはOnlineを選択。
URlにTeachable MachineでコピーしたURlを入力。
outputはBest predictionを選択。

⑤functionノード(2つ目)の設定

画像13.png
コード欄に以下のコードを入力します。

const className = msg.payload[0].class;
msg.payload = {};
msg.payload.events = [
    {
        "type": "message",
        "replyToken": msg.replyToken,
        "message": {
            "type": "text",
            "text": `これは「${className}」のパッケージだよ`
        }
    }
];
return msg;

⑥LINE ReplyMessageノードの設定

画像14.png
SecretにLINE botのチャンネルシークレットを入力。
AccessTokenLINE botのチャンネルアクセストークンを入力。

設定は以上!!

作ってみて気づいたこと これからの可能性

今回Teachable Machineでの機械学習をメインとして微妙なパッケージの違いを判別してみましたが、実用レベルには至っていません。

問題点は
 ①膨大な種類のパッケージを学習させることが出来ない。
 ②微妙なPKGの違いを実物画像で判別させるのは難しい。(チラシ確認なら可)
といったところです。

②については実物画像の学習枚数を増やせばクリアできる可能性は多いにあると思います。
しかし今回のように既に実物がない場合は難しいと言わざるを得ません。
1世代前との新旧判別だけなら今から実物の画像収集すれば来期には実用が見込めるという希望は残っています。
実際の運用を考えると1世代前との判別だけいいかと思いますし。

Teachable Machinenについては他の業務で使えることが無いかもう少し考えてみたいと思います。

また画像判別の機械学習についてはもっと精度が高ければ棚割の間違いや在庫の瞬間的な把握等に役立てそうだなと思いました。

なんにせよ、また1つデジタルの武器を手に入れたを嬉しく思います。
次はもっといいものを作るぞー!

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?