本ページでは、MCDC ツールを利用した応用例として、モーションキャプチャデータを用いて人物の動作を判別する手順を紹介します。
この実験では、CMU Graphics Lab Motion Capture Database にて公開されているデータを利用します。
The data used in this project was obtained from mocap.cs.cmu.edu.
The database was created with funding from NSF EIA-0196217.
実験では、下記の 4 種類の subject に該当するデータを利用しました。
Subject # | Session Description | # of trials |
3 | walk on uneven terrain | 4 |
5 | modern dance | 20 |
7 | walk | 12 |
9 | run | 12 |
Total | 48 |
それぞれのデータ系列に対して、モデル推定を行います。モデル推定を行う際のパラメータは以下のように設定しました。
項目 | 設定値 |
状態空間の次元数 | 2 |
状態空間のグリッドの範囲 | 各軸について -30 から 30 まで 2.0 刻みに設定 |
状態遷移の平均値関数の初期値 (アンカーモデル) |
@(x) x(1, :), ...
@(x) x(2, :) ...
|
状態遷移の分散共分散関数 | 状態空間の x1 軸方向について RBF カーネルを利用。x2 軸方向は独立とした |
観測の平均値関数の初期値 (アンカーモデル) |
@(x) zeros(1, size(x, 2)), ...
@(x) zeros(1, size(x, 2)), ...
@(x) zeros(1, size(x, 2)) ...
|
観測の分散共分散関数 | 状態空間の x1 軸方向について RBF カーネルを利用。x2 軸方向は独立とした |
粒子フィルタで用いる粒子数 | 500 |
MCMC 反復回数 | 200 |
本実験用のソースコードは samples/MotionCapturePMCMC2Estimation.m です。
実験プログラムを起動するには、Matlab で以下のように実行します。
addpath('samples');
MotionCapturePMCMC2Estimation;
推定モデルを用いて観測データ系列を推定した結果の例を以下のグラフに示します。グラフは Subject #3, Trial #1 のデータに対するモデル推定の結果です。赤色の実線が観測データ、青色の実線が推定モデルによる推定平均です。青色の破線は推定平均±標準偏差の幅を表します。
観測データ系列の推定結果 (順に y1, y2, y3)
MCMC iteration ごとの推定モデルの対数尤度を次のグラフに示します。
推定モデルをデータ系列に当てはめることで、そのデータに対する推定モデルの尤度を計算できます。
モデル推定に用いたデータ系列と、そのモデルを当てはめるデータ系列が互いに似た動作であれば、そうでない場合に比べて、高い尤度となることが期待されます。
このことから、事前に推定されたそれぞれのモデルを判別対象のデータ系列に当てはめて尤度を求め、尤度が最大となった推定モデルの subject を判別結果とします。
今回の実験では、利用した 48 系列のデータを用いて判別を行います。自分自身から学習された推定モデルは判別の際には除外します。
判別実験用のソースコードは samples/MotionCapturePMCMC2Test.m です。
判別実験を行うには、Matlab で以下のように実行します。
addpath('samples');
MotionCapturePMCMC2test;
判別実験の結果の confusion matrix を以下の表に示します。
行方向が真の subject, 列方向が推定された subject で、行列の値は、該当する trial の数を表します。
対角線上の trial が判別に正解したものになります。
Subject # | 推定された値 |
3 | 5 | 7 | 9 |
真の値 | 3 | 1 | 2 | 1 | 0 |
5 | 0 | 5 | 3 | 12 |
7 | 0 | 1 | 7 | 4 |
9 | 0 | 1 | 0 | 11 |
Subject ごとの正解率、全体の正解率を以下にまとめます。
Subject # | Session Description | 正解数 | トライアル数 | 正解率 |
3 | walk on uneven terrain | 1 | 4 | 25.0% |
5 | modern dance | 5 | 20 | 25.0% |
7 | walk | 7 | 12 | 58.3% |
9 | run | 11 | 12 | 91.7% |
合計 | 24 | 48 | 50.0% |
この実験では、モデル推定の際に反復回数を 200 回と比較的小さく設定しましたが、尤度がまだ上昇していることから、反復回数を大きく設定することでよりよいモデルが得られる可能性があります。
Modern dance の判別率が他と比較して低い理由は、trial ごとに動作の内容が大きく異なることが考えられます。
この実験を行った計算機環境は以下のとおりです。
項目 | 値 |
CPU | Intel Xeon X5680 @ 3.33GHz |
Memory | 48GB |
各 trial のモデル推定において MCMC iteration 一回に要した平均処理時間は以下のとおりです。
モーションキャプチャデータの系列長は trial ごとに異なるため、長い系列の trial ほど処理時間が長くなります。
フレームあたりの所要時間は、どの trial でも概ね同じになっています。
Subject # | Trial # | frames | 所要時間 | フレームあたり所要時間 |
03 | 01 | 432 | 14.5221 | 0.033616 |
03 | 02 | 365 | 12.4019 | 0.0339778 |
03 | 03 | 4563 | 103.582 | 0.0227004 |
03 | 04 | 4722 | 106.32 | 0.0225159 |
05 | 01 | 598 | 13.702 | 0.022913 |
05 | 02 | 1123 | 25.4127 | 0.0226293 |
05 | 03 | 434 | 10.3058 | 0.0237461 |
05 | 04 | 1199 | 27.1822 | 0.0226707 |
05 | 05 | 915 | 20.7931 | 0.0227247 |
05 | 06 | 885 | 20.1252 | 0.0227403 |
05 | 07 | 1191 | 27.0927 | 0.0227479 |
05 | 08 | 721 | 16.4632 | 0.0228338 |
05 | 09 | 1143 | 26.0043 | 0.0227509 |
05 | 10 | 817 | 18.893 | 0.0231248 |
05 | 11 | 591 | 14.0109 | 0.0237071 |
05 | 12 | 1354 | 31.1817 | 0.0230293 |
05 | 13 | 1095 | 25.5533 | 0.0233363 |
05 | 14 | 642 | 15.2526 | 0.0237579 |
05 | 15 | 540 | 12.3913 | 0.0229469 |
05 | 16 | 525 | 12.0692 | 0.022989 |
05 | 17 | 1043 | 23.6023 | 0.0226292 |
05 | 18 | 1829 | 41.3814 | 0.0226252 |
05 | 19 | 860 | 19.5648 | 0.0227498 |
05 | 20 | 1095 | 24.8268 | 0.0226729 |
07 | 01 | 316 | 7.39575 | 0.0234043 |
07 | 02 | 329 | 7.68029 | 0.0233443 |
07 | 03 | 415 | 9.57767 | 0.0230787 |
07 | 04 | 449 | 10.4097 | 0.0231842 |
07 | 05 | 517 | 11.9479 | 0.0231101 |
07 | 06 | 417 | 9.6921 | 0.0232424 |
07 | 07 | 379 | 8.75053 | 0.0230885 |
07 | 08 | 362 | 8.43658 | 0.0233055 |
07 | 09 | 306 | 7.14654 | 0.0233547 |
07 | 10 | 301 | 7.08825 | 0.023549 |
07 | 11 | 315 | 7.47208 | 0.0237209 |
07 | 12 | 244 | 5.7347 | 0.0235029 |
09 | 01 | 148 | 3.63328 | 0.0245492 |
09 | 02 | 130 | 3.23982 | 0.0249217 |
09 | 03 | 128 | 3.17946 | 0.0248395 |
09 | 04 | 137 | 3.39788 | 0.024802 |
09 | 05 | 143 | 3.53043 | 0.0246883 |
09 | 06 | 141 | 3.48476 | 0.0247146 |
09 | 07 | 138 | 3.42433 | 0.024814 |
09 | 08 | 128 | 3.18725 | 0.0249004 |
09 | 09 | 152 | 3.72542 | 0.0245093 |
09 | 10 | 132 | 3.27959 | 0.0248454 |
09 | 11 | 165 | 3.96284 | 0.0240172 |
09 | 12 | 1918 | 43.3177 | 0.0225848 |