8
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ゴルフ特有の動きの特徴点をオブジェクト検出で捉える

Last updated at Posted at 2019-12-14

前回、オブジェクト検出で追加学習を行い、ゴルファーとゴルフボールだけを追い掛けるモデルを作成しました。
しかし、ゴルフのフォームのチェックをAIを使って実施するには、画像からゴルフスイングの動きを捉えることが必要です。

##良いスイングとは何か?
誰に聞いても明確な答えが得られませんでした。人それぞれ体格や目標が違うから、見てみないとわからない、と。ではなぜ「レッスンプロ」という人が存在するのか?レッスンプロは人のゴルフスイングを見て、無意識に形を認識・分類し、独自の視点で良い点や矯正方法が思い浮かぶのだと思います。

これと同じことをAIに実行させるには、画像に写っている人物からゴルフのスイングを検出し、特徴点を把握して動きを捉える必要があります。さらに、おおよそこういう動きや角度なら「良いスイング」「ダメなスイング」と定義付ける必要もあります。

##特徴点を検出する
TensorflowJSには、Posenetという姿勢推定AIがありますが、ゴルフの場合、どうしてもクラブヘッドの位置を捉えなければならないため、また、特に後方からスイング撮影するとPosenetでは検出出来ない部位があり、Posenetは使えません。
なので、後方からのアドレス画像に限定し、頭、腰、右足、グリップ、クラブヘッド、ボールを認識出来るよう、オブジェクト検出で追加学習を行いました。
学習用アノテーション部位は以下の通りです。いろいろなトッププロ100名の後方からのアドレス画像を使ってアノテーション化し、学習を行いました。
スクリーンショット 2019-11-30 10.50.01.png

##精度が上がらない原因
特徴点が悪いのか、そもそも部位の選択の仕方が悪いのか、精度が50%をなかなか超えません。
いろいろ試行錯誤の結果、オブジェクト検出をやっている人には常識なのかもしれませんが、対象となる人物画像やアノテーション部位の縦横サイズ大きさに大きく影響します。
つまり、人物引き気味の画像とアップ気味の画像が混在するアノテーションでは別のものとして認識するようで、なるべく画像の縦横幅を同じにし、映っている人物の大きさが同じになるよう選別し、学習実行すると90%を超える精度が出始めました。エポック数は14,000でした。学習に使っていない後方画像もしっかり認識しました。
以下の画像は、未学習写真です。
スクリーンショット 2019-12-14 12.16.01.jpg

##TensorflowJSに変換
ここまで出来上がったところで、モデルをJavascriptに変換します。前回苦慮した部分です。
Pythonよりも慣れていること、即WEBサービスとして使ってもらえること、がJavascriptを利用する理由です。

##特徴点
四角形で囲められれば、あとは中心点を求めて点を描画するだけです。線で繋げてみます。
Javascript・Canvasの操作はお手の物です。
スクリーンショット 2019-12-14 12.34.14.jpg

さらに100名分の特徴点を取得し、見て取れる角度の平均や標準偏差・相関を算出し、閾を設定すれば、良いアドレスのモデルは出来そうな気がします。

さらにこれら座標から算出出来るバランス感、分類を行い、自分のアドレスと比較、矯正方法を示唆してくれそうです。

今後連続写真を使えば、スイング全体の良し悪し判断出来るかも。

8
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?