KINECT for Windows入門

KINECT for Windows v2
はじめてのKINECT
みずほ情報総研株式会社
サイエンスソリューション部
下元 正義
Kinect®は、米国Microsoft Corporation及びまたはその関連会社の登録商標または商標です。
その他の会社名、システム名、製品名は一般に各社の登録商標または商標です。
1
下元 正義(しももと まさよし)
みずほ情報総研株式会社
サイエンスソリューション部
理学系出身
C#の開発がメイン
Kinectは2年前から
K4Wによる手話認識
K4Wによる手話認識:利用想定シーン
2
本日お話しさせていただく内容
• 未来のヒューマンインターフェイスデバイス
• 何ができるのか
• アプリ開発の始め方
• v2の新機能 Kinect Studio + Visual Gesture Builder
3
KINECT
• ユーザーとコンピュータの画期的な対話方法
CUI
GUI
タッチ、ペン
ジェスチャー、ボイス
4
目と耳
Kinectのセンサーデータをソ
フトウェアで利用できる!
カラー画像
カラーカメラ
赤外線エミッタ
&センサー
距離/赤外画像
ドラ
イバ
マイクロフォンアレイ
音声
SDK
5
何ができるの?
• ナチュラルユーザーインターフェイス(NUI)
• ひとのしぐさを理解
• 誰でもコンピュータの恩恵を受けられる
http://kinectforwindows.com/
http://www.tfu.ac.jp/news/20131125_01.html
6
特徴
• 赤外線を照射して物体との距離を計測
7
構造
Depthセンサー
RGBカメラ
パワーライト
赤外線エミッタ
マイクロフォンアレイ
https://www.ifixit.com/
8
動作要件
項目
V1
V2
CPU
デュアルコア 2.66GHz~
Core i7 2.5GHz~
GPU
n/a
Direct X11
USB
2.0以上
3.0
メモリ
2GB
4GB(2GBという記述も…)
OS
Windows7, 8以降
エンベデッド含む
Windows8以降
エンベデッド含む
開発環境
Visual Studio 2010以降
.NET Framework 4
Visual Studio 2012以降
.NET Framework4.5
動作確認した環境
ASUS Z87 Pro : Core i7 4770K 3.4GHz
Dell XPS One 27 : Core i7 4770S 3.0GHz
DELL Graphic Pro XPS8700 : Core i7 3537U 2.0GHz
動作しない場合も
9
センサーの入手→マイクロソフトストア
現在はオープン
ベータ版
http://www.microsoftstore.com/store/msjp/ja_JP/home
10
SDK(Software Development Kit)を入手
最新のSDK
2014.8.20版
http://www.microsoft.com/en-us/kinectforwindows/
11
開発環境Visual Studio(2012or2013)を入手
無償のExpressでも開発可能
for Windows(ストアアプリ)
for Desktop(デスクトップアプリ)
2013 Update 3が最新
12
サンプルコードから始めよう
• Kinect Browser v2.0
• サンプルアプリ
• サンプルコード
サンプルアプリの初回起動時に
ファームウェアアップデートがかかる
30秒くらい待つ
13
データソース
• カラー
1920 x 1080, 30 or 15(暗いとき)フレーム/秒
• 赤外
• 深度
512 x 424, 30 フレーム/秒
• ボディインデックス
• スケルトン
• オーディオ
カラー 120MB/秒, その他画像 13MB/秒, オーディオ 32KB/秒
14
アーキテクチャ
ネイティブアプリ
.Netアプリ
ストアアプリ
C#,VB,JavaScript,C++
ネイティブAPI
.Net API
WinRT API
Kinect Runtime
Kinect Drivers
Kinect Sensor
15
ストアアプリを作成
• 新規プロジェクトの作成
• ストアアプリ→空のプロジェクト
• Package.Manifest→機能で“マイク”と“Webカメラ”を利用可
• 参照設定→WindowsPreview.Kinectを追加
• 構成マネージャーでプラットフォームをx64またはx86
16
プログラミングモデル
Sensor
Source
Reader
Frame Reference
Frame
17
KinectSensor
this.kinectSensor = KinectSensor.GetDefault();
this.kinectSensor.Open();
//何らかの処理
this.kinectSensor.Close();
Sensor
Source
Reader
Frame Reference
Frame
18
Source
• 1データソース
• AudioSource,BodyFrameSource,BodyIndexFrameSource…
• 複数
• OpenMultiSourceFrameReader
this.colorFrameReader = this.kinectSensor.ColorFrameSource.OpenReader();
Sensor
Source
Reader
Frame Reference
Frame
19
Reader
• Frameへのアクセスは2通り
• Events, Polling
this.colorFrameReader.FrameArrived += colorFrameReader_FrameArrived;
…
void colorFrameReader_FrameArrived(ColorFrameReader sender, ColorFrameArrivedEventArgs args)
{
…
}
Sensor
Source
Reader
Frame Reference
Frame
20
Frame Reference
• EventArgsのプロパティ
void colorFrameReader_FrameArrived(ColorFrameReader sender, ColorFrameArrivedEventArgs args)
{
using(ColorFrame colorFrame = args.FrameReference.AcquireFrame())
{
…
Sensor
Source
Reader
Frame Reference
Frame
21
Frame
• フレームデータ、メタデータを含む
• フレームを破棄しないと次のフレームを取得できない
void colorFrameReader_FrameArrived(ColorFrameReader sender, ColorFrameArrivedEventArgs args)
{
using(ColorFrame colorFrame = args.FrameReference.AcquireFrame())
{
…
Sensor
Source
Reader
Frame Reference
Frame
22
BodyFrameSource
• 0.5m~4.5m
• 25個の関節の位置と向き
• 6人まで認識
• 手の状態は2人まで
http://research.microsoft.com/apps/pubs/?id=145347
Microsft Virtual Academy 23
Programming Kinect for Windows v2 Jump Start
入力デバイスとしてKinectを利用する
• ストアアプリでKinectを入力デバイスとして利用
Window
Window
Frame
Grid
Page
KinectRegion
KinectUser
Viewer
Frame
Page
24
Microsoft.Kinect.XamlControlを利用
Window.Current.Content = rootFrame;
を以下のように書き換える
KinectRegion kinectRegion = new KinectRegion();
KinectUserViewer viewer = new KinectUserViewer();
kinectRegion.Content = rootFrame;
viewer.Width = 128;
viewer.Height = 106;
Grid grid = new Grid();
grid.Children.Add(kinectRegion);
grid.Children.Add(viewer);
viewer.SetValue(Grid.VerticalAlignmentProperty, VerticalAlignment.Top);
viewer.SetValue(Grid.HorizontalAlignmentProperty, HorizontalAlignment.Center);
Window.Current.Content = grid;
25
Kinect Studio + Visual Gesture Builder
• ジェシュチャー認識の機械学習プラットフォーム
Kinect Studio
Visual Gesture Builder
26
機械学習によるジェシュチャー認識
Kinect
Studio
Use in
Your App
テスト
Live View
記録
Gesture
Builder
タグ付け
学習
27
Step1:Kinect Studioで記録
• ジェシュチャーだけならNui Uncompressed Colorは不要
• データの保存場所はFILE→Settings→Rcording File Path
28
Visual Gesture Builderでタグ付け
• 新規ソリューションの作成 File→New Solution
• プロジェクトの作成 右クリック→Create New Project
• プロジェクトに撮影データを追加 右クリック→AddClip
• ジェシュチャーの学習方法を指定して、タグ付けを行う
領域を選択した状態で
ValueにTrueを設定
Shift+→でジェスチャの
領域を選択
29
Visual Gesture Builderで学習
• ソリューションは複数のジェシュチャーの集合
• プロジェクトはひとつのジェシュチャー
• 右クリック→ビルドで辞書作成
ソリューション
ジェシュチャーの集合
Build
.gdb 複数ジェシュチャー辞書
プロジェクト
プロジェクト
Build
ひとつのジェシュチャー
プロジェクト
ひとつのジェシュチャー
.gha 単一ジェシュチャー辞書
ひとつのジェシュチャー
30
Visual Gesture Builder Viewerでテスト
• 右クリック→Live Previewで認識精度の確認
ジェシュチャー認識度を
グラフで表示
Vgb Viewer
31
Use in Your App
• サンプル Discrete Gesture Basics-WPF参照(8/20リリースSDK)
6人までの着席状態を判定
32
まとめ
• Kinectは未来のヒューマンインターフェイスデバイス
• Kinectセンサーの概要と事例
• 開発の始め方、プログラミングモデル、入力デバイスとしてのKinect
• v2の新機能 Kinect Studio + Visual Gesture Builderのデモ
33
Kinect for Windowsの情報
• 本家サイト
http://www.microsoft.com/en-us/kinectforwindows/
• FaceBook
• Kinect for Windows好きの集まり
• Tokyo Motion Control Network
34
学習リソース
• Microsoft Virtual Academy
• 無料のオンライン学習リソース
• K4WV2は英語
• 英語字幕あり
• Visual Gesture Builderは06参照
http://www.microsoftvirtualacademy.com/
35