24
Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 空空空空空空空 ~~ 空空 OS 空空空空空空空空空空空空空空 2016 空 02 空 04 空 空空 IT 空空空空空空空空空空空 空空空空 空空空空空空空空空空 空空空空 空空空空

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

  • Upload
    aitcjp

  • View
    201

  • Download
    1

Embed Size (px)

Citation preview

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

Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

~空気を読む家~空間 OS のためのビックデータ基盤技

2016年 02月 04日

先端 IT活用推進コンソーシアムクラウド・テクノロジー活用部会

リーダー 荒本道隆

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

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

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

Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

デモシステムを作る前に

• DeepLearning の課題• 大量データの蓄積が必要• 教師データの収集が必要

• 今回は『寝室』をテーマにやってみた• 必要な画像データを収集• DeepLearning へ画像データを投入• 生成されたモデルの利用

3

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

Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

寝室

ベット

デモシステムの概要

• 前提条件• 1戸に2人が住んでいると想定

• 誰がどちら側で寝ているか?• 2台のカメラを使い、人判定を行う

• 眠りの深さを測定• 寝返りの量

• 起きているかを判定• 目が2つとも開いているか?

4

ベット

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

Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

使用する技術

• 画像処理全般: OpenCV• 付属のモデルデータを使って、顔の位置の特定• 顔の位置の変化から、寝返りの量を算出• 付属のモデルデータを使って、目を検出

• 人判定: Caffe• 誰が寝ているかを判定

5

寝室

ベット ベット

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

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 より

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

Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

OpenCV に付属のサンプルコード紹介

7

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

Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

Caffe とは

8http://www.slideshare.net/yasuyukisugai/deep-learningcaffe/8

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

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 : この部分だけを

ファイルに出力他の人がカメラの前を通らないよう注意

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

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/

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

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から環境を構築して、理解を深める

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

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 を利用

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

Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

機械学習に投入したデータ-1

• aramoto : 502 ファイル

13

32x32 ゴミ掃除も大変

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

Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

機械学習に投入したデータ-2

• man : 1,609 ファイル

14

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

Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

機械学習に投入したデータ-3

• woman : 1,551 ファイル

15

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

Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

目の開閉も Caffe で判定しようとしたが…

• 人判定と同じ方法でやったが、うまくいかなかった• すべて「目が開いている」と誤判定してしまう• 予想:もっとピンポイントで画像を切り出す必要があっ

た• 画像収集が結構大変

• 目を「開けた状態」での収集中に、つい目を閉じてしまう

• 目を「閉じた状態」の収集中は、目を開けられない

16

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

Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

没データ-1

• 目を開けている

17

これを 32x32 に縮小して、caffe に投入

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

Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

没データ-2

• 目を閉じている

18

これを 32x32 に縮小して、caffe に投入

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

Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

没データ-3

• Caffe に投入したデータ

19

「開」「閉」が混ざっているけど、見分けがつかない

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

Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

暫定版:眠りの深さの算出方法

• 顔として検出した位置の変化量=眠りの深さ• 寝返りを打つ=眠りが浅い、という想定• 動きが止まっても、急には「深くなった」とは評価しな

い• 完全に止まっていたら、段階的に深くしていく

• OpenCV では、止まっていても動いているように誤検出• 眠りの深さは、別の方法でやった方が良さそう

• 目を 2 つ検出=起きている• OpenCV についている目のモデルデータをそのまま使用• 目の検出が 0個か 1個の場合は、寝ているとする

20

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

Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

デモの画面構成

21

位置情報寝ている人眠りの深さ

顔と判定目と判定眠りの深さ

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

Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

今回のデモシステムでの課題-1

• 微妙な違いを機械学習( Caffe )では判定できなかった• 目の「開」「閉」は、人によって差があるし、位置も異なる• 解決案

• 画像の解像度( 32x32 )をもっと上げる→学習時間が増大• もっとピンポイントで切り出す→人によって目の位置が違う事を考慮

• Caffe がどうやって判定しているのかを理解する必要がある• 人判定:顔のパーツの配置バランス?• 目の開閉:もっと効率の良い学習データの作り方は無いのか??

• 学習データが偏っている• 本人( aramoto )、海外の男性、海外の女性、という構成

• 他の日本人男性が「本人( aramoto )」と誤検出される事が多い• 検出したい人の顔画像を大量に集めれば、誤検出は少ない

22

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

Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

今回のデモシステムでの課題-2

• 画像の取り扱い• 画像が内部に保存されていると、何だか気持ち悪い

• 今回のようなプライベート空間の場合、特に強く感じる• デモのために赤外線カメラ+ α を購入したけど、怖かったので未

使用

• しかし、学習データに使うために保存はしておきたい• 学習データ以外には使えない保存方法が必要

• 保存場所:他者が絶対に取り出せないし、盗聴も不可• 保存領域:必要な部分以外は削除• 保存形式:必要最大限、縮小化しておく

• データ容量では苦労しなかった 23

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

Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

感想

• OpenCV 、とても便利– 豊富なサンプルを見ていると、何かに使えそう– 画像の切り出し・合成・保存に利用できる– 既存モデルを使って、キーとなる物との関係で切り出せない

か?• 画像認識をやるには、対象画像の収集が大変

– 少数の画像で何とかならないか?• 自身のデータでデモシステムを動かすと

– データ提供者とシステム開発者、両者の気持ちが分かる– システムの中身を知らない人は、もっと不安だろう– 自分のデータなので、どこででもデモができる

• 誤検出を回避するためのコツ– 連続して画像判定すると、たまに誤判定が発生する– 3秒間できるだけ画像判定して、1番多かったものを採用

• 目を閉じた状態をテストするのが大変だった– 目を閉じていると、結果が確認できない 24