小池さん製作、キュウリ仕分け機の2号機
お母さんの「仕分けの技」を AI に
自動車部品メーカーで制御システムの開発に 7 年携わっていた小池さんが、退職を機にご両親のキュウリ栽培を手伝い始めたのは 1 年前のこと。実際に仕事を始めてみると、キュウリ栽培そのものに加えて、キュウリの「仕分け(選果)」の作業の難しさ、手間の多さに気づいたという。「ひとくちにキュウリと言っても、その品質や鮮度は千差万別なんです」(小池さん)
小池さんとキュウリ畑とご両親
小池さんのお父さん曰く、売り口上は「棘が刺さるキュウリ」。表面の「イボ」がまだ残ったままの、採れたてのパリっとしたキュウリを食卓に届けるのが、小池さんのお父さんとお母さんの信条だ。まっすぐで太く、色つやもよく、イボのついた新鮮なキュウリは「秀品」として仕分けられ、市場でも高値が付く。
小池さんの畑のキュウリと市販のキュウリ
実はこうしたキュウリの等級は、特に業界標準はなく、農家ごとに決められている。小池さんの畑では 9 段階に仕分けしており、その作業はすべてお母さんが担当。収穫のピーク時には一日 8 時間ずっと仕分け作業に追われるという。大掛かりな仕分け機も市販されているものの、仕分けの能力やコストの面で制約があり、個人農家ではあまり使われていない。
「キュウリの仕分けは、誰にでもすぐにできる仕事ではありません。キュウリの長さ、太さだけでなく、色艶などの質感、凹凸やキズがあるか、形がいびつかどうか、イボが残っているかなど様々な要素を加味して等級を決めます。それを体得するには何ヶ月もかかり、忙しい時期だけパートさんに頼む、といったことがしにくい。私もやっと最近きちんと仕分けできるようになりました。機械で仕分けるにしても、長さや形だけを見る単純な画像認識では不十分です」
曲がっていたり太さが均一でないキュウリは等級が下がる
とはいえ、こうした仕分けの作業は農家の本来の仕事ではないと小池さんは考える。「農家はおいしい野菜を作ることに時間をかけたい。キュウリ栽培の仕事を継いでいくにあたって、仕分けの作業はいずれ自動化したいと考えています」
お母さんの仕分けの技を、いかにして機械に覚えさせるか。そこで AlphaGo のニュースをきっかけに、小池さんは Google が公開するオープンソースの機械学習ライブラリ TensorFlow を使ってディープラーニングによるキュウリの仕分けができないか、試し始めた。
TensorFlow で初めて試すディープラーニング
ディープラーニングによる画像認識のメリットは、膨大な数のニューロンで形成された階層構造によって、画像を識別するために捉えるべき「特徴」をコンピュータが自ら学習する点だ(ディープラーニングについて詳しくは、ブロク記事「
TensorFlow Playground でわかるニューラルネットワーク 」を参照のこと)。これにより、用途によっては人の目を超える性能の画像認識を実現でき、例えばネコの品種、クルマの車種、航空機の機種の推定も可能である。ならばキュウリの仕分けはどうだ、と小池さんは考えた。
「AlphaGo のニュースと同時期に TensorFlow が公開され、さっそくキュウリの画像で試してみよう、と。機械学習やディープラーニングに触れるのはまったく初めてでしたが、TensorFlow のチュートリアルを試してみたところ、予想以上の結果がすぐに得られたので正直驚きました。これは使えそうだと手応えを感じました」
オープンソースのライブラリである TensorFlow を用いることで、ディープラーニングの実装に必要な数理モデルや最適化アルゴリズムについて熟知していなくても、公開されているサンプルやチュートリアルを用いて「とりあえず触り始める」ことができる。ディープラーニングを「お試し」するためのハードルがぐんと低くなり、機械学習の専門家でなくても気軽にトライできるようになった。
以下の図は、小池さんによるキュウリ仕分け 2 号機のシステム構成である。Web カメラによる画像撮影は Raspberry Pi 3 で制御し、そこで TensorFlow による小規模なニューラルネットによってキュウリのあり・なしを判断。撮影したキュウリ画像を Linux マシン上の TensorFlow で動作するディープラーニングによる認識エンジンに送る。
キュウリ仕分け機のシステム構成図
キュウリ画像の認識には、TensorFlow のサンプルコード「
Deep MNIST for Experts 」をベースに、若干手を加えたディープニューラルネットワークを用いている。畳み込み層とプーリング層を数回通したあと、全結合層を配置という構成で、扱う画像の解像度と分類数をキュウリ仕分け用に変更している。
Google クラウドで「イボ」を見分ける AI へ
ディープラーニングによる画像認識の課題のひとつは、大量の学習用画像が必要になる点である。試作 2 号機の開発に際して小池さんが撮影したキュウリ画像はおよそ 7000 枚。お母さんが仕分けしている横で写真を撮影し、およそ 2、3 か月をかけて学習用画像を用意した。しかしそれでもまだ、学習用画像が足りないと小池さんは言う。
「学習用と合わせて用意したテスト用の画像で検証すると、正解率は 95% に達します。しかし、その後新たに作成したキュウリ画像で試すと、70% 程度に落ちてしまいます。まだまだ学習用画像の数が少ないため、『過学習』(少数の学習用データに偏って学習してしまう現象)が発生しているようです」
ディープラーニングのもうひとつの課題は、計算パワーである。現在の小池さんのシステム構成では、一般的な Windows デスクトップ PC の CPU を用いて学習を行っている。キュウリ画像を 80 x 80 ピクセルという低解像度に変換しているが、それでも 7000 枚を用いた学習が完了するには2〜3日を要しているという。
「この解像度でも、キュウリの曲がり具合や長さ、太さの均一さを認識しての仕分けができています。一方で、表面の艶やイボ、色合い、キズの付き具合といった細かな状態は認識できません。もっともっと解像度を上げ接写すれば、正解率はぐんと引き上げられるものと見ています。しかし、いずれも学習時間が急激に伸びてしまうので試せていません」
大量の計算パワーを消費するというディープラーニングの課題を乗り越えるため、大手企業では、一般的な CPU よりもひと桁性能の高い高価な GPU サーバーを数台〜数 10 台といった規模で導入し、分散学習環境を構築している例もある。当然、それには莫大なコストがかかってしまい、誰でも気軽に試せるというものではない。
そこで Google では、クラウド上の数10〜数100 の CPU や GPU による分散学習を低コストで提供するサービス、「
Cloud Machine Learning (Cloud ML)」の一般公開を近日中に予定している。Cloud ML では、TensorFlow による大規模な分散学習に必要となる GPU サーバーのセットアップや運用、分散環境の構築等のすべてを Google まかせにでき、かつコストも学習に使った分だけ支払えばよい。ディープラーニングのパワーを手軽に試せるサービスとなる見込みだ。
AlphaGo の試合に用いられた Google のディープラーニング専用サーバ
この Cloud ML は、小池さんもいち早く試してみたいと答える。「Cloud ML が使えれば、より高い解像度で、より多くのキュウリ画像での学習を試せます。ニューラルネットワークの段数を増やすなど、さまざまな試行錯誤も可能になる。今から待ち遠しいです」
お母さんの仕分けの技を、AI で継承できるか。「ディープラーニングによるキュウリの仕分け」という小池さんの発想が、TensorFlow と Google クラウドをきっかけに、とても短い時間と低いコストで現実のものとなりつつある。今いちばん面白い「AI」とは、こうした身近な現場の「やってみた」から生まれるのかもしれない。
Posted by 佐藤一憲(Cloud Platform チーム デベロッパーアドボケイト )
「Google のコンピュータ囲碁プログラム『AlphaGo 』が世界トップクラスの棋士と互角に指し合う様子を見て、これは凄いことが起きている、と思いました。それが、ディープラーニングを使ったキュウリ仕分け機の開発のきっかけです」
それからわずか 4 か月。静岡県でキュウリ栽培農家を営む小池誠さんは、Google の機械学習ライブラリ TensorFlow を用いたキュウリ仕分け機 の自作を進め、その試作 2 号機が 7 月に完成した。8 月 6 日〜7 日に東京ビッグサイトで開催されるイベント「Maker Faire Tokyo 2016 」で展示される。
まずはその動きをビデオで見ていただきたい。
VIDEO
小池さん製作、キュウリ仕分け機の2号機
お母さんの「仕分けの技」を AI に
自動車部品メーカーで制御システムの開発に 7 年携わっていた小池さんが、退職を機にご両親のキュウリ栽培を手伝い始めたのは 1 年前のこと。実際に仕事を始めてみると、キュウリ栽培そのものに加えて、キュウリの「仕分け(選果)」の作業の難しさ、手間の多さに気づいたという。「ひとくちにキュウリと言っても、その品質や鮮度は千差万別なんです」(小池さん)
小池さんとキュウリ畑とご両親
小池さんのお父さん曰く、売り口上は「棘が刺さるキュウリ」。表面の「イボ」がまだ残ったままの、採れたてのパリっとしたキュウリを食卓に届けるのが、小池さんのお父さんとお母さんの信条だ。まっすぐで太く、色つやもよく、イボのついた新鮮なキュウリは「秀品」として仕分けられ、市場でも高値が付く。
小池さんの畑のキュウリと市販のキュウリ
実はこうしたキュウリの等級は、特に業界標準はなく、農家ごとに決められている。小池さんの畑では 9 段階に仕分けしており、その作業はすべてお母さんが担当。収穫のピーク時には一日 8 時間ずっと仕分け作業に追われるという。大掛かりな仕分け機も市販されているものの、仕分けの能力やコストの面で制約があり、個人農家ではあまり使われていない。
「キュウリの仕分けは、誰にでもすぐにできる仕事ではありません。キュウリの長さ、太さだけでなく、色艶などの質感、凹凸やキズがあるか、形がいびつかどうか、イボが残っているかなど様々な要素を加味して等級を決めます。それを体得するには何ヶ月もかかり、忙しい時期だけパートさんに頼む、といったことがしにくい。私もやっと最近きちんと仕分けできるようになりました。機械で仕分けるにしても、長さや形だけを見る単純な画像認識では不十分です」
曲がっていたり太さが均一でないキュウリは等級が下がる
とはいえ、こうした仕分けの作業は農家の本来の仕事ではないと小池さんは考える。「農家はおいしい野菜を作ることに時間をかけたい。キュウリ栽培の仕事を継いでいくにあたって、仕分けの作業はいずれ自動化したいと考えています」
お母さんの仕分けの技を、いかにして機械に覚えさせるか。そこで AlphaGo のニュースをきっかけに、小池さんは Google が公開するオープンソースの機械学習ライブラリ TensorFlow を使ってディープラーニングによるキュウリの仕分けができないか、試し始めた。
TensorFlow で初めて試すディープラーニング
ディープラーニングによる画像認識のメリットは、膨大な数のニューロンで形成された階層構造によって、画像を識別するために捉えるべき「特徴」をコンピュータが自ら学習する点だ(ディープラーニングについて詳しくは、ブロク記事「TensorFlow Playground でわかるニューラルネットワーク 」を参照のこと)。これにより、用途によっては人の目を超える性能の画像認識を実現でき、例えばネコの品種、クルマの車種、航空機の機種の推定も可能である。ならばキュウリの仕分けはどうだ、と小池さんは考えた。
「AlphaGo のニュースと同時期に TensorFlow が公開され、さっそくキュウリの画像で試してみよう、と。機械学習やディープラーニングに触れるのはまったく初めてでしたが、TensorFlow のチュートリアルを試してみたところ、予想以上の結果がすぐに得られたので正直驚きました。これは使えそうだと手応えを感じました」
オープンソースのライブラリである TensorFlow を用いることで、ディープラーニングの実装に必要な数理モデルや最適化アルゴリズムについて熟知していなくても、公開されているサンプルやチュートリアルを用いて「とりあえず触り始める」ことができる。ディープラーニングを「お試し」するためのハードルがぐんと低くなり、機械学習の専門家でなくても気軽にトライできるようになった。
以下の図は、小池さんによるキュウリ仕分け 2 号機のシステム構成である。Web カメラによる画像撮影は Raspberry Pi 3 で制御し、そこで TensorFlow による小規模なニューラルネットによってキュウリのあり・なしを判断。撮影したキュウリ画像を Linux マシン上の TensorFlow で動作するディープラーニングによる認識エンジンに送る。
キュウリ仕分け機のシステム構成図
キュウリ画像の認識には、TensorFlow のサンプルコード「Deep MNIST for Experts 」をベースに、若干手を加えたディープニューラルネットワークを用いている。畳み込み層とプーリング層を数回通したあと、全結合層を配置という構成で、扱う画像の解像度と分類数をキュウリ仕分け用に変更している。
Google クラウドで「イボ」を見分ける AI へ
ディープラーニングによる画像認識の課題のひとつは、大量の学習用画像が必要になる点である。試作 2 号機の開発に際して小池さんが撮影したキュウリ画像はおよそ 7000 枚。お母さんが仕分けしている横で写真を撮影し、およそ 2、3 か月をかけて学習用画像を用意した。しかしそれでもまだ、学習用画像が足りないと小池さんは言う。
「学習用と合わせて用意したテスト用の画像で検証すると、正解率は 95% に達します。しかし、その後新たに作成したキュウリ画像で試すと、70% 程度に落ちてしまいます。まだまだ学習用画像の数が少ないため、『過学習』(少数の学習用データに偏って学習してしまう現象)が発生しているようです」
ディープラーニングのもうひとつの課題は、計算パワーである。現在の小池さんのシステム構成では、一般的な Windows デスクトップ PC の CPU を用いて学習を行っている。キュウリ画像を 80 x 80 ピクセルという低解像度に変換しているが、それでも 7000 枚を用いた学習が完了するには2〜3日を要しているという。
「この解像度でも、キュウリの曲がり具合や長さ、太さの均一さを認識しての仕分けができています。一方で、表面の艶やイボ、色合い、キズの付き具合といった細かな状態は認識できません。もっともっと解像度を上げ接写すれば、正解率はぐんと引き上げられるものと見ています。しかし、いずれも学習時間が急激に伸びてしまうので試せていません」
大量の計算パワーを消費するというディープラーニングの課題を乗り越えるため、大手企業では、一般的な CPU よりもひと桁性能の高い高価な GPU サーバーを数台〜数 10 台といった規模で導入し、分散学習環境を構築している例もある。当然、それには莫大なコストがかかってしまい、誰でも気軽に試せるというものではない。
そこで Google では、クラウド上の数10〜数100 の CPU や GPU による分散学習を低コストで提供するサービス、「
Cloud Machine Learning (Cloud ML)」の一般公開を近日中に予定している。Cloud ML では、TensorFlow による大規模な分散学習に必要となる GPU サーバーのセットアップや運用、分散環境の構築等のすべてを Google まかせにでき、かつコストも学習に使った分だけ支払えばよい。ディープラーニングのパワーを手軽に試せるサービスとなる見込みだ。
AlphaGo の試合に用いられた Google のディープラーニング専用サーバ
この Cloud ML は、小池さんもいち早く試してみたいと答える。「Cloud ML が使えれば、より高い解像度で、より多くのキュウリ画像での学習を試せます。ニューラルネットワークの段数を増やすなど、さまざまな試行錯誤も可能になる。今から待ち遠しいです」
お母さんの仕分けの技を、AI で継承できるか。「ディープラーニングによるキュウリの仕分け」という小池さんの発想が、TensorFlow と Google クラウドをきっかけに、とても短い時間と低いコストで現実のものとなりつつある。今いちばん面白い「AI」とは、こうした身近な現場の「やってみた」から生まれるのかもしれない。
素晴らしい!こういった発想とチャレンジが世界を変えていくんですよね。
返信削除個人的には庭で採れた曲がったキュウリも大好きですが・・・
家のキュウリが枯れてしまってから知りました。
返信削除ある程度パラメータがはっきりすれば
大規模なFPGAで処理できるかもしれません。
12月3日の大垣ミニメーカーズフェアでデジタルフィルタの人と会えたら話してみます。