ディープラーニングを使ってキュウリの仕分け(選果とも言う)をしてみました。
今回試してみたのは、TensorFlowのチュートリアル『Deep MNIST for Experts』の畳み込みニューラルネットワークに少し手を加え、キュウリの仕分け作業をやらせてみるとう試みです。
キュウリをWebカメラで撮影した画像により、仕分けを行います。
キュウリの仕分けとは
キュウリの仕分けとは、出荷する際に傷や病気があるものを弾いたり、形や色合い、大きさによりランク別に選別したりする作業です。
選別には、とくに統一規格があるわけではなく、各農家によって独自ルールがあったりします。
(主に、出荷先の希望、市場での値の付き方、作業効率などにより決めていると思われる)
さて、うちの仕分けルールは、だいたいこんな感じになります。(実際にはもう少し細かいのですが…)
2L〜2S:良品。色艶がよく、比較的まっすぐで太さも偏っていないもの。大きさにより2Lから2Sまで5段階に選別される。
BL〜BS:B品。色合いが悪かったり、少し曲がっていたり太さが不均一なもの。大きさによりL〜Sまで3段階に選別される。
C:C品。形の悪いもの。
学習用データ
学習用データ画像は、32×32の画像を、各クラス275枚用意しました。
Webカメラで適当に撮ったので、影などが入り込んでいて微妙ですが…。
CIFAR-10 datasetとおなじフォーマットにしたものを下記に置いておきます。
※python versionのみ
https://github.com/workpiles/CUCUMBER-9
畳み込みニューラルネットワーク
ほとんど『Deep MNIST for Experts』そのままで、畳み込み層とプーリング層のペアを2回通したあとに、全結合層を配置という構成です。
変更したのは、入力画像を32x32x3にしたのと、分類数を9種類にしただけです。
<学習時の交差エントロピー>
一応学習はうまく進んでいるようです。
テスト
最後にテストです。
学習で使用していないテスト用画像275枚を分類させてみたところ…
正解率は80%でした!
そこそこ上手く判別できている気がします。
今回の場合は、各分類クラス間が離れていないため、人間がやっても“2LとL”や“LとBL”の判別は難しい(けっこう適当)だったりします。
あとがき
当初の予想以上の結果に、正直驚いてしまいました。
改良すれば実用できそうな気がするけど…どうだろう?
やるならきゅうり全体を見なきゃだし難しいか…
最終的には、自動仕分け機を作るところまで行けたらいいけど。
できたらオープンハードウェアとして公開したい。
ではでは〜。
きゅうりの選果面白そうですね。農作業の中で戦果が一番手間がかかるような気がします。
ここを自動化することでかなり楽になりそうですね。
私も最近農業を始めましたが、収穫してきて選果してパック詰めするのがとても手間です。
色々と投稿してください。技術はありませんが興味はありますのでよろしくです。
ありがとうございます!
選果機は現在改良中で,できたらまたブログでご紹介していきますね.