Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

ディープラーニングを用いたキュウリ選果機の開発

1.691 Aufrufe

Veröffentlicht am

2017/7/31 アグリニクス研究会 発表資料

Veröffentlicht in: Technologie
  • Login to see the comments

ディープラーニングを用いたキュウリ選果機の開発

  1. 1. ディープラーニングを用いた キュウリ選果機の開発 アグリニクス研究会  2017/7/31
  2. 2. 自己紹介 KOIKE Makoto  (@ ike_jpn ) きゅうり農家を営んでいます 作付面積 0.4ha  施設園芸栽培 大学卒業後、自動車部品メーカーで7年間ほどソフトウェアエンジニアを経 験したのち、3年前に就農
  3. 3. キュウリの選果機作ってます キュウリを育てる傍ら、前職の経験を活かし選果機を作ってます Interface 3月号では、 選果機の作り方を執筆しました
  4. 4. 今日のお話 1.第3次 AI ブーム!ディープラーニングとは 2.キュウリ選果機開発の取り組み 3.農家 × メイカームーブメント × オープンイノベーション
  5. 5. 第3次 AI ブーム! ディープラーニングとは
  6. 6. なんかスゴイぞ最近の AI ! 2011 年  IBM ワトソンがクイズ番組で勝利 2014 年  Google が自動運転の製品プロトタイプを発表 2016 年  AlphaGO がプロ碁棋士イ・セドル九段に勝利 2017 年  AlphaGO がカ・ケツ九段にも勝利 2017 年  Ponanza が佐藤天彦名人に勝利 最近では様々な業界で AI が実用されている! (今年の AI ・人工知能 EXPO の出展社数110社) (youtube より )
  7. 7. AI ブームの歴史 第1次 AI ブーム 第2次 AI ブーム 第3次 AI ブーム ( 1956 〜 70 年代前半) ( 1980 年代) ( 2013 年〜) ・人工知能という言葉誕生  ( 1956 年ダートマス会 議) ・記号処理中心 ・数式の定理を証明 ・迷路、パズルを解く ・パーセプトロン 探索・推論の時代 冬の時代 ルールとゴールが決まってい る中での話、現実問題には使 …えないよね …マシンパワーが 知識表現の時代 ・エキスパートシステム ・医療診断 ・会話(人口無能) ・ニューラルネットワーク  (誤差逆伝搬法) 冬の時代 どこまで書いたらいいの フレーム問題、シンボルグ ラウンディング問題 …マシンパワーが 機械学習・表現学習の時代 ・ Web とビッグデータの発展 ・知識表現、特徴量の自動学習   今ココ 人工知能の未来( http://www.soumu.go.jp/main_content/000400435.pdf) より → 機械学習、  ディープラーニング
  8. 8. 機械学習とは 「機械にデータを解析させ、データに潜む規則性やパターンを発見する手法」 そして、発見した規則性やパターンを基に、分類や予測を行う。 ・ Web の発展 ・ EC サイト ・ SNS ・ IoT  など ハードウェアの発展 大量のデータ 豊富なマシンパワー パターンが見えてき たぞ! (例: youtube から 1000 万枚の画像) (例: 16000 基の CPU ) (例: Google の猫)
  9. 9. 機械学習でできること 分類 「過去のデータを元に新たなデータをクラスに分類する」 SVM, ナイーブベイズ ,k 近傍法 , ランダムフォレスト , ニューラルネットワークなど 回帰 「過去のデータから未来の値を予測する」 線形回帰 / 重回帰 ,SVR, ニューラルネットワークなど クラスタリング 「入力データを複数のグループに分ける」 k-means クラスタリング , 階層型クラスタリング , 自己組織化マップなど 次元圧縮(特徴の抽出) 「入力データの特徴量を残してデータ量を削減」 主成分分析 ,t-SEN,LLE, オートエンコーダなど 教師あり学習 (入力データ+正解データ) 教師なし学習 (入力データのみ) ※ 一般的な分類で、それ以外(半教師学習、強化学習など)もあります ディープラーニングは、多層化したニュー ラルネットワークです Deep Neural Network(DNN) とも言う
  10. 10. 人工知能( AI ) ディープラーニングとは 機械学習 ・大量のデータから規則性やパターンを発見する手法 ニューラルネットワーク ・脳神経系をモデルにしたアルゴリズム ディープラーニング ・多層化により、より良い特徴を自動的に発見 → 人間が特徴量を決める必要がない
  11. 11. ニューラルネットワークの基礎(1) 単純パーセプトロン X1 ∑ X2 W1 W2 y 入力 出力 0 ( W1x1 + W2x2 θ≦ ) 1 ( W1x1 + W2x2 > θ ) y = 閾値: θ 神経細胞(ニューロン)のモデル化 X1 X2 例えば、 W1=1,W2=1,θ=1.5 ● ▲とすると、 と を分類できる 線形分離可能な問題を解くことができる
  12. 12. ニューラルネットワークの基礎(2) 単純パーセプトロン X1 ∑ X2 W1 W2 y 入力 出力 0 ( W1x1 + W2x2 + b ≦ 0 ) 1 ( W1x1 + W2x2 + b > 0 ) y = 1 b y = H ( W x +b ) 活性化関数 (ステップ関数) 重み バイアス H () 入力 上手くデータを分類できる重みとバイアスを探して あげれば良い
  13. 13. ニューラルネットワークの基礎(3) 単純パーセプトロンの限界 X1 X2 X1 X2 W1=1,W2=1,b=-1.5 W1=1,W2=1,b=-0.5 X1 X2 X1 X2 W1=-1,W2=-1,b=1.5 線形分離不可能な問題は解けない AND OR NAND XOR
  14. 14. ニューラルネットワークの基礎(4) パーセプトロンの多層化へ XOR  =  AND ( NAND(X1, X2), OR(X1, X2)) X1 ∑ X2 W01 W02 y 1 b00 H () ∑ b10 W11 W12 H () ∑ 1 W01 W02 b00 H () 中間層を持つことで線形分離不可能な問題も解けるようになった [1986 年 ] X1 X2 XOR
  15. 15. ニューラルネットワークの基礎(5) Google : A Neural Network Playground(http://playground.tensorflow.org) ニューラルネットワークの動作が見てわかる
  16. 16. ニューラルネットワークの基礎(6) その後、様々なブレークスルーを経て現在のニューラルネットワークへ 誤差逆伝搬法の改良、教師データとの差を減らすよう重みとバイアスを自動で更新 活性化関数の開発:ステップ関数→ sigmoid 関数→ ReLU 関数 [2010 年 ] など 過学習対策: Weight decay 、 Dropout[2012 年 ] など 確率的勾配降下法の開発: AdaGrad 、 RMSProp 、 Adam など 入力層 中間層 (隠れ層) 出力層 ↓詳しくは オススメ ネコ: 0.3 イヌ: 0.4 ネコ: 1.0 イヌ: 0.0 正解ラベル 損失 損失が最小になるように W,b を調 整 誤差から損失を計算
  17. 17. ディープニューラルネットワークの衝撃 世界的な画像認識コンペ( ILSVRC2012 )で圧勝 中間層が7層のニューラルネットワーク 人間の画像認識能力を超えた 人工知能の未来( http://www.soumu.go.jp/main_content/000400435.pdf) より
  18. 18. 画像認識はディープラーニング 画像認識ではもはやディープラーニングが当たり前になった より深く “ Deeper is better” VGG  ー 16,19層 GoogLeNet  ー 38層 Inception-v3  ー 72層 ResNet  ー 50,101,152層 DenseNet  ー 121,169,201層 様々なネットワークアーキテクチャ 基本は畳み込みニューラルネットワーク
  19. 19. より複雑な認識もディープラーニングで!(1) 一般物体認識 Faster R-CNN ( https://arxiv.org/abs/1506.01497 ) ちなみに、実験的にキュウリでもやってみました。 (位置推定のみ)
  20. 20. より複雑な認識もディープラーニングで!(2) 画像セグメンテーション SegNet ( https://arxiv.org/abs/1511.00561 ) Deep Phenotyping: Deep Learning for Temporal Phenotype/Genotype Classification 葉1枚毎にセグメンテーションする研究もあります
  21. 21. より複雑な認識もディープラーニングで!(3) 姿勢推定 Openpose(https://github.com/CMU-Perceptual-Computing-Lab/openpose) 深度推定 https://arxiv.org/abs/1411.4734
  22. 22. 農業にもディープラーニング 農業でのディープラーニング活用 https://arxiv.org/abs/1612.03019 雑草と作物のセグメンテーション 果樹園見回り https://arxiv.org/abs/1610.03677
  23. 23. ここまでのまとめ ディープラーニングとは機械学習アルゴリズムの1つ ニューラルネットワークの中間層を多層化してディープにしたもの データの持つ特徴を自動的に学習してくれる 人間が特徴量を設計する必要がない ネットワークのチューニングが必要 学習には大量のデータが必要 ただ集めれば良い結果が出る訳ではない 良質のデータと適切な前処理が必要 ディープにするほど計算量も増大 現状 GPU が必須とも言える(後メモリも) 今後は FPGA やベクトル量子化などの高速化技術にも期待
  24. 24. キュウリ選果機開発の取り組み
  25. 25. キュウリの仕分け(選果)とは 長さ、太さ、曲がり具合、色などにより、等級・階級を分ける作業 農家(出荷組合)ごとに分け方が異なる
  26. 26. なかなか難しい仕分け作業 対象は自然物。明確な基準があるわけではない 長年の経験(主観)、生産者のこだわり 作業者でばらつくのはなるべく避けたい(評判が下がる) 秀品    B 品 秀品    B 品 秀品    B 品 秀品    B 品 特に品質の判断が難しい
  27. 27. 仕分け作業は時間がかかる 家族経営の小規模農家では仕分けは手作業(産地じゃないと共同出荷場ない) 繁忙期には1日8時間以上( 500kg 約 4000 本) 時間をかけたところでキュウリ自体の品質が上がる訳ではない
  28. 28. 開発のモチベーション 今の仕分け作業時間を畑でキュウリの世話をする時間に当てたい! キュウリの品質 UP !収量 UP !
  29. 29. 開発のきっかけ 2016 年初め・・・なにやら AI のブームが来てるらしい Google が機械学習ライブラリ TensorFlow をオープンソース化したらしい チュートリアルとしてあった " 手書き数字の認識”をやった 使ってみる
  30. 30. ディープラーニングすごい! 99%の認識率 わからない単語ばかりだけど、予想以上に簡単に結果は出せた。 機械学習って簡単かも!(と、当時は思ってました。でもこれ重要) MNIST :手書き文字が0〜9のどの数字かを当てるタスク
  31. 31. キュウリ画像で試してみた(試作1号機) キュウリ画像で試してみたらどうなるだろう 試作1号機誕生 Web カメラをスタンドに固定 上からキュウリの画像をとる 【ハード】 ・ Web カメラ Logicool C270 ( 1,500 円) ・アルミのパイプ(数百円) ・結合パーツ(3 D プリンターで印刷。数十円) ・固定用ボルト(数百円) 【ソフト】 ・カメラ制御: OpenCV (オープンソース) ・機械学習: TensorFlow (オープンソース)
  32. 32. 教師データ集め ひたすら画像を集めてラベルを付ける作業 集めた画像 : 2750 枚 解像度: 32x32x3 ラベル: 9 種類 教師画像 : 2475 枚 テスト用画像 : 275 枚
  33. 33. ニューラルネットワーク構築 TensorFlow チュートリアルをそのまま流用 中間層3層の畳み込みニューラルネットワーク 32x32x1 Convolution Pooling Convolution Pooling 9 入力層 中間層 出力層 各ラベルの確率 を出力する 畳み込み層1 畳み込み層2 全結合層 FC
  34. 34. 畳み込みニューラルネットワーク(1) ニューラルネットワークは入力が1次元で、画像の構造を表現できない 画像は3次元( HxWxCh ) H W Ch ・・・ 1次元に変換 画像の空間的情報がなくなってしまう 画像の空間的情報を保持したままニューラルネットワークを構築したい
  35. 35. 畳み込みニューラルネットワーク(2) 畳み込み層 入力画像に対しフィルタをあてはめ、フィルタ領域を1つの値に圧縮する(畳み込む)処理 フィルタの適用場所をずらしながら処理を繰り返す 1 3 1 3 1 2 1 1 1 1 3 1 2 1 1 2 例:入力画像 x(4x4x1) 1 0 0 0 1 0 0 0 1 フィルタ W(3x3x1) 0 7 4 8 出力画像 y(2x2x1) y = H(Wx + b) -7 2 1 1 バイアス b(2x2x1) H() *活性化関数: ReLU
  36. 36. 畳み込みニューラルネットワーク(3) プーリング層 画像の縦、横の空間を小さくする処理( max プーリング、 avg プーリングなど) 画像の微小な位置ずれを吸収するために適用する 1 3 1 3 1 2 1 1 1 2 1 3 1 1 1 2 例:入力画像 x(4x4x1) 3 3 2 3 出力画像 x(2x2x1) 2x2 max プーリン グ 3 1 3 2 1 1 2 1 3 1 1 2 1 1 1 1 3 3 2 3 2x2 max プーリン グ 同じ出力 微小なズレが吸収されている 位置がズレた場合
  37. 37. ニューラルネットワーク構築 TensorFlow チュートリアルをそのまま流用 中間層3層の畳み込みニューラルネットワーク 32x32x1 Convolution Pooling Convolution Pooling 9 入力層 中間層 出力層 各ラベルの確率 を出力する 畳み込み層1 W:5x5(32) 畳み込み層2 W:5x5(64) 全結合層 1 次元に変換 W: 512 FC
  38. 38. 学習結果 テスト画像275枚に対し、 80%の認識率 この時点で、私より私の母の仕分け基準を 習得していた
  39. 39. 試作2号機の開発開始 試作1号機の結果からディープラーニングで仕分けができそうな気がしてきた もっと人間の仕分けに近づけたい キュウリの全表面を確認する 表面の傷や艶も確認する 病気の有無も確認する 等級・階級別の箱に分類して入れる
  40. 40. キュウリ台の作成 キュウリ画像を取得するための台 カメラを上、下、横の3方向に設置し、キュウリの全面を捉える 照明を付けて明るさを一定にする
  41. 41. キュウリ台の制作 アルミフレーム 約¥1万 Web カメラ x3 約¥4千円 自作連結パーツ 数十円 アクリル板 約2千円
  42. 42. キュウリ台の制作 高輝度 LED モジュール ( 12V 150mA ) ¥540
  43. 43. キュウリ台の制作 等級を判断したキュウリを台から送り出す機構も追加 台の裏にベルトコンベア(又は、自動台車)的なものをつくろうと考えていた マイクロサーボ ¥500 リニアブッシュ ¥617 シャフト 200mm ¥810 ベアリングx3 ¥216 ArduinoMicro ¥2800 ※ 後に、サーボはトルク不足の ため¥850のやつに変更
  44. 44. 教師データ集め 作ったキュウリ台で教師データとなる画像を撮影&ラベル付け キュウリ1本につき上、下、横の3枚の画像を取得
  45. 45. 教師データ集め 集めた画像 : 8500 組 解像度: 80x80x3 ラベル: 10 種類 教師画像 : 7000 組 テスト用画像 : 1500 組 2ヶ月間ほどかかった
  46. 46. 教師データ集め 失敗 後ろの扇風機が写り込んでし まった。扇風機の位置が AI 判断に影響。 大量に画像(数百万レベル) を準備出来る場合は問題無 いかもしれないが、少量の場 合は十分注意が必要。
  47. 47. ニューラルネットワーク構築 4層の畳み込みニューラルネットワーク 80x80x3 Convolution Pooling Convolution Pooling 10 入力層 中間層 出力層 各ラベルの確率 を出力する 畳み込み層1 W:5x5(32) 畳み込み層2 W:5x5(64) 全結合層 1 1 次元に変換 W:1024 W:512 Dropout 全結合層 2 FC FC 教師データに適合し過ぎることで精度 が低下する「過学習」を防ぐ目的で Dropout を追加。 Dropout とは、ランダムに選んだニュ ーロンの伝搬を止めてしまう手法で す。 0.5
  48. 48. 画像の前処理 3枚の画像をリサイズし1枚にマージ 入力画像サイズを縮小して学習にかかる時間を短縮(5日→半日ほど)
  49. 49. 学習 学習の進み具合は損失の減り具合で判断します
  50. 50. 学習結果 91.6%の認識率
  51. 51. 学習結果 動画( https://youtu.be/PY-PN5xfw_0 )
  52. 52. ベルトコンベア作り AI が判断したキュウリを指定の箱まで運ぶベルトコンベアがほしい 【ドライブプーリー】 塩ビパイプ ¥数百円 ベアリングx4 ¥400円
  53. 53. ベルトコンベア作り スチールフレームx2 約¥1000 ボルトx? 全部で¥1000ほど
  54. 54. ベルトコンベア作り ベルト ¥3000
  55. 55. ベルトコンベア作り ステッピングモーター 約¥2000 モータードライバー基盤 ¥1800 GT2 ベルト ¥200 ドライブプーリー ¥3000 制御は AruduinoMicro
  56. 56. ベルトコンベア作り 動画( https://youtu.be/PQJ7nqNs0x8 )
  57. 57. ベルトコンベア作り
  58. 58. 完成 ラズパイ タッチパネル ¥20000
  59. 59. システム構成
  60. 60. 動かしてみた 動画( https://youtu.be/Nho2yyCdb3A )
  61. 61. 実機テストでわかったこと 認識精度が周りの環境(主に明るさ)により低下 → 実質70%ほど 暗室にすれば解決できそう 明るさのばらつきを考慮した教師データを作るべきだった キュウリを置く位置のズレで精度が変わる 教師データを増やせば解決できそう(又は位置合わせ処理を入れるなど) 長さ、形、色はしっかり認識しているが、傷や艶などは認識できてない カメラ位置をもっとキュウリに近づける必要あり ベルトコンベア方式ではキュウリに傷がつく 傷を付けずに運ぶ方法の検討が必要(キュウリは水に浮くから・・・) 収穫時期により形や太さに偏りがある 作業者はその時の傾向をみて仕分けルールを調整している(相対的に判断)
  62. 62. ユーザーテストでわかったこと 仕分け熟練者に見てもらった結果 遅い ベルトコンベアは傷がつくからダメ 判別精度はまぁまぁ 動かすのに2人(のせる人、受ける人)いるから使えない 仕分け作業は箱に綺麗に並べて蓋をするまで おもちゃ まだまだ実用には程遠い! しかし、認識部分はいい感触
  63. 63. 試作3号機の開発開始 箱に綺麗に詰めるのは難しそう(ロボットアーム高価) コンセプトの変更 AI を使った自動化 →  AI のサポートを受けた効率化 AI による判断をキャリブレーションできるようにする 収穫時期の違いに対応 品種の違いや農家ごとの仕分けルールの違いに対応できるかも
  64. 64. 試作3号機(開発中) キャリブレーション例 動画 ( https://youtu.be/m0_DNlSUpuc )
  65. 65. 農家 × メイカームーブメント × オープンイノベーション
  66. 66. メイカームーブメントとは メイカームーブメントとは、世界中のガレージがオンライン 化し、「仕事」と「デジタルツールの利用」を同時にすると 起こるムーブメントで、デジタルファイルや CAD や 3D プリンターなどを使う、デジタル製造の潮流を指すトレ ンドのことであり、「第三の産業革命」とも言われる。 http://makezine.jp/aboutmake デジタルファブリケーションの普及(ツール&ファボラボ) ものづくり( DIY )愛好家達の創りだせるモノの幅が広がった
  67. 67. 農家とメイカー 農家が昔からやってきたこと 道具の効率的な使い方を見つける 欲しい道具を作り出す 道具のパーソナライズ 農家は昔からメイカー精神を持っている *私の父は自分でハウスを組み立てたりしている オススメ ↓農家の工夫が詰まった本です
  68. 68. 今なら・・・ インターネットが出来ることを広げた 情報取得のコストを下げた 作りたいものはデジタルで設計できる 3D プリンターで印刷できる 農舎は新しいモノが生まれる場所 農業の現場であり、課題は目の前にたくさんある ツールが揃っており直ぐに制作を始められる 熟練作業者から即フィードバック ほ場モニタリング装置作った
  69. 69. ラピッドプロトタイピング CAD で設計 印刷 動かす 2日あれば設計から動かすところまで行ける 動画 ( https://twitter.com/ike_jpn/status/822487711592218625 )
  70. 70. The Democratization of AI キュウリの選果機もオープンソースソフトウェアである TensorFlow を使用して開発している
  71. 71. 機械学習フレームワーク 多くの機械学習フレームワークがオープンソースソフトウェアとして公開されている 名称 開発元 開発言語 ライセンス 特徴 TensorFlow Google Python,C++, Go,Java Apache License 2.0 コミュニティが大きい、モバイル端末もサポート、可視化ツ ール、分散環境対応、 GPU 対応、クラウド環境あり Chainer Preferred Networks Python MIT License 国内ユーザー多い、動的な計算グラフ構築、分散環境・強 化学習用ライブラリもある、 GPU 対応 Caffe Berkeley University C++,Python BSD-2 アカデミックなコミュニティ、論文実装例や学習済みモデル が多い CNTK Microsoft C++,Python MIT License Windows での開発環境構築が楽、複数 GPU を効率的に 活用、クラウド環境あり NNabla Sony python Apache License 2.0 まだユーザー少なく情報少なめ
  72. 72. テクノロジーの民主化(民衆化) AI に限らず、様々なテクノロジーが無料・低コストで誰でも使える時代 オープンソース・ソフトウェア OS 、データベース、 Web サーバ、 App サーバ、開発環境、ネットワー ク、 CAD 、 etc… オープンソース・ハードウェア CPU 、制御基板、3 D プリンター、ドローン、 etc… オープンデータ 科学・環境データ、行政・自治体データ、 etc… クラウドが生み出した各種サービスとコストダウン コンピュータリソース、データベース、様々な WebAPI 、 etc… インターネット電子商取引の発達 個人と部品メーカーがより近く、世界中から調達可能に 知識、教育 コミュニティ、ブログ、 MOOCs 、図書館
  73. 73. Google Cloud Platform テクノロジーの民主化(民衆化) キュウリ選果機の場合 OS 機械学習ライブラリ 画像処理ライブラリ IDE 開発環境 制御基板 Arduino RaspberryPi ・ ebay ・ミスミ Nova 、モノタロウ ... ・秋月電子通商、スイッチサ …イエンス 部品調達 2D/3D CAD 計算機リソース
  74. 74. テクノロジーの民主化(民衆化) API 使用事例 使用 API: ドコモ音声認識、ドコモ音声合成 Nifty クラウドに Web アプリをホスティング 使用 API: エーアイ音声合成、ドコモ雑談対話 オープンイノベーションの広がり。 技術は持っているだけではダメで、使ってもらってこそという考えが広がっている。 個人レベルでも API を活用しておもしろいアプリが作れる。 動画( https://youtu.be/mLBfLSNEee8 )動画( https://youtu.be/0LVkinWsKGA )
  75. 75. テクノロジーの民主化(民衆化) オープンにすること キュウリデータの公開後に起こったこと >改善して教えてくれる人 >パラメータチューニングしてくれる人 &データ分析して教えてくれる人 (20枚のレポート)
  76. 76. テクノロジーの民主化(民衆化) AI によって加速するテクノロジーの民衆化。そして、期待する未来 研究者 企業 市民 消費者 ・役割分担(出来ることできないこと)が明確 ・研究者と市民の繋がりが希薄(農業は顕著) ・(中小)企業が持つ技術と市民が繋がらない(知らない) 現在 技術・ノウハウの デジタル化、 永続化、再利用可能 時間 資源 共有、自働化による 時間資源の発掘 重ねあわせ・ 確率的存在 ・役割分担は希薄、重ねあわせの状態 ・研究とビジネスの境が希薄になる (実装は AI ・ロボットが担当してくれる) ・誰もが人の身近な問題を研究する研究者 (研究に必要なテクノロジーと時間が低コストで調達できる) ・好きなことが同じ人が集まる=企業(=コニュニティ) ・全員複数のコミュニティで仕事(遊び?)してる 数年後
  77. 77. おわり 以上、ありがとうございます。

×