- DEEokinawaトップ
- 特集
- ディープラーニングで天ぷら問題を解決したい
ディープラーニングで天ぷら問題を解決したい
2021年は2月12日が旧暦のお正月、旧正月にあたります。また旧暦の1月16日はあの世のお正月と言われている十六日。このご時世だけに親戚一同が集まるようなことはなさそうですが、旧正月まわりの沖縄はわりと行事ごとが多い印象です。
そして、親戚一同が集まるような行事といえば「天ぷら」。沖縄の天ぷらは行事に供される行事食でもあるのです。
さて、天ぷらと言えば沖縄県民の悩みである「天ぷらイカ・魚問題」というものがあります。
沖縄の天ぷらは衣が厚く、似たような形状であるため「魚天ぷらを食べたかったのに、イカ天ぷらを取ってしまう」「イカ天ぷらが食べたかったのに、魚天ぷらを取ってしまう」という悲劇が起こること
我々DEEokinawaでも長らく「天ぷらイカ・魚問題」について解決方法を模索してきました。
魚てんぷらとイカてんぷらを見分ける方法
夢の自動天ぷら判別機を作ってみる
そして令和の今、僕は思ったのです。そうだ、ディープラーニングだと。
魚天ぷらとイカ天ぷらを画像識別してみる
ディープラーニング…めちゃめちゃ格好いい響きですが(個人の感想です)、要するに沢山ある画像であらかじめそれぞれの特長を抽出して学習しておいて、学習データをもとに目の前にある天ぷらが魚なのか、イカなのかを判別するような仕組みです(たぶん)。
ディープラーニングについては色々方法があるし、突き詰めたらものすごい知識が必用だと思うのですが何も分かっていない僕は「M5stickV」というものを買いました。4000円くらいのカメラなんですが、初学者でも手順を踏めば簡単に画像認識を行えるというガジェットです。未来感がすごい。
今回はこちらを使って、「天ぷらイカ・魚問題」の解決を試みます。
まずはコンビニに行って
早速天ぷらを買ってきました。今回は沖縄天ぷら界のデファクトスタンダード、上間天ぷらの天ぷらを使いたいと思います。
左がイカ、右が魚です。こうしてみると上間天ぷらの天ぷらはかなり見分けやすいですね。ぱっと見、見た目の長さが明かに異なりますし、魚は黒い皮が透けて見えています。
これだけ見分けやすいのであれば、わざわざディープラーニングを使う必用はないのでは、そもそも「天ぷらイカ・魚問題」に当てはまらないのは…と思った方もいらっしゃるでしょう。
まぁこれは人類の最初の一歩。まずは上間天ぷらを征して、見分けにくい天ぷらに挑戦していく感じにしたいと思います。
M5stickVにおける機械学習のやり方は簡単で、専用のプログラムをSDカードに入れたら手順通り写真を撮るだけでデータを用意することができます。学習には最低3つのモノの写真が35枚必用。
それぞれの天ぷらを色々な角度から撮影していきます。学習には3種類のものが必用なのですが、魚天ぷら、イカ天ぷら、そして何も載っていない机そのものを撮影することにしました。
天ぷらの写真をそれぞれ35枚以上撮るのが割と面倒でしたが、画像は用意できました。画像点数は多ければ多いほど良いらしいのでそれぞれ60枚くらい撮りました。
あとは撮った画像をまとめてサイトに送ると、メールで学習データ+認識プログラムが送られてくるという仕組みです。それをM5stickVのSDカードに書き込むだけで認識ができるという優れもの。
学習結果のメールには学習についてのグラフみたいなものも添付されているのですが、素人の僕にはこれがちゃんとうまくいった結果なのかそうでないのかよく分かりませんでした。
ディープラーニングで魚天ぷらとイカ天ぷらは判別できるのか
それではディープラーニングの成果をためしてみましょう。
学習データを入れたM5stickVの電源を入れると、カメラに写った画像に認識結果がリアルタイムで表示されます。何も無い机を見ているのに認識結果は「イカ」…。
なんかやばいぞ…。
しかし天ぷらを画面に収めてみると、そこはかとなく認識してる様子です。
動画で見てみるとわかりますが、机の判別がものすごく甘いのと天ぷらを認識しても「魚」「イカ」が交互に出たりしてあまり安定してない感じはあります。
これだけだとよく分からない上に、盛り上がりに欠けるのでもうちょっとブラッシュアップをしてみたいと思います。
M5stickVはMaixPyというPythonという言語の親戚みたいなもので制御することができて、処理を書き換えることで音を再生したり、LEDを光らせたり、みたいなことができます。
とりあえず先達の方々がやっていることを真似しつつ、認識の間隔をすこし広げたり、認識結果を音やLEDでも分かるように書き換えてみました。
そして、こちらが完成形です!
うん。なんだか見た目はショボくなりましたね。ですが、その実力を以下の動画でご覧下さい。
音量は小さいですが、ちゃんと「イカ天ぷら」か「魚の天ぷら」かを喋ってくれます。またLEDが赤の場合はイカ、青の場合は魚というインジゲーター表示つきです。
これが2021年の「天ぷらイカ・魚問題」へのソリューション!
と、言いたいところなんですが、ひたすら何も置いてない机を「イカの天ぷら」と認識し続けたり、魚天ぷらをイカ天ぷらにご認識したりとめちゃめちゃ精度が低いものができあがってしまいました。
今日の記事がこんな時間に出ているのはある程度ちゃんと動く動画を撮るのに調整に調整を重ねた結果でございます。やはり近しいものをディープラーニングで識別するにはもっと学習を重ねる必用があるのか、あるいは他に原因があるのか…。
もうちょっと色々試してみて、また結果をお伝えしたい所存です。