Wafty’s diary

情熱は止まらない 私達は進み続ける

Kinect -3次元姿勢推定の技術-

最近、様々な場面で 『Kinect』 というものをよく耳にします。

とはいうのも、先日の2013年5月21日、マイクロソフトが新たに家庭用ゲーム機 『Xbox One』 を、2013年11月に発売すると発表したことで、再設計された「Kinect」が標準付属されることに注目が集まっているからです。




Kinectキネクト)は元々、マイクロソフトXbox 360向けに開発したコントローラを用いずに操作ができる体感型のゲームシステムで、ジェスチャー音声認識によって直観的で自然なプレイを実現しました。


このXbox 360に搭載されたKinectの技術はゲーム界に衝撃を与えました。
何故なら、3次元姿勢推定の技術はまだまだ発展途上であり、オフラインであとで時間をかけて出来るものは
ありましたが、リアルタイムにトラッキングできるものはこれまで無かったからです。
しかし、Kinectの登場によって3次元姿勢推定のリアルタイムトラッキングが実用化レベルまでに至りました。

したがって、ゲーム界に留まらず3次元姿勢推定を研究する様々な技術分野から高い関心を集めています。
KinectXbox 360の発売直後からユーザーにより解析が進められ、パソコンで動作させるためオープンソースのドライバが開発され、さまざまな応用が行われています。

その動きに対して、マイクロソフトは「KinectのUSB接続はあえて暗号化されていない」事を発表し、

Xbox 360内部のアルゴリズムにアクセスして使用すること」
「チート行為のためにKinectXbox 360の間にデバイスを設置すること」

などはハッキングとして扱う事を条件に、それ以外の動き(独自のプログラムなど)については容認する姿勢を明らかにしました。このKinectを利用しゲームに限らず医療や障害者への支援などに活用されています。





そんな注目されるKinectですが、距離画像取得後にプレイヤーの3次元姿勢を取得する仕組みについて
日本語で書かれてある記事が意外にも少なかったので、Webで得られた情報を基に、簡素ながらまとめました。



仕様
RGBカメラ、深度センサー、マルチアレイマイクロフォン、および専用ソフトウェアを動作させるプロセッサを内蔵したセンサーがあり、プレイヤーの位置、動き、声、顔を認識することができる。これにより、プレイヤーは自分自身の体を使って、直観的にビデオゲームをプレイすることができる。
常にプレイヤーの位置、身長を測定し、最適なプレイができるよう上下の角度の自動調整が行われる。
Video KinectKinectを使用したビデオチャット)にも対応した映像センサーも装備している。


本体前面にKinectセンサー
(動作中に青白く光るRGBカラー映像認識用カメラ1基、奥行き測定用赤外線カメラ1基、赤外線照射発光部(IRエミッタ)1基の三つの光学系センサーと音響センサーとして、4本のマルチアレイマイク) が並ぶが、
このうち、三つの光学系センサーによってユーザーの奥行き検出を行う。
奥行きの検出方法は1.のとおりである。



1. 距離画像の取得
Kinectのカメラから、毎フレームごとの距離画像を取得する。
Kinectのカメラは以下の3つの素子が外界と光のやりとりを行う。

1. 赤外線のStructured light照射素子
2. 赤外線カメラ
3. RGBカメラ

Structured Lightとは、赤外線の点パターンを照射しそれを撮影することで、
対象の形状変化をそのパターン変化から取得するというもの。「パターン照射方式」と呼ばれる。
3次元スキャナなどで使われている方法で、あるパターンをもったレーザー光線を対象にあて、
反射する光のパターンのひずみで、距離を測定する。

イメージ 1

これにより、深度(各点の奥行き)を含めた画像である「距離画像」を取得する。



2. 体の各部位の推定(各フレームごと)
1.で取得した距離画像を用いて、先に用意してある決定木により各部位のどこに相当するかの識別を行う。
Kinectでは20の部位に分けてその20の部位をトラッキングしていると言われている。
ここでも1.と同様1フレームごとの処理であり、時間情報はまだ一切使っていないことに注意します。
窓ごとにその窓が体のどの部位に相当するかの計算を、
予め用意した識別器(決定木とのこと。恐らくRandomised Decision Forest)により高速で行います。


3. スケルトンの仮説作成
2.で得られた毎フレームごとに検出された各部位を用いて、運動力学的な拘束と、
時間的な一貫性が保たれるように、3Dでの部位の配置(関節結合)を抽出する。
これはオクルージョンして見えていない部分は考慮されていないので完全な骨組み(スケルトン)ではなく、
あくまで距離画像から識別できた表面に見えている部位のみ集めた仮説なもの。
また、複数プレイヤーの場合、この時点ではプレイヤーごとの区別はついていない。


4. スケルトンのトラッキング(仮説から最終的な結果を推定)
3.で得られた関節結合の仮説から、最後に実際の人間の骨組み(スケルトン)の動きを推定する。
各仮説から確率的に一番もっともらしい3D配置を計算し(詳細は不明)、プレイヤーごとのスケルトンの推定が
ここで確定する。この確定したスケルトンの配置が、Xbox360のゲームに入力として入っていく。



また、kinect内部には3軸加速度センサー、64MBのDDR2 SDRAMメインメモリ、
信号処理専用プロセッサが内臓されている。

kinectは、主にプレイヤーの動きを読み取って合成するモーションキャプチャという技術を使用しているが、
一般的なモーションキャプチャとは異なり、通常のモーションキャプチャ時に着用する特殊なマーカー付き
スーツと、マーカー検出時に使用するトラッカーは必要としない。カメラに被写体を映す事でプレイヤーから
kinectまでの距離を計測し、プレイヤーの骨格のさまざまな動きを検出して、ゲーム内のキャラクターの
動きにリアルタイムに反映させることが可能となる。多人数による同時マルチプレイにも対応しており、
プレイ人数はソフトによって異なる。
Kinect センサーを使用する際にはデータ保存機器の空き容量が約256MB必要となる。

Kinectの当初の仕様は内部に認識した情報を処理するプロセッサを内蔵しないものであった。
これは、Kinectが単なるセンサーに近いものであったことを意味する。
しかし、2009年夏頃にソフトウェアデベロッパに渡された初期開発キットで、Xbox360側でのKinect負担が
非常に大きいものだと判明する。具体的にはメインCPU3コアのうち1コアをほとんど占有してしまうほどであり、
その後の改良で占有率は下がったもののまだXbox360側の負担は大きく、
結果としてKinect側にプロセッサを搭載する運びとなった。
このプロセッサは認識に必要なすべての処理をするのではないが、そのほとんどを行うものである。
その結果Xbox360側の負担は大きく下がったもののKinect自体のコストが上がり、
コンシューマゲーム機の付加物の限界相場といわれる100ドル/1万円以内というこれまでのセオリーに
外れることとなる。

だが、しかしマイクロソフト
「かつてSEGAメガドライブ用の周辺機器としての失敗作『スーパー32X』のようにはならない」と証言している。






以上、Kinectに関して、距離画像取得後にプレイヤーの3次元姿勢を取得する仕組みについて
Webで得られた情報を基に、一通りまとめてみました。


3次元姿勢推定の技術がまだまだ発展途上の中、このKinectの登場は
Human-Computer-Interactionの世界に起こった一大革命と言っても過言ではないはずです。





そんな中、約一か月前の2013年5月21日マイクロソフトは新たに
家庭用ゲーム機Xbox One2013年11月発売する事を発表しました。
(欧米など21の国・地域で2013年11月に発売予定。日本でも発売される予定だが、発売時期等は未定。)

ちなみに、Xbox Oneは、Xbox 360の次世代機種。
Wi-Fi Directを採用し、Skypeによる複数間のビデオチャットや「Snap」機能により
ゲームと並行して各エンターテインメントを同時に行えるようになっています。
ゲームパッドは「フォースフィードバック」機能(インパルストリガー)など40以上の改良がされました。
「Twitch」によるライブストリーミングや「UPLOAD STUDIO」を使い、録画・編集・公開も可能とのことです。


Xbox Oneでは、再設計されたKinectが標準搭載され、ジェスチャー音声認識や顔認識・トラッキングなどに
使われています。このKinectには赤外線パターンを人体に照射して赤外線カメラで撮影する機能が搭載され、
通常のカメラの情報と組み合わせることで 人体の心拍数を測定できるようになった上、暗闇でも認識できるようになり、奥行きを高精度に認識できるようになった。奥行き認識は変調された赤外線が照射され物体に反射して撮影されるまでの時差を利用したTime of Flight法で従来のドットパターンの赤外線とは異なるそうです。
通常のカメラも解像度1080pと性能がアップしており、従来比6割アップの広角化となったことで、
6名までの同時認識が可能となりました。スタンバイ状態でも24時間会話を認識しており、話しかけるだけで
本体を起動させることができます。コントローラー正面にも赤外線LEDがあり、それを赤外線カメラで撮影して
ユーザーを識別し、Xbox Oneゲームパッドの位置も検知するようになりました。
また、Kinectのシステムは、常にデータを集めアルゴリズムを向上させているとのことです。


Xbox Oneの名前の由来は、
「全てのエンターテインメントをこの1台に集約させる」ことを意味するとされています。


再設計されたKinectが標準搭載される事で、従来のKinectよりも更に高精度かつ多機能なものとなっています。
多方面の技術分野から再びKinectに注目が集まっています。

今後の動きに注目したいところですね。