Kinect v2を通して
Microsoft技術を考える
Microsoft Student Partners Fellow
五十嵐 祐貴
1
自己紹介
• 五十嵐 祐貴 ( @bonprosoft )
• Microsoft Student Partners Fellow
• 東北大学 工学部
• コンパイラと自然言語処理に興味があります
2
Microsoft Student Partners
• Microsoftと一緒に活動したい学生のチーム
• テクニカル職はもちろんマーケティング職もあります
http://www.microsoft.com/ja-jp/education/msp.aspx
3
自己紹介
4
このセッションのゴール
• Microsoft技術に興味を持つ
• Microsoft技術を使ってみたくなる
5
まずはデモ
• Kinect SDKに付属しているデモをお見せします
6
Kinectとは
• Microsoftから発売されているセンサーデバイス
 現在はKinect for XboxとKinect for Windowsが発売され
ている
• 人の動きや表情、音声認識などを手軽に扱える
• 最近Kinect SDK 2.0が正式リリース
• 今回は次世代型Kinect「Kinect for Windows v2」
を扱う
7
利用できるセンサー
• 色情報
 解像度は1920×1080
 検出可能角度:70°(水平) 60°(垂直)
• 赤外線情報
 解像度は512×424
 検出可能角度は色情報と同様
 検出範囲は0.5m~4.5m
• 指向性マイク
8
取得できるデータ
• 骨格情報
• 色情報
• 深度情報
• 赤外線情報
• 表情
• 音声認識
• ジェスチャー認識
etc...
9
v1との変更点
Kinect v1 Kinect v2 Preview
色 解像度 640x480 1920x1080
深度
解像度 320x240 512x424
認識範囲 0.8m~4.0m 0.5m~4.5m
検出角度
水平 57度 70度
垂直 43度 60度
マイク入力 4つのマイクアレイ 4つのマイクアレイ
チルトモーター あり なし
最大骨格検出人数 2人 6人
関節数 20点/人 25点/人
手のポーズ検出 グーパーのみ グーチョキパー
手指検出 なし 親指と指先のみ
10
v1との変更点
• データの発生、扱いが大幅に変更
 v2では内部的にStream設計が実装されている
 より見通しの良いコードが書ける
• v1と比べてフレームを細かく取得可能に
 使いたいデータを宣言できる
• 複数のアプリケーションから同時にセンサーを扱う
ことが可能に
11
Kinect v2の美味しい食べ方
• C#/C++はもちろんUnityなどでも使える
• Unityは公式がアセットを出している
 v1までは用意されていなかった為、非公式のものがあった
12
Kinect v2の調理例
• Kinectを用いた作品の例をお見せします
13
Kinect v2を調理してみよう
• 実際にコーディングをしていきます
14
実装例:
検知している人数を表示するプログラム
• センサーが人を検知した場合に、その人数を表示し
ます
15
このプログラムが何に役立つの?
• このままでは何の役にも立たない
• この技術と何かを組み合わせて、発展させる必要が
ある
16
何ができるかを考える
• Kinectから検出している人数を取得できた
• この調子で映像も取得できそう
• 赤外線映像・人数に関しては暗闇でも検知可能
• 今回は防犯システムを構築してみる
17
防犯システム構築に必要なこと
例:
• ネットワーク経由でリアルタイムにモニター
• 色情報/赤外線情報を保存
• メール通知
• スマホアプリを作成してプッシュ通知
これらを実現させるにはどうするか?
MS技術を組み合わせることで
簡単に実現できる
18
ネットワーク経由でのモニター
• ASP.NET SignalRを使う
 リアルタイム・非同期・双方向通信(プッシュや RPC)
の機能をWeb アプリケーションなどに容易に実装するこ
とができるライブラリ
 クライアントはC#やJavaScriptでも実装可能
• 今回はこれを用いる
19
ネットワーク経由でのモニター
• 実装します
20
Microsoft Azure
• Microsoftが提供するクラウドプラットフォーム
• 数分でWebサイトを構築可能
 PythonやPHP、Javaなども動作
 GitやDropBoxからのデプロイも可能
• 仮想マシンからMedia Service、Machine
Learningまで
 Microsoft Azureを利用することで、非常に様々なインフ
ラを簡単に実現
21
作成したサービスを展開する
• 実際にAzureへデプロイを行います
22
スマホアプリを作ってPush通知
• Mobile Serviceを使うことで非常に簡単に実現
• iOS/Android向けのテンプレートもすでに用意され
ている
23
チーム開発も簡単に
• TFSだけでなくGitも使える
• VS Community Editionを使うことで、より多くの
人が恩恵を受けることができる
24
And more…
• より多くの方に利用してもらえるようサービス化したい
 個人の認証が必要?
 ASP.NET Identityを使おう
• 携帯に電話をかけて通知してほしい
 Twilioなどを用いて電話をかける?
 NuGetを使うことですぐに実装可能
Microsoft技術をうまく組み合わせることで
簡単に実現可能
25
Microsoft Openness
• Microsoft技術の一部はGitHubなどで公開されている
 TypeScript,SignalR,MobileService,etc…
• Pull Reqなどを投げることで貢献することも可能
26
Microsoftと一緒に
• Microsoft技術は様々な技術と共存できる
 独自技術ばかりではないよ!
• 流行を取り入れていて日々進化している
 「変化を抱擁せよ」
MS技術を活用することで、より良い開発を!
27

Kinect v2を通してMicrosoft技術を考える