Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

2016年2月4日 空間OSのためのビッグデータ技術基盤

231 views

Published on

発表日:2016年2月4日
イベント名:ITフォーラム2016 協働プロジェクト『空気を読む家』
イベントURL:http://www.ipsj.or.jp/event/sj/sj2016/IT-F_AITC.html
タイトル:空間OSのためのビッグデータ技術基盤
概要:IoTやDeep Learningといった先端ITのトピックを、どのように空間OSに取り込もうとしているのかについてプロトタイプによるデモをまじえて紹介します。
発表者:荒本 道隆

Published in: Internet
  • Be the first to comment

  • Be the first to like this

2016年2月4日 空間OSのためのビッグデータ技術基盤

  1. 1. Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. ~空気を読む家~ 空間OSのためのビックデータ基盤技術 2016年02月04日 先端IT活用推進コンソーシアム クラウド・テクノロジー活用部会 リーダー 荒本道隆
  2. 2. Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. クラウド部会のご紹介 • 部会内勉強会やハンズオンの開催を通して、IoTと機械学 習を軸に、クラウドの各要素技術の活用方法を学ぶ場。  測定(センシングなど): Arduino を使ったセンシング  収集(ネットワーク) : 無線LAN, Bluetooth, 電子署名  蓄積(KVS, クラウドサービスの利用): RDF, SPARQL, IaaS の利用  分析(統計処理、オープンデータの利用、アルゴリズム): R, 遺 伝的アルゴリズム, ディープラーニング  出力(ビジュアライゼーション、プッシュ通知): R, D3.js • これら広範囲の各要素技術に対し、部会参加者が「知っ ている」ではなく「使ったことがある」「人に教えることがで きる」と言えるレベルを目指す。また、それらを使ったプロ トシステムを開発し、運用を行ってみる。 2
  3. 3. Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. デモシステムを作る前に • DeepLearningの課題 • 大量データの蓄積が必要 • 教師データの収集が必要 • 今回は『寝室』をテーマにやってみた • 必要な画像データを収集 • DeepLearningへ画像データを投入 • 生成されたモデルの利用 3
  4. 4. Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 寝室 ベット デモシステムの概要 • 前提条件 • 1戸に2人が住んでいると想定 • 誰がどちら側で寝ているか? • 2台のカメラを使い、人判定を行う • 眠りの深さを測定 • 寝返りの量 • 起きているかを判定 • 目が2つとも開いているか? 4 ベット
  5. 5. Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 使用する技術 • 画像処理全般:OpenCV • 付属のモデルデータを使って、顔の位置の特定 • 顔の位置の変化から、寝返りの量を算出 • 付属のモデルデータを使って、目を検出 • 人判定:Caffe • 誰が寝ているかを判定 5 寝室 ベット ベット
  6. 6. Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. OpenCVとは • 概要 • できること – たくさんあるのでWikipedia参照 – http://ja.wikipedia.org/wiki/OpenCV • できないこと – 画像以外(音、赤外線など)が必要な処理 – 参照:Microsoft Kinect, Intel Realsense 6 画像処理・画像解析および機械学習等の機能を持つC/C++、 Java、Python、MATLAB用ライブラリ [1] [2]。プラットフォームとして Mac OS XやFreeBSD等全てのPOSIXに準拠したUnix系OS、 Linux、Windows、Android、iOS等をサポートしている。 Wikipediaより
  7. 7. Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. OpenCVに付属のサンプルコード紹介 7
  8. 8. Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. Caffeとは 8 http://www.slideshare.net/yasuyukisugai/deep-learningcaffe/8
  9. 9. Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 事前準備-1 • 学習させたい人の顔画像を大量に集める • OpenCVのサンプル「facedetect.py」を改造 • PCで起動しておくと、勝手に毎秒保存 9 : while True: ret, img = cam.read() gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) gray = cv2.equalizeHist(gray) t = clock() rects = detect(gray, cascade) vis = img.copy() draw_rects(vis, rects, (0, 255, 0)) for x1, y1, x2, y2 in rects: now = datetime.datetime.now().strftime("%Y%m%d_%H%M%S") cv2.imwrite("face/" + now +".jpg", vis[y1:y2, x1:x2]); roi = gray[y1:y2, x1:x2] vis_roi = vis[y1:y2, x1:x2] subrects = detect(roi.copy(), nested) draw_rects(vis_roi, subrects, (255, 0, 0)) dt = clock() – t : この部分だけを ファイルに出力 他の人がカメラの前を 通らないよう注意
  10. 10. Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 事前準備-2 • 家族以外の顔画像を大量に集める • Labeled Faces in the Wild から収集 • 研究用に作成された、著名人がラベル付けされた画像集 • OpenCVを使って、顔だけを保存 10 処理済みのファイルを 菅井さんからもらった http://vis-www.cs.umass.edu/lfw/
  11. 11. Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 事前準備-3 • 機械学習を実行 • 収集した画像データをCaffeに入力し、学習させる • 顔(aramoto, sugai, man, woman)の識別 • 具体的な手順は、オープンラボでのハンズオン資料を参照 • http://www.slideshare.net/yasuyukisugai/deep-learningcaffe 11 順番にやっていけば、 AWS上で簡単に試せる その後に、自力で1から 環境を構築して、理解を深め る
  12. 12. Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. クラウドを活用 • Caffeの機械学習には、とても時間がかかる • 5,000回学習するための所要時間 • デモで使用しているモデルデータ • Amazon EC2 GPUインスタンスで作成 • せっかくなので10万回学習を実行 • 所要時間と金額 • Caffeのバージョンアップと実行準備:120分 • 顔の学習:150分 • 使用料:120+150 = 270分 = 4.5時間 = $2.925 = 約350円 12 顔 Mac Book Air 2011(CPU Intel Core i7 1.8GHz) 88分 Amazon EC2 GPUインスタンス g2.2xlarge(GPU) 7分 $0.65 / 時間 菅井さんの AMIを利用
  13. 13. Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 機械学習に投入したデータ-1 • aramoto:502ファイル 13 32x32 ゴミ掃除も大変
  14. 14. Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 機械学習に投入したデータ-2 • man:1,609ファイル 14
  15. 15. Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 機械学習に投入したデータ-3 • woman:1,551ファイル 15
  16. 16. Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 目の開閉もCaffeで判定しようとしたが… • 人判定と同じ方法でやったが、うまくいかなかった • すべて「目が開いている」と誤判定してしまう • 予想:もっとピンポイントで画像を切り出す必要があった • 画像収集が結構大変 • 目を「開けた状態」での収集中に、つい目を閉じてしまう • 目を「閉じた状態」の収集中は、目を開けられない 16
  17. 17. Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 没データ-1 • 目を開けている 17 これを32x32に縮小して、 caffeに投入
  18. 18. Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 没データ-2 • 目を閉じている 18 これを32x32に縮小して、 caffeに投入
  19. 19. Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 没データ-3 • Caffeに投入したデータ 19 「開」「閉」が混ざっているけど、 見分けがつかない
  20. 20. Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 暫定版:眠りの深さの算出方法 • 顔として検出した位置の変化量=眠りの深さ • 寝返りを打つ=眠りが浅い、という想定 • 動きが止まっても、急には「深くなった」とは評価しない • 完全に止まっていたら、段階的に深くしていく • OpenCVでは、止まっていても動いているように誤検出 • 眠りの深さは、別の方法でやった方が良さそう • 目を2つ検出=起きている • OpenCVについている目のモデルデータをそのまま使用 • 目の検出が0個か1個の場合は、寝ているとする 20
  21. 21. Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. デモの画面構成 21 位置情報 寝ている人 眠りの深さ 顔と判定 目と判定 眠りの深さ
  22. 22. Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 今回のデモシステムでの課題-1 • 微妙な違いを機械学習(Caffe)では判定できなかった • 目の「開」「閉」は、人によって差があるし、位置も異なる • 解決案 • 画像の解像度(32x32)をもっと上げる→学習時間が増大 • もっとピンポイントで切り出す→人によって目の位置が違う事を考慮 • Caffeがどうやって判定しているのかを理解する必要がある • 人判定:顔のパーツの配置バランス? • 目の開閉:もっと効率の良い学習データの作り方は無いのか?? • 学習データが偏っている • 本人(aramoto)、海外の男性、海外の女性、という構成 • 他の日本人男性が「本人(aramoto)」と誤検出される事が多い • 検出したい人の顔画像を大量に集めれば、誤検出は少ない 22
  23. 23. Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 今回のデモシステムでの課題-2 • 画像の取り扱い • 画像が内部に保存されていると、何だか気持ち悪い • 今回のようなプライベート空間の場合、特に強く感じる • デモのために赤外線カメラ+αを購入したけど、怖かったので未使用 • しかし、学習データに使うために保存はしておきたい • 学習データ以外には使えない保存方法が必要 • 保存場所:他者が絶対に取り出せないし、盗聴も不可 • 保存領域:必要な部分以外は削除 • 保存形式:必要最大限、縮小化しておく • データ容量では苦労しなかった 23
  24. 24. Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 感想 • OpenCV、とても便利 – 豊富なサンプルを見ていると、何かに使えそう – 画像の切り出し・合成・保存に利用できる – 既存モデルを使って、キーとなる物との関係で切り出せないか? • 画像認識をやるには、対象画像の収集が大変 – 少数の画像で何とかならないか? • 自身のデータでデモシステムを動かすと – データ提供者とシステム開発者、両者の気持ちが分かる – システムの中身を知らない人は、もっと不安だろう – 自分のデータなので、どこででもデモができる • 誤検出を回避するためのコツ – 連続して画像判定すると、たまに誤判定が発生する – 3秒間できるだけ画像判定して、1番多かったものを採用 • 目を閉じた状態をテストするのが大変だった – 目を閉じていると、結果が確認できない 24

×