kinect for windows入門

35
KINECT for Windows v2 はじめてのKINECT みずほ情報総研株式会社 サイエンスソリューション部 下元 正義 1 Kinect®は、米国Microsoft Corporation及びまたはその関連会社の登録商標または商標です。 その他の会社名、システム名、製品名は一般に各社の登録商標または商標です。

Upload: ngotuyen

Post on 14-Feb-2017

220 views

Category:

Documents


0 download

TRANSCRIPT

KINECT for Windows v2はじめてのKINECT

みずほ情報総研株式会社

サイエンスソリューション部

下元 正義

1

Kinect®は、米国Microsoft Corporation及びまたはその関連会社の登録商標または商標です。その他の会社名、システム名、製品名は一般に各社の登録商標または商標です。

下元 正義(しももと まさよし)

みずほ情報総研株式会社

サイエンスソリューション部

理学系出身

C#の開発がメイン

Kinectは2年前から

K4Wによる手話認識

2

K4Wによる手話認識:利用想定シーン

本日お話しさせていただく内容

•未来のヒューマンインターフェイスデバイス

•何ができるのか

• アプリ開発の始め方

• v2の新機能 Kinect Studio + Visual Gesture Builder

3

KINECT

• ユーザーとコンピュータの画期的な対話方法

CUI GUI タッチ、ペン ジェスチャー、ボイス

4

目と耳

赤外線エミッタ&センサー

カラーカメラ

マイクロフォンアレイ

カラー画像

距離/赤外画像

音声

ドライバ

Kinectのセンサーデータをソフトウェアで利用できる!

SDK

5

何ができるの?

• ナチュラルユーザーインターフェイス(NUI)• ひとのしぐさを理解

• 誰でもコンピュータの恩恵を受けられる

6

http://kinectforwindows.com/http://www.tfu.ac.jp/news/20131125_01.html

特徴

•赤外線を照射して物体との距離を計測

7

構造

https://www.ifixit.com/

RGBカメラ

Depthセンサー

赤外線エミッタ

パワーライト

マイクロフォンアレイ

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.0GHzDELL Graphic Pro XPS8700 : Core i7 3537U 2.0GHz 動作しない場合も

9

センサーの入手→マイクロソフトストア

http://www.microsoftstore.com/store/msjp/ja_JP/home

現在はオープンベータ版

10

SDK(Software Development Kit)を入手

http://www.microsoft.com/en-us/kinectforwindows/

最新のSDK2014.8.20版

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(暗いとき)フレーム/秒

•赤外

•深度

• ボディインデックス

• スケルトン

• オーディオ

14

512 x 424, 30 フレーム/秒

カラー 120MB/秒, その他画像 13MB/秒, オーディオ 32KB/秒

アーキテクチャ

ネイティブアプリ .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人まで

Microsft Virtual AcademyProgramming Kinect for Windows v2 Jump Start

http://research.microsoft.com/apps/pubs/?id=145347

23

入力デバイスとしてKinectを利用する

• ストアアプリでKinectを入力デバイスとして利用

24

Window

Frame

Page

Window

Grid

KinectRegionKinectUser

Viewer

Page

Frame

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

• ジェシュチャー認識の機械学習プラットフォーム

26

Kinect Studio Visual Gesture Builder

機械学習によるジェシュチャー認識

Kinect Studio

Gesture Builder

Live View

27

Use inYour App

記録

タグ付け

学習テスト

Step1:Kinect Studioで記録

• ジェシュチャーだけならNui Uncompressed Colorは不要

• データの保存場所はFILE→Settings→Rcording File Path

28

Visual Gesture Builderでタグ付け

•新規ソリューションの作成 File→New Solution

• プロジェクトの作成 右クリック→Create New Project

• プロジェクトに撮影データを追加 右クリック→AddClip

• ジェシュチャーの学習方法を指定して、タグ付けを行う

29

Shift+→でジェスチャの領域を選択

領域を選択した状態でValueにTrueを設定

Visual Gesture Builderで学習

• ソリューションは複数のジェシュチャーの集合

• プロジェクトはひとつのジェシュチャー

•右クリック→ビルドで辞書作成

30

ソリューションジェシュチャーの集合

プロジェクトひとつのジェシュチャープロジェクトひとつのジェシュチャープロジェクトひとつのジェシュチャー

.gha単一ジェシュチャー辞書

.gdb複数ジェシュチャー辞書

Build

Build

Visual Gesture Builder Viewerでテスト

•右クリック→Live Previewで認識精度の確認

31

ジェシュチャー認識度をグラフで表示

Vgb Viewer

Use in Your App

•サンプル Discrete Gesture Basics-WPF参照(8/20リリースSDK)

32

6人までの着席状態を判定

まとめ

• 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

学習リソース

35

• Microsoft Virtual Academy

•無料のオンライン学習リソース

• K4WV2は英語• 英語字幕あり

• Visual Gesture Builderは06参照

http://www.microsoftvirtualacademy.com/