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.
SensorBeeのご紹介
Gopher Night #1
@disktnk
2016/03/17
自己紹介
 田中大輔 (@disktnk)
– 某ピー社アニオタ枠採用
– 元金融工学ライブラリ屋さん
– I love Java!
2
コンテンツ
 本日話すこと
– 3/14 にOSS化した SensorBee の紹介
– BQLの簡単な説明
– UDFなどの拡張について
– 実例と、簡単なデモ
 本日話さないこと
– Go言語による実装の詳細
– 機械学習について。De...
(特に) ネットワークのエッジ / フォグにおいて
ストリームデータに対して
機械学習 (特にDeep Learning) を利用した
非構造化データ向けのETLを
低レイテンシで適用することを目的としたツール
Lightweight Stre...
ちょっとだけ詳しい説明
 Stateful
– 非構造化データの加工・転送を担う
– プラグインと連携することにより、特徴量抽出や機械学習が可能。
 Expressive
– CQL (Continuous Query Language) ...
サンプル例:監視カメラから人物認識をやりたい
6
{
"id": 123,
"age": ”35",
"gender": “female",
"location": {
"x": 252.1,
"y": 179.3
},
…
}
{
"id":...
サンプル例:監視カメラからデータを取得
7
[Source]
監視カメラデータ=フレームデータを
取得
{
"id": 123,
"age": ”35",
"gender": “female",
"location": {
"x": 252.1...
サンプル例:画像データから人物を切り取り
8
[Stream+UDF]
人物の抽出
{
"id": 123,
"age": ”35",
"gender": “female",
"location": {
"x": 252.1,
"y": 179...
サンプル例:切り取った人物画像を解析
9
[Stream+UDF]
人物データの解析
{
"id": 123,
"age": ”35",
"gender": “female",
"location": {
"x": 252.1,
"y": 17...
サンプル例:解析データを出力
10
{
"id": 123,
"age": ”35",
"gender": “female",
"location": {
"x": 252.1,
"y": 179.3
},
…
}
{
"id": 131,
"...
Source
 (非構造化)データのStreaming
– カメラの画像データ
– (web)ログ
– fluentd
– MQTT subscribe etc...
– センサーデータ
– 温度データ
– 振動データ etc...
– 各種...
Stream
 データの操作
– 結合 (Join)
– 集約 (Aggregation)
– 抽出 (Filtering) etc...
 ストリームされるデータはJSONのよ
うにアクセス可能
– camera0:* の部分
 右記例...
Sink
 データをDBやクラウドソースに出力
– fluentd
– MQTT publish
– DBへ直接INSERT etc...
– Souceと同じく各種TYPEは独自に拡
張可能
 右記例では、解析した結果を fluentd
...
デモ: 顔認識
 OpenCV の CascadeClassifier を使用した顔認識
– 今回は ultraist様のLBPモデルを使用
http://ultraist.hatenablog.com/entry/20110718/1310...
デモ: 顔認識→からの笑い男
 ハッカーの憧れ
15
x,y,w,h を元に画像を貼るUDF
デモ: 顔認識→からの笑い男→もう一度動画へ
 OpenCV の VideoWriter を使用して動画にまとめる
16
動画ファイル
を作るSink
デモ: ラブライブOP (第1期) と笑い男
17
デモ: BQL全体像 (ご参考までに)
18
CREATE PAUSED SOURCE camera TYPE
opencv_capture_from_uri WITH
uri="videos/lovelive1_op.mp4",
frame_...
デモ: BQL全体像 (ご参考までに)
19
CREATE PAUSED SOURCE camera TYPE
opencv_capture_from_uri WITH
uri="videos/lovelive1_op.mp4",
frame_...
Autonomous robot car control demonstration in CES2016
 https://www.youtube.com/watch?v=7A9UwxvgcV0
– こちらはちゃんとした実用例、バックエンド...
ぜひ使ってみてください!
 http://sensorbee.io
 http://docs.sensorbee.io/en/latest/
 https://github.com/sensorbee/sensorbee
 今回のデモ動...
Upcoming SlideShare
Loading in …5
×

SensorBeeのご紹介

Go言語で実装された、エッジやフォグで機械学習することを目的とされたストリームエンジン、SensorBeeのご紹介です。

  • Login to see the comments

SensorBeeのご紹介

  1. 1. SensorBeeのご紹介 Gopher Night #1 @disktnk 2016/03/17
  2. 2. 自己紹介  田中大輔 (@disktnk) – 某ピー社アニオタ枠採用 – 元金融工学ライブラリ屋さん – I love Java! 2
  3. 3. コンテンツ  本日話すこと – 3/14 にOSS化した SensorBee の紹介 – BQLの簡単な説明 – UDFなどの拡張について – 実例と、簡単なデモ  本日話さないこと – Go言語による実装の詳細 – 機械学習について。Deep Learningについて。 – 機械学習を含めた SensorBee の説明については、昨日行われた「第15回 elasticsearch勉強会」の資料をご参照ください Elasticsearchと機械学習を実際に連携させる http://www.slideshare.net/nobu_k/elasticsearch-59627321 3
  4. 4. (特に) ネットワークのエッジ / フォグにおいて ストリームデータに対して 機械学習 (特にDeep Learning) を利用した 非構造化データ向けのETLを 低レイテンシで適用することを目的としたツール Lightweight Stream Processing Engine for IoT http://sensorbee.io 4
  5. 5. ちょっとだけ詳しい説明  Stateful – 非構造化データの加工・転送を担う – プラグインと連携することにより、特徴量抽出や機械学習が可能。  Expressive – CQL (Continuous Query Language) の方言である BQL という、SQLライクなスク リプトにより操作。 – スキーマレスであり、JSONライクな構造データを扱う  Lightweight – 実行ファイルは大体30MBくらい。Go言語で書かれている (←ここにいる最大の理由) – OS は特に限定していないが、普段は Linux や Mac で開発している – Raspberry Pi でも動く (確認済) – Windows でももちろん動くが、一部ブラグインでは要修正 (cgo周り) 5
  6. 6. サンプル例:監視カメラから人物認識をやりたい 6 { "id": 123, "age": ”35", "gender": “female", "location": { "x": 252.1, "y": 179.3 }, … } { "id": 131, "age": ”22", "gender": “male", "location": { "x": 120.5, "y": 80.2 }, … }
  7. 7. サンプル例:監視カメラからデータを取得 7 [Source] 監視カメラデータ=フレームデータを 取得 { "id": 123, "age": ”35", "gender": “female", "location": { "x": 252.1, "y": 179.3 }, … } { "id": 131, "age": ”22", "gender": “male", "location": { "x": 120.5, "y": 80.2 }, … }
  8. 8. サンプル例:画像データから人物を切り取り 8 [Stream+UDF] 人物の抽出 { "id": 123, "age": ”35", "gender": “female", "location": { "x": 252.1, "y": 179.3 }, … } { "id": 131, "age": ”22", "gender": “male", "location": { "x": 120.5, "y": 80.2 }, … }
  9. 9. サンプル例:切り取った人物画像を解析 9 [Stream+UDF] 人物データの解析 { "id": 123, "age": ”35", "gender": “female", "location": { "x": 252.1, "y": 179.3 }, … } { "id": 131, "age": ”22", "gender": “male", "location": { "x": 120.5, "y": 80.2 }, … }
  10. 10. サンプル例:解析データを出力 10 { "id": 123, "age": ”35", "gender": “female", "location": { "x": 252.1, "y": 179.3 }, … } { "id": 131, "age": ”22", "gender": “male", "location": { "x": 120.5, "y": 80.2 }, … } [Sink] 解析データの保存
  11. 11. Source  (非構造化)データのStreaming – カメラの画像データ – (web)ログ – fluentd – MQTT subscribe etc... – センサーデータ – 温度データ – 振動データ etc... – 各種TYPEは独自に拡張可能 – “opencv_capture_from_uri” はopencvプラグインにある 11 BQL例 CREATE SOURCE camera0 TYPE opencv_capture_from_uri WITH uri=“http://webcamera...”, frame_skip=0, next_frame_error=false;
  12. 12. Stream  データの操作 – 結合 (Join) – 集約 (Aggregation) – 抽出 (Filtering) etc...  ストリームされるデータはJSONのよ うにアクセス可能 – camera0:* の部分  右記例では、”detect_human” や ”recognize” という人物認識のUDF を作成したという設定 12 BQL例 CREATE STREAM regions0 AS SELECT RSTREAM detect_human(camera0:*) AS detected FROM camera0 [RANGE 1 TUPLES]; CREATE STREAM recognized AS SELECT RSTREAM recognize(’params', regions0:detected) AS recognized FROM regions0 [RANGE 1 TUPLES];
  13. 13. Sink  データをDBやクラウドソースに出力 – fluentd – MQTT publish – DBへ直接INSERT etc... – Souceと同じく各種TYPEは独自に拡 張可能  右記例では、解析した結果を fluentd を使用して出力、という設定 – fluentd source/sink は fluentdプラ グインにある 13 BQL例 CREATE SINK analyzed TYPE fluentd; CREATE STREAM tagged_result AS SELECT RSTREAM “analyzed” AS tag, recognized:* AS data FROM recognized [RANGE 1 TUPLES]; INSERT INTO analyzed FROM tagged_result;
  14. 14. デモ: 顔認識  OpenCV の CascadeClassifier を使用した顔認識 – 今回は ultraist様のLBPモデルを使用 http://ultraist.hatenablog.com/entry/20110718/1310965532 14 ここで顔認識を行う →x,y,w,h を出力するUDF
  15. 15. デモ: 顔認識→からの笑い男  ハッカーの憧れ 15 x,y,w,h を元に画像を貼るUDF
  16. 16. デモ: 顔認識→からの笑い男→もう一度動画へ  OpenCV の VideoWriter を使用して動画にまとめる 16 動画ファイル を作るSink
  17. 17. デモ: ラブライブOP (第1期) と笑い男 17
  18. 18. デモ: BQL全体像 (ご参考までに) 18 CREATE PAUSED SOURCE camera TYPE opencv_capture_from_uri WITH uri="videos/lovelive1_op.mp4", frame_skip=0, next_frame_error=false; CREATE STATE face_detector TYPE pencv_cascade_classifier WITH file="data/lbpcascade_animeface.xml”; CREATE STREAM detected AS SELECT RSTREAM opencv_detect_multi_scale("face_detect or", c:*) AS rects, c:* AS raw_image FROM camera [RANGE 1 TUPLES] AS c; -- draw warai-otoko CREATE STATE warai TYPE opencv_shared_image WITH file="data/warai_flat.png”; CREATE SINK warai_avi TYPE oencv_avi_writer WITH file_name="result/warai", fps=30; CREATE STREAM warai_avi_images AS SELECT RSTREAM opencv_mount_image("warai", d:raw_image, d:rects) AS img FROM detected [RANGE 1 TUPLES] AS d; CREATE STREAM fmt_warai_avi_images AS SELECT RSTREAM wai:img.format AS format, wai:img.width AS width, wai:img.height AS height, wai:img.image AS image FROM warai_avi_images [RANGE 1 TUPLES] AS wai INSERT INTO warai_avi FROM fmt_warai_avi_images;
  19. 19. デモ: BQL全体像 (ご参考までに) 19 CREATE PAUSED SOURCE camera TYPE opencv_capture_from_uri WITH uri="videos/lovelive1_op.mp4", frame_skip=0, next_frame_error=false; CREATE STATE face_detector TYPE pencv_cascade_classifier WITH file="data/lbpcascade_animeface.xml”; CREATE STREAM detected AS SELECT RSTREAM opencv_detect_multi_scale("face_detect or", c:*) AS rects, c:* AS raw_image FROM camera [RANGE 1 TUPLES] AS c; -- draw warai-otoko CREATE STATE warai TYPE opencv_shared_image WITH file="data/warai_flat.png”; CREATE SINK warai_avi TYPE oencv_avi_writer WITH file_name="result/warai", fps=30; CREATE STREAM warai_avi_images AS SELECT RSTREAM opencv_mount_image("warai", d:raw_image, d:rects) AS img FROM detected [RANGE 1 TUPLES] AS d; CREATE STREAM fmt_warai_avi_images AS SELECT RSTREAM wai:img.format AS format, wai:img.width AS width, wai:img.height AS height, wai:img.image AS image FROM warai_avi_images [RANGE 1 TUPLES] AS wai INSERT INTO warai_avi FROM fmt_warai_avi_images; すみません、このSinkはまだ公 開してません m(__)m 他の部分は公開済 →opencvプラグインを使った tutorialは作る予定 (issue #27)
  20. 20. Autonomous robot car control demonstration in CES2016  https://www.youtube.com/watch?v=7A9UwxvgcV0 – こちらはちゃんとした実用例、バックエンドにSensorBeeを使用 20
  21. 21. ぜひ使ってみてください!  http://sensorbee.io  http://docs.sensorbee.io/en/latest/  https://github.com/sensorbee/sensorbee  今回のデモ動画: https://github.com/disktnk/sb_facedetect_demo 参照 21

×