Comments
Description
Transcript
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