Upload
aitcjp
View
201
Download
1
Embed Size (px)
Citation preview
Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
~空気を読む家~空間 OS のためのビックデータ基盤技
術
2016年 02月 04日
先端 IT活用推進コンソーシアムクラウド・テクノロジー活用部会
リーダー 荒本道隆
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
Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
デモシステムを作る前に
• DeepLearning の課題• 大量データの蓄積が必要• 教師データの収集が必要
• 今回は『寝室』をテーマにやってみた• 必要な画像データを収集• DeepLearning へ画像データを投入• 生成されたモデルの利用
3
Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
寝室
ベット
デモシステムの概要
• 前提条件• 1戸に2人が住んでいると想定
• 誰がどちら側で寝ているか?• 2台のカメラを使い、人判定を行う
• 眠りの深さを測定• 寝返りの量
• 起きているかを判定• 目が2つとも開いているか?
4
ベット
Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
使用する技術
• 画像処理全般: OpenCV• 付属のモデルデータを使って、顔の位置の特定• 顔の位置の変化から、寝返りの量を算出• 付属のモデルデータを使って、目を検出
• 人判定: Caffe• 誰が寝ているかを判定
5
寝室
ベット ベット
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 より
Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
OpenCV に付属のサンプルコード紹介
7
Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
Caffe とは
8http://www.slideshare.net/yasuyukisugai/deep-learningcaffe/8
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 : この部分だけを
ファイルに出力他の人がカメラの前を通らないよう注意
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/
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から環境を構築して、理解を深める
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 を利用
Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
機械学習に投入したデータ-1
• aramoto : 502 ファイル
13
32x32 ゴミ掃除も大変
Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
機械学習に投入したデータ-2
• man : 1,609 ファイル
14
Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
機械学習に投入したデータ-3
• woman : 1,551 ファイル
15
Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
目の開閉も Caffe で判定しようとしたが…
• 人判定と同じ方法でやったが、うまくいかなかった• すべて「目が開いている」と誤判定してしまう• 予想:もっとピンポイントで画像を切り出す必要があっ
た• 画像収集が結構大変
• 目を「開けた状態」での収集中に、つい目を閉じてしまう
• 目を「閉じた状態」の収集中は、目を開けられない
16
Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
没データ-1
• 目を開けている
17
これを 32x32 に縮小して、caffe に投入
Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
没データ-2
• 目を閉じている
18
これを 32x32 に縮小して、caffe に投入
Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
没データ-3
• Caffe に投入したデータ
19
「開」「閉」が混ざっているけど、見分けがつかない
Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
暫定版:眠りの深さの算出方法
• 顔として検出した位置の変化量=眠りの深さ• 寝返りを打つ=眠りが浅い、という想定• 動きが止まっても、急には「深くなった」とは評価しな
い• 完全に止まっていたら、段階的に深くしていく
• OpenCV では、止まっていても動いているように誤検出• 眠りの深さは、別の方法でやった方が良さそう
• 目を 2 つ検出=起きている• OpenCV についている目のモデルデータをそのまま使用• 目の検出が 0個か 1個の場合は、寝ているとする
20
Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
デモの画面構成
21
位置情報寝ている人眠りの深さ
顔と判定目と判定眠りの深さ
Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
今回のデモシステムでの課題-1
• 微妙な違いを機械学習( Caffe )では判定できなかった• 目の「開」「閉」は、人によって差があるし、位置も異なる• 解決案
• 画像の解像度( 32x32 )をもっと上げる→学習時間が増大• もっとピンポイントで切り出す→人によって目の位置が違う事を考慮
• Caffe がどうやって判定しているのかを理解する必要がある• 人判定:顔のパーツの配置バランス?• 目の開閉:もっと効率の良い学習データの作り方は無いのか??
• 学習データが偏っている• 本人( aramoto )、海外の男性、海外の女性、という構成
• 他の日本人男性が「本人( aramoto )」と誤検出される事が多い• 検出したい人の顔画像を大量に集めれば、誤検出は少ない
22
Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
今回のデモシステムでの課題-2
• 画像の取り扱い• 画像が内部に保存されていると、何だか気持ち悪い
• 今回のようなプライベート空間の場合、特に強く感じる• デモのために赤外線カメラ+ α を購入したけど、怖かったので未
使用
• しかし、学習データに使うために保存はしておきたい• 学習データ以外には使えない保存方法が必要
• 保存場所:他者が絶対に取り出せないし、盗聴も不可• 保存領域:必要な部分以外は削除• 保存形式:必要最大限、縮小化しておく
• データ容量では苦労しなかった 23
Copyright © 2016 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
感想
• OpenCV 、とても便利– 豊富なサンプルを見ていると、何かに使えそう– 画像の切り出し・合成・保存に利用できる– 既存モデルを使って、キーとなる物との関係で切り出せない
か?• 画像認識をやるには、対象画像の収集が大変
– 少数の画像で何とかならないか?• 自身のデータでデモシステムを動かすと
– データ提供者とシステム開発者、両者の気持ちが分かる– システムの中身を知らない人は、もっと不安だろう– 自分のデータなので、どこででもデモができる
• 誤検出を回避するためのコツ– 連続して画像判定すると、たまに誤判定が発生する– 3秒間できるだけ画像判定して、1番多かったものを採用
• 目を閉じた状態をテストするのが大変だった– 目を閉じていると、結果が確認できない 24