なるように、なる

徒然なつぶやき、備忘録です。

ヨガポーズのクラス分類

ヨガのポーズを機械学習させて、自動で識別させるようにしました。

入力データの準備

ヨガのポーズは実にたくさんあるのですが、まずは識別し易い以下の3ポーズをチョイス。

f:id:Shampagne:20170815145230j:plain

f:id:Shampagne:20170815145244j:plain

f:id:Shampagne:20170815145310j:plain

これらのポーズの画像を10枚ずつ収集して、OpenPoseでスケルトンの座標を取得しました。

ちなみに、OpenPoseとKinectV2で取得できるスケルトンは、以下のようになってます。(OpenPoseはこちらが元ネタです。)

>OpenPose

f:id:Shampagne:20170816095804p:plain

>KinectV2

f:id:Shampagne:20170816095832p:plain

 

KinectV2で取得できない目、耳、背中の位置は使用せず、14点のx,y座標を入力データとしました。また、学習のための前処理として、以下の2つを行いました。

 ・頭の位置を原点とする

 ・頭から喉(0番と1番)の距離をもとにリサイズする

こうして得られた入力データを、ちょっと加工して各ポーズ400個に水増ししました。合計1200個なので、まぁまだ少ないですが、いったん進みます。

 

機械学習

利用したのはKerasで、バックエンドはTensorFlowです。

環境構築は、このサイトにお世話になりました(ありがとうございます)。

Keras、マニュアルも分かりやすかったので、無知でしたが割合すぐに使うことができました。

ただし、無知なのでネットワークをどう組めばいいかは、よく分かりません。

なので、MNISTのサンプルをそのまま使うことにしました。

MNISTは32x32の画像を入力としています。なので、行列サイズを16x16に変更して、各行に14カ所のx,y座標をマッピングしてみました。

半信半疑の感はありましたが、学習させたモデルを使って自分のヨガポーズを分類させてみると、見事に識別できてました。

すーごーいー。
(けもふれ再放送中)