スポーツとITを融合させてみよう、と空いた時間に取り組み始めてから約2年。
これまで色々と試して来たことをQiitaに整理・まとめて、ご意見も聞きながら有効活用化まで持って行こうと思っています。
##命題
スポーツをITするにあたり、2つの命題を掲げて進めていきたいと思います。
- 過去の自分と比較してどうなのか?=上達の定義
- 他人と自分を比較してどうなのか?=勝利の方程式
この2つの命題をクリアするため、我流理論に基づきながら、過去に実践したデータ&プログラムを検証していきたいと思います。
##上達の定義
上達の内容には、以下の2つの条件があると考えています。
1.過去よりもフォームが良くなること。
2.スコアやスタッツ、パフォーマンスが過去よりも良くなっていること。
単発的な状況に一喜一憂せず、長期間におよぶ練習・試行錯誤の結果が、実戦の対戦スコアや個人成績(スタッツ)にどのように影響するか、をデータ化し、次の方法を考えていくべきだと思っています。
##フォームをデータ化する
約1年半前に登場した「OpenPose」。これを見た時に、「スポーツ選手のフォームチェックが出来るかも」と考えました。ただしオリジナル「OpenPose」はGPU必須、またスポーツには利用できないポリシーとのこと。
とはいえ、試してみないことには実用性があるかわからない、と思い、結果的に行き着いた先は、最近Qiitaで教えて頂いた「Tensoleflow.js」の「posenet」でした。
https://github.com/tensorflow/tfjs-models/tree/master/posenet
*demoではyarnを利用してますが、将来的に考えて、自分はローカルPCブラウザで動作するよう、少しだけ手を加えました。ほぼそのままで動作します。guiとstatsはカットしました。あとは、console.logを見て出たエラーを潰していけばローカルで動作します。
Tensoleflow.js posenetの使用感
GPUの無い4core、8MBメモリーのカメラ付きノートPCで実験。GPUを使っているのかと思うくらいのスムーズ感です。ただ、少し誤検出が多い気がします。ターゲットが少し遠いと誤検出が多くなる感じがしました。GPU環境では誤検出が少なくなるのか、は不明です。
ともあれ、GPUの無いPCブラウザで、リアルタイム映像と静止画像から、ストレス無く簡単に姿勢ボーン座標検出が出来るようになったので、精度が上がれば活用シーンが多くなると思います。
そんなわけで、とあるトッププロゴルファーのアドレスフォームをposenetしてみました。
実際にスマフォ画面に映し出された自分のアドレスと、このトッププロの姿勢ボーンを重ねて表示すれば、同じような構えになった時に、画面が赤く反転する、などといったことが出来そうです。
また、様々なトッププロの姿勢ボーンを蓄積すれば、自分と似た構えのプロ、似たスイングのプロ、を判定することも可能と思います。
撮影アングルには要注意ですが、これらに加えて、自分個人の姿勢データが蓄積されれば、フォームが良くなっている、と比較しやすくなるのではないでしょうか。「上達の定義」において、この「posenet」が大きな役割を果たしてくれるでしょう。