見出し画像

AIでスポーツをもっと楽しく、もっと科学したい[Sports x Tech]

このnoteについて

初めまして。技術を使ってスポーツをもっと楽しく、もっと科学すること、スポーツに対する最新技術を広めることを目指してnoteを書いていこうと思います。

最初のうちは「ポーズ推定のAI技術を元に可視化できること、分析できることをなるべく簡単に表現したり、誰でも使えるようにしていきたい」と思います。

初回は、姿勢推定と重心推定です。下の奴が誰でもできるようになります(多分)。

最新AIの技術的な内容の深掘りよりはスポーツの分析を進めていきます。休日にゆっくり進めていくため、不定期更新です。

第二報はこちらです。(実行コードも刷新されているので、こちらをお使いください。2019/5/1)

想定している読者

・スポーツ分析をしてみたいという学生や社会人の科学者・IT技術者
・簡単に自分の動きを分析・評価してみたいスポーツマン

今回できるようになりたいこと

・動画に対してポーズ推定ができるようになること
・重心位置と足(くるぶし)の位置を表示できるようになること

なんで重心と踝なのか?

重心と踝の位置を表示することで、
・人を投げる時のバランスや相手との距離がどうか?
・スノボで跳ぶ瞬間にどのくらい重心がずれていたか?
・ボルダリングで上手い人はどういうバランスで壁を登っているか?
がより直感的にわかるようになるのではないか?と考えています。
(だいぶ自分の好きなスポーツ贔屓です)

下図は稚拙ながら僕が登る時の足の位置と重心位置です。

AIなら何でもできるんでしょ?

できません。今回の例では「人間っぽいよねっていうところに骨格を当てはめる」ことまでがAIが頑張ってくれることです。
今回の技術でも、OpenPoseで調べると大体が「姿勢推定してみた!できた!楽しい!!」で終わっていて、「そこから何を見つけたか?」というものが学術ベース以外では見つからず、一般人には使いづらい状態でした。
じゃあ価値を出すには?というと、あとはデータを綺麗にしつつ、価値がありそうな部分を抽出していきます。データに価値を見いだすのは研究者やスポーツマンの役割です。
(そのうち、価値がありそうな部分がどう良いのか?などをAIによる判定に置き換えていきたい!と思っています。)

やってみよう

前置きが長くなりましたが、実行してみましょう。
下記のリンクをクリックして、googleアカウントにログインします。ファイルタブからドライブにコピーを保存を押して、説明を読みながら実行してください。
(注意書きが出るので不安な方は新しいアカウントを作成して利用ください)
https://colab.research.google.com/drive/1VO4TGJHKXnRKgiSAsNEeQcEHRgzUFFv9

なんで公開しようと思ったか?と、ちょっと技術的な話と。

純粋に、「こんな技術がタダで転がってて、それを実行でき環境すらもタダなんてすごい!いろんな人が使うことでスポーツ分析が広がって欲しい!」と思ったからです。
Kinectで動作が計測できるようになった時も、すごい時代だな〜!って思ったのですが、まだまだ制約がたくさんありました。しかし、姿勢推定AIは過去の動画すらも参考データに変えてしまえる、簡単に手に入るなどなど、適用の可能性がすごく広がった技術になります。
ただ、前述の通りに、この技術が2016年に公開されて以降、なかなかOpenPoseで調べても、スポーツ応用の直ぐに使える面白い事例がなかなか見当たらず、勿体無い…と思ったからです。(修正:調べ直すと研究ベースでは凄い論文が沢山ありました。)

そして、公開することでいろんな人たちの分析視点が集まって、どんどん精度の高い分析ができるようになると嬉しいです。

利用している姿勢推定AIについて

画像中の人間に対して、姿勢を推定するAI技術の元はCarnegie Mellon University(CMU)のOpenPoseというプロジェクトです。その派生であるtf-pose-estimationを動かしています。
tf-pose-estimaterはApache2.0で商用利用可能でした。ライセンス規約をご覧ください。(2019/6/21修正)

現状の精度について

まず、ヘッダー写真やgifからもお分かりと思いますが、以下のような問題があります。なるべく綺麗に人が写っている動画を使いましょう!
・引っくり返った人は推定が難しい
・木なども人間っぽさを抽出してしまう

重心位置の推定方法について

阿江 通良, 湯 海鵬, 横井 孝志「日本人アスリートの身体部分慣性特性の推定」(1992)を参考に、日本人の平均身長・体重である170cm 60kgを仮定しています。追々体格の指定が可能になります。
体が隠れた部分については計算を行わないため、なるべく隠れないような動画を撮影・利用ください。

実行している環境について

GoogleのcolaboratoryというサービスでAI技術のためのコンピュータ環境(GPU)を利用しています。何と!無料!!で利用できます!!!
いくつか制限があるので、あまり長い動画には姿勢推定の利用が難しいかもしれません。
(簡単な技術的説明を付けるとjupyterと同系統のpython実行環境のnotebookです。GoogleのGPUサーバーのコンテナ上で動いています。)

最後に

興味を持ってくださった方は実行してみたり、コメントを頂けたりすると励みになります。
そして、ぜひ一緒にスポーツ分析を進めていけると嬉しいです。
github: https://github.com/hamataro0710/kempo_motion_analysis.git

最後までお読みいただきありがとうございました!

お読みいただきありがとうございます! スキ(♡)やコメントをいただけると実装や執筆の励みになりますので、気軽にいただけると嬉しいです! よろしくお願いします!