大量のデータを用いた、Random Decision Forestsの学習

すでに解説をしたとおり、Kinectの人物姿勢推定では画素ごとにパーツのラベル番号をRandom Decision Forestsに学習させるわけですが、そのデータセットには「(1)人の姿勢の変化」、「(2)人の形状の変化(体型)」が十分に含まれていないと、性能が良いRandom Decision Forestsは学習できません。そこで、Microsoftの場合は、姿勢と体型をたくさん変えた距離画像をたくさん集めてそれをデータセットにしています。また、そういう実際に撮影した距離画像だけだとバリエーションがまだまだ足りないので、CGで人体モデルの形状と姿勢をたくさん変化させて仮想的な距離画像を大量に生成しています。このようにして実データと仮想データが混合された、超大規模のデータセットを用いてRandom Decision Forestsを学習しています。データの規模が巨大なので、モデルである数十台のPCでPCクラスタを組み、並列計算による高速計算を行います(数日かけて学習が終るそうです)。

次の図は、合成データの生成の手順をまとめたものです。最初にモーションキャプチャシステムで、まず様々な動きをキャプチャして、姿勢を大量に用意します。また、人の形をしたモデルを様々な体型のものを複数分作成しておきます。そして、モーションキャプチャしておいた姿勢と複数の体型モデルから超大量のデータ(デプス画像と各パーツのラベル)を取得し、これにより合成データのデータセットが完成します。また、これとは別に実際の人が動いている距離画像をKinectで取得し、各画素にパーツのラベルづけを行ったものもデータセットに加え、最終的な学習用データセットが完成です。

図:学習データセットのための、合成データの作成

最後に、この手順によって、どういった性質のRandom Decision Forestsが学習されたかについておさえておきます。まず、第1の性質として、人間が取りうる豊富な姿勢パターンを、距離画像動画中の1フレームの距離画像だけから高速に推定できていることが特徴です。一枚新しい距離画像が取得されれば、その人がどんな姿勢をしていようが各部位の中心を推定できます。第2の性質として、CGで多くの体型のものをデータセット中に増やしたことで、大量のバリエーションを持つ人間の体型をカバーしています(太った人でも痩せた人でも対応できる)。これらの「姿勢」「体型」の豊富さに対応できる手法であるので、ディスプレイの前に立ってXBOX360のゲームをプレーしている、つまりは自分のカラダの動きそのものをコントローラとして動かしている人の姿勢をよく捉えられるセンサとしての役割を果たせるわけです。

一方で、この手法には制限もあります。たとえば、Kinectは横向きの姿勢を苦手としています。すでに紹介したように画素ごとに「N個の部位のうちどの部位であるか」を識別し、その結果から部位ごとの中心座標を求める仕組みです。 (Kinectの)カメラに映っていない部位が多ければ多いほど、N個全部の部位が距離画像中に映っていませんので、姿勢推定は失敗することが多くなります。とはいえ、カメラに対して正面向きの姿勢のほとんどにおいては、精度よく姿勢推定ができるので、ユーザーの前にディスプレイがあってインタラクションするような用途には、非常に便利に使う事ができるのがKinectだと思います。

以上、機械学習ベースのKinectの姿勢推定について、機械学習一般の話も説明しながら、その手法を詳しく説明してきました。次回以降は、このKinectを生かしたアプリケーション例について紹介していきたいと思います。

林 昌希(はやし まさき)

慶應義塾大学大学院 理工学研究科、博士課程。
動画からのチームスポーツ映像解析プロジェクトにおいて、選手の姿勢の推定、およびその姿勢情報を用いた選手の行動認識の研究に取り組み中。人の振る舞いや属性を理解する「ヒューマンセンシング技術」全般が専門。

有料メルマガ「DERiVE メルマガ 別館」では、コンピュータビジョンの初~中級者のエンジニア向けへの情報を発信中。Point Cloud Libraryについてのセミナーも行うなど、コンピュータビジョン技術の普及やコミュニティ拡大に取り組んでいる。

翻訳書に「コンピュータビジョン アルゴリズムと応用 (3章前半担当)」。