スポーツAI、音×画像認識を用いたボクシングフォームの解析

AIをスポーツの分野で応用するスポーツAI。今回、そのスポーツAIをボクシングのフォーム分析に応用しました。その中での課題解決と得られた効果について紹介していきます。

実現したいこと

・ボクシングの動画の分析時間の短縮
練習ごとに取っているミット打ちの動画の分析を短縮したい。
1ラウンド3分を2回ミット打ちで動画は1日の練習で6分程だが、真面目に分析すると1日30分はかかる。フォームがよく確認できるシーンを探して、スロー再生。その後、過去の動画で類似場面を探して比較。主に優良なシーンを探すのに時間を取られる。

・ボクシングフォームの定量化
「ジャブの時に腕を伸ばしきる」など指摘されたポイントを定量的に測って改善したい。理由は、今までに指摘ポイントが増えたため、見返す時のチェックが大変になってきた。ここをAIに判定してもらって、なるべく楽をしたい。

OpenPoseを用いてTry

OpenPoseとはカーネギーメロン大学(CMU)の Zhe Caoら が「Realtime Multi-Person pose estimation」の論文で発表した、深層学習を用いて人の姿勢を解析してくれる手法。下図のように人の動きを表示してくれるのはもちろん、各パーツの座標も出力してるくれる。

問題点

すげえ、時間がかかる。
1秒解析するのに40分くらいかかってる。
これでは日が暮れる。

挑戦した解決策

音でパンチのタイミングを検出して部分的に解析する

今回の目的はあくまでボクシングのフォームの解析なので、パンチのタイミングさえ保存できていれば良い。下の動画の様にパンチのタイミングで大きな音がなる。この音を検出してそれを元に動画の加工を行うことで解析時間を短縮できる。

音データの解析

pythonを用いて動画からmp3の音声ファイルを抽出、その波形を見ると以下のようになる。

画像1

横軸が時間軸を表していて、縦軸が音の大きさを表している。3分ミット打ち→1分休憩→3分ミット打ちの順番で行なった動画の音声ファイルを用いている。画像から分かるように中央部が凹んでおり、これは比較的静かな休憩時間中を表している。一旦閾値を18000に設定し、それ以上の音がなった瞬間のみ動画からフレームの抽出を実施。その結果14713個あったフレームの中から471個のフレームが抽出された。そしてそれらの画像を出力した。

20000で検出した際の失敗例2

しかし、上の写真のように音を検出した頃にはすでに打ち終わっている画像が続出したので、2フレーム(0.01秒)前の画像を抽出した。


画像2

とまあ、こんな感じで出力されたわけです。

抽出した画像を動画に変換

検出したタイミングを画像で出力し、それを動画に変換。パンチのタイミングだけではフォームをよく分析できないので、音を検出したタイミングから10フレーム前までを連結し動画に出力した。これにより、450MBあった動画を71MBまで削減することができた。

課題

・ボクシングの動画の時間を短縮することには成功したが、軽いジャブなど一部のシーンが消されてしまった。
・データ量がこれでも多く、Openposeでの解析に時間がかかり、目的にあったフォームの定量化が困難なこと。
・フレーム問題。Openposeで座標を出力は可能であるが、画像に写った全ての人物の座標を出力するため、どの座標が誰のものであるかがわからない。

結論

音を用いた検出では動画の時間短縮を行うことができた、しかし、まだ解析時間の短縮が必要であることと、フレーム問題が今後の大きな課題である。








いいなと思ったら応援しよう!