ヨガのポーズを機械学習させて、自動で識別させるようにしました。
入力データの準備
ヨガのポーズは実にたくさんあるのですが、まずは識別し易い以下の3ポーズをチョイス。
これらのポーズの画像を10枚ずつ収集して、OpenPoseでスケルトンの座標を取得しました。
ちなみに、OpenPoseとKinectV2で取得できるスケルトンは、以下のようになってます。(OpenPoseはこちらが元ネタです。)
>OpenPose
>KinectV2
KinectV2で取得できない目、耳、背中の位置は使用せず、14点のx,y座標を入力データとしました。また、学習のための前処理として、以下の2つを行いました。
・頭の位置を原点とする
・頭から喉(0番と1番)の距離をもとにリサイズする
こうして得られた入力データを、ちょっと加工して各ポーズ400個に水増ししました。合計1200個なので、まぁまだ少ないですが、いったん進みます。
機械学習
利用したのはKerasで、バックエンドはTensorFlowです。
環境構築は、このサイトにお世話になりました(ありがとうございます)。
Keras、マニュアルも分かりやすかったので、無知でしたが割合すぐに使うことができました。
ただし、無知なのでネットワークをどう組めばいいかは、よく分かりません。
なので、MNISTのサンプルをそのまま使うことにしました。
MNISTは32x32の画像を入力としています。なので、行列サイズを16x16に変更して、各行に14カ所のx,y座標をマッピングしてみました。
半信半疑の感はありましたが、学習させたモデルを使って自分のヨガポーズを分類させてみると、見事に識別できてました。
すーごーいー。
(けもふれ再放送中)