ishigenの技術ブログ

卓球×テクノロジー、機械学習

卓球の動画でoponposeを試す

今回は卓球の映像をopenposeで試してみます。windowsでのデモ環境で動かしています。本当はubuntuで動かしたいんですが、今入ってるのがCUDA9.2とかでバージョンを合わせるのがめんどくさそうでやめました。

環境

Windows10
CUDA8
cuDNN5.1

openpose

github.com
openposeってのは、人間の写真や映像から骨格を推定してくれるやつです。

とりあえず試してみる

クラウドをあさったら発見した三年前のサーブ練習の動画から。


上半身はそれなりの精度で推定されています。ただ、台が邪魔で上半身しか映らないので、下半身の推定はうまくできていません。


次は全身が移るような動画で試してみます。


この動画だと全身が映っているので、うまく推定できているかと思います。

これから何ができるか

今回試したように、もとの動画の上に推定した骨格を上乗せして表示させることもできますが、骨格の推定値を二次元の数値として出力することも可能です。
例(二つ目の動画、1フレーム目、1人目の推定された骨格の画像内での位置)
[495.121,348.579,0.879666,492.466,382.422,0.893065,471.505,384.969,0.919974,468.875,411.349,0.84414,474.084,442.729,0.886111,513.368,377.308,0.87303,536.901,408.693,0.759093,536.907,437.42,0.658357,489.803,445.328,0.889805,495.011,487.14,0.854795,505.463,531.502,0.618641,513.193,442.737,0.871228,505.451,487.17,0.790325,505.443,531.604,0.614839,492.402,345.924,0.988282,502.919,345.905,0.921015,487.076,351.115,0.812774,508.121,351.143,0.432742]


このデータを使えば以下のことはできそうな気がしています。

  • どれだけフォームが固まっているかを計測
  • 各打球ごとの技術ラベル判定(ドライブ、カット、サーブetc)


個人的には基本練習でどれだけ同じフォームで打球できるかが卓球の上達において非常に重要な指標だと思っているので、求めてみる価値はあると思っています。具体的な計算方法はまだわかりません。どうやって計算するか考えてみます。


ラリーの中でどの技術を使ってどっちが得点したかを判定できるようになれば、試合をしっかり振り返りたいやる気のある人の集計作業が非常に楽になります。分析の手法としては、今後の分析も考えるとCNNを使うのがベターかと思います。まだデータ数が足りませんが、取り組んでみたいと思います。


以上です。いい結果が得られればまた書きます。