TensorFlowでディープラーニングによる『キュウリ』の仕分け


Pocket

ディープラーニングを使ってキュウリの仕分け(選果とも言う)をしてみました。

今回試してみたのは、TensorFlowのチュートリアル『Deep MNIST for Experts』の畳み込みニューラルネットワークに少し手を加え、キュウリの仕分け作業をやらせてみるとう試みです。
キュウリをWebカメラで撮影した画像により、仕分けを行います。
 

キュウリの仕分けとは

キュウリの仕分けとは、出荷する際に傷や病気があるものを弾いたり、形や色合い、大きさによりランク別に選別したりする作業です。
選別には、とくに統一規格があるわけではなく、各農家によって独自ルールがあったりします。
(主に、出荷先の希望、市場での値の付き方、作業効率などにより決めていると思われる)

さて、うちの仕分けルールは、だいたいこんな感じになります。(実際にはもう少し細かいのですが…)

cucumber_classification

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種類にしただけです。

<学習時の交差エントロピー>
cross_entropy
一応学習はうまく進んでいるようです。
 

テスト

最後にテストです。
学習で使用していないテスト用画像275枚を分類させてみたところ…
正解率は80%でした!

そこそこ上手く判別できている気がします。
今回の場合は、各分類クラス間が離れていないため、人間がやっても“2LとL”や“LとBL”の判別は難しい(けっこう適当)だったりします。

 

あとがき

当初の予想以上の結果に、正直驚いてしまいました。
改良すれば実用できそうな気がするけど…どうだろう?
やるならきゅうり全体を見なきゃだし難しいか…

最終的には、自動仕分け機を作るところまで行けたらいいけど。
できたらオープンハードウェアとして公開したい。

ではでは〜。
 

 

Leave a Comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>