Pythonでスポーツ動作分析(野球・バッティング編その②)
はじめに
スイングをした際にバットがどのような軌道を通ったか(スイング面)を可視化したいと思います。
セグメント検出が可能なMask-RCNNを使って、画像からバットを自動検出しスイング面を推定します。
スイング面はスイングプレーンと言ったりもするそうです。
出典:https://blogs.yahoo.co.jp/kinegawareds/21073734.html
環境
- 撮影カメラ 自分のスマホ(HTC U11)
- 解析環境
- windows10 home(64bit/CPU)
- Google Colaboratory(python3/CPU)
- ライブラリ(https://github.com/matterport/Mask_RCNN)
Mask-RCNN
- windows10 home(64bit/CPU)
- Google Colaboratory(python3/CPU)
Masc R-CNNは、下図のように物体の境界を識別できます。
今回使うライブラリは画像にある全ての物体を検出してしまうので、バッドのみを検出するよう少し手を加えます。
クラス分類
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)の場合のみ、画像に色をつけるように修正
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)
バットを自動検出
以下のように画像からバッドを検出していきます。
- OpenCVを使って、動画から画像を切出し
- Microsoft COCO画像を使って、画像判定モデルを学習させる
- 画像からバッドを検出⇒スイングの一番最後の画像に描画
- 「3」をスイングの全画像分繰り返し
実行ソース
スイング面を推定
ここも自動化したかったのですが・・・
描画されたバッドから人手でスイング面を推定します。
スイングタイプを推定
複数の選手を解析していったところ、3つのタイプに分類できそうでした。
関連記事
Author And Source
この問題について(Pythonでスポーツ動作分析(野球・バッティング編その②)), 我々は、より多くの情報をここで見つけました https://qiita.com/nanako_ut/items/35e91ac9d427f31d8200著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .