12
13

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 1 year has passed since last update.

3D姿勢推定StridedTransformer-Pose3Dを使ってバレーのレシーブ姿勢を可視化してみた。

Posted at

目的

StridedTransformer-Pose3Dとはどういったものなのか、お試しでレシーブ姿勢を可視化してみて上澄み部分を味わう。

背景

姿勢推定で面白いものはないかとネットで検索していたら、たまたまStridedTransformer-Pose3Dという3D姿勢推定ライブラリを見つけた。平面の動画から3D姿勢を推定できるため、スポーツなどで動作分析するのに今後役立てないかとお試しで使ってみた。

StridedTransformer-Pose3Dとは

StridedTransformer-Pose3Dとは、3次元人物姿勢推定を行うライブラリです。

このような感じで推定ができるとのことです。
skating.gif
dancing.gif
GitHubはこちらです。

実行環境

Google Colab

内容

ソースコードについてはGitHubにアップしてあります。
GitHubへのリンクは本投稿後半にあるソースコードの章を参照願います。

1. 事前準備

  • StridedTransformer-Pose3Dを取得
!git clone https://github.com/Vegetebird/StridedTransformer-Pose3D.git

%cd StridedTransformer-Pose3D
  • 必要ライブラリインストール

古いmatplotlibをインストールしていますが、3D姿勢を表現するために必要な処理が現バージョンだとdeprecatedとなっており、Issueの解消策も試しましたが改善しなかったため、やむを得ずこうしてあります。

!pip install yacs
!pip install filterpy
!pip install einops
!pip install matplotlib==2.2.2
  • 学習済みモデルのダウンロード

学習済みのモデルがGoogleDriveにて共有されているため取得します。
学習もできるようですが、今回はどういった結果となるか、上澄みを味わいたいだけのため割愛とさせていただきます。

import gdown

!mkdir -p checkpoint/pretrained
gdown.download("https://drive.google.com/uc?id=1aDLu0SB9JnPYZOOzQsJMV9zEIHg2Uro7", "refine_4365.pth", quiet=False)
!mv refine_4365.pth checkpoint/pretrained

gdown.download("https://drive.google.com/uc?id=1l63AI9BsNovpfTAbfAkySo9X2MOWgYZH", "no_refine_4365.pth", quiet=False)
!mv no_refine_4365.pth checkpoint/pretrained

gdown.download("https://drive.google.com/uc?id=1gWZl1VrlLZKBf0Pfkj4hKiFxe8sHP-1C", "yolov3.weights", quiet=False)
!mv yolov3.weights demo/lib/checkpoint

gdown.download("https://drive.google.com/uc?id=1CpyZiUIUlEjiql4rILwdBT4666S72Oq4", "pose_hrnet_w48_384x288.pth", quiet=False)
!mv pose_hrnet_w48_384x288.pth demo/lib/checkpoint

2.姿勢推定

--videoに解析したい動画を指定します。
動画はStridedTransformer-Pose3D/demo/outputの下に配置します。

今回は著作権の都合上、バレーボールをプレーしている動画が準備できなかったため、バレーボールをプレーするフリー画像素材をただ表示する動画を作成し入力してみました。

動画を用意できない方は、StridedTransformer-Pose3Dが用意しているsample_video.mp4を指定してみてください。--video sample_video.mp4

!python demo/vis.py --video movie.mp4

3.推定結果確認

StridedTransformer-Pose3D/demo/output/(動画名)フォルダの下に解析後の動画が格納されているため、結果を確認します。

今回は静止画がひたすら流れるためあまり面白くはありませんが、一応可視化はできています。
見た感じ、床と接地している足は位置関係がまあまあ分かりそうですが、他は分かりにくいですね。何か奥行きもわかるような視覚的表現があると分かりやすいかなと思いました。現状だと、接地しているプレーについては足の位置関係の解析ぐらいであればできるかなと思います。ソースまで見ていませんが、内部では奥行きもわかっていて、表現だけの問題なのでしょうか?
image.png

参考として、下の画像はOpenPoseで解析した画像です。
姿勢推定としての結果はそこまで変わりませんが、出力されるポイントが多少違いますね。つま先、踵、目線。
ライブラリとしての使い勝手や、関節の推定位置結果を使う側が扱えることもあり、個人的にはOpenPoseの方がいいかなと思いました。OpenPoseは画像の入力も可能。
image.png
過去投稿から拝借。OpenPoseに興味あればこちらもご覧ください。(お知らせかい)

ソースコード

ノートブックのみのため下記リンクを直接開くでもよいです。

Open In Colab

最後に

奥行きがはっきりわからないため、接地している部位以外の位置関係は分かりにくかったが、今後アップデートがあれば非常に使える将来性のあるライブラリだと思った。

そういえば、動画内に複数人いたらどうなるのだろう。。。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?