cm04 azure kinect dk 徹底解説...de:code 2019 cm04 azure kinect dk 徹底解説...
TRANSCRIPT
de:code 2019 CM04
Azure Kinect DK 徹底解説~進化したテクノロジーとその実装~
技術統括室
千葉慎二 Ph.D.
Mixed Reality の全体像
• 3D 空間の認識 (深度)
Kinect はただのカメラではない
人の全身の動きをとらえる
Azure Kinect
Development Environment
Azure Kinect DK 開発環境
• Sensor SDK• ローレベルセンサーとデバイスアクセス
• Body Tracking SDK• 3D で身体を追跡する
• Speech SDK• マイクアクセスと Azure クラウド
ベースのスピーチサービス
+Cognitive Vision…
Sensor SDK (機能)
• カラーカメラへのアクセスとモード制御• RGB イメージの取得
• 解像度: 1280 x 720 (16:9)
• 露出、ホワイトバランス、ISO 感度制御
• 深度カメラへのアクセスと各モード制御• 深度イメージ、IR イメージの取得
• 解像度: 1024 x 1024 (1:1) ~ 320 x 288 (10:9)
• FoV 深度モード制御 (NFoV, WFoV, パッシブ IR モード)
イルミネーションと視野
Sensor SDK –機能
• IMU へのアクセス• 加速度、角速度の取得
• カメラストリームの制御• 内部的に同期 (遅延設定可)
• 外部デバイス同期制御 (デバイス間の遅延オフセット設定も可)
• その他各種情報へのアクセス• カメラフレームメタデータ
• デバイスキャリブレーションデータ
Sensor SDK –システム要件
• Windows 10 PC / Ubuntu 18.04 (x64)• Core i3 7000 以降
• Dual Core 2.4 GHz/HD620 GPU 以降, 4GB メモリ, USB3
• シンプルな USB 接続機器 (カメラデバイス)
Body Tracking SDK –機能
• セグメンテーション• それぞれの身体を特定
• 固有の ID
• リアルタイムに身体動作を追跡• 24 箇所の骨格情報
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
Body Tracking SDK –システム要件
• Windows 10 PC • Core i5 以降
• NVIDIA GPU • GTX 1070 以降
• CUDA10.1, cuDNN v7.5
Speech SDK, Cognitive Services – Azure 連携
スピーチ→テキスト
スピーチ翻訳
テキスト→スピーチ
コンピュータ ビジョン
フェイス
ビデオ インデクサー
コンテンツ モデレーター
カスタム ビジョン
v2 センサーからの進化
Azure Kinect DK
Software Implementation
ソフトウェア実装Sensor
一般的な処理フロー
インターフェイス相関図
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()
Azure Kinect DK の初期化
カメラを構成して始動、使い終えたら停止
キャプチャーとイメージアクセス
キャプチャーとイメージアクセス
イメージのフォーマット
フォーマット 解像度 縦横比 フレームレート
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
イメージのフォーマット
MJPG – JPEG 圧縮
NV12 – YYYY..UVUV..
YUY2 – YUYVYUYV..
BGRA – BGRABGRA..
16-bit 深度 – ミリメートル単位の距離情報
16-bit IR – グレースケールの輝度情報
カメラ座標
座標空間と座標変換
IMU の開始と停止
IMU サンプリングとデータアクセス
IMU のデータ構造と座標系
温度 (摂氏) float
加速度データ (x, y, z) float[3]
加速度タイムスタンプ (µs) uint64
角速度データ (x, y, z) float[3]
角速度タイムスタンプ (µs) uint64
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()
レコーディング API
再生 API
深度カメラとプロジェクションに関する注意
強度、反射、回折、干渉
デイジーチェイン
ソフトウェア実装Speech
Windows Audio スタック
Speech (スピーチ→テキスト)
ソフトウェア実装Body Tracking
一般的な処理フロー
• +IMU を始動
カラー/ /IR など• +IMU サンプリング
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()
トラッカーを作成
深度フレームを取得 (ボディトラッキングに必要)
トラッカーキューからボディフレームを取得
トラッカーからボディインデックスを取得
イメージのフォーマット
8-bit ボディインデックス – 人の分類
(K4ABT_BODY_INDEX_MAP_BACKGROUND=255)
カスタムイメージバッファ
例) xyz_image – 各ピクセル [X, Y, Z] / int16_t (合計 6 バイト)
Tips! –開発のポイント (その1)
Tips! –開発のポイント (その2)
© 2018 Microsoft Corporation. All rights reserved.
本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。
© 2019 Microsoft Corporation. All rights reserved.
本情報の内容 (添付文書、リンク先などを含む) は、de:code 2019 開催日 (2019年5月29~30日) 時点のものであり、予告なく変更される場合があります。
本コンテンツの著作権、および本コンテンツ中に出てくる商標権、団体名、ロゴ、製品、サービスなどはそれぞれ、各権利保有者に帰属します。