False Positive, Average RMS in Analysis Results of VGB

元ネタ

VGBのAnalysis結果はどう見たらいいのか?

Visual Gesture BuilderはKinect Studioで撮影したClipに対してジェスチャ範囲を指定することでジェスチャを機械学習させるユーティリティです。 機械学習の強化方法には、ユーザがジェスチャ範囲を指定する方法の他に、ClipをVisual Gesture Builderに読み込ませて分析を実行した結果と人間が目で見て判断した結果を突き合わせる方法があります。

後者の強化方法は Analyze と呼ばれていますが、その出力結果が良いのか悪いのかよくわからん!という内容の質問でした。

基本の方針は2つ

ジェスチャの精度を上げるための基本的な方針は以下の2つです

  • False PositiveとFalse Negativeをなるべく少なくする
  • RMS(二乗平均平方根)を小さな値に近づけていく

FPとFNをなるべく少なくする

False PositiveとFalse Negativeはどちらも誤検知のことです。

False Positiveは「検出するべきでは ない 箇所で検出してしまった」ことを指し、False Negativeは「検出するべきで ある 箇所で検出しなかった」ことを指します。質問者が気にしているPrecision(適合率)は「False Positiveがどのくらい小さいか?」を基準とした検出精度です。*1

Visual Gesture BuilderのWhite Paperには「どのくらいのフレーム数で学習させるとFP, FNはどのくらいになるか?」を指標として出した図があります。(White PaperのFigure 3を参照)

おおまかな傾向としてFPはサンプリングするフレーム数が増えれば増えるほど減少しますが、FNについては10000フレーム程度が一番低く、20000フレーム以上読み込ませてもほとんど変化しないようです。

RMSを小さな値に近づけていく

RMSは検出のバラつき具合を表しています。RMSの値が小さいほど、ジェスチャを検出したフレームにズレがないことになります。この値を最小化するにはトレーニング用のClipに対するタグ付け(特に開始と終了のタイミング)を正確に行うことが重要になってきます(辛い!)。

その他豆知識

機械学習全般に言えることですが、機械学習で用いるデータは67%をトレーニング用、33%をテスト用に利用することが推奨されています。Kinect StudioでClipを撮影する場合にも、この割合を意識して複数のデータを取得したほうが良さそうです。

まとめ

Visual Gesture BuilderのAnalyze結果の見方と機械学習の強化方法に関する方針について書きました。 これでジェスチャの認識精度をあげられそうです。やりましたね :)

*1:Precision以外にもRecall(再現率)が検出精度の指標として存在しますが、これは「False Negativeがどのくらい小さいか?」を基準としています