Microsoftの人物姿勢推定技術の概要

Kinect向けの人物姿勢推定技術は、Microsoftの研究所のJamie Shotton氏を中心としたチームにより開発されました。これは、機械学習アルゴリズムの1つ「Random Decision Forests(他にもいくつか呼び方があり、筆者のような研究者よりの方は「ランダムフォレスト」と呼ぶ事が多いです)」を応用した、「人体パーツ識別技術」により実現されています。様々な人体姿勢パターンを網羅している実写およびCGから大量に用意した距離画像群を入力として学習しておいたRandom Decision Forestsを用い、動距離画像の各フレームにおいて、「各画素がどのパーツに属するか」を識別することにより実現されています。このようなデプスセンサを用いたリアルタイム人物姿勢推定技術は、距離画像の動画を入力として各人物の3D骨格を時系列的に追跡するので、「スケルトントラッキング(骨格追跡)」と呼ばれることもあります。

Kinectの人物姿勢推定は、以下のようなフローでリアルタイム処理を行います。

筆者注:ここからは公開されている技術資料をもとにした説明であり、本当にこのフローのとおりにすべて実装されているかまでは保証できません。

図:人物姿勢推定の処理フロー(テスト時)

全体の処理手順をまず概観しますが、Kinectセンサから得られた毎フレームの距離画像1枚を入力とし、そのフレームの人物の3D関節位置を出力として推定するという手順です。

このリアルタイム処理の実現を可能にした重要な処理が、「Random Decision Forestsによるパーツ識別」です。距離画像中の姿勢推定を行いたい対象の1人の人の範囲のうち、各画素が「人体のN個のパーツ(部位)のうち、どのパーツに所属しているかのラベル(=パーツ番号)」を高速に推定します。

図で色分けされているものが各パーツのラベルで、Kinectの場合は25クラス程度のパーツに分割して、25クラスのラベルを識別できるRandom Decision Forestsを学習します。

Random Decision Forestsは決定木(Decision Tree)を複数個まとめてバギングという学習を行うことで、精度の高い識別器を実現したもので、その細かい原理についてはここでは省略しますが、ここでのRandom Decision Forestsの使われ方は、機械学習の用語で言うと「複数クラス識別器」という種類のもので、N個のクラスラベルのうちどのクラスに所属するか(ここでパーツ番号)を識別するものとして利用します。

コンピュータビジョンでそれまで応用されてきた他の複数クラス識別器と比べて、Random Decision Forestsの識別処理は非常に計算が速く済むのが特徴です。また大量の学習データを元にしっかり学習しておけば、識別処理の計算時間は短いまま高い識別精度になる性質を持ちます。

林 昌希(はやし まさき)

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

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

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