ディープラーニングを用いたキュウリ選果機の開発
2017/09/19 AITC成果発表会

自己紹介
小池 誠
○
○
○
○
○
○
○

静岡県できゅうり農家をやってます
作付面積0.4ha 家族経営の小規模農家
以前は自動車関連のエンジニアを７年やってました■ C言語、制御ECUのソフトウェア開発
趣味：ものづくり■ MashupAward、MakerFaireとかに出没
キュウリ選果機作ってます（ Interfaceに作り方執筆）
ブログ： workpiles.com
Twitter: @ike_jpn

今日話すこと
●
●
●

農家の仕事
キュウリ選果機の開発
テクノロジーの民主化農家の仕事キュウリ農家の仕事
面積：0.4ha 家族経営：３人（＋２人）●

農家のお仕事
○
○
○
○
○
○

藩種
育苗
ほ場準備（土作り、畝立て、マルチシート）
定植
管理（摘芯、誘引、灌水など）
収穫・出荷キュウリ農家の仕事キュウリ農家の仕事キュウリ農家の仕事キュウリ農家の仕事キュウリ農家の仕事●一年を通しての作業
○
○
○
○

年間３作
収穫時期は基本休みなし
天候によって作業量の上下が激しい
夏休み：１〜1.5ヶ月間
準定
備植

ハウスA

収穫管理

収穫管理

ハウスB

収穫管理

ハウスA

８月

休
暇

９月

１０
月

１１
月

１２
月

１月

２月

３月

４月

５月

６月

７月

私の１日
夜は開発の時間

大きさなどにより９等級に選別する作業＊農繁期は22時頃までかかる

夏場は40℃を超える環境での作業・・・マジしんどいエンジニアから農家になって● 良かったこと○○○○

夜ぐっすり眠れる
健康的な気がする
自由な時間が増えた
ワーク ライフ バランス → ワーク イズ ライフエンジニアから農家になって● 大変なこと○○○収入は激減（-50%）
収入が安定しない（天候・売値がコントロール不可）
体力的にキツイ単純作業

エンジニアから農家になって● 大変なこと○○○収入は激減（-50%）
収入が安定しない（天候・売値がコントロール不可）
体力的にキツイ単純作業

なんとかしたい！
プログラマの三大美徳の１つ目は『怠惰』

キュウリ選果機の開発

キュウリの仕分け（選果）とは●●長さ、太さ、曲がり具合、色などにより、等級・階級を分ける作業
我が家では９等級に分類

なかなか難しい仕分け作業●●●

対象は自然物。明確な基準があるわけではない
長年の経験（主観）、生産者のこだわり
作業者でばらつくのはなるべく避けたい（評判が下がる）
特に品質の判断が難しい

秀品

B品

秀品

B品

秀品

B品

秀品

B品

仕分け作業は時間がかかる●●●

家族経営の小規模農家では仕分けは手作業（産地じゃないと共同出荷場ない）
農繁期には１日８時間以上（500kg 約4000本）時間をかけたところでキュウリ自体の品質が上がる訳ではない

開発のモチベーション
今の仕分け作業時間を畑でキュウリの世話をする時間に当てたい！

キュウリの品質UP！収量UP！

きっかけ
2016年 AlphaGOがプロ碁棋士イ・セドル九段に勝利（その後、2017年 AlphaGOがカ・ケツ九段にも勝利）●●

第３次AIブームが来てるらしい！
機械学習ライブラリがオープンソースで公開されてる！
○○

無料だし取り敢えず試してみるか ←重要
Googleが公開していた TensorFlowをさわり始める(youtubeより)

試作１号機
●●とにかくキュウリ画像で試してみよう
試作１号機誕生○○Webカメラをスタンドに固定
上からキュウリの画像をとる【ハード】
・Webカメラ Logicool C270（1,500円）
・アルミのパイプ（数百円）
・結合パーツ（３ Dプリンターで印刷。数十円）
・固定用ボルト（数百円）【ソフト】
・カメラ制御：OpenCV（オープンソース）
・機械学習：TensorFlow（オープンソース）

ニューラルネットワーク構成●●

TensorFlowチュートリアルをそのまま流用
３層の畳み込みニューラルネットワーク○

画像認識といえば畳み込みニューラルネットワーク

畳み込み層２

隠れ層

FC

入力層

Pooling

畳み込み層１

Convolution

Pooling

Convolution

32x32x1

各ラベルの確率を出力する
9活性化関数：Relu
最適化関数：Adam

全結合層

出力層

教師データ集め●

機械学習を用いた分類には教師データが必要○

熟練者が仕分けしたキュウリの写真をひたすら撮る
集めた画像 ： 2750枚
解像度：32x32x3
ラベル：9種類
教師画像 ： 2475枚
テスト用画像 ： 275枚

学習結果
●

テスト画像２７５枚に対し、８０％の正答率

可能性が見えた！試作２号機の開発開始●●

試作１号機の結果からディープラーニングで選別ができそうな気がしてきた
もっと人間の仕分けに近づけたい○

UBSカメラを増やしたら精度が上がるかも …

撮影台の作成●●●

キュウリ画像を取得するための台
カメラを上、下、横の３方向に設置し、キュウリの全面を捉える
照明を付けて明るさを一定にする

撮影台の制作
アルミフレーム
約￥１万
Webカメラx3
約￥４千
自作連結パーツ
数十円
アクリル板
約２千円

キュウリ台の制作
高輝度LEDモジュール（12V 150mA）￥５４０教師データ集め●作ったキュウリ台で教師データとなる画像を撮影＆ラベル付け

キュウリ１本につき上、下、横の３枚の画像を取得

教師データ集め集めた画像 ： 8500組
解像度：80x80x3
ラベル：10種類
教師画像 ： 7000組
テスト用画像 ： 1500組
２ヶ月間ほどかかったニューラルネットワーク構成●

４層の畳み込みニューラルネットワーク

FC

Dropout

FC

Pooling

Convolution

Pooling

Convolution

80x80x3

各ラベルの確率を出力する
100.5
畳み込み層１
W:5x5(32)入力層

畳み込み層２
全結合層1
W:1024
W:5x5(64)1次元に変換

隠れ層

全結合層2
W:512

活性化関数：Relu
最適化関数：Adam

出力層

学習結果
●

テスト画像に対し、９１．６％の正答率

ベルトコンベア作り●

AIが判断したキュウリを指定の箱まで運ぶベルトコンベアがほしい【ドライブプーリー】
塩ビパイプ
￥数百円
ベアリングｘ４￥４００円

ベルトコンベア作り

スチールフレームｘ２約￥１０００
ボルトｘ？
全部で￥１０００ほど

ベルトコンベア作り
ベルト
￥３０００

ベルトコンベア作り
ステッピングモーター
約￥２０００モータードライバー基盤￥１８００
GT2ベルト￥２００
ドライブプーリー￥３０００
制御はAruduinoMicroベルトコンベア作り

完成
ラズパイ
タッチパネル￥２００００システム構成

試作２号機実機テストでわかったこと●●

認識精度が周りの環境（主に明るさ）により低下 → 実質７０％ほど
キュウリ以外の画像要素（背景、照明の反射）の影響○●

長さ、形、色はしっかり認識しているが、傷や艶などは認識できてない○●

カメラ位置をもっとキュウリに近づける必要あり

ベルトコンベア方式ではキュウリに傷がつく○●

教師データを増やせば解決できそう（又はキュウリ画像のみを切り出す）

傷を付けずに運ぶ方法の検討が必要

収穫時期により形や太さに偏りがある○

作業者はその時の傾向をみて仕分けルールを調整している（相対的に判断が必要）ユーザーテストでわかったこと●仕分け熟練者に見てもらった結果
○
○
○
○
○
○

遅い
ベルトコンベアは傷がつくからダメ ←致命的
判別精度はまぁまぁ
仕分け作業は箱に綺麗に並べて蓋をするまで動かすのに２人（のせる人、箱に詰める人）必要なら使えない
総括→おもちゃ認識部分はいい感触
しかし、まだまだ実用には程遠い！

３号機の開発着手●

開発コンセプトの変更○○『AIによる自動化』 →『AIのサポートによる効率化』
難しい等級判断は AIにまかせて、傷を付けず綺麗に箱詰めするのは人間が行うテーブル型キュウリ選別システム

システム構成●

システム搭載機能
○
○
○

判定モード
■ 等級を判定する
学習モード■ 教師データ集め
情報表示モード■ 収量などを表示※選別アプリケーションとして実装●

主な使用ソフトウェア○○○

TensorFlow v1.1.0
OpenCV 2.4
Kivy 1.8.0

画像処理でテーブル上のキュウリを検出●

OpenCVで実装○

マーカー座標検出 →射影変換→輪郭抽出→キュウリ画像切り出し

ニューラルネットワーク構成●

5層の畳み込みニューラルネットワーク【前回から変えたところ】
画像に加え、キュウリの長さ、表面積、太さの数値を入力→等級判定のキャリブレーションのため
SPP（Spatial Pyramid Pooling）[1]→認識精度向上＆画像変形に対するロバスト性向上
活性化関数にかける前に Batch
Normalization[2]で正規化

活性化関数：Relu
最適化関数：Adam[1] Kaiming He, et al.”Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition”[2]Sergey loffe, et al.”Batch Normalization: Acceleratiing Deep Network Training by Reducing internal Covarizate Shift”

判定のキャリブレーション●

収穫時期により収穫できるキュウリの太さの傾向が異なる○○

太さ

取れ始めのころは全体的に太め、徐々に細長くなる
熟練者作業者は、全体の傾向を見極め 等級判断基準を調整 している
■ 買い手にとっては基準が一定であることよりも、とにかく仕分けされた荷が欲しい

B大2L

B中L
M

長さ

B大2L

B中
L
太さ

M

長さ

基準が上にずれる

判定のキャリブレーション●

ニューラルネットワークへの入力を調整○

上手く行けば品種の違いや農家ごとの判定基準の違いなどにも対応できる？

学習時
教師データ

運用時
誤差逆伝搬法

画像

長さ
太さ
表面積

USB
カメラ
ニューラル・
ネットワーク

画像

長さ

ニューラル・
ネットワーク

等級

太さ
表面積

キャリブレーション値

意図した等級になるよう調整

判定のキャリブレーション●

選別作業を開始するまえに、コントロー
ルパネル上のつまみで調整する○○

長さ： ー20％〜＋２０％
太さ： ー20％〜＋２０％教師データ集め集めた画像 ： 36,000枚
解像度：72x24x3
ラベル：9種類
教師画像 ： 28,000組
テスト用画像 ： 8,000枚
1ヶ月間ほどかかった学習結果●

テストデータに対し７９．４％の認識率
おそらく、カメラの数を減らした影響か91.6%→79.4%に下がった実際に使っている様子

実環境での評価（仮）●

まだ本格的な収穫時期ではないので十分な評価はまだできていないが・・・
2S:46本、S：45本、B中：40本に対し、NNの推定した等級ごとの本数
AIの判断
2S
人間の判
断S

B中M

B大正答率

B小2S

387100082.6%

S630620166.7%

B中262812170.0%

キャリブレーションの様子
テスト画像を使って、 M等級110本に対し、長さのキャリブレーション -10〜+10%を行った際のNN判定等級数の変化

期待通りの動きになっていることが確認できた

ここまでの開発のまとめ●テーブル型選果システム（試作３号機）を作ってみた○○

畳み込みニューラルネットワークを使ってキュウリの等級判断が出来ることが確認できた
キャリブレーションの仕組みも一応期待通り？

熟練者の声：
・以前の試作２号機と比べたらまだ使えそう・複数をまとめて判断できるのはすごい●とは言え、本格的な評価はこれから○●実際の作業者が使いやすいシステムにしたい

キュウリ画像公開してます○○

画像：https://github.com/workpiles/CUCUMBER-9
試作３号機アプリ： https://github.com/workpiles/cicropsおまけ●

テーブル型UI他の野菜でも使いやすいかもテクノロジーの民主化The Democratization of AI

キュウリの選果機もオープンソースソフトウェアであるTensorFlowを使用して開発しているテクノロジーの民主化（と言うか民衆化？）●

AIに限らず、様々なテクノロジーが無料・低コストで誰でも使える時代
○

○
○
○
○
○
○

オープンソース・ソフトウェア■ OS、データベース、 Webサーバ、Appサーバ、開発環境、ネットワーク、 CAD、etc…
オープンソース・ハードウェア■ CPU、制御基板、３ Dプリンター、ドローン、 etc…
オープンデータ■ 科学・環境データ、行政・自治体データ、 etc…
クラウドが生み出した各種サービスとコストダウン■ コンピュータリソース、データベース、様々な WebAPI、etc…
インターネット電子商取引の発達■ 個人と部品メーカーがより近く、世界中から調達可能に知識、教育■ コミュニティ、ブログ、 MOOCs、図書館（今後は・・・人的リソースも？ソーシャルソーシング？）テクノロジーの民主化●

キュウリ選果機の場合

制御基板
・３Dプリンター

開発環境
2D/3D CAD

部品

Arduino・FabLabcross platformアプリ

部品調達

WebアプリRaspberryPi
画像処理ライブラリ
基盤製造サービス・seeed,elecrow...

IDE

機械学習ライブラリOS

計算機リソース調達
Google Cloud Platform・ebay,AliExpress
・ミスミNova、モノタロウ ...
・秋月電子通商、スイッチサイエン
ス…

農家とメイカームーブメント●

農家が昔からやってきたこと○○●

便利な道具を作り出す
道具のパーソナライズ

今ならできること○○

道具をインターネット・データと繋げる
デジタルファブリケーション■ 複製→共有→改良（パーソナライズ）
ハウス内の気温・湿度・土壌水分をセンシングしてGoogleスプレッドシートにアップロードするデジタルファブリケーション
はぁ？
ハンドスピナー？
こんなん何が楽しいん？

動かす

共有

CADで設計、印刷

なにこれ！
たーのしー！
よしっ！アップしたろたった３時間で経験したこと

みんなアップしてる！
なるほど！
ナットを使うのは賢いな！

個人でラピッドプロトタイピング
CADで設計印刷

動かす

この程度なら２日あれば設計から動かすところまで行けるオープンイノベーション●

自社技術公開・提供（例WebAPI）○

技術は使われてこそ・社会実装されてこそ価値が生まれる＜合わせ調味料調合機＞Blender

アナウンサーと話せるNews番組アプリ

喋った料理に使う調味料を合成してくれる。 ニュースで分からないことがあったら＜音声入力・音声合成・クラウド＞
その場で質問できるニュースアプリ＜音声入力・音声合成・ニュースデータ＞

高齢者運転支援システム（仮）運転中の注意点を勝手にワイワイ
しゃべるアプリ＜ボット・音声合成・走行データ＞

オープンにすること●

キュウリデータの公開後に起こったこと＞改善して教えてくれる人＞パラメータチューニングしてくれる人（２０枚のレポート）＞FPGAで動かした人→２値化NNでも選別できるAIに期待する未来●

技術・ノウハウのデジタル化ｈ技術・ノウハウのデジタル化、永続化、再利用可能●

共有・自動化・協働（ビジネス）●

時間資源共有、自働化、協働による時間資源の発掘

膨大な時間資源による創造性の拡大（アカデミック）

重ねあわせ・確率的存在（ソーシャル）おしまい

以上、ご清聴ありがとうございました