LoginSignup
6
10

More than 1 year has passed since last update.

バレーボールのプレー動作を分析してみたくて、OpenPose使ってみた。

Last updated at Posted at 2022-07-08

目的

趣味でやっているバレーボールのプレー動作を分析し、良い時と悪い時の違いを研究したい。

背景

なんとなくこういうプレー動作しているな、なんとなくこういう傾向があるな、だからこうなんじゃないか、という主観や曖昧さを排除し、客観的にデータからプレー動作の傾向を自分なりに研究したいと思った。

OpenPoseとは

カーネギーメロン大学のCenter for Technology Transfer and Enterprise Creation (CTTEC)で開発されたソフトウェア。

リアルタイムで複数人数のキーポイントの検出とマルチスレッドができるOpenCVとCaffeを使用したC ++のライブラリで画像から人の体や手、顔など合計130個のキーポイントを検出することができるリアルタイムシステム。

スポーツ分野での商用利用は不可。

  • wikipedia

  • OpenPoseのGitHub

やりたいこと

動画内のプレー動作をOpenPoseで解析し、動作を可視化する。

実行環境

  • Google Colaboratory

内容

1. OpenPoseのインストール

OpenPoseのリポジトリをクローンしGoogle Colab上にインストールします。
結構時間がかかるので、実行したらしばらく放置で。

import os
from os.path import exists, join, basename, splitext

git_repo_url = 'https://github.com/CMU-Perceptual-Computing-Lab/openpose.git'
project_name = splitext(basename(git_repo_url))[0]
if not exists(project_name):
  # see: https://github.com/CMU-Perceptual-Computing-Lab/openpose/issues/949
  # install new CMake becaue of CUDA10
  !wget -q https://cmake.org/files/v3.13/cmake-3.13.0-Linux-x86_64.tar.gz
  !tar xfz cmake-3.13.0-Linux-x86_64.tar.gz --strip-components=1 -C /usr/local
  # clone openpose
  !git clone -q --depth 1 $git_repo_url
  !sed -i 's/execute_process(COMMAND git checkout master WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}\/3rdparty\/caffe)/execute_process(COMMAND git checkout f019d0dfe86f49d1140961f8c7dec22130c83154 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}\/3rdparty\/caffe)/g' openpose/CMakeLists.txt
  # install system dependencies
  !apt-get -qq install -y libatlas-base-dev libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler libgflags-dev libgoogle-glog-dev liblmdb-dev opencl-headers ocl-icd-opencl-dev libviennacl-dev
  # build openpose
  !cd openpose && rm -rf build || true && mkdir build && cd build && cmake .. && make -j`nproc`

2. OpenPoseに動画を食わせて解析

適当な動画を用意しておきます。

!cd openpose && ./build/examples/openpose/openpose.bin --video ../input_movie.mp4 --write_json ../json --display 0 --write_video ../output_movie.avi

各オプションについては下記。

--video

入力となる解析動画のパスを指定します。

--write_json

解析結果が出力されるディレクトリを指定します。
今回は動作を目視するだけなので活用はしませんが、体のポイントが書き込まれているようなので、今後の展開でもありますが、後々こいつを読み込んで詳細な分析をするつもりです。

--display

結果表示を指定します。
今回は0にしてます。
そもそも何の結果が表示されるのか把握してませんが。。。

--write_video

出力となる解析済み動画のパスを指定します。

3. 解析済み動画を確認し目視で解析

--write_videoに指定したパスの動画を確認します。

今回は著作権の関係もあり、バレーボールの動画が用意できなく、参考にフリー静止画素材を解析した際の結果を掲載します。
動画の場合においても同様に解析が行われ、再生時にワイヤーが体に追従し表示されます。

image.png
左が解析前、右が解析後。

フリー素材の取得元
https://www.photo-ac.com/

作成したコードのGitHub

雑ですが、ReadMeに使い方が載ってます。

本投稿の内容は主となる部分を抜粋したものとなり、多少使い勝手を良くするため、周辺コードが含まれています。

尚、今回は動画解析について触れましたが、コードには画像解析の処理も含まれているため、興味のある方は閲覧してみてください。

処理についての解説はコード上のコメントやテキストセルの解説を参照願います。

今後の展開

目視にてプレー動作を解析することはできたため、次はこの動作結果を比較し、厳密な違いを見つけ出したり、何が違うかを客観的に導けるようにしたい。

最後に

スポーツ分野での商用利用は不可とのことだが、スポーツ以外でも色々夢が広がるなと思った。(適当ですみません)

6
10
1

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
6
10