cm04 azure kinect dk 徹底解説...de:code 2019 cm04 azure kinect dk 徹底解説...

54
de:code 2019 CM04 Azure Kinect DK 徹底解説 ~ 進化したテクノロジーとその実装 ~ 技術統括室 千葉 慎二 Ph.D.

Upload: others

Post on 27-Apr-2020

18 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect

de:code 2019 CM04

Azure Kinect DK 徹底解説~進化したテクノロジーとその実装~

技術統括室

千葉慎二 Ph.D.

Page 2: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect

Mixed Reality の全体像

Page 3: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect
Page 4: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect

• 3D 空間の認識 (深度)

Kinect はただのカメラではない

Page 5: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect

人の全身の動きをとらえる

Page 6: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect

Azure Kinect

Development Environment

Page 7: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect

Azure Kinect DK 開発環境

• Sensor SDK• ローレベルセンサーとデバイスアクセス

• Body Tracking SDK• 3D で身体を追跡する

• Speech SDK• マイクアクセスと Azure クラウド

ベースのスピーチサービス

+Cognitive Vision…

Page 8: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect

Sensor SDK (機能)

• カラーカメラへのアクセスとモード制御• RGB イメージの取得

• 解像度: 1280 x 720 (16:9)

• 露出、ホワイトバランス、ISO 感度制御

• 深度カメラへのアクセスと各モード制御• 深度イメージ、IR イメージの取得

• 解像度: 1024 x 1024 (1:1) ~ 320 x 288 (10:9)

• FoV 深度モード制御 (NFoV, WFoV, パッシブ IR モード)

Page 9: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect

イルミネーションと視野

Page 10: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect

Sensor SDK –機能

• IMU へのアクセス• 加速度、角速度の取得

• カメラストリームの制御• 内部的に同期 (遅延設定可)

• 外部デバイス同期制御 (デバイス間の遅延オフセット設定も可)

• その他各種情報へのアクセス• カメラフレームメタデータ

• デバイスキャリブレーションデータ

Page 11: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect

Sensor SDK –システム要件

• Windows 10 PC / Ubuntu 18.04 (x64)• Core i3 7000 以降

• Dual Core 2.4 GHz/HD620 GPU 以降, 4GB メモリ, USB3

• シンプルな USB 接続機器 (カメラデバイス)

Page 12: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect

Body Tracking SDK –機能

• セグメンテーション• それぞれの身体を特定

• 固有の ID

• リアルタイムに身体動作を追跡• 24 箇所の骨格情報

Page 13: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect

24 箇所の骨格情報定義 親関節

0 K4ABT_JOINT_PELVIS ---

1 K4ABT_JOINT_SPINE_NAVAL K4ABT_JOINT_PELVIS

2 K4ABT_JOINT_SPINE_CHEST K4ABT_JOINT_SPINE_NAVAL

3 K4ABT_JOINT_NECK K4ABT_JOINT_SPINE_CHEST

4 K4ABT_JOINT_CLAVICLE_LEFT K4ABT_JOINT_SPINE_CHEST

5 K4ABT_JOINT_SHOULDER_LEFT K4ABT_JOINT_CLAVICLE_LEFT

6 K4ABT_JOINT_ELBOW_LEFT K4ABT_JOINT_SHOULDER_LEFT

7 K4ABT_JOINT_WRIST_LEFT K4ABT_JOINT_SHOULDER_LEFT

8 K4ABT_JOINT_CLAVICLE_RIGHT K4ABT_JOINT_SPINE_CHEST

9 K4ABT_JOINT_SHOULDER_RIGHT K4ABT_JOINT_CLAVICLE_RIGHT

10 K4ABT_JOINT_ELBOW_RIGHT K4ABT_JOINT_SHOULDER_RIGHT

11 K4ABT_JOINT_WRIST_RIGHT K4ABT_JOINT_ELBOW_RIGHT

12 K4ABT_JOINT_HIP_LEFT K4ABT_JOINT_PELVIS

13 K4ABT_JOINT_KNEE_LEFT K4ABT_JOINT_HIP_LEFT

14 K4ABT_JOINT_ANKLE_LEFT K4ABT_JOINT_KNEE_LEFT

15 K4ABT_JOINT_HIP_RIGHT K4ABT_JOINT_PELVIS

16 K4ABT_JOINT_KNEE_RIGHT K4ABT_JOINT_HIP_RIGHT

17 K4ABT_JOINT_ANKLE_RIGHT K4ABT_JOINT_KNEE_RIGHT

18 K4ABT_JOINT_HEAD K4ABT_JOINT_NECK

19 K4ABT_JOINT_NOSE K4ABT_JOINT_HEAD

20 K4ABT_JOINT_EYE_LEFT K4ABT_JOINT_HEAD

21 K4ABT_JOINT_EAR_LEFT K4ABT_JOINT_HEAD

22 K4ABT_JOINT_EYE_RIGHT K4ABT_JOINT_HEAD

23 K4ABT_JOINT_EAR_RIGHT K4ABT_JOINT_HEAD

Page 14: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect

Body Tracking SDK –システム要件

• Windows 10 PC • Core i5 以降

• NVIDIA GPU • GTX 1070 以降

• CUDA10.1, cuDNN v7.5

Page 16: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect

v2 センサーからの進化

Page 17: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect
Page 18: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect
Page 19: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect

Azure Kinect DK

Software Implementation

Page 20: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect

ソフトウェア実装Sensor

Page 21: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect

一般的な処理フロー

Page 22: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect

インターフェイス相関図

k4a_device_get_installed_count()

k4a_device_open()

k4a_device_start_cameras()

k4a_device_get_capture()

k4a_capture_get_XXX_image()

k4a_transformation_XXX_image_to_XXX_image()

k4a_calibration_Nd_to_Nd()

k4a_image_get_buffer()

k4a_image_create()

Page 23: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect

Azure Kinect DK の初期化

Page 24: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect

カメラを構成して始動、使い終えたら停止

Page 25: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect

キャプチャーとイメージアクセス

Page 26: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect

キャプチャーとイメージアクセス

Page 27: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect

イメージのフォーマット

フォーマット 解像度 縦横比 フレームレート

MJPG 3840 x 2160 16 : 9 5, 15, 30

MJPG 2560 x 1440 16 : 9 5, 15, 30

MJPG 1920 x 1080 16 : 9 5, 15, 30

MJPG

YUY2

NV12

1280 x 720 16 : 9 5, 15, 30

MJPG 4096 x 3072 4 : 3 5, 15

MJPG 2048 x 1536 4 : 3 5, 15, 30

モード 解像度 縦横比 フレームレート

NFOV unbinned 640 x 576 10 : 9 5, 15, 30

NFOV 2x2 binned (SW) 320 x 288 10 : 9 5, 15, 30

WFOV 2x2 binned 512 x 512 1 : 1 5, 15, 30

WFOV unbinned 1024 x 1024 1 : 1 5, 15

Passive IR 1024 x 1024 1 : 1 5, 15, 30

Page 28: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect

イメージのフォーマット

MJPG – JPEG 圧縮

NV12 – YYYY..UVUV..

YUY2 – YUYVYUYV..

BGRA – BGRABGRA..

16-bit 深度 – ミリメートル単位の距離情報

16-bit IR – グレースケールの輝度情報

Page 29: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect

カメラ座標

Page 30: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect

座標空間と座標変換

Page 31: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect

IMU の開始と停止

Page 32: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect

IMU サンプリングとデータアクセス

Page 33: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect

IMU のデータ構造と座標系

温度 (摂氏) float

加速度データ (x, y, z) float[3]

加速度タイムスタンプ (µs) uint64

角速度データ (x, y, z) float[3]

角速度タイムスタンプ (µs) uint64

Page 34: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect

フレームの記録と再生

https://www.matroska.org/

Page 35: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect

k4a_playback_***

インターフェイス相関図

k4a_device_get_installed_count()

k4a_device_open()

k4a_device_start_cameras()

k4a_device_start_imu()

k4a_capture_get_XXX_image()

k4a_transformation_XXX_image_to_XXX_image()

k4a_calibration_Nd_to_Nd() k4a_record_create()

k4a_record_write_XXX()

k4a_playback_open()

k4a_playback_get_XXX()

k4a_image_get_buffer()

k4a_image_create()

Page 36: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect

レコーディング API

Page 37: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect

再生 API

Page 38: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect

深度カメラとプロジェクションに関する注意

Page 39: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect

強度、反射、回折、干渉

Page 40: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect

デイジーチェイン

Page 41: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect

ソフトウェア実装Speech

Page 42: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect

Windows Audio スタック

Page 43: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect

Speech (スピーチ→テキスト)

Page 44: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect

ソフトウェア実装Body Tracking

Page 45: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect

一般的な処理フロー

• +IMU を始動

カラー/ /IR など• +IMU サンプリング

Page 46: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect

k4a_playback_***

インターフェイス相関図 k4abt_frame_***

k4abt_tracker_***

k4a_device_get_installed_count()

k4a_device_open()

k4a_device_start_cameras()

k4a_device_start_imu()

k4a_capture_get_XXX_image()

k4a_transformation_XXX_image_to_XXX_image()

k4a_calibration_Nd_to_Nd() k4a_record_create()

k4a_record_write_XXX()

k4a_playback_open()

k4a_playback_get_XXX()

k4abt_tracker_queue_capture()

k4abt_tracker_pop_result()

k4abt_frame_get_XXX()

k4a_image_get_buffer()

k4a_image_create()

Page 47: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect

トラッカーを作成

Page 48: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect

深度フレームを取得 (ボディトラッキングに必要)

Page 49: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect

トラッカーキューからボディフレームを取得

Page 50: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect

トラッカーからボディインデックスを取得

Page 51: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect

イメージのフォーマット

8-bit ボディインデックス – 人の分類

(K4ABT_BODY_INDEX_MAP_BACKGROUND=255)

カスタムイメージバッファ

例) xyz_image – 各ピクセル [X, Y, Z] / int16_t (合計 6 バイト)

Page 52: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect

Tips! –開発のポイント (その1)

Page 53: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect

Tips! –開発のポイント (その2)

Page 54: CM04 Azure Kinect DK 徹底解説...de:code 2019 CM04 Azure Kinect DK 徹底解説 ~進化したテクノロジーとその実装~ 技術統括室 千葉慎二Ph.D. Azure Kinect

© 2018 Microsoft Corporation. All rights reserved.

本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。

© 2019 Microsoft Corporation. All rights reserved.

本情報の内容 (添付文書、リンク先などを含む) は、de:code 2019 開催日 (2019年5月29~30日) 時点のものであり、予告なく変更される場合があります。

本コンテンツの著作権、および本コンテンツ中に出てくる商標権、団体名、ロゴ、製品、サービスなどはそれぞれ、各権利保有者に帰属します。