牛乳キャップデータバンク↓

2018年10月28日日曜日

AIで牛乳キャップの画像仕分に挑戦 その3


さて、前回はWatsonの使い方について投稿いたしましたので、今回からはマシーンラーニングにより実際に分類機を作って使ってみます。

まずやらなければならないのは、トレーニングに必要な画像を大量に集めることです。

幸い、相場サイトには既に5万枚を超える牛乳キャップの画像が蓄積されていますので、画像が足りなくて困ることは無さそうです。

大量の画像を確保できたら、AIのお手本となるようにそれらの画像を分類してやります。

人力による分類は結構しんどい作業ですが、お手本の数は多い方が精度が高まるとのことですので、頑張るしかありません。
最低限必要な数は分類毎に150枚くらいとのこと。。

赤、青、緑、茶色の牛乳キャップは出現頻度がかなり高いので、ごそっと選択して一気にコピーできます。
が、紫とか黄とか黒はレアなのでイメージを探すのが大変です。
とりわけ黒は少ないのでチマチマとコピーする必要があり、手がかかります。

数時間作業したところで、さすがに飽きてきてきました。
お手本の数がまだ少ないので精度は期待できませんが、とりあえずここらでマシンラーニングをやってみることにします。

緑:164枚

青:161枚

赤:116枚

黄:114枚

オレンジ:104枚

ピンク:99枚

茶:80枚

紫:79枚

黒:24枚

このファイルをZIPで圧縮して相場サイトのサーバにアップロードします。
さらに、そこからZIPファイルとコマンドをWatsonに送ってマシンラーニングを実行するのです。

実行するコマンドは以下のような感じです。

マシンラーニングには数時間の時間を要するのですが、いつ終わるか分かりません。
分類機の状態を調べるコマンドがあるので、定期的にそれで確認することになります。


確認コマンドを実行すると以下のように状態を返してくれます。


マシンラーニング開始直後はstatusが"training"となっていますが、ここが"ready"になると準備完了です。

数時間後、状態が"ready"になりました。


では、トレーニングが完了した色分類機を使ってテストしてみましょう。
テストに使うのはトレーニングで使用していない、ヤフオクの最新出品画像です。

まずは、簡単そうなものから。
→どう見ても「緑」です。これなら間違えようがありませんよね。


相場サイトのサーバにアップロードして分類コマンドを実行します。


実行結果が戻ってきました!


おお、クラスが"green"でスコアが0.925ですね。
強い確信をもって、「緑」と判定してくれているようです。
期待通り!

次はちょっと難しそうなやつ。
背景が緑で、キャップ自体が赤、青の二色刷りになっています。
期待としては「赤」ですが、果たしてどうなるか。。


分類コマンドの結果が戻ってきました!


やりました!分類結果は「赤」ということで、大正解。
優秀じゃないですかワトソン君。

調子がいいのでバンバンやってみましょう。

画像 期待結果 Watsonの答え コメント
大正解!
大正解!
背景色に騙されませんでした。
ピンク
大正解!
青に引っ張られませんでした。
大正解!
背景色に騙されませんでした。
大正解!
背景色に騙されませんでした。
大正解!
オレンジ
青に引っ張られてしまいましたね。できればオレンジがよかったなぁ。
ピンク
大正解!
茶色
大正解!
背景に騙されませんでした。
ピンク
茶色に引っ張られてしまいました。できればピンクにしてほしかったが。。
大正解!
背景に騙されませんでした。
オレンジ
大正解!
青に引っ張られませんでした。
何だこりゃ?
青でも赤でもなくピンクですか?
そんなこと教えた覚えはないっ!
大正解!
茶色
紫と赤で迷っているようですな。。
どっちにしても不正解ですが。。

トレーニングに使った画像が少なかったので、まともな結果は期待していませんでしたが、思ったよりもちゃんと分類できたようです。

背景色に騙されずしっかりと牛乳キャップの色を分類しているのがすばらしいです。

間違ったものもありましたので、さらにトレーニングに使う画像数を増やして学習させ、精度を上げていきたいと思います。

次に続く。



2018年10月25日木曜日

AIで牛乳キャップの画像仕分に挑戦 その2


前回の投稿で、牛乳キャップの画像の仕分けにIBMのWatsonを使う旨記載しましたので、今回はWatsonについてご紹介をしようと思います。

WatsonにはAIサービスがいくつもあって、そのうちの一つが今回使うVisual Recognitionというサービスなんです。下のイメージの「画像系」のところが該当します。




Visual Recognitionにはデモサイトがあって、学習済みの分類機に画像をドロップするとその画像に写っているものを予想してくれます。


サイトの下の方にあるカメラのロゴをクリックすると画像を選択できます。

さっそく牛乳ビンのイラストをドロップしたところ、汎用分類機では以下のような結果がでました。
(分類の結果は0.00(低)~1.00(高)で確度を表すスコアにより判定されています。)


汎用分類機

白っぽい色であり、ボトルが描かれていて、それが飲み物であるところまで高確度でわかっているようです。
やや自信無さげにネジ蓋式容器とか香水瓶なども予想リストに入っています。

食品に特化した分類機もあり、それによる分類結果も以下の通り示されていました。

食品用分類機


「食品」であるというヒントはAIにとってかなり大きな意味を持つのでしょうね。
このイラストが牛乳であることを絶対の確信をもって見抜いているようです。

では、ここに牛乳キャップの画像をドロップするとどうなるでしょうか?
→やってみました。

汎用分類機

こちらも色については、浅黄色とベージュということで、正解です。
浅黄は牛乳キャップ自体の色、ベージュは背景の色でしょうね。
beer mat というのは、ビールのグラスの下に敷くコースターですね。
十分うなずける結果です。

食品用分類機

食品用分類機では、乳製品とかチーズなどと予測されています。
きっと、下の画像のような感じのものと間違われているのでしょうね。
さすがにこれはやむなしです。。

このデモは誰でも使えますので、是非遊んでみてください。

さて、Visual Recognitionには自分専用のカスタム分類機を作る機能がありまして、牛乳キャップの仕分けにはそれを使うことになります。

Visual Recognitionでカスタムの画像分類機を作成するためには、IBM Cloudにユーザ登録する必要があります。
料金プランを選ぶことができるようになっておりまして、「ライト」ですと使用量に制限がありますが、無料で使用することができます。

次回からは実際に機械学習を行います。