LoginSignup
13
13

More than 5 years have passed since last update.

Pythonでスポーツ動作分析(野球・バッティング編その②)

Last updated at Posted at 2018-10-10

はじめに

スイングをした際にバットがどのような軌道を通ったか(スイング面)を可視化したいと思います。
セグメント検出が可能なMask-RCNNを使って、画像からバットを自動検出しスイング面を推定します。

イメージ図
image.png

スイング面はスイングプレーンと言ったりもするそうです。
出典:https://blogs.yahoo.co.jp/kinegawareds/21073734.html

環境

Mask-RCNN

Masc R-CNNは、下図のように物体の境界を識別できます。
image.png

今回使うライブラリは画像にある全ての物体を検出してしまうので、バッドのみを検出するよう少し手を加えます。

クラス分類

Microsoft COCO が提供する画像データセットを使って、画像の物体を以下に分類しているようです。
「baseball bat」ありました。

# COCO Class names
# Index of the class in the list is its ID. For example, to get ID of
# the teddy bear class, use: class_names.index('teddy bear')
class_names = ['BG', 'person', 'bicycle', 'car', 'motorcycle', 'airplane',
        ~途中略~
               'kite', 'baseball bat', 'baseball glove', 'skateboard', ##  ← ありました。
               'surfboard', 'tennis racket', 'bottle', 'wine glass', 'cup',
        ~途中略~
               'keyboard', 'cell phone', 'microwave', 'oven', 'toaster',
               'sink', 'refrigerator', 'book', 'clock', 'vase', 'scissors',
               'teddy bear', 'hair drier', 'toothbrush']

バットのみを検出するよう修正

検出した物体がclass_names中の35番目(baseball bat)の場合のみ、画像に色をつけるように修正

visualize.py
def display_instances(payerName, image_base, image, boxes, masks, class_ids, class_names,
                      scores=None, title="",
                      figsize=(16, 16), ax=None,
                      show_mask=True, show_bbox=True,
                      colors=None, captions=None):
  ~途中略
        if class_ids[i] == 35: ## ← この条件を追加
      ~途中略
            for verts in contours:
                p = Polygon(verts, facecolor="#FFFF00", edgecolor="#FFFF00") ## ← 修正(黄色で描画)
                ax.add_patch(p)

バットを自動検出

以下のように画像からバッドを検出していきます。

  1. OpenCVを使って、動画から画像を切出し
  2. Microsoft COCO画像を使って、画像判定モデルを学習させる
  3. 画像からバッドを検出⇒スイングの一番最後の画像に描画
  4. 「3」をスイングの全画像分繰り返し

実行ソース

スイング面を推定

ここも自動化したかったのですが・・・
描画されたバッドから人手でスイング面を推定します。

image.png

スイングタイプを推定

複数の選手を解析していったところ、3つのタイプに分類できそうでした。
image.png

関連記事

13
13
2

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
13
13